Package no.ugland.utransprod.gui.handlers

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

package no.ugland.utransprod.gui.handlers;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.ListModel;

import no.ugland.utransprod.ProTransException;
import no.ugland.utransprod.gui.Closeable;
import no.ugland.utransprod.gui.IconEnum;
import no.ugland.utransprod.gui.WindowInterface;
import no.ugland.utransprod.gui.buttons.CancelButton;
import no.ugland.utransprod.model.ProductArea;
import no.ugland.utransprod.service.OrderManager;
import no.ugland.utransprod.util.ApplicationParamUtil;
import no.ugland.utransprod.util.ModelUtil;
import no.ugland.utransprod.util.Threadable;
import no.ugland.utransprod.util.Util;
import no.ugland.utransprod.util.excel.ExcelUtil;

import org.jdesktop.swingx.JXTable;

import com.jgoodies.binding.PresentationModel;
import com.jgoodies.binding.adapter.AbstractTableAdapter;
import com.jgoodies.binding.adapter.BasicComponentFactory;
import com.jgoodies.binding.adapter.ComboBoxAdapter;
import com.jgoodies.binding.adapter.SingleListSelectionAdapter;
import com.jgoodies.binding.beans.Model;
import com.jgoodies.binding.beans.PropertyConnector;
import com.jgoodies.binding.list.ArrayListModel;
import com.jgoodies.binding.list.SelectionInList;
import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import com.toedter.calendar.JYearChooser;

/**
* H�ndterer rapportutvalg
*
* @author atle.brekka
*
*/
public class ReportConstraintViewHandler implements Closeable {
  /**
   *
   */
  private PresentationModel presentationModel;

  /**
   *
   */
  private final ArrayListModel reportList = new ArrayListModel();

  /**
   *
   */
  private final SelectionInList reportSelectionList = new SelectionInList(
      (ListModel) reportList);

  /**
   *
   */
  final ArrayListModel reportBasisList = new ArrayListModel();

  /**
   *
   */
  final SelectionInList reportBasisSelectionList = new SelectionInList(
      (ListModel) reportBasisList);

  /**
   *
   */
  TransportReportSetting transportReportSetting;

  /**
   *
   */
  private JXTable tableReport;

  /**
   *
   */
  private JXTable tableBasis;

  /**
   *
   */
  private boolean disposeOnClose = true;

  /**
   *
   */
  boolean generateBasis = true;

  /**
   *
   */
  private JPanel panelBasis;

  /**
   *
   */
  private JPanel panelStatistic;

  /**
   *
   */
  JTabbedPane tabbedPane;

  /**
   *
   */
  private ReportTableModel reportTableModelBasis;

 

  /**
   *
   */
  public ReportConstraintViewHandler() {
    transportReportSetting = new TransportReportSetting();

    presentationModel = new PresentationModel(transportReportSetting);
   
  }

 

  /**
   * Lager �rvelger for fra �r
   *
   * @return �rvelger
   */
  public JYearChooser getYearChooserFrom() {
    JYearChooser yearChooser = new JYearChooser();
    PropertyConnector.connect(yearChooser, "year", presentationModel
        .getModel(TransportReportSetting.PROPERTY_YEAR_FROM), "value");
    return yearChooser;
  }

  /**
   * Lager �rvelger for til �r
   *
   * @return �rvelger
   */
  public JYearChooser getYearChooserTo() {
    JYearChooser yearChooser = new JYearChooser();
    PropertyConnector.connect(yearChooser, "year", presentationModel
        .getModel(TransportReportSetting.PROPERTY_YEAR_TO), "value");
    return yearChooser;
  }

  /**
   * Lager komboboks for fra uke
   *
   * @return kombboks
   */
  public JComboBox getComboBoxWeekFrom() {
    return new JComboBox(new ComboBoxAdapter(Util.getWeeks(),
        presentationModel
            .getModel(TransportReportSetting.PROPERTY_WEEK_FROM)));
  }

  public JComboBox getComboBoxProductArea() {
    return Util.createComboBoxProductArea(presentationModel
                .getModel(TransportReportSetting.PROPERTY_PRODUCT_AREA),false);
  }

  /**
   * Lager komboboks for til uke
   *
   * @return komboboks
   */
  public JComboBox getComboBoxWeekTo() {
    return new JComboBox(new ComboBoxAdapter(Util.getWeeks(),
        presentationModel
            .getModel(TransportReportSetting.PROPERTY_WEEK_TO)));
  }

  /**
   * Lager radioknapp for transportert
   *
   * @return radioknapp
   */
  public JRadioButton getRadioButtonTransported() {
    return BasicComponentFactory
        .createRadioButton(
            presentationModel
                .getModel(TransportReportSetting.PROPERTY_TRANSPORT_CONSTRAINT_ENUM_VALUE),
            "TRANSPORTED", "Transportert");
  }

  /**
   * Lager radioknapp for planlagt
   *
   * @return radioknapp
   */
  public JRadioButton getRadioButtonTransportPlanned() {
    return BasicComponentFactory
        .createRadioButton(
            presentationModel
                .getModel(TransportReportSetting.PROPERTY_TRANSPORT_CONSTRAINT_ENUM_VALUE),
            "TRANSPORT_PLANNED", "Transport planlagt");
  }

  /**
   * Lager radioknapp for alle
   *
   * @return radioknapp
   */
  public JRadioButton getRadioButtonAll() {
    return BasicComponentFactory
        .createRadioButton(
            presentationModel
                .getModel(TransportReportSetting.PROPERTY_TRANSPORT_CONSTRAINT_ENUM_VALUE),
            "ALL", "Alle");
  }

  /**
   * Lager avbrytknapp
   *
   * @param window
   * @return knapp
   */
  public JButton getButtonCancel(WindowInterface window) {
    return new CancelButton(window, this, disposeOnClose);
  }

  /**
   * Lager knapp for excel
   *
   * @param window
   * @return knapp
   */
  public JButton getButtonExcel(WindowInterface window) {
    JButton button = new JButton(new ExcelAction(window));
    button.setIcon(IconEnum.ICON_EXCEL.getIcon());
    return button;
  }

  /**
   * Lager knapp for rapport
   *
   * @param window
   * @return knapp
   */
  public JButton getButtonShowReport(WindowInterface window) {
    JButton button = new JButton(new ShowReportAction(window));
    button.setName("ButtonShowReport");
    return button;
  }

  /**
   * Lager tabell for rapport
   *
   * @return tabell
   */
  public JXTable getTableReport() {
    tableReport = new JXTable();

    tableReport.setModel(new ReportTableModel(reportSelectionList,
        new String[] { "Antall" }, false, false));
    tableReport.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    tableReport.setSelectionModel(new SingleListSelectionAdapter(
        reportSelectionList.getSelectionIndexHolder()));
    tableReport.setColumnControlVisible(true);
    tableReport.setSearchable(null);

    tableReport.setShowGrid(true);
    tableReport.packAll();
    return tableReport;
  }

  /**
   * Lager tabell for grunnlag
   *
   * @return tabell
   */
  public JXTable getTableBasis() {
    tableBasis = new JXTable();

    tableBasis.setModel(new ReportTableModel(reportBasisSelectionList,
        new String[] { "Antall" }, true, false));
    tableBasis.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    tableBasis.setSelectionModel(new SingleListSelectionAdapter(
        reportBasisSelectionList.getSelectionIndexHolder()));
    tableBasis.setColumnControlVisible(true);
    tableBasis.setSearchable(null);

    tableBasis.setShowGrid(true);
    tableBasis.packAll();
    return tableBasis;
  }

  /**
   * Initierer tabeller
   *
   */
  private void initComponents() {
    tableReport = getTableReport();
    tableBasis = getTableBasis();
  }

  /**
   * Bygger tabpane med statistikk og grunnlag
   *
   * @param window
   * @return panel
   */
  public JPanel buildTabbedPane(WindowInterface window) {
    initComponents();
    FormLayout layout = new FormLayout("p:grow", "p:grow");
    PanelBuilder builder = new PanelBuilder(layout);
    CellConstraints cc = new CellConstraints();

    tabbedPane = new JTabbedPane();
    tabbedPane.add("Statistikk", buildStatisticPanel());
    tabbedPane.add("Grunnlag", buildBasisPanel(window));

    builder.add(tabbedPane, cc.xy(1, 1));

    return builder.getPanel();
  }

  /**
   * Bygger statistikkpanel
   *
   * @return panel
   */
  private JPanel buildStatisticPanel() {
    FormLayout layout = new FormLayout("300dlu:grow", "100dlu:grow");
    PanelBuilder builder = new PanelBuilder(layout);
    CellConstraints cc = new CellConstraints();

    builder.add(new JScrollPane(tableReport), cc.xy(1, 1));

    panelStatistic = builder.getPanel();
    return panelStatistic;
  }

  /**
   * Bygger grunnlagpanel
   *
   * @param window
   * @return panel
   */
  private JPanel buildBasisPanel(WindowInterface window) {
    FormLayout layout = new FormLayout("300dlu:grow", "100dlu:grow");
    PanelBuilder builder = new PanelBuilder(layout);
    CellConstraints cc = new CellConstraints();

    builder.add(new JScrollPane(tableBasis), cc.xy(1, 1));

    panelBasis = builder.getPanel();
    panelBasis.addComponentListener(new PanelBasisListener(window));
    return panelBasis;
  }

  /**
   * Holde p� rapportsettinger
   *
   * @author atle.brekka
   *
   */
  public class TransportReportSetting extends Model {
    /**
     *
     */
    private static final long serialVersionUID = 1L;

    /**
     *
     */
    public final static String PROPERTY_YEAR_FROM = "yearFrom";

    /**
     *
     */
    public final static String PROPERTY_YEAR_TO = "yearTo";

    /**
     *
     */
    public final static String PROPERTY_WEEK_FROM = "weekFrom";

    /**
     *
     */
    public final static String PROPERTY_WEEK_TO = "weekTo";

    /**
     *
     */
    public final static String PROPERTY_TRANSPORT_CONSTRAINT_ENUM = "transportConstraintEnum";

    /**
     *
     */
    public final static String PROPERTY_TRANSPORT_CONSTRAINT_ENUM_VALUE = "transportConstraintEnumValue";

    public final static String PROPERTY_PRODUCT_AREA = "productArea";

    /**
     *
     */
    private Integer yearFrom;

    /**
     *
     */
    private Integer yearTo;

    /**
     *
     */
    private Integer weekFrom;

    /**
     *
     */
    private Integer weekTo;

    /**
     *
     */
    private TransportConstraintEnum transportConstraintEnum;

    private ProductArea productArea;

    /**
     *
     */
    public TransportReportSetting() {
      transportConstraintEnum = TransportConstraintEnum.TRANSPORTED;
      weekFrom = Util.getCurrentWeek();
      weekTo = Util.getCurrentWeek();
      yearFrom = Util.getCurrentYear();
      yearTo = Util.getCurrentYear();
    }

    /**
     * @return enumverdi
     */
    public String getTransportConstraintEnumValue() {
      if (transportConstraintEnum != null) {
        return transportConstraintEnum.getValue();
      }
      return "";
    }

    /**
     * @param value
     */
    public void setTransportConstraintEnumValue(String value) {
      String oldValue = getTransportConstraintEnumValue();
      transportConstraintEnum = TransportConstraintEnum.getEnum(value);
      firePropertyChange(PROPERTY_TRANSPORT_CONSTRAINT_ENUM_VALUE,
          oldValue, value);
    }

    /**
     * @return rapportutvalg
     */
    public TransportConstraintEnum getTransportConstraintEnum() {
      return transportConstraintEnum;
    }

    /**
     * @param transportConstraintEnum
     */
    public void setTransportConstraintEnum(
        TransportConstraintEnum transportConstraintEnum) {
      TransportConstraintEnum oldEnum = getTransportConstraintEnum();
      this.transportConstraintEnum = transportConstraintEnum;
      firePropertyChange(PROPERTY_TRANSPORT_CONSTRAINT_ENUM, oldEnum,
          transportConstraintEnum);
    }

    /**
     * @return fra uke
     */
    public Integer getWeekFrom() {
      return weekFrom;
    }

    /**
     * @param weekFrom
     */
    public void setWeekFrom(Integer weekFrom) {
      Integer oldWeek = getWeekFrom();
      this.weekFrom = weekFrom;
      firePropertyChange(PROPERTY_WEEK_FROM, oldWeek, weekFrom);
    }

    /**
     * @return til uke
     */
    public Integer getWeekTo() {
      return weekTo;
    }

    /**
     * @param weekTo
     */
    public void setWeekTo(Integer weekTo) {
      Integer oldWeek = getWeekTo();
      this.weekTo = weekTo;
      firePropertyChange(PROPERTY_WEEK_TO, oldWeek, weekTo);
    }

    /**
     * @return fra �r
     */
    public Integer getYearFrom() {
      return yearFrom;
    }

    /**
     * @param yearFrom
     */
    public void setYearFrom(Integer yearFrom) {
      Integer oldYear = getYearFrom();
      this.yearFrom = yearFrom;
      firePropertyChange(PROPERTY_YEAR_FROM, oldYear, yearFrom);
    }

    /**
     * @return til �r
     */
    public Integer getYearTo() {
      return yearTo;
    }

    /**
     * @param yearTo
     */
    public void setYearTo(Integer yearTo) {
      Integer oldYear = getYearTo();
      this.yearTo = yearTo;
      firePropertyChange(PROPERTY_YEAR_TO, oldYear, yearTo);
    }

    /**
     * @return fra �r og uke som streng
     */
    public String getFromString() {
      return String.format("%1$d%2$02d", yearFrom, weekFrom + 10);
    }

    /**
     * @return til �r og uke som streng
     */
    public String getToString() {
      return String.format("%1$d%2$02d", yearTo, weekTo + 10);
    }

    /**
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
      return String.format("%1$d%2$02d", yearFrom, weekFrom) + " - "
          + String.format("%1$d%2$02d", yearTo, weekTo) + " "
          + transportConstraintEnum.toString();
    }

    public ProductArea getProductArea() {
      return productArea;
    }

    public void setProductArea(ProductArea productArea) {
      ProductArea oldArea = getProductArea();
      this.productArea = productArea;
      firePropertyChange(PROPERTY_PRODUCT_AREA, oldArea, productArea);
    }

    public boolean isValid() {
      if (productArea != null) {
        return true;
      }
      return false;
    }
  }

  /**
   * Rapportutvalgenum
   *
   * @author atle.brekka
   *
   */
  public enum TransportConstraintEnum {
    /**
     *
     */
    TRANSPORTED("TRANSPORTED"),
    /**
     *
     */
    TRANSPORT_PLANNED("TRANSPORT_PLANNED"),
    /**
     *
     */
    ALL("ALL");

    /**
     *
     */
    private String value;

    /**
     * @param aValue
     */
    private TransportConstraintEnum(String aValue) {
      value = aValue;
    }

    /**
     * @return verdi
     */
    String getValue() {
      return value;
    }

    /**
     * Finner enum basert p� strengverdi
     *
     * @param aString
     * @return enum
     */
    public static TransportConstraintEnum getEnum(String aString) {
      if (aString.equalsIgnoreCase("TRANSPORTED")) {
        return TRANSPORTED;
      } else if (aString.equalsIgnoreCase("TRANSPORT_PLANNED")) {
        return TRANSPORT_PLANNED;
      } else if (aString.equalsIgnoreCase("ALL")) {
        return ALL;
      }
      return null;

    }
  }

  /**
   * @see no.ugland.utransprod.gui.Closeable#canClose(java.lang.String,
   *      no.ugland.utransprod.gui.WindowInterface)
   */
  public boolean canClose(String actionString, WindowInterface window) {
    return true;
  }

  /**
   * Eksport til excel
   *
   * @throws ProTransException
   */
  void exportToExcel() throws ProTransException {
    String fileName = "transport_" + Util.getCurrentDateAsDateTimeString()
        + ".xls";
    String excelDirectory = ApplicationParamUtil
        .findParamByName("excel_path");

    JXTable excelTable = null;
    if (panelStatistic.isShowing()) {
      excelTable = tableReport;
    } else {
      excelTable = new JXTable(new ReportTableModel(
          reportBasisSelectionList, reportTableModelBasis
              .getColumnHeadings(), true, true));
    }

    ExcelUtil.showDataInExcel(excelDirectory, fileName, null,
        "Transport - " + transportReportSetting.toString(), excelTable,
        null, null, 16, false);
  }

  /**
   * Eksporter til excel
   *
   * @author atle.brekka
   *
   */
  private class ExcelAction extends AbstractAction {
    /**
     *
     */
    private static final long serialVersionUID = 1L;

    /**
     *
     */
    private WindowInterface window;

    /**
     * @param aWindow
     */
    public ExcelAction(WindowInterface aWindow) {
      super("Excel");
      window = aWindow;
    }

    /**
     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
     */
    public void actionPerformed(ActionEvent arg0) {
      Util.setWaitCursor(window.getComponent());
      try {
        exportToExcel();
        Util
            .showMsgDialog(window.getComponent(), "Excel generert",
                "Dersom excelfil ikke kom opp ligger den i katalog definert for excel");
      } catch (ProTransException e) {
        e.printStackTrace();
        Util.showErrorDialog(window, "Feil", e.getMessage());
      }
      Util.setDefaultCursor(window.getComponent());

    }
  }

  /**
   * Vis rapport
   *
   * @param forBasis
   */
  void showReport(boolean forBasis) {
    OrderManager orderManager = (OrderManager) ModelUtil
        .getBean("orderManager");

    if (forBasis) {
      createReportForBasis(orderManager);
    } else {

      createReportForSum(orderManager);
    }
  }

  private void createReportForSum(OrderManager orderManager) {
    List<ReportDataTransport> reportDataTransportList;
    reportDataTransportList = orderManager.countOrderAndCosts(
        transportReportSetting.getFromString(), transportReportSetting
            .getToString(), transportReportSetting
            .getTransportConstraintEnum(),transportReportSetting.getProductArea());

    if (reportDataTransportList != null) {
      setupReportForSum(reportDataTransportList);
    }
  }

  private void setupReportForSum(
      List<ReportDataTransport> reportDataTransportList) {
    reportList.clear();
    reportList.addAll(reportDataTransportList);
    String[] columnHeadings = ReportTableModel.COLUMN_HEADINGS_SUM;
    if (reportList.size() != 0) {
      List<String> headingList = generateHeadings(
          reportDataTransportList, columnHeadings,3);

      columnHeadings = headingList.toArray(columnHeadings);

    }
    tableReport.setModel(new ReportTableModel(reportSelectionList,
        columnHeadings, false, false));
    setColumnWidth(false, columnHeadings.length);
  }

  private void createReportForBasis(OrderManager orderManager) {
    List<ReportDataTransport> reportDataTransportList;
    reportDataTransportList = orderManager.getOrdersAndCosts(
        transportReportSetting.getFromString(), transportReportSetting
            .getToString(), transportReportSetting
            .getTransportConstraintEnum(),transportReportSetting.getProductArea());

    if (reportDataTransportList != null) {
      setupReportForBasis(reportDataTransportList);
    }
  }

  private void setupReportForBasis(
      List<ReportDataTransport> reportDataTransportList) {
    reportBasisList.addAll(reportDataTransportList);
    String[] columnHeadings = ReportTableModel.COLUMN_HEADINGS_BASIS;
    if (reportBasisList.size() != 0) {
      List<String> headingList = generateHeadings(
          reportDataTransportList, columnHeadings,9);

      columnHeadings = headingList.toArray(columnHeadings);

    }
    reportTableModelBasis = new ReportTableModel(reportBasisSelectionList,
        columnHeadings, true, false);
    tableBasis.setModel(reportTableModelBasis);
    setColumnWidth(true, columnHeadings.length);
  }

  private List<String> generateHeadings(
      List<ReportDataTransport> reportDataTransportList,
      String[] columnHeadings,int startExtraHeadings) {
    List<String> headingList = new ArrayList<String>();
    headingList.addAll(Arrays.asList(columnHeadings));
    headingList.addAll(startExtraHeadings, reportDataTransportList.get(0).getCostHeadings());
    return headingList;
  }

  /**
   * Setter kolonnebredde
   *
   * @param forBasis
   * @param numberOfCols
   */
  private void setColumnWidth(boolean forBasis, int numberOfCols) {
    {
      if (forBasis) {
        // Etterlevering
        tableBasis.getColumnExt(0).setPreferredWidth(80);
        // Ordrenr
        tableBasis.getColumnExt(1).setPreferredWidth(60);
        // Kundenr
        tableBasis.getColumnExt(2).setPreferredWidth(60);
        // Navn
        tableBasis.getColumnExt(3).setPreferredWidth(120);
        // Adresse
        tableBasis.getColumnExt(4).setPreferredWidth(150);
        // Postnr
        tableBasis.getColumnExt(5).setPreferredWidth(60);
        // Transport
        tableBasis.getColumnExt(6).setPreferredWidth(100);
        // �r
        tableBasis.getColumnExt(7).setPreferredWidth(40);
        // Uke
        tableBasis.getColumnExt(8).setPreferredWidth(40);

        for (int i = 9; i < numberOfCols; i++) {
          // Kostnad
          tableBasis.getColumnExt(i).setPreferredWidth(110);
        }

      } else {
        // �r
        tableReport.getColumnExt(0).setPreferredWidth(40);
        // Uke
        tableReport.getColumnExt(1).setPreferredWidth(40);
        // Antall
        tableReport.getColumnExt(2).setPreferredWidth(40);
        for (int i = 3; i < numberOfCols; i++) {
          // Kostnad
          tableReport.getColumnExt(i).setPreferredWidth(110);
        }

      }
    }

  }

  /**
   * Vis rapport
   *
   * @author atle.brekka
   *
   */
  private class ShowReportAction extends AbstractAction {
    /**
     *
     */
    private static final long serialVersionUID = 1L;

    /**
     *
     */
    private WindowInterface window;

    /**
     * @param aWindow
     */
    public ShowReportAction(WindowInterface aWindow) {
      super("Vis statistikk");
      window = aWindow;
    }

    /**
     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
     */
    public void actionPerformed(ActionEvent e) {
      if (transportReportSetting.isValid()) {
        generateBasis = true;
        tabbedPane.setSelectedIndex(0);
        Util.runInThreadWheel(window.getRootPane(),
            new TransportReport(false), null);
      } else {
        Util.showErrorDialog(window, "Sett utvalg", "Sett alle utvalg");
      }
    }
  }

  /**
   * Tabellmodell for rapport
   *
   * @author atle.brekka
   *
   */
  private static final class ReportTableModel extends AbstractTableAdapter {

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

    /**
     *
     */
    public static String[] COLUMN_HEADINGS_SUM = { "�r", "Uke", "Antall" };

    /**
     *
     */
    public static String[] COLUMN_HEADINGS_BASIS = { "Etterlevering",
        "Ordrenr", "Kundenr", "Navn", "Adresse", "Postnr", "Transport",
        "�r", "Uke" };

    /**
     *
     */
    private String[] columnHeadings;

    /**
     *
     */
    private boolean isForBasis = false;

    /**
     *
     */
    private boolean isForExcel = false;

    /**
     * @param listModel
     * @param columnHeadings
     * @param forBasis
     * @param forExcel
     */
    ReportTableModel(ListModel listModel, String[] columnHeadings,
        boolean forBasis, boolean forExcel) {
      super(listModel, columnHeadings);
      isForBasis = forBasis;
      isForExcel = forExcel;
      this.columnHeadings = columnHeadings!=null?columnHeadings.clone():null;

    }

    /**
     * @return kolonneoverskrifter
     */
    public String[] getColumnHeadings() {
      return columnHeadings;
    }

    /**
     * Henter verdi
     *
     * @param rowIndex
     * @param columnIndex
     * @return verdi
     */
    public Object getValueAt(int rowIndex, int columnIndex) {
      ReportDataTransport reportDataTransport = (ReportDataTransport) getRow(rowIndex);
      if (isForBasis) {
        return getValueForBasis(reportDataTransport, columnIndex);
      }
      return getValueForSum(reportDataTransport, columnIndex);
    }

    /**
     * Henter verdi for statistikkpanel
     *
     * @param reportDataTransport
     * @param columnIndex
     * @return verdi
     */
    private Object getValueForSum(ReportDataTransport reportDataTransport,
        int columnIndex) {
      switch (columnIndex) {
      case 0:
        return reportDataTransport.getYear();
      case 1:
        return reportDataTransport.getWeek();
      case 2:
        return reportDataTransport.getNumberOf();

      default:
        return reportDataTransport.getCosts().get(
            columnHeadings[columnIndex]);
      }

    }

    /**
     * Henter verdi for grunnlagpanel
     *
     * @param reportDataTransport
     * @param columnIndex
     * @return verdi
     */
    private Object getValueForBasis(
        ReportDataTransport reportDataTransport, int columnIndex) {
      switch (columnIndex) {
      case 0:
        if (isForExcel) {
          if (reportDataTransport.isPostShipment()) {
            return "X";
          }
          return "";
        }
        return reportDataTransport.isPostShipment();
      case 1:
        return reportDataTransport.getOrderNr();
      case 2:
        return reportDataTransport.getCustomerNr();
      case 3:
        return reportDataTransport.getCustomerName();
      case 4:
        return reportDataTransport.getDeliveryAddress();
      case 5:
        return reportDataTransport.getPostalCode();
      case 6:
        return reportDataTransport.getTransportName();
      case 7:
        return reportDataTransport.getYear();
      case 8:
        return reportDataTransport.getWeek();

      default:
        try {
          return reportDataTransport.getCosts().get(
              columnHeadings[columnIndex]);
        } catch (ArrayIndexOutOfBoundsException e) {
          e.printStackTrace();
          return null;
        }
      }

    }

    /**
     * @see javax.swing.table.AbstractTableModel#getColumnClass(int)
     */
    @Override
    public Class<?> getColumnClass(int columnIndex) {
      if (isForBasis) {
        return getColumnClassForBasis(columnIndex);
      }
      return getColumnClassForSum(columnIndex);
    }

    /**
     * Henter kolonneklasse for statistikk
     *
     * @param columnIndex
     * @return kolonneklasse
     */
    private Class<?> getColumnClassForSum(int columnIndex) {
      switch (columnIndex) {
      case 0:
      case 1:
      case 2:
        return Integer.class;
      default:
        return BigDecimal.class;
      }
    }

    /**
     * Henter kolonneklasse for grunnlag
     *
     * @param columnIndex
     * @return kolonneklasse
     */
    private Class<?> getColumnClassForBasis(int columnIndex) {
      switch (columnIndex) {
      case 0:
        if (isForExcel) {
          return String.class;
        }
        return Boolean.class;
      case 1:
      case 3:
      case 4:
      case 5:
      case 6:
        return String.class;
      case 2:
      case 7:
      case 8:
        return Integer.class;

      default:
        return BigDecimal.class;
      }
    }

  }

  /**
   * @return vindustittel
   */
  public String getWindowTitle() {
    return "Transportstatistikk";
  }

  /**
   * @return vindusst�rrelse
   */
  public Dimension getWindowSize() {
    return new Dimension(580, 400);
  }

  /**
   * @return true dersom dispose skal kj�res
   */
  public boolean getDisposeOnClose() {
    return disposeOnClose;
  }

  /**
   * H�ndterer grunnlagpanel
   *
   * @author atle.brekka
   *
   */
  private class PanelBasisListener extends ComponentAdapter {
    /**
     *
     */
    private WindowInterface window;

    /**
     * @param aWindow
     */
    public PanelBasisListener(WindowInterface aWindow) {
      window = aWindow;
    }

    /**
     * @see java.awt.event.ComponentAdapter#componentShown(java.awt.event.ComponentEvent)
     */
    @Override
    public void componentShown(ComponentEvent event) {
      if (generateBasis) {
        generateBasis = false;
        reportBasisSelectionList.clearSelection();
        reportBasisList.clear();
        Util.runInThreadWheel(window.getRootPane(),
            new TransportReport(true), null);
      }
    }

  }

  /**
   * H�ndterer visning av rapport
   *
   * @author atle.brekka
   *
   */
  private class TransportReport implements Threadable {
    /**
     *
     */
    private boolean forBasis = false;

    /**
     * @param basis
     */
    public TransportReport(boolean basis) {
      forBasis = basis;
    }

    /**
     * @see no.ugland.utransprod.util.Threadable#doWhenFinished(java.lang.Object)
     */
    public void doWhenFinished(Object object) {
    }

    /**
     * @see no.ugland.utransprod.util.Threadable#doWork(java.lang.Object[],
     *      javax.swing.JLabel)
     */
    public Object doWork(Object[] params, JLabel labelInfo) {
      labelInfo.setText("Genererer rapport...");
      showReport(forBasis);
      return null;
    }

    /**
     * @see no.ugland.utransprod.util.Threadable#enableComponents(boolean)
     */
    public void enableComponents(boolean enable) {
    }

  }
}
TOP

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

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.