Package no.ugland.utransprod.service

Source Code of no.ugland.utransprod.service.KledningConverter

package no.ugland.utransprod.service;

import no.ugland.utransprod.model.ArticleType;
import no.ugland.utransprod.model.Ord;
import no.ugland.utransprod.model.Order;
import no.ugland.utransprod.model.OrderLine;
import no.ugland.utransprod.model.Ordln;

import com.google.common.collect.Lists;
import com.google.inject.Inject;

public class KledningConverter extends DefaultConverter {

  @Inject
  public KledningConverter(ManagerRepository managerRepository) {
    super(managerRepository);
  }

  public OrderLine convert(ArticleType articleType, Ordln ordln, Order order,
      Ord ord) {
    OrderLine kledning = articleType == ArticleType.UNKNOWN ? OrderLine.UNKNOWN
        : getOrderLine(articleType, ordln, order);
    return ordln != null ? setBelongsTo(kledning, order, ordln) : kledning;
  }

  private OrderLine setBelongsTo(OrderLine kledning, Order order, Ordln ordln) {
    BelongTo belongTo = BelongTo
        .valueOf("BELONG_TO_"
            + (ordln.getFree4() != null ? ordln.getFree4()
                .intValue() : "0"));
    return belongTo.setBelongTo(kledning, order, managerRepository, ordln);
  }

  private enum BelongTo {
    BELONG_TO_1("Vegg") {
      @Override
      public OrderLine setBelongTo(OrderLine kledning, Order order,
          ManagerRepository managerRepository, Ordln ordln) {
        // H�rer til vegg
        return setOrderLineRef(kledning, order, getMainArticleName(),
            managerRepository, ordln);
      }
    },
    BELONG_TO_2("Gavl") {
      @Override
      public OrderLine setBelongTo(OrderLine kledning, Order order,
          ManagerRepository managerRepository, Ordln ordln) {
        // H�rer til gavl
        return setOrderLineRef(kledning, order, getMainArticleName(),
            managerRepository, ordln);
      }
    },
    BELONG_TO_0("") {
      @Override
      public OrderLine setBelongTo(OrderLine kledning, Order order,
          ManagerRepository managerRepository, Ordln ordnl) {
        // Toppartikkel
        return kledning;
      }
    };

    private String mainArticleName;

    private BelongTo(String aMainArticleName) {
      mainArticleName = aMainArticleName;
    }

    public String getMainArticleName() {
      return mainArticleName;
    }

    public abstract OrderLine setBelongTo(OrderLine kledning, Order order,
        ManagerRepository managerRepository, Ordln ordln);

    private static OrderLine setOrderLineRef(OrderLine kledning,
        Order order, String topArticleName,
        ManagerRepository managerRepository, Ordln ordln) {
      OrderLine topArticle = order.getOrderLine(topArticleName);
      if (topArticle != OrderLine.UNKNOWN) {
        topArticle.setOrdNo(ordln.getOrdno());
        managerRepository.getConstructionTypeManager()
            .updateOrderLinesFromVisma(topArticle.getOrderLines(),
                Lists.newArrayList(kledning));

      }
      return OrderLine.UNKNOWN;
    }

  }

}
TOP

Related Classes of no.ugland.utransprod.service.KledningConverter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.