Package no.ugland.utransprod.gui.handlers

Source Code of no.ugland.utransprod.gui.handlers.AssemblyTeamTableModel

/**
*
*/
package no.ugland.utransprod.gui.handlers;

import java.util.List;

import javax.swing.ListModel;

import no.ugland.utransprod.ProTransException;
import no.ugland.utransprod.gui.WindowInterface;
import no.ugland.utransprod.gui.model.Transportable;
import no.ugland.utransprod.model.Assembly;
import no.ugland.utransprod.model.Deviation;
import no.ugland.utransprod.model.Order;
import no.ugland.utransprod.model.OrderLine;
import no.ugland.utransprod.model.ProductAreaGroup;
import no.ugland.utransprod.service.OrderManager;
import no.ugland.utransprod.service.enums.LazyLoadOrderEnum;
import no.ugland.utransprod.util.ModelUtil;
import no.ugland.utransprod.util.Util;

import org.apache.commons.lang.StringUtils;

import com.google.common.collect.Lists;
import com.jgoodies.binding.adapter.AbstractTableAdapter;
import com.jgoodies.binding.list.ArrayListModel;

/**
* Tabellmodell for montering
*
* @author atle.brekka
*
*/
public final class AssemblyTeamTableModel extends AbstractTableAdapter {

  /**
   *
   */
  private final ArrayListModel list;

  /**
   *
   */
  private static final long serialVersionUID = 1L;

  /**
   *
   */
  private WindowInterface window;

  /**
   *
   */
  //private static final String[] COLUMNS = { "Sent", "Montert", "Ordre","Planlagt", "Opprinnelig", "Overtid", "Sendt mangler","Montert" };

  /**
   * @param listModel
   * @param aAssemblyList
   * @param aWindow
   */
  AssemblyTeamTableModel(ListModel listModel, ArrayListModel aAssemblyList,
      WindowInterface aWindow) {
    //super(listModel, COLUMNS);
    super(listModel, AssemblyTeamColumn.getColumnNames());
    window = aWindow;
    list = aAssemblyList;

  }

  /**
   * Henter ordre for gitt rad
   *
   * @param rowIndex
   * @return ordre
   */
  public Order getOrder(int rowIndex) {
    return ((Assembly) getRow(rowIndex)).getOrder();
  }

  /**
   * Setter caching for manglende kollier
   *
   * @param order
   * @param window
   */
  private void setHasMissingCollies(Order order, WindowInterface window) {
    OrderManager orderManager = (OrderManager) ModelUtil
        .getBean("orderManager");
    orderManager.lazyLoadOrder(order, new LazyLoadOrderEnum[] {
        LazyLoadOrderEnum.ORDER_LINES,
        LazyLoadOrderEnum.ORDER_LINE_ORDER_LINES });

    List<OrderLine> orderLines = order.getMissingCollies();
    if (orderLines != null && orderLines.size() != 0) {
      order.setHasMissingCollies(1);
    } else {
      order.setHasMissingCollies(0);
    }
    try {
      orderManager.saveOrder(order);
    } catch (ProTransException e) {
      Util.showErrorDialog(window, "Feil", e.getMessage());
      e.printStackTrace();
    }
  }

  /**
   * Henter verdi
   *
   * @param rowIndex
   * @param columnIndex
   * @return verdi
   */
  public Object getValueAt(int rowIndex, int columnIndex) {
    Assembly assembly = (Assembly) getRow(rowIndex);
    String columnName = StringUtils.upperCase(getColumnName(columnIndex))
    .replaceAll(" ", "_");
   
    Order order = assembly.getOrder();
    Deviation deviation = assembly.getDeviation();

    if (order != null && order.getSent() != null
        && order.getHasMissingCollies() == null) {
      setHasMissingCollies(order, window);
    }
   
    return AssemblyTeamColumn.valueOf(columnName).getValue(assembly,order,deviation);
   
   
  }

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

  /**
   * Setter inn rad
   *
   * @param index
   * @param assembly
   */
  public void insertRow(int index, Assembly assembly) {
    list.add(index, assembly);
    fireTableDataChanged();
  }

  /**
   * Fjerner rad
   *
   * @param index
   */
  public void removeRow(int index) {
    if (index < list.size()) {
      list.remove(index);
      fireTableDataChanged();
    }
  }
 
  enum AssemblyTeamColumn{
    SENT("Sent") {
      @Override
      public Object getValue(Assembly assembly,Order order,Deviation deviation) {
        if (order != null) {
          if (assembly.getOrder().getSent() != null) {
            return true;

          }
        } else if (deviation != null) {
          if (deviation.getPostShipment() != null) {
            if (deviation.getPostShipment().getSent() != null) {
              return true;
            }
          } else {
            return true;
          }
        }
        return false;
      }

      @Override
      public Class<?> getColumnClass() {
        return Boolean.class;
      }
    },
        MONTERT("Montert") {
          @Override
          public Object getValue(Assembly assembly, Order order,
              Deviation deviation) {
            return assembly.getAssembliedBool();
          }

          @Override
          public Class<?> getColumnClass() {
            return Boolean.class;
          }
        },
        ORDRE("Ordre") {
          @Override
          public Object getValue(Assembly assembly, Order order,
              Deviation deviation) {
            if (order != null) {
              return assembly.getOrder();
            }
            return deviation;
          }

          @Override
          public Class<?> getColumnClass() {
            return Transportable.class;
          }
        },
      PLANLAGT("Planlagt") {
        @Override
        public Object getValue(Assembly assembly, Order order,
            Deviation deviation) {
          return assembly.getPlanned();
        }

        @Override
        public Class<?> getColumnClass() {
          return String.class;
        }
      },
      OPPRINNELIG("Opprinnelig") {
        @Override
        public Object getValue(Assembly assembly, Order order,
            Deviation deviation) {
          return assembly.getFirstPlanned();
        }

        @Override
        public Class<?> getColumnClass() {
          return String.class;
        }
      },
      OVERTID("Overtid") {
        @Override
        public Object getValue(Assembly assembly, Order order,
            Deviation deviation) {
          if (assembly.getAssembliedDate() == null) {
            Integer yearWeek = Integer.valueOf(String.valueOf(Util
                .getCurrentYear())
                + String.format("%02d", Util.getCurrentWeek()));
            Integer assemblyYearWeek = Integer.valueOf(String
                .valueOf(assembly.getAssemblyYear())
                + String.format("%02d", assembly.getAssemblyWeek()));

            if (assemblyYearWeek < yearWeek) {
              return 1;
            }
          }
          return 0;
        }

        @Override
        public Class<?> getColumnClass() {
          return Integer.class;
        }
      },
      SENDT_MANGLER("Sendt mangler") {
        @Override
        public Object getValue(Assembly assembly, Order order,
            Deviation deviation) {
          if (order != null && order.getSent() != null) {
            return order.getHasMissingCollies();
          }
          return 0;
        }

        @Override
        public Class<?> getColumnClass() {
          return Integer.class;
        }
      },
      MONT("Mont") {
        @Override
        public Object getValue(Assembly assembly, Order order,
            Deviation deviation) {
           if(assembly.getAssembliedDate()!=null){
                      return "Ja";
                  }
                  return "Nei";
        }

        @Override
        public Class<?> getColumnClass() {
          return String.class;
        }
      },
      PRODUKTOMR�DE("Produktomr�de") {
        @Override
        public Object getValue(Assembly assembly, Order order,
            Deviation deviation) {
          if(order!=null){
            return order.getProductAreaGroup();
          }
          if(deviation!=null){
            return deviation.getProductAreaGroup();
          }
           return null;
        }

        @Override
        public Class<?> getColumnClass() {
          return ProductAreaGroup.class;
        }
      };
   
    private static final List<String> COLUMN_NAMES=Lists.newArrayList();
   
    static{
      for(AssemblyTeamColumn col:AssemblyTeamColumn.values()){
        COLUMN_NAMES.add(col.getColumnName());
      }
    }
   
    private String columnName;

    private AssemblyTeamColumn(String aColumnName){
      columnName=aColumnName;
    }
   
    public abstract Class<?> getColumnClass();

    public abstract Object getValue(Assembly assembly,Order order,Deviation deviation);

    public String getColumnName(){
      return columnName;
    }
   
    public static String[] getColumnNames(){
      String[] columnNames=new String[COLUMN_NAMES.size()];
      return  COLUMN_NAMES.toArray(columnNames);
    }
  }

}
TOP

Related Classes of no.ugland.utransprod.gui.handlers.AssemblyTeamTableModel

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.