Package no.ugland.utransprod.gui.handlers

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

package no.ugland.utransprod.gui.handlers;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.swing.ListModel;

import no.ugland.utransprod.gui.checker.StatusCheckerInterface;
import no.ugland.utransprod.gui.model.TextPaneRendererCustTr;
import no.ugland.utransprod.gui.model.TextPaneRendererTransport;
import no.ugland.utransprod.gui.model.TextPaneRendererTransportSent;
import no.ugland.utransprod.gui.model.Transportable;
import no.ugland.utransprod.model.Transport;
import no.ugland.utransprod.service.OverviewManager;
import no.ugland.utransprod.service.enums.LazyLoadEnum;
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.jgoodies.binding.adapter.AbstractTableAdapter;
import com.jgoodies.binding.list.ArrayListModel;

/**
* Tabellmodell for ordre
*
* @author atle.brekka
*/
public final class TransportOrderTableModel extends AbstractTableAdapter {
  private StatusCheckerInterface<Transportable> gavlChecker;

  private StatusCheckerInterface<Transportable> takstolChecker;

  private StatusCheckerInterface<Transportable> steinChecker;

  private StatusCheckerInterface<Transportable> gulvsponChecker;

  private final ArrayListModel list;

  private static final long serialVersionUID = 1L;
  private ListModel listModel;

  /**
   * @param listModel
   * @param aOrderList
   * @param aGavlChecker
   * @param aTakstolChecker
   * @param aSteinChecker
   * @param aGulvsponChecker
   */
  TransportOrderTableModel(ListModel aListModel, ArrayListModel aOrderList,
      StatusCheckerInterface<Transportable> aGavlChecker,
      StatusCheckerInterface<Transportable> aTakstolChecker,
      StatusCheckerInterface<Transportable> aSteinChecker,
      StatusCheckerInterface<Transportable> aGulvsponChecker,
      TransportColumn.ForExcel forExcel) {
    super(aListModel, TransportColumn.getColumnNames(forExcel));
    listModel = aListModel;
    list = aOrderList;
    gavlChecker = aGavlChecker;
    takstolChecker = aTakstolChecker;
    steinChecker = aSteinChecker;
    gulvsponChecker = aGulvsponChecker;
  }

  public TransportOrderTableModel clone(TransportColumn.ForExcel forExcel) {
    return new TransportOrderTableModel(listModel, list, gavlChecker,
        takstolChecker, steinChecker, gulvsponChecker, forExcel);
  }

  /**
   * Henter objekt for gjeldende indeks
   *
   * @param rowIndex
   * @return objekt
   */
  public Transportable getTransportable(int rowIndex) {
    return (Transportable) getRow(rowIndex);
  }

  public enum TransportColumn {
    ORDREINFO("Ordreinfo", ForExcel.EXCEL) {
      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }

      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {
        return transportable.getTransportReportString();
      }

      @Override
      public void setCellRenderer(JXTable table) {
      }

      @Override
      public void setPrefferedWidth(JXTable table) {
      }
    },
    TRANSPORT("Transport", ForExcel.TABLE) {
      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {
        return transportable.getTransport();
      }

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

      @Override
      public void setCellRenderer(JXTable table) {
      }

      @Override
      public void setPrefferedWidth(JXTable table) {
        table.getColumnExt(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setPreferredWidth(100);

      }
    },
    ORDRE("Ordre", ForExcel.TABLE) {
      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {
        return transportable;
      }

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

      @Override
      public void setCellRenderer(JXTable table) {
        table.getColumnModel().getColumn(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setCellRenderer(new TextPaneRendererTransport());

      }

      @Override
      public void setPrefferedWidth(JXTable table) {
        table.getColumnExt(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setPreferredWidth(220);

      }
    },
    GAVL("Gavl", ForExcel.BOTH) {
      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {
        return statusMap.get(gavlChecker.getArticleName());
      }

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

      @Override
      public void setCellRenderer(JXTable table) {
      }

      @Override
      public void setPrefferedWidth(JXTable table) {
        table.getColumnExt(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setPreferredWidth(40);

      }
    },
    MONT("Mont", ForExcel.BOTH) {
      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {
        return transportable.getDoAssembly() != null
            && transportable.getDoAssembly() == 1 ? "X" : "";
      }

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

      @Override
      public void setCellRenderer(JXTable table) {
      }

      @Override
      public void setPrefferedWidth(JXTable table) {
        table.getColumnExt(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setPreferredWidth(40);

      }
    },
    TAKSTOL("Takstol", ForExcel.BOTH) {
      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {
        return statusMap.get(takstolChecker.getArticleName());
      }

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

      @Override
      public void setCellRenderer(JXTable table) {
      }

      @Override
      public void setPrefferedWidth(JXTable table) {
        table.getColumnExt(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setPreferredWidth(50);

      }
    },
    STEIN("Stein", ForExcel.BOTH) {
      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {
        return statusMap.get(steinChecker.getArticleName());
      }

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

      @Override
      public void setCellRenderer(JXTable table) {
      }

      @Override
      public void setPrefferedWidth(JXTable table) {
        table.getColumnExt(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setPreferredWidth(40);

      }
    },
    GULVSPON("Gulvspon", ForExcel.BOTH) {
      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {
        return statusMap.get(gulvsponChecker.getArticleName());
      }

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

      @Override
      public void setCellRenderer(JXTable table) {
      }

      @Override
      public void setPrefferedWidth(JXTable table) {
        table.getColumnExt(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setPreferredWidth(65);

      }
    },
    IKKE_SENDT("Ikke sendt", ForExcel.TABLE) {
      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {
        return transportable.getTransport() != null
            && transportable.getTransport().getSent() != null
            && !transportable.getSentBool() ? "!" : "";
      }

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

      @Override
      public void setCellRenderer(JXTable table) {
      }

      @Override
      public void setPrefferedWidth(JXTable table) {
        table.getColumnExt(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setPreferredWidth(40);

      }
    },
    KOMPLETT("Komplett", ForExcel.BOTH) {
      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {
        return transportable.getOrderComplete() != null ? "Ja" : "Nei";
      }

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

      @Override
      public void setCellRenderer(JXTable table) {
      }

      @Override
      public void setPrefferedWidth(JXTable table) {
        table.getColumnExt(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setPreferredWidth(40);

      }
    },
    KLAR("Klar", ForExcel.BOTH) {
      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {
        return transportable.getOrderReady() != null ? "Ja" : "Nei";
      }

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

      @Override
      public void setCellRenderer(JXTable table) {
      }

      @Override
      public void setPrefferedWidth(JXTable table) {
        table.getColumnExt(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setPreferredWidth(40);

      }
    },
    KLLI("Klli", ForExcel.EXCEL) {
      @SuppressWarnings("unchecked")
      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {
        OverviewManager<Object> manager = (OverviewManager<Object>) ModelUtil
            .getBean(transportable.getManagerName());
        manager.lazyLoad(transportable, new LazyLoadEnum[][] {
            { LazyLoadEnum.COLLIES, LazyLoadEnum.NONE },
            { LazyLoadEnum.ORDER_COMMENTS, LazyLoadEnum.NONE } });
        return transportable.getCollies() != null ? transportable
            .getCollies().size() : null;
      }

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

      @Override
      public void setCellRenderer(JXTable table) {
      }

      @Override
      public void setPrefferedWidth(JXTable table) {
        table.getColumnExt(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setPreferredWidth(40);

      }
    },
    HENSYN("Hensyn", ForExcel.EXCEL) {
      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {
        StringBuilder builder = new StringBuilder();
        if (transportable.getPostShipment() != null) {
          builder.append("Ettersending ");
        }
        if (transportable.getSpecialConcern() != null) {
          builder.append(transportable.getSpecialConcern());
        }
        return builder.toString();
      }

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

      @Override
      public void setCellRenderer(JXTable table) {
      }

      @Override
      public void setPrefferedWidth(JXTable table) {
        table.getColumnExt(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setPreferredWidth(40);

      }
    },
    SENDT("Sendt", ForExcel.TABLE) {
      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {
        return transportable;
      }

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

      @Override
      public void setCellRenderer(JXTable table) {
        table.getColumnModel().getColumn(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setCellRenderer(new TextPaneRendererTransportSent());

      }

      @Override
      public void setPrefferedWidth(JXTable table) {
        table.getColumnExt(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setPreferredWidth(45);

      }
    },
    REST("Rest", ForExcel.TABLE) {
      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {
        return transportable;
      }

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

      @Override
      public void setCellRenderer(JXTable table) {
        table.getColumnModel().getColumn(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setCellRenderer(new TextPaneRendererCustTr());

      }

      @Override
      public void setPrefferedWidth(JXTable table) {
        table.getColumnExt(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setPreferredWidth(50);

      }
    },
    GH�YDE("GH�yde", ForExcel.BOTH) {
      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {
        return transportable.getGarageColliHeight();
      }

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

      @Override
      public void setCellRenderer(JXTable table) {
      }

      @Override
      public void setPrefferedWidth(JXTable table) {
        table.getColumnExt(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setPreferredWidth(55);

      }
    },
    PRODUKTOMR�DE("Produktomr�de", ForExcel.TABLE) {
      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {
        return transportable.getProductAreaGroup() != null ? transportable
            .getProductAreaGroup().getProductAreaGroupName()
            : "";
      }

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

      @Override
      public void setCellRenderer(JXTable table) {
      }

      @Override
      public void setPrefferedWidth(JXTable table) {
        table.getColumnExt(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setPreferredWidth(50);

      }
    },
    TH�YDE("TH�yde", ForExcel.TABLE) {
      @Override
      public Class<?> getColumnClass() {
        return Integer.class;
      }

      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {
        return transportable.getMaxTrossHeight();
      }

      @Override
      public void setCellRenderer(JXTable table) {
      }

      @Override
      public void setPrefferedWidth(JXTable table) {
        table.getColumnExt(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setPreferredWidth(55);

      }
    },
    KOMMENTAR("Kommentar", ForExcel.EXCEL) {
      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }

      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {
        return transportable.getComment();
      }

      @Override
      public void setCellRenderer(JXTable table) {
      }

      @Override
      public void setPrefferedWidth(JXTable table) {
        table.getColumnExt(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setPreferredWidth(50);

      }
    },
    SANNSYNLIGHET("Sannsynlighet", ForExcel.TABLE) {
      @Override
      public Class<?> getColumnClass() {
        return Integer.class;
      }

      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {

        return transportable.getProbability();
      }

      @Override
      public void setCellRenderer(JXTable table) {
      }

      @Override
      public void setPrefferedWidth(JXTable table) {
      }
    },
    TAKSTOLTEGNER("Takstoltegner", ForExcel.BOTH) {
      @Override
      public Class<?> getColumnClass() {
        return String.class;
      }

      @Override
      public Object getValue(Transportable transportable,
          Map<String, String> statusMap,
          StatusCheckerInterface<Transportable> gavlChecker,
          StatusCheckerInterface<Transportable> takstolChecker,
          StatusCheckerInterface<Transportable> steinChecker,
          StatusCheckerInterface<Transportable> gulvsponChecker) {

        return transportable.getTrossDrawer();
      }

      @Override
      public void setCellRenderer(JXTable table) {
      }

      @Override
      public void setPrefferedWidth(JXTable table) {
        table.getColumnExt(
            table.getColumnExt(getColumnName()).getModelIndex())
            .setPreferredWidth(100);
      }
    };
    private String columnName;
    private ForExcel isForExcel;

    private TransportColumn(String aColumnName, ForExcel useForExcel) {
      columnName = aColumnName;
      isForExcel = useForExcel;
    }

    public String getColumnName() {
      return columnName;
    }

    public abstract Object getValue(Transportable transportable,
        Map<String, String> statusMap,
        StatusCheckerInterface<Transportable> gavlChecker,
        StatusCheckerInterface<Transportable> takstolChecker,
        StatusCheckerInterface<Transportable> steinChecker,
        StatusCheckerInterface<Transportable> gulvsponChecker);

    public abstract Class<?> getColumnClass();

    public abstract void setCellRenderer(JXTable table);

    public abstract void setPrefferedWidth(JXTable table);

    public static String[] getColumnNames(ForExcel forExcel) {
      TransportColumn[] transportColumns = TransportColumn.values();

      List<String> columnNameList = new ArrayList<String>();
      for (int i = 0; i < transportColumns.length; i++) {
        @SuppressWarnings("unused")
        boolean added = transportColumns[i].getForExcel().isEqual(
            forExcel) ? columnNameList.add(transportColumns[i]
            .getColumnName()) : false;
      }
      String[] columnNames = new String[columnNameList.size()];
      return columnNameList.toArray(columnNames);
    }

    public static List<TransportColumn> getTableColumns() {
      TransportColumn[] transportColumns = TransportColumn.values();
      List<TransportColumn> columns = new ArrayList<TransportColumn>();
      for (int i = 0; i < transportColumns.length; i++) {
        @SuppressWarnings("unused")
        boolean added = transportColumns[i].getForExcel().isEqual(
            ForExcel.TABLE) ? columns.add(transportColumns[i])
            : false;

      }
      return columns;
    }

    public ForExcel getForExcel() {
      return isForExcel;
    }

    public enum ForExcel {
      EXCEL, TABLE, BOTH;

      public boolean isEqual(ForExcel forExcel) {
        return this == forExcel || this == BOTH;
      }

    }
  }

  /**
   * Henter verdi
   *
   * @param rowIndex
   * @param columnIndex
   * @return verdi
   */
  public Object getValueAt(int rowIndex, int columnIndex) {
    Transportable transportable = (Transportable) getRow(rowIndex);

    Map<String, String> statusMap = Util.createStatusMap(transportable
        .getStatus());

    String columnName = StringUtils.upperCase(getColumnName(columnIndex))
        .replaceAll(" ", "_");
    return TransportColumn.valueOf(columnName).getValue(transportable,
        statusMap, gavlChecker, takstolChecker, steinChecker,
        gulvsponChecker);

  }

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

  /**
   * Setter inn rad med nytt objekt
   *
   * @param index
   * @param transportable
   */
  public void insertRow(int index, Transportable transportable) {
    list.add(index, transportable);
  }

  /**
   * Fjerner rad fra tabell
   *
   * @param index
   */
  public void removeRow(int index) {
    if (index < list.size()) {
      list.remove(index);
    }
  }

}
TOP

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

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.