Package no.ugland.utransprod.gui.checker

Source Code of no.ugland.utransprod.gui.checker.TakstolStatusChecker

package no.ugland.utransprod.gui.checker;

import java.util.List;

import no.ugland.utransprod.gui.model.Transportable;
import no.ugland.utransprod.model.ArticleType;
import no.ugland.utransprod.model.OrderLine;
import no.ugland.utransprod.model.TakstolV;
import no.ugland.utransprod.service.TakstolPackageVManager;
import no.ugland.utransprod.service.TakstolProductionVManager;
import no.ugland.utransprod.service.TakstolVManager;
import no.ugland.utransprod.util.Util;

import org.apache.log4j.Logger;

import com.google.inject.Inject;
import com.google.inject.name.Named;

/**
* Sjekker status for takstol
*
* @author atle.brekka
*/
public class TakstolStatusChecker implements
    StatusCheckerInterface<Transportable> {
  private static final Logger LOGGER = Logger
      .getLogger(TakstolStatusChecker.class);

  private ArticleType checkType;
  private TakstolPackageVManager takstolPackageVManager;
  private TakstolProductionVManager takstolProductionVManager;

  /**
   * @param checkArticleType
   */
  @Inject
  public TakstolStatusChecker(
      @Named(value = "takstolArticle") final ArticleType checkArticleType,
      final TakstolPackageVManager aTakstolPackageVManager,
      final TakstolProductionVManager aTakstolProductionVManager) {
    takstolProductionVManager = aTakstolProductionVManager;
    takstolPackageVManager = aTakstolPackageVManager;
    if (checkArticleType == null) {
      LOGGER.error("artikkeltype er null");
    }
    checkType = checkArticleType;
  }

  /**
   * @param transportable
   * @return e dersom egenordre, X dersom pakket
   * @see no.ugland.utransprod.gui.checker.StatusCheckerInterface#getArticleStatus(java.lang.Object)
   */
  public final String getArticleStatus(final Transportable transportable) {
    StringBuffer returnBuffer = new StringBuffer();

    List<OrderLine> orderLines = transportable.getOrderLineList(checkType
        .getArticleTypeName());
    boolean articleFound = false;
    for (OrderLine orderLine : orderLines) {
      returnBuffer = articleFound ? returnBuffer.append("/")
          : returnBuffer;
      articleFound = orderLine != null
          && orderLine.belongTo(transportable) ? checkFoundArticle(
          returnBuffer, orderLine) : false;
    }
    return returnBuffer.toString();
  }

  /**
   * @see no.ugland.utransprod.gui.checker.StatusCheckerInterface#getArticleName()
   */
  public String getArticleName() {
    return checkType.getArticleTypeName();
  }

  private boolean checkFoundArticle(StringBuffer returnBuffer,
      final OrderLine orderLine) {
    boolean articleFound = true;
    returnBuffer = addDefaultToStatus(returnBuffer, orderLine);

    returnBuffer = addOrderLineDoneToStatus(returnBuffer, orderLine);
    addNumberOfItemsToStatus(returnBuffer, orderLine);
    addProductionUnitToStatus(returnBuffer, orderLine);

    return articleFound;
  }

  private StringBuffer addDefaultToStatus(StringBuffer returnBuffer,
      final OrderLine orderLine) {
    if (orderLine.hasDefaultSet()) {
      returnBuffer = !orderLine.isDefault() ? returnBuffer.append("e")
          : returnBuffer;
    } else {
      returnBuffer = !orderLine.isDefault()
          || !orderLine.getAttributeValue("Egenordre")
              .equalsIgnoreCase("Nei") ? returnBuffer.append("e")
          : returnBuffer;
    }
    return returnBuffer;
  }

  private void addProductionUnitToStatus(StringBuffer returnBuffer,
      final OrderLine orderLine) {
    returnBuffer = orderLine.getProductionUnit() != null ? returnBuffer
        .append(orderLine.getProductionUnit().getProductionUnitName())
        : returnBuffer;
  }

  private void addNumberOfItemsToStatus(StringBuffer returnBuffer,
      final OrderLine orderLine) {
    returnBuffer.append(Util.nullIntegerToString(orderLine
        .getNumberOfItems()));
  }

  private StringBuffer addOrderLineDoneToStatus(StringBuffer returnBuffer,
      final OrderLine orderLine) {
    returnBuffer = isOrderLineDone(orderLine) ? returnBuffer.append("X")
        : returnBuffer;
    return returnBuffer;
  }

  private boolean isOrderLineDone(final OrderLine orderLine) {
    return orderLine.isSent() ? true : isOrderLineComplete(orderLine);

  }

  private boolean isOrderLineComplete(OrderLine orderLine) {
    TakstolVManager manager = orderLine.isDefault() ? takstolPackageVManager
        : takstolProductionVManager;
    TakstolV takstol = manager.findByOrderNrAndOrderLineId(orderLine
        .getOrderNr(), orderLine.getOrderLineId());
    return takstol != null ? takstol.isRelatedArticlesComplete()
        && orderLine.getColli() != null : false;
  }

}
TOP

Related Classes of no.ugland.utransprod.gui.checker.TakstolStatusChecker

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.