Package no.ugland.utransprod.gui.model

Source Code of no.ugland.utransprod.gui.model.TakstolPackageApplyList$TakstolPackageTableModelReport

package no.ugland.utransprod.gui.model;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.swing.ListModel;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;

import no.ugland.utransprod.ProTransException;
import no.ugland.utransprod.gui.ArticlePackageViewFactory;
import no.ugland.utransprod.gui.ArticleProductionPackageView;
import no.ugland.utransprod.gui.Login;
import no.ugland.utransprod.gui.WindowInterface;
import no.ugland.utransprod.gui.handlers.ArticlePackageViewHandler.PackProduction;
import no.ugland.utransprod.model.ArticleType;
import no.ugland.utransprod.model.Colli;
import no.ugland.utransprod.model.GulvsponPackageV;
import no.ugland.utransprod.model.OrderLine;
import no.ugland.utransprod.model.PackableListItem;
import no.ugland.utransprod.model.TakstolPackageV;
import no.ugland.utransprod.service.ManagerRepository;
import no.ugland.utransprod.service.OrderLineManager;
import no.ugland.utransprod.service.TakstolPackageVManager;
import no.ugland.utransprod.service.VismaFileCreator;
import no.ugland.utransprod.util.ModelUtil;
import no.ugland.utransprod.util.Util;

import org.apache.commons.lang.StringUtils;
import org.jdesktop.swingx.JXTable;

import com.google.inject.Inject;
import com.google.inject.name.Named;
import com.jgoodies.binding.list.SelectionInList;

/**
* H�ndterer setting av at takstoler er ferdig pakket
*
* @author atle.brekka
*/
public class TakstolPackageApplyList extends PackageApplyList {
  private ArticleProductionPackageView articlePackageView;
  private String mainArticleName;

  /**
   * @param aUserType
   * @param manager
   */
  @Inject
  public TakstolPackageApplyList(final TakstolPackageVManager manager,
      final VismaFileCreator vismaFileCreator, final Login aLogin,
      @Named(value = "takstol_article") final String aMainArticleName,
      @Named("takstolArticle") ArticleType articleTypeTakstol,
      final ArticlePackageViewFactory aArticlePackageViewFactory,
      ManagerRepository aManagerRepository) {
    super(aLogin, manager, "Takstol", "Standard takstol",
        ReportEnum.TAKSTOL, vismaFileCreator, aManagerRepository);
    articlePackageView = aArticlePackageViewFactory.create(
        articleTypeTakstol, this, "Takstol");
    mainArticleName = aMainArticleName;
  }

  /**
   * @see no.ugland.utransprod.gui.model.AbstractApplyList#getTableModelReport(javax.swing.ListModel,
   *      org.jdesktop.swingx.JXTable,
   *      com.jgoodies.binding.list.SelectionInList)
   */
  @Override
  public TableModel getTableModelReport(ListModel listModel, JXTable table,
      SelectionInList objectSelectionList) {
    return new TakstolPackageTableModelReport(objectSelectionList,table,objectSelectionList);
  }

  private static enum TakstolPackageColumn {
    TRANSPORT {
      @Override
      public Object getValue(TakstolPackageV takstolPackageV) {
        return takstolPackageV.getTransportDetails();
      }

      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }
    },
    ORDER {
      @Override
      public Object getValue(TakstolPackageV takstolPackageV) {
        StringBuffer buffer = new StringBuffer(takstolPackageV
            .getCustomerDetails());

        buffer.append(" - ").append(takstolPackageV.getOrderNr())
            .append(", ").append(takstolPackageV.getAddress())
            .append(" ,").append(
                takstolPackageV.getConstructionTypeName())
            .append(",").append(takstolPackageV.getInfo());

        return buffer.toString();
      }

      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }
    },
    NUMBER_OF_ITEMS {
      @Override
      public Object getValue(TakstolPackageV takstolPackageV) {
        return takstolPackageV.getNumberOfItems();
      }

      @Override
      public Class<?> getColumnClass() {
        return Integer.class;
      }
    },
    SPECIFICATION {
      @Override
      public Object getValue(TakstolPackageV takstolPackageV) {
        String spesifikasjon="";
        if (takstolPackageV.getOrdln() != null&&takstolPackageV.getOrdln().getDescription()!=null) {
          spesifikasjon=takstolPackageV.getOrdln().getDescription()+" ";
        }
        return spesifikasjon + Util.removeNoAttributes(takstolPackageV
            .getAttributeInfo(),"Papp","Grunnet");
      }

      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }
    },
    LOADING_DATE {
      @Override
      public Object getValue(TakstolPackageV takstolPackageV) {
        if (takstolPackageV.getTransportDetails() != null) {
          Date loadingDate = takstolPackageV.getLoadingDate();
          if (loadingDate != null) {
            return Util.SHORT_DATE_FORMAT.format(loadingDate);
          }
          return null;
        }
        return null;
      }

      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }
    },
    STARTED {
      @Override
      public Object getValue(TakstolPackageV takstolPackageV) {
        if (takstolPackageV.getActionStarted() != null) {
          return "X";
        }
        return "";
      }

      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }
    },
    PACKED {
      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }

      @Override
      public Object getValue(TakstolPackageV takstolPackageV) {
        if (takstolPackageV.getColli() != null) {
          return "X";
        }
        return "";
      }
    };

    public static String[] getColumnNames() {

      List<String> columnNameList = new ArrayList<String>();
      for (TakstolPackageColumn column : TakstolPackageColumn.values()) {
        columnNameList.add(column.name());
      }
      String[] columnNames = new String[columnNameList.size()];
      return columnNameList.toArray(columnNames);
    }

    public abstract Object getValue(TakstolPackageV takstolPackageV);

    public abstract Class<?> getColumnClass();
  }

  @SuppressWarnings("serial")
  private final class TakstolPackageTableModelReport extends
  AbstractTableModel {


    private JXTable table;

    private SelectionInList objectSelectionList;

    public TakstolPackageTableModelReport(final ListModel listModel,
                final JXTable aTable, final SelectionInList aSelectionInList) {
      table = aTable;
            objectSelectionList = aSelectionInList;
//      super(listModel, TakstolPackageColumn.getColumnNames());
    }
   
    public int getColumnCount() {
            return TakstolPackageColumn.getColumnNames().length;
        }
   
    public int getRowCount() {
            return table.getRowCount();
        }
    public String getColumnName(final int colIndex) {
            return TakstolPackageColumn.getColumnNames()[colIndex];
        }

    public Object getValueAt(final int rowIndex, final int columnIndex) {
      TakstolPackageV takstolPackageV = (TakstolPackageV) objectSelectionList
                    .getElementAt(table.convertRowIndexToModel(rowIndex));
     
//      TakstolPackageV takstolPackageV = (TakstolPackageV) getRow(rowIndex);
      String columnName = StringUtils.upperCase(
          getColumnName(columnIndex)).replaceAll(" ", "_")
          .replaceAll("\\.", "_");

      return TakstolPackageColumn.valueOf(columnName).getValue(
          takstolPackageV);
    }

    /**
     * @see javax.swing.table.AbstractTableModel#getColumnClass(int)
     */
    @Override
    public Class<?> getColumnClass(final int columnIndex) {
      String columnName = StringUtils.upperCase(
          getColumnName(columnIndex)).replaceAll(" ", "_")
          .replaceAll("\\.", "_");
      return TakstolPackageColumn.valueOf(columnName).getColumnClass();
    }

  }

  public void setApplied(PackableListItem object, boolean applied,
      WindowInterface window, List<Applyable> relatedArticles) {
    try {
      if (object != null) {
        List<OrderLine> orderLines = new ArrayList<OrderLine>();
        List<Applyable> objects = new ArrayList<Applyable>();
        object.setColli(applied ? Colli.DEFAULT_TAKSTOL : null);
        if (object.getOrderLineId() != null) {
          objects.add(object);
        }

        if (relatedArticles != null && relatedArticles.size() != 0) {
          objects.addAll(relatedArticles);
        }
        for (Applyable item : objects) {
          item.setColli(Colli.UNKNOWN);
        }
        applyRelatedArticles(applied, window, objects, orderLines);

        if (applied) {

          articlePackageView
              .setArticles(objects, PackProduction.PACK);
          Util.showEditViewable(articlePackageView, window);
        }

        applyRelatedArticles(applied, window, objects, orderLines);
       
        if (orderLines.size() != 0) {
          createVismaFile(orderLines);
        }

        OrderLine orderLine = managerRepository.getOrderLineManager()
            .findByOrderLineId(object.getOrderLineId());
        checkCompleteness(orderLine, applied);
        refreshObjects(object);
      }
    } catch (ProTransException e1) {
      Util.showErrorDialog(window, "Feil", e1.getMessage());
      e1.printStackTrace();
    }

  }

  private void applyRelatedArticles(boolean applied, WindowInterface window,
      List<Applyable> relatedArticles, List<OrderLine> orderLines) {
    if (relatedArticles != null) {
      for (Applyable item : relatedArticles) {
        item.setColli(applied ? item.getColli() : null);
        String aColliName = Util.getColliName(item.getArticleName());

        OrderLine orderLine = applyObject((PackableListItem) item, item
            .getColli() != null, window, aColliName, false);
        boolean added = item.getColli() != null && orderLine != null ? orderLines
            .add(orderLine)
            : false;

      }
    }
  }

  private OrderLine applyObject(PackableListItem object, boolean applied,
      WindowInterface window, final String aColliName,
      final boolean isMainArticle) {
    OrderLineManager orderLineManager = (OrderLineManager) ModelUtil
        .getBean("orderLineManager");
    OrderLine orderLine = orderLineManager.findByOrderLineId(object
        .getOrderLineId());
    OrderLine appliedOrderLine = null;
    if (orderLine != null) {

      appliedOrderLine = handleApply(applied, window, orderLineManager,
          orderLine, aColliName, isMainArticle);
      checkAndSavePostShipment(orderLine);

      saveOrder(window, orderLineManager, orderLine);
      refreshObjects(object);
    }
    return appliedOrderLine;
  }

  private void refreshObjects(PackableListItem object) {
    if (object.getOrderLineId() != null) {
      applyListManager.refresh(object);
    }
    List<Applyable> relatedObjects = object.getRelatedArticles();
    if (relatedObjects != null) {
      for (Applyable applyable : relatedObjects) {
        applyListManager.refresh((PackableListItem) applyable);
      }
    }

  }

  public PackableListItem getApplyObject(final Transportable transportable,
      final WindowInterface window) {
    List<PackableListItem> list = ((TakstolPackageVManager) applyListManager)
        .findApplyableByOrderNrAndArticleName(transportable.getOrder()
            .getOrderNr(), mainArticleName);

    return list == null || list.size() == 0 ? null : list != null
        && list.size() == 1 ? list.get(0) : selectApplyObject(list,
        window);
  }

  private PackableListItem selectApplyObject(
      final List<PackableListItem> list, final WindowInterface window) {
    return (PackableListItem) Util.showOptionsDialogCombo(window, list,
        "Velg artikkel", true, null);
  }

}
TOP

Related Classes of no.ugland.utransprod.gui.model.TakstolPackageApplyList$TakstolPackageTableModelReport

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.