diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JComponentCellEditor.java b/wisim/src/java/net/sourceforge/wisim/controller/JComponentCellEditor.java index 82ba9e7..4a40339 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JComponentCellEditor.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JComponentCellEditor.java @@ -59,6 +59,7 @@ public Component getComponent() { /** * @return editorComponent */ + @Override public Object getCellEditorValue() { return editorComponent; } @@ -67,6 +68,7 @@ public Object getCellEditorValue() { * @param anEvent * @return boolean */ + @Override public boolean isCellEditable(EventObject anEvent) { return true; } @@ -91,11 +93,13 @@ public boolean shouldSelectCell(EventObject anEvent) { /** * @return boolean */ + @Override public boolean stopCellEditing() { fireEditingStopped(); return true; } + @Override public void cancelCellEditing() { fireEditingCanceled(); } @@ -103,6 +107,7 @@ public void cancelCellEditing() { /** * @param l */ + @Override public void addCellEditorListener(CellEditorListener l) { listenerList.add(CellEditorListener.class, l); } @@ -110,6 +115,7 @@ public void addCellEditorListener(CellEditorListener l) { /** * @param l */ + @Override public void removeCellEditorListener(CellEditorListener l) { listenerList.remove(CellEditorListener.class, l); } @@ -153,6 +159,7 @@ protected void fireEditingCanceled() { * @param row * @return editorComponent */ + @Override public Component getTreeCellEditorComponent(JTree tree, Object value, boolean isSelected, boolean expanded, boolean leaf, int row) { tree.convertValueToText(value, isSelected, expanded, leaf, row, false); //dispensable? editorComponent = (JComponent) value; @@ -169,6 +176,7 @@ public Component getTreeCellEditorComponent(JTree tree, Object value, boolean is * @param column * @return editorComponent */ + @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { editorComponent = (JComponent) value; diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelIncomingPayments.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelIncomingPayments.java index da2c571..6bad0ad 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelIncomingPayments.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelIncomingPayments.java @@ -21,13 +21,13 @@ ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ -/* + /* * JPanelZahlungseingang.java * * Created on 10. März 2003, 21:33 */ - package net.sourceforge.wisim.controller; + import java.awt.Color; import java.awt.Graphics; import java.awt.Image; @@ -35,66 +35,65 @@ import java.text.DecimalFormat; import java.util.Collection; import java.util.Date; -import java.util.Hashtable; -import java.util.Iterator; - +import java.util.HashMap; import javax.swing.ImageIcon; import javax.swing.JComponent; import javax.swing.table.DefaultTableModel; - import net.sourceforge.wisim.dao.WiSimDAO; import net.sourceforge.wisim.dao.WiSimDAOException; import net.sourceforge.wisim.dao.WiSimDAOWriteException; import net.sourceforge.wisim.model.Contract; -import net.sourceforge.wisim.model.ContractAccount; +import net.sourceforge.wisim.model.ContractInvoice; import net.sourceforge.wisim.model.Customer; import net.sourceforge.wisim.model.Refreshable; import net.sourceforge.wisim.model.WiSimLogger; /** - * JPanelZahlungseingang ermöglicht Übersicht und Bearbeitung aller Zahlungseingänge. + * JPanelZahlungseingang ermöglicht Übersicht und Bearbeitung aller + * Zahlungseingänge. */ - public class JPanelIncomingPayments extends javax.swing.JPanel implements Refreshable { - private WiSimDAO dao; - private Hashtable vertragObjekte; - private Hashtable rechnungObjekte; - private Hashtable kundeObjekte; - private int anzahl; - private Color darkgreen = new Color(51, 153, 51); - private Color red = new Color(255, 0, 0); - private boolean isBuilt; - private WiSimMainController wiSimMainController; - private WiSimLogger logger; - private DecimalFormat format; - - /** Creates new form JPanelZahlungseingang - * @param wiSimMainController Der WiSimMainController - */ - public JPanelIncomingPayments(WiSimMainController wiSimMainController) { - this.wiSimMainController = wiSimMainController; - logger = wiSimMainController.getWiSimLogger(); - initDAO(wiSimMainController); - vertragObjekte = new Hashtable(); - rechnungObjekte = new Hashtable(); - kundeObjekte = new Hashtable(); - anzahl = 0; - isBuilt = false; - initComponents(); - format = new DecimalFormat("###,##0.00"); - } - - private void initDAO(WiSimMainController wiSimMainController) { - dao = wiSimMainController.getDAO(); - } - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - private void initComponents() { //GEN-BEGIN:initComponents + private WiSimDAO dao; + private final HashMap vertragObjekte; + private final HashMap rechnungObjekte; + private final HashMap kundeObjekte; + private int anzahl; + private final static Color DARKGREEN = new Color(51, 153, 51); + private final static Color RED = new Color(255, 0, 0); + private boolean isBuilt; + private final WiSimMainController wiSimMainController; + private final WiSimLogger logger; + private final DecimalFormat format; + + /** + * Creates new form JPanelZahlungseingang + * + * @param wiSimMainController Der WiSimMainController + */ + public JPanelIncomingPayments(WiSimMainController wiSimMainController) { + this.wiSimMainController = wiSimMainController; + logger = wiSimMainController.getWiSimLogger(); + initDAO(wiSimMainController); + vertragObjekte = new HashMap<>(); + rechnungObjekte = new HashMap<>(); + kundeObjekte = new HashMap<>(); + anzahl = 0; + isBuilt = false; + initComponents(); + format = new DecimalFormat("###,##0.00"); + } + + private void initDAO(WiSimMainController wiSimMainController) { + dao = wiSimMainController.getDAO(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + private void initComponents() {//GEN-BEGIN:initComponents jLabelEtatEinsehen = new javax.swing.JLabel(); jScrollPaneRechnungListe = new javax.swing.JScrollPane(); jTableRechnungListe = new javax.swing.JTable(); @@ -333,44 +332,44 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { add(jPanelLegende1); jPanelLegende1.setBounds(420, 90, 340, 420); - } //GEN-END:initComponents - - private void formAncestorRemoved(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_formAncestorRemoved - wiSimMainController.removeActivPanel(this); - } //GEN-LAST:event_formAncestorRemoved - - private void formAncestorAdded(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_formAncestorAdded - wiSimMainController.addActivPanel(this); - } //GEN-LAST:event_formAncestorAdded - - private void jButtonResetActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jButtonResetActionPerformed - int auswahl = getSelectedContractID(); - if (auswahl != 0) { - boolean i = false; - setStatus(getSelectedContractID(), i); - setStandard(); - } - } //GEN-LAST:event_jButtonResetActionPerformed - - private void jButtonSpeichernActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jButtonSpeichernActionPerformed - int auswahl = getSelectedContractID(); - if (auswahl != 0) { - boolean i = true; - setStatus(getSelectedContractID(), i); - setStandard(); - } - } //GEN-LAST:event_jButtonSpeichernActionPerformed - - private void jTableRechnungListeMouseClicked(java.awt.event.MouseEvent evt) { //GEN-FIRST:event_jTableRechnungListeMouseClicked - loadCustomer(); - } //GEN-LAST:event_jTableRechnungListeMouseClicked - - private void jTableRechnungListeAncestorAdded(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_jTableRechnungListeAncestorAdded - setStandard(); - loadInvoices(); - showLegende(); - setIsBuilt(true); - } //GEN-LAST:event_jTableRechnungListeAncestorAdded + }//GEN-END:initComponents + + private void formAncestorRemoved(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_formAncestorRemoved + wiSimMainController.removeActivPanel(this); + }//GEN-LAST:event_formAncestorRemoved + + private void formAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_formAncestorAdded + wiSimMainController.addActivPanel(this); + }//GEN-LAST:event_formAncestorAdded + + private void jButtonResetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonResetActionPerformed + int auswahl = getSelectedContractID(); + if (auswahl != 0) { + boolean i = false; + setStatus(getSelectedContractID(), i); + setStandard(); + } + }//GEN-LAST:event_jButtonResetActionPerformed + + private void jButtonSpeichernActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSpeichernActionPerformed + int auswahl = getSelectedContractID(); + if (auswahl != 0) { + boolean i = true; + setStatus(getSelectedContractID(), i); + setStandard(); + } + }//GEN-LAST:event_jButtonSpeichernActionPerformed + + private void jTableRechnungListeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableRechnungListeMouseClicked + loadCustomer(); + }//GEN-LAST:event_jTableRechnungListeMouseClicked + + private void jTableRechnungListeAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jTableRechnungListeAncestorAdded + setStandard(); + loadInvoices(); + showLegende(); + setIsBuilt(true); + }//GEN-LAST:event_jTableRechnungListeAncestorAdded // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton jButtonReset; @@ -403,299 +402,317 @@ private void jTableRechnungListeAncestorAdded(javax.swing.event.AncestorEvent ev private javax.swing.JTextField jTextFieldSkonto; // End of variables declaration//GEN-END:variables - /** Füllt die Tabelle mit den in der DB vorhadenen Rechnungen */ - public void loadInvoices() { - try { - Collection vertraege = null; - vertraege = dao.getVertraege(); - Iterator it_Vertrag = vertraege.iterator(); - - int i = 0; - anzahl = vertraege.size(); - setTable(); - - while (it_Vertrag.hasNext()) { - Contract vertragsliste = (Contract) it_Vertrag.next(); - ContractAccount auftrag = new ContractAccount(); - auftrag = dao.getAuftragsrechnung(vertragsliste.getAuftragsrechnungsId()); - Customer kunde = new Customer(); - kunde = dao.getKunde(vertragsliste.getKundenId()); - - jTableRechnungListe.setValueAt(String.valueOf(auftrag.getAuftragNr()), i, 0); - jTableRechnungListe.setValueAt(kunde.getNachname() + ", " + kunde.getVorname(), i, 1); - - if (compareDate(wiSimMainController.getActDate(), vertragsliste.getLieferdatum()) <= 0) { - Image imageIconGreen = new BufferedImage(28, 30, 2); - Graphics g = imageIconGreen.getGraphics(); - g.setColor(darkgreen); - g.fillRoundRect(10, 11, 10, 10, 3, 3); - ImageIcon ic = new ImageIcon(imageIconGreen); - jTableRechnungListe.setValueAt(ic, i, 2); - - } else { - Image imageIconRed = new BufferedImage(28, 30, 2); - Graphics g = imageIconRed.getGraphics(); - g = imageIconRed.getGraphics(); - g.setColor(red); - g.fillRoundRect(10, 11, 10, 10, 3, 3); - ImageIcon ic = new ImageIcon(imageIconRed); - jTableRechnungListe.setValueAt(ic, i, 2); - } - - if (auftrag.getzEingang()) { - Image imageIconGreen = new BufferedImage(28, 30, 2); - Graphics g = imageIconGreen.getGraphics(); - g.setColor(darkgreen); - g.fillRoundRect(10, 11, 10, 10, 3, 3); - ImageIcon is = new ImageIcon(imageIconGreen); - jTableRechnungListe.setValueAt(is, i, 3); - - } else { - Image imageIconRed = new BufferedImage(28, 30, 2); - Graphics g = imageIconRed.getGraphics(); - g = imageIconRed.getGraphics(); - g.setColor(red); - g.fillRoundRect(10, 11, 10, 10, 3, 3); - ImageIcon is = new ImageIcon(imageIconRed); - jTableRechnungListe.setValueAt(is, i, 3); - } - - vertragObjekte.put(String.valueOf(i), vertragsliste); - rechnungObjekte.put(String.valueOf(i), auftrag); - kundeObjekte.put(String.valueOf(i), kunde); - i++; - } - } catch (WiSimDAOException e) { - logger.log("ladeRechnungen()", e); - } - } - - //Lädt einen Kunden zum Bearbeiten aus der Datenbank - private void loadCustomer() { - - //liefert listItem des selektierten Eintrags - String listItem = String.valueOf(jTableRechnungListe.getSelectedRow()); - Contract auswahlVertrag = (Contract) vertragObjekte.get(listItem); - ContractAccount auswahlRechnung = (ContractAccount) rechnungObjekte.get(listItem); - Customer auswahlKunde = (Customer) kundeObjekte.get(listItem); - - if (auswahlVertrag != null) { - jTextFieldKunde.setText(auswahlKunde.getNachname() + ", " + auswahlKunde.getVorname()); - jTextFieldFirma.setText(auswahlKunde.getFirma()); - jTextFieldRabatt.setText(format.format(auswahlVertrag.getRabatt())); - jTextFieldSkonto.setText(format.format(auswahlVertrag.getSkonto())); - jTextFieldPreis.setText(format.format(auswahlRechnung.getBetrag())); - jTextFieldAuftragsdatum.setText(String.valueOf(formatDate(auswahlVertrag.getVertragsdatum()))); - jTextFieldLieferdatum.setText(String.valueOf(formatDate(auswahlVertrag.getLieferdatum()))); - jTextFieldNr.setText(String.valueOf(auswahlRechnung.getNr())); - } - - if (compareDate(wiSimMainController.getActDate(), auswahlVertrag.getLieferdatum()) <= 0) { - if (auswahlRechnung.getzEingang()) { - jButtonSpeichern.setEnabled(false); - jButtonReset.setEnabled(true); - } else { - jButtonSpeichern.setEnabled(true); - jButtonReset.setEnabled(false); - } - } else { - jButtonSpeichern.setEnabled(false); - jButtonReset.setEnabled(false); - } - - } - - //Setzt Rechnungsstatus auf bezahlt - private void setStatus(int id, boolean i) { - try { - dao.aendereAuftragsrechnung(id, i); - loadInvoices(); - } catch (WiSimDAOException e) { - logger.log("aendereEingang()", e); - } catch (WiSimDAOWriteException e) { - logger.log("aendereEingang()", e); - } - } - - /** Formatiert ein Date Objekt zu einem String TT.MM.JJJJ. - * @param dateToFormat Das zu formatierende Datum. - * @return Das formatierte Datum. - */ - private String formatDate(java.sql.Date dateToFormat) { - String date = String.valueOf(dateToFormat); - String year = date.substring(0, 4); - String month = date.substring(5, 7); - String day = date.substring(8, 10); - String formattedDate = day + "." + month + "." + year; - return formattedDate; - } - - /** Vergleicht Lieferdatum mit aktuellen Datum - * @param one Datum aus der DB - * @param two dynamisches Datum - * @return int - */ - private int compareDate(Date one, Date two) { - //umwandeln in UtilDate - one = new java.util.Date(one.getTime()); - two = new java.util.Date(two.getTime()); - int controll = two.compareTo(one); - return controll; - } - /** Zeigt die Legende an */ - public void showLegende() { - //Legende - Image imageIconGreen = new BufferedImage(28, 30, 2); - Graphics g = imageIconGreen.getGraphics(); - g.setColor(darkgreen); - g.fillRoundRect(10, 11, 10, 10, 3, 3); - ImageIcon ic = new ImageIcon(imageIconGreen); - jLabelGruen.setIcon(ic); - - Image imageIconRed = new BufferedImage(28, 30, 2); - g = imageIconRed.getGraphics(); - g.setColor(red); - g.fillRoundRect(10, 11, 10, 10, 3, 3); - ic = new ImageIcon(imageIconRed); - jLabelRot.setIcon(ic); - } - - /** Erstellt die Tabelle. */ - private void setTable() { - - Object[][] tableInit = new Object[anzahl][4]; - DefaultTableModel defTable = new DefaultTableModel(tableInit, new String[] { "Nr", "Name, Vorname", "Lieferung", "Zahlung" }) { - boolean[] canEdit = new boolean[] { false, false, false, false }; - public boolean isCellEditable(int rowIndex, int columnIndex) { - return canEdit[columnIndex]; - } - public Class getColumnClass(int c) { - return getValueAt(0, c).getClass(); - } - }; - jTableRechnungListe.setModel(defTable); - jTableRechnungListe.setFocusable(false); - jTableRechnungListe.getTableHeader().setReorderingAllowed(false); - - javax.swing.table.TableColumn column = null; - - //Spaltenbreiten der Tabelle werden gesetzt - for (int i = 0; i < 4; i++) { - column = jTableRechnungListe.getColumnModel().getColumn(i); - switch (i) { - //Nr - case 0 : - column.setPreferredWidth(30); - break; - //Name - case 1 : - column.setPreferredWidth(150); - break; - //Lieferung - case 2 : - column.setPreferredWidth(40); - break; - //Zahlung - case 3 : - column.setPreferredWidth(40); - break; - - } - } - jTableRechnungListe.setDefaultRenderer(JComponent.class, new JComponentCellRenderer()); - jTableRechnungListe.setDefaultEditor(JComponent.class, new JComponentCellEditor()); - } - - /** Liefert die KD_Nr des aktiven Kunden - * @return int - */ - private int getSelectedContractID() { - //liefert listItem des selektierten Eintrags - String listItem = String.valueOf(jTableRechnungListe.getSelectedRow()); - //sucht das aktive KundenObjekt in Hashtabelle kundenObjekte - Contract auswahl = (Contract) vertragObjekte.get(listItem); - if (auswahl != null) { - return auswahl.getAuftragsrechnungsId(); - } else - return 0; - } - - // Setzt nach dem Speichern und Löschen eines Lieferanten die Werte auf Standard^ - private void setStandard() { - jTextFieldKunde.setText(""); - jTextFieldFirma.setText(""); - jTextFieldRabatt.setText(""); - jTextFieldSkonto.setText(""); - jTextFieldPreis.setText(""); - jTextFieldAuftragsdatum.setText(""); - jTextFieldLieferdatum.setText(""); - jTextFieldNr.setText(""); - jButtonReset.setEnabled(false); - jButtonSpeichern.setEnabled(false); - } - - /** Refreshed Tabelle */ - private void refreshTabelle() { - if (jTableRechnungListe.getSelectedRow() >= 0) { - Collection vertraege = null; - try { - vertraege = dao.getVertraege(); - } catch (WiSimDAOException e) { - logger.log("refreshTabelle()", e); - } - anzahl = vertraege.size(); - int i = 0; - if (anzahl > 0) { - - Iterator it_Vertrag = vertraege.iterator(); - - while (it_Vertrag.hasNext()) { - Contract vertragsliste = (Contract) it_Vertrag.next(); - - if (compareDate(wiSimMainController.getActDate(), vertragsliste.getLieferdatum()) <= 0) { - Image imageIconGreen = new BufferedImage(28, 30, 2); - Graphics g = imageIconGreen.getGraphics(); - g.setColor(darkgreen); - g.fillRoundRect(10, 11, 10, 10, 3, 3); - ImageIcon ic = new ImageIcon(imageIconGreen); - jTableRechnungListe.setValueAt(ic, i, 2); - - } else { - Image imageIconRed = new BufferedImage(28, 30, 2); - Graphics g = imageIconRed.getGraphics(); - g = imageIconRed.getGraphics(); - g.setColor(red); - g.fillRoundRect(10, 11, 10, 10, 3, 3); - ImageIcon ic = new ImageIcon(imageIconRed); - jTableRechnungListe.setValueAt(ic, i, 2); - } - i++; - } - } - } - } - - /** Setzt die Variable isBuilt - * @param isBuilt - */ - public void setIsBuilt(boolean isBuilt) { - this.isBuilt = isBuilt; - } - - /** Wurde das Pane schon einmal aufgebaut, so ist "isBuilt" = TRUE. - * Wichtig ist diese Variable für die Simulation: Wurde das Pane - * schon einmal aufgebaut, so müssen die Simulationsthread das Pane - * nicht noch einmal initialisieren! - * @return boolean - */ - public boolean getIsBuilt() { - return isBuilt; - } - - /* (non-Javadoc) + /** + * Füllt die Tabelle mit den in der DB vorhadenen Rechnungen + */ + public void loadInvoices() { + try { + Collection vertraege = dao.getContracts(); + //Iterator it_Vertrag = vertraege.iterator(); + + int i = 0; + anzahl = vertraege.size(); + setTable(); + + for (Contract vertragsliste : vertraege) { + + //while (it_Vertrag.hasNext()) { + //Contract vertragsliste = (Contract) it_Vertrag.next(); + ContractInvoice auftrag = dao.getAuftragsrechnung(vertragsliste.getAuftragsrechnungsId()); + Customer kunde = dao.getCustomer(vertragsliste.getKundenId()); + + jTableRechnungListe.setValueAt(String.valueOf(auftrag.getAuftragNr()), i, 0); + jTableRechnungListe.setValueAt(kunde.getNachname() + ", " + kunde.getVorname(), i, 1); + + if (compareDate(wiSimMainController.getActDate(), vertragsliste.getLieferdatum()) <= 0) { + Image imageIconGreen = new BufferedImage(28, 30, 2); + Graphics g = imageIconGreen.getGraphics(); + g.setColor(DARKGREEN); + g.fillRoundRect(10, 11, 10, 10, 3, 3); + ImageIcon ic = new ImageIcon(imageIconGreen); + jTableRechnungListe.setValueAt(ic, i, 2); + + } else { + Image imageIconRed = new BufferedImage(28, 30, 2); + Graphics g = imageIconRed.getGraphics(); + g.setColor(RED); + g.fillRoundRect(10, 11, 10, 10, 3, 3); + ImageIcon ic = new ImageIcon(imageIconRed); + jTableRechnungListe.setValueAt(ic, i, 2); + } + + if (auftrag.getzEingang()) { + Image imageIconGreen = new BufferedImage(28, 30, 2); + Graphics g = imageIconGreen.getGraphics(); + g.setColor(DARKGREEN); + g.fillRoundRect(10, 11, 10, 10, 3, 3); + ImageIcon is = new ImageIcon(imageIconGreen); + jTableRechnungListe.setValueAt(is, i, 3); + + } else { + Image imageIconRed = new BufferedImage(28, 30, 2); + Graphics g = imageIconRed.getGraphics(); + g.setColor(RED); + g.fillRoundRect(10, 11, 10, 10, 3, 3); + ImageIcon is = new ImageIcon(imageIconRed); + jTableRechnungListe.setValueAt(is, i, 3); + } + + vertragObjekte.put(String.valueOf(i), vertragsliste); + rechnungObjekte.put(String.valueOf(i), auftrag); + kundeObjekte.put(String.valueOf(i), kunde); + i++; + } + } catch (WiSimDAOException e) { + logger.log("ladeRechnungen()", e); + } + } + + //Lädt einen Kunden zum Bearbeiten aus der Datenbank + private void loadCustomer() { + + //liefert listItem des selektierten Eintrags + String listItem = String.valueOf(jTableRechnungListe.getSelectedRow()); + Contract auswahlVertrag = vertragObjekte.get(listItem); + ContractInvoice auswahlRechnung = rechnungObjekte.get(listItem); + Customer auswahlKunde = kundeObjekte.get(listItem); + + if (auswahlVertrag != null) { + jTextFieldKunde.setText(auswahlKunde.getNachname() + ", " + auswahlKunde.getVorname()); + jTextFieldFirma.setText(auswahlKunde.getFirma()); + jTextFieldRabatt.setText(format.format(auswahlVertrag.getRabatt())); + jTextFieldSkonto.setText(format.format(auswahlVertrag.getSkonto())); + jTextFieldPreis.setText(format.format(auswahlRechnung.getBetrag())); + jTextFieldAuftragsdatum.setText(String.valueOf(formatDate(auswahlVertrag.getVertragsdatum()))); + jTextFieldLieferdatum.setText(String.valueOf(formatDate(auswahlVertrag.getLieferdatum()))); + jTextFieldNr.setText(String.valueOf(auswahlRechnung.getNr())); + } + + if (compareDate(wiSimMainController.getActDate(), auswahlVertrag.getLieferdatum()) <= 0) { + if (auswahlRechnung.getzEingang()) { + jButtonSpeichern.setEnabled(false); + jButtonReset.setEnabled(true); + } else { + jButtonSpeichern.setEnabled(true); + jButtonReset.setEnabled(false); + } + } else { + jButtonSpeichern.setEnabled(false); + jButtonReset.setEnabled(false); + } + + } + + //Setzt Rechnungsstatus auf bezahlt + private void setStatus(int id, boolean i) { + try { + dao.aendereAuftragsrechnung(id, i); + loadInvoices(); + } catch (WiSimDAOException | WiSimDAOWriteException e) { + logger.log("aendereEingang()", e); + } + } + + /** + * Formatiert ein Date Objekt zu einem String TT.MM.JJJJ. + * + * @param dateToFormat Das zu formatierende Datum. + * @return Das formatierte Datum. + */ + private String formatDate(java.sql.Date dateToFormat) { + String date = String.valueOf(dateToFormat); + String year = date.substring(0, 4); + String month = date.substring(5, 7); + String day = date.substring(8, 10); + String formattedDate = day + "." + month + "." + year; + return formattedDate; + } + + /** + * Vergleicht Lieferdatum mit aktuellen Datum + * + * @param one Datum aus der DB + * @param two dynamisches Datum + * @return int + */ + private int compareDate(Date one, Date two) { + //umwandeln in UtilDate + one = new java.util.Date(one.getTime()); + two = new java.util.Date(two.getTime()); + int controll = two.compareTo(one); + return controll; + } + + /** + * Zeigt die Legende an + */ + public void showLegende() { + //Legende + Image imageIconGreen = new BufferedImage(28, 30, 2); + Graphics g = imageIconGreen.getGraphics(); + g.setColor(DARKGREEN); + g.fillRoundRect(10, 11, 10, 10, 3, 3); + ImageIcon ic = new ImageIcon(imageIconGreen); + jLabelGruen.setIcon(ic); + + Image imageIconRed = new BufferedImage(28, 30, 2); + g = imageIconRed.getGraphics(); + g.setColor(RED); + g.fillRoundRect(10, 11, 10, 10, 3, 3); + ic = new ImageIcon(imageIconRed); + jLabelRot.setIcon(ic); + } + + /** + * Erstellt die Tabelle. + */ + private void setTable() { + + Object[][] tableInit = new Object[anzahl][4]; + DefaultTableModel defTable = new DefaultTableModel(tableInit, new String[]{"Nr", "Name, Vorname", "Lieferung", "Zahlung"}) { + boolean[] canEdit = new boolean[]{false, false, false, false}; + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit[columnIndex]; + } + + @Override + public Class getColumnClass(int c) { + return getValueAt(0, c).getClass(); + } + }; + jTableRechnungListe.setModel(defTable); + jTableRechnungListe.setFocusable(false); + jTableRechnungListe.getTableHeader().setReorderingAllowed(false); + + javax.swing.table.TableColumn column; + + //Spaltenbreiten der Tabelle werden gesetzt + for (int i = 0; i < 4; i++) { + column = jTableRechnungListe.getColumnModel().getColumn(i); + switch (i) { + //Nr + case 0: + column.setPreferredWidth(30); + break; + //Name + case 1: + column.setPreferredWidth(150); + break; + //Lieferung + case 2: + column.setPreferredWidth(40); + break; + //Zahlung + case 3: + column.setPreferredWidth(40); + break; + + } + } + jTableRechnungListe.setDefaultRenderer(JComponent.class, new JComponentCellRenderer()); + jTableRechnungListe.setDefaultEditor(JComponent.class, new JComponentCellEditor()); + } + + /** + * Liefert die KD_Nr des aktiven Kunden + * + * @return int + */ + private int getSelectedContractID() { + //liefert listItem des selektierten Eintrags + String listItem = String.valueOf(jTableRechnungListe.getSelectedRow()); + //sucht das aktive KundenObjekt in Hashtabelle kundenObjekte + Contract auswahl = vertragObjekte.get(listItem); + if (auswahl != null) { + return auswahl.getAuftragsrechnungsId(); + } else { + return 0; + } + } + + // Setzt nach dem Speichern und Löschen eines Lieferanten die Werte auf Standard^ + private void setStandard() { + jTextFieldKunde.setText(""); + jTextFieldFirma.setText(""); + jTextFieldRabatt.setText(""); + jTextFieldSkonto.setText(""); + jTextFieldPreis.setText(""); + jTextFieldAuftragsdatum.setText(""); + jTextFieldLieferdatum.setText(""); + jTextFieldNr.setText(""); + jButtonReset.setEnabled(false); + jButtonSpeichern.setEnabled(false); + } + + /** + * Refreshed Tabelle + */ + private void refreshTabelle() { + if (jTableRechnungListe.getSelectedRow() >= 0) { + Collection vertraege = null; + try { + vertraege = dao.getContracts(); + } catch (WiSimDAOException e) { + logger.log("refreshTabelle()", e); + } + anzahl = vertraege.size(); + int i = 0; + if (anzahl > 0) { + + for (Contract vertragsliste : vertraege) { + //Iterator it_Vertrag = vertraege.iterator(); + //while (it_Vertrag.hasNext()) { + //Contract vertragsliste = (Contract) it_Vertrag.next(); + + if (compareDate(wiSimMainController.getActDate(), vertragsliste.getLieferdatum()) <= 0) { + Image imageIconGreen = new BufferedImage(28, 30, 2); + Graphics g = imageIconGreen.getGraphics(); + g.setColor(DARKGREEN); + g.fillRoundRect(10, 11, 10, 10, 3, 3); + ImageIcon ic = new ImageIcon(imageIconGreen); + jTableRechnungListe.setValueAt(ic, i, 2); + + } else { + Image imageIconRed = new BufferedImage(28, 30, 2); + Graphics g = imageIconRed.getGraphics(); + g.setColor(RED); + g.fillRoundRect(10, 11, 10, 10, 3, 3); + ImageIcon ic = new ImageIcon(imageIconRed); + jTableRechnungListe.setValueAt(ic, i, 2); + } + i++; + } + } + } + } + + /** + * Setzt die Variable isBuilt + * + * @param isBuilt + */ + public void setIsBuilt(boolean isBuilt) { + this.isBuilt = isBuilt; + } + + /** + * Wurde das Pane schon einmal aufgebaut, so ist "isBuilt" = TRUE. Wichtig ist + * diese Variable für die Simulation: Wurde das Pane schon einmal aufgebaut, + * so müssen die Simulationsthread das Pane nicht noch einmal initialisieren! + * + * @return boolean + */ + public boolean getIsBuilt() { + return isBuilt; + } + + /* (non-Javadoc) * @see net.sourceforge.wisim.model.SimulationPane#refresh() - */ - public void refresh() { - refreshTabelle(); - } + */ + @Override + public void refresh() { + refreshTabelle(); + } } diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelModifyCustomer.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelModifyCustomer.java index da36b38..eaf0635 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelModifyCustomer.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelModifyCustomer.java @@ -32,11 +32,9 @@ import java.util.Collection; import java.util.Hashtable; import java.util.Iterator; - import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListModel; import javax.swing.JOptionPane; - import net.sourceforge.wisim.dao.WiSimDAO; import net.sourceforge.wisim.dao.WiSimDAOException; import net.sourceforge.wisim.dao.WiSimDAOWriteException; @@ -534,9 +532,9 @@ private void clearScreen() { */ private void loadCustomers() { clearScreen(); - Collection kundenliste = null; + Collection kundenliste = null; try { - kundenliste = dao.getKunden(); + kundenliste = dao.getCustomers(); } catch (WiSimDAOException e) { logger.log("ladeKunden()", e); } @@ -588,7 +586,7 @@ private void loadCustomer(int kdID) { if (kdID != 0) { Customer lkunde = new Customer(); try { - lkunde = dao.getKunde(kdID); + lkunde = dao.getCustomer(kdID); } catch (WiSimDAOException e) { logger.log("ladeKunden(int)", e); } @@ -771,7 +769,7 @@ private void setMorelSelection(String selectitem) { int size = zmodel.getSize(); String item = ""; for (int s = 0; s < size; s++) { - item = (String) jComboBoxKundeBearbeitenZahlungsmoral.getItemAt(s); + item = jComboBoxKundeBearbeitenZahlungsmoral.getItemAt(s); if (item.equals(selectitem)) { zmodel.setSelectedItem(item); jComboBoxKundeBearbeitenZahlungsmoral.setModel(zmodel); diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelModifySupplier.form b/wisim/src/java/net/sourceforge/wisim/controller/JPanelModifySupplier.form index 89a4a96..070342f 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelModifySupplier.form +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelModifySupplier.form @@ -1,12 +1,20 @@ -
+ + + + + + + + + @@ -119,7 +127,7 @@ - + @@ -143,7 +151,7 @@ - + @@ -224,7 +232,7 @@ - + @@ -401,7 +409,7 @@ - + @@ -427,6 +435,9 @@ + + + @@ -451,6 +462,9 @@ + + + @@ -463,7 +477,7 @@ - + diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelModifySupplier.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelModifySupplier.java index db47cad..a69e43f 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelModifySupplier.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelModifySupplier.java @@ -21,26 +21,24 @@ ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ -/* + /* * JPanelLieferantBearbeiten.java * * Created on 10. Februar 2003, 21:06 */ - package net.sourceforge.wisim.controller; import java.text.DecimalFormat; import java.text.ParseException; +import java.util.ArrayList; import java.util.Collection; import java.util.Hashtable; import java.util.Iterator; import java.util.Vector; import java.util.logging.Level; - import javax.swing.DefaultComboBoxModel; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; - import net.sourceforge.wisim.dao.WiSimDAO; import net.sourceforge.wisim.dao.WiSimDAOException; import net.sourceforge.wisim.dao.WiSimDAOWriteException; @@ -55,1023 +53,1037 @@ * JPanelLieferantBearbeiten ermöglicht das bearbeiten eines Lieferanten. */ public class JPanelModifySupplier extends javax.swing.JPanel { - private static final int HUB = 26; - private WiSimDAO dao; - private Vector alleArtikel; - private Vector listeArtikel; - private Hashtable lieferantenObjekte; - private Hashtable lieferantenAuswahl; - private Hashtable zubehoerTabelle; - private Hashtable einzelteileTabelle; - private int position; - //Logger - private WiSimLogger wiSimLogger; - private DecimalFormat format; - - /** Creates new form JPanelLieferantBearbeiten - * @param wiSimMainController Der Maincontroller - */ - - public JPanelModifySupplier(WiSimMainController wiSimMainController) { - wiSimLogger = wiSimMainController.getWiSimLogger(); - initComponents(); - initDAO(wiSimMainController); - zubehoerTabelle = new Hashtable(); - einzelteileTabelle = new Hashtable(); - lieferantenAuswahl = new Hashtable(); - lieferantenObjekte = new Hashtable(); - alleArtikel = new Vector(); - listeArtikel = new Vector(); - listeArtikel.add("Bitte wählen"); - format = new DecimalFormat("###,##0.00"); - } - - private void initDAO(WiSimMainController wiSimMainController) { - dao = wiSimMainController.getDAO(); - } - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - private void initComponents() { //GEN-BEGIN:initComponents - jLabelArtikelName1 = new javax.swing.JLabel(); - jLabelArtikelPreis1 = new javax.swing.JLabel(); - jTextFieldLieferantBearbeitenArtikelPreis = new javax.swing.JTextField(); - jButtonLieferantBearbeitenArtikelHinzufuegen = new javax.swing.JButton(); - jButtonLieferantBearbeitenArtikelEntfernen = new javax.swing.JButton(); - jLabelMindestAbnahme3 = new javax.swing.JLabel(); - jTextFieldLieferantBearbeitenMindestAbnahme = new javax.swing.JTextField(); - jButtonLieferantenAnlegen1 = new javax.swing.JButton(); - jComboBoxLieferantBearbeiten = new javax.swing.JComboBox(); - jButtonLieferantenAnlegen2 = new javax.swing.JButton(); - jLabelNeuerLieferantName = new javax.swing.JLabel(); - jTextFieldNeuerLieferantName = new javax.swing.JTextField(); - jLabelNeuerLieferantVorname = new javax.swing.JLabel(); - jTextFieldNeuerLieferantVorname = new javax.swing.JTextField(); - jTextFieldNeuerLieferantStrasse = new javax.swing.JTextField(); - jLabelNeuerLieferantStrasse = new javax.swing.JLabel(); - jTextFieldNeuerLieferantFirma = new javax.swing.JTextField(); - jLabelLieferantenFirma = new javax.swing.JLabel(); - jLabelNeuerLieferantOrt = new javax.swing.JLabel(); - jTextFieldNeuerLieferantOrt = new javax.swing.JTextField(); - jLabelNeuerLieferantPLZ = new javax.swing.JLabel(); - jTextFieldNeuerLieferantPLZ = new javax.swing.JTextField(); - jTextFieldNeuerLieferantFax = new javax.swing.JTextField(); - jLabelNeuerLieferantFax = new javax.swing.JLabel(); - jTextFieldNeuerLieferantTelefon = new javax.swing.JTextField(); - jLabelNeuerLieferantTelefon = new javax.swing.JLabel(); - jLabelNeuerLieferantEMail = new javax.swing.JLabel(); - jTextFieldNeuerLieferantEMail = new javax.swing.JTextField(); - jLabelNeuerLieferantLieferqualitaet = new javax.swing.JLabel(); - jComboBoxNeuerLieferantLieferqualitaet = new javax.swing.JComboBox(); - jComboBoxNeuerLieferantZuverlaessigkeit = new javax.swing.JComboBox(); - jLabelNeuerLieferantZuverlaessigkeit = new javax.swing.JLabel(); - jComboBoxNeuerLieferantArtikel = new javax.swing.JComboBox(); - jScrollPanePositionen = new javax.swing.JScrollPane(); - jTable1 = new javax.swing.JTable(); - jTable1.setSelectionMode(0); - jTable1.getTableHeader().setReorderingAllowed(false); - jLabelNeuerLieferantLieferqualitaet1 = new javax.swing.JLabel(); - jLabelNeuerLieferantLieferqualitaet2 = new javax.swing.JLabel(); - jLabel1 = new javax.swing.JLabel(); - jLabel2 = new javax.swing.JLabel(); - jLabelLieferantBearbeitenUeberschrift = new javax.swing.JLabel(); - - setLayout(null); - - setPreferredSize(new java.awt.Dimension(800, 600)); - jLabelArtikelName1.setFont(new java.awt.Font("Dialog", 0, 12)); - jLabelArtikelName1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - jLabelArtikelName1.setText("Artikelname"); - add(jLabelArtikelName1); - jLabelArtikelName1.setBounds(20, 330, 120, 20); - - jLabelArtikelPreis1.setFont(new java.awt.Font("Dialog", 0, 12)); - jLabelArtikelPreis1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - jLabelArtikelPreis1.setText("Artikelpreis"); - add(jLabelArtikelPreis1); - jLabelArtikelPreis1.setBounds(20, 370, 120, 20); - - jTextFieldLieferantBearbeitenArtikelPreis.setHorizontalAlignment(javax.swing.JTextField.RIGHT); - jTextFieldLieferantBearbeitenArtikelPreis.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusLost(java.awt.event.FocusEvent evt) { - jTextFieldLieferantBearbeitenArtikelPreisFocusLost(evt); - } - }); - - add(jTextFieldLieferantBearbeitenArtikelPreis); - jTextFieldLieferantBearbeitenArtikelPreis.setBounds(130, 370, 190, 20); - - jButtonLieferantBearbeitenArtikelHinzufuegen.setFont(new java.awt.Font("Dialog", 0, 10)); - jButtonLieferantBearbeitenArtikelHinzufuegen.setText(">>"); - jButtonLieferantBearbeitenArtikelHinzufuegen.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - jButtonLieferantBearbeitenArtikelHinzufuegenActionPerformed(evt); - } - }); - - add(jButtonLieferantBearbeitenArtikelHinzufuegen); - jButtonLieferantBearbeitenArtikelHinzufuegen.setBounds(340, 340, 60, 24); - - jButtonLieferantBearbeitenArtikelEntfernen.setFont(new java.awt.Font("Dialog", 0, 10)); - jButtonLieferantBearbeitenArtikelEntfernen.setText("ENTF"); - jButtonLieferantBearbeitenArtikelEntfernen.setMargin(new java.awt.Insets(2, 10, 2, 10)); - jButtonLieferantBearbeitenArtikelEntfernen.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - jButtonLieferantBearbeitenArtikelEntfernenActionPerformed(evt); - } - }); - - add(jButtonLieferantBearbeitenArtikelEntfernen); - jButtonLieferantBearbeitenArtikelEntfernen.setBounds(340, 390, 60, 24); - - jLabelMindestAbnahme3.setFont(new java.awt.Font("Dialog", 0, 12)); - jLabelMindestAbnahme3.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - jLabelMindestAbnahme3.setText("Mindestabnahme"); - add(jLabelMindestAbnahme3); - jLabelMindestAbnahme3.setBounds(20, 400, 130, 20); - - jTextFieldLieferantBearbeitenMindestAbnahme.setHorizontalAlignment(javax.swing.JTextField.RIGHT); - jTextFieldLieferantBearbeitenMindestAbnahme.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusLost(java.awt.event.FocusEvent evt) { - jTextFieldLieferantBearbeitenMindestAbnahmeFocusLost(evt); - } - }); - - add(jTextFieldLieferantBearbeitenMindestAbnahme); - jTextFieldLieferantBearbeitenMindestAbnahme.setBounds(130, 400, 190, 20); - - jButtonLieferantenAnlegen1.setText("\u00c4nderungen speichern"); - jButtonLieferantenAnlegen1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - jButtonLieferantenAnlegen1ActionPerformed(evt); - } - }); - - add(jButtonLieferantenAnlegen1); - jButtonLieferantenAnlegen1.setBounds(220, 450, 170, 31); - - jComboBoxLieferantBearbeiten.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - jComboBoxLieferantBearbeitenActionPerformed(evt); - } - }); - jComboBoxLieferantBearbeiten.addAncestorListener(new javax.swing.event.AncestorListener() { - public void ancestorMoved(javax.swing.event.AncestorEvent evt) { - } - public void ancestorAdded(javax.swing.event.AncestorEvent evt) { - jComboBoxLieferantBearbeitenAncestorAdded(evt); - } - public void ancestorRemoved(javax.swing.event.AncestorEvent evt) { - } - }); - - add(jComboBoxLieferantBearbeiten); - jComboBoxLieferantBearbeiten.setBounds(130, 60, 250, 25); - - jButtonLieferantenAnlegen2.setText("Lieferanten l\u00f6schen"); - jButtonLieferantenAnlegen2.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - jButtonLieferantenAnlegen2ActionPerformed(evt); - } - }); - - add(jButtonLieferantenAnlegen2); - jButtonLieferantenAnlegen2.setBounds(420, 450, 170, 31); - - jLabelNeuerLieferantName.setFont(new java.awt.Font("Dialog", 0, 12)); - jLabelNeuerLieferantName.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - jLabelNeuerLieferantName.setText("Name"); - add(jLabelNeuerLieferantName); - jLabelNeuerLieferantName.setBounds(440, 130, 90, 20); - - jTextFieldNeuerLieferantName.setDocument(new Validator(50)); - add(jTextFieldNeuerLieferantName); - jTextFieldNeuerLieferantName.setBounds(510, 130, 250, 20); - - jLabelNeuerLieferantVorname.setFont(new java.awt.Font("Dialog", 0, 12)); - jLabelNeuerLieferantVorname.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - jLabelNeuerLieferantVorname.setText("Vorname"); - add(jLabelNeuerLieferantVorname); - jLabelNeuerLieferantVorname.setBounds(440, 100, 90, 20); - - jTextFieldNeuerLieferantVorname.setDocument(new Validator(50)); - add(jTextFieldNeuerLieferantVorname); - jTextFieldNeuerLieferantVorname.setBounds(510, 100, 250, 20); - - jTextFieldNeuerLieferantStrasse.setDocument(new Validator(50)); - add(jTextFieldNeuerLieferantStrasse); - jTextFieldNeuerLieferantStrasse.setBounds(130, 130, 250, 20); - - jLabelNeuerLieferantStrasse.setFont(new java.awt.Font("Dialog", 0, 12)); - jLabelNeuerLieferantStrasse.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - jLabelNeuerLieferantStrasse.setText("Stra\u00dfe"); - add(jLabelNeuerLieferantStrasse); - jLabelNeuerLieferantStrasse.setBounds(20, 130, 90, 20); - - jTextFieldNeuerLieferantFirma.setDocument(new Validator(50)); - add(jTextFieldNeuerLieferantFirma); - jTextFieldNeuerLieferantFirma.setBounds(130, 100, 250, 20); - - jLabelLieferantenFirma.setFont(new java.awt.Font("Dialog", 0, 12)); - jLabelLieferantenFirma.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - jLabelLieferantenFirma.setText("Firma"); - add(jLabelLieferantenFirma); - jLabelLieferantenFirma.setBounds(20, 100, 90, 20); - - jLabelNeuerLieferantOrt.setFont(new java.awt.Font("Dialog", 0, 12)); - jLabelNeuerLieferantOrt.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - jLabelNeuerLieferantOrt.setText("Ort"); - add(jLabelNeuerLieferantOrt); - jLabelNeuerLieferantOrt.setBounds(20, 160, 90, 20); - - jTextFieldNeuerLieferantOrt.setDocument(new Validator(50)); - add(jTextFieldNeuerLieferantOrt); - jTextFieldNeuerLieferantOrt.setBounds(130, 160, 160, 20); - - jLabelNeuerLieferantPLZ.setFont(new java.awt.Font("Dialog", 0, 12)); - jLabelNeuerLieferantPLZ.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - jLabelNeuerLieferantPLZ.setText("PLZ"); - add(jLabelNeuerLieferantPLZ); - jLabelNeuerLieferantPLZ.setBounds(300, 160, 90, 20); - - jTextFieldNeuerLieferantPLZ.setColumns(5); - jTextFieldNeuerLieferantPLZ.setDocument(new Validator(5)); - jTextFieldNeuerLieferantPLZ.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusLost(java.awt.event.FocusEvent evt) { - jTextFieldNeuerLieferantPLZFocusLost(evt); - } - }); - - add(jTextFieldNeuerLieferantPLZ); - jTextFieldNeuerLieferantPLZ.setBounds(330, 160, 50, 20); - - jTextFieldNeuerLieferantFax.setDocument(new Validator(30)); - add(jTextFieldNeuerLieferantFax); - jTextFieldNeuerLieferantFax.setBounds(510, 190, 250, 20); - - jLabelNeuerLieferantFax.setFont(new java.awt.Font("Dialog", 0, 12)); - jLabelNeuerLieferantFax.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - jLabelNeuerLieferantFax.setText("Fax"); - add(jLabelNeuerLieferantFax); - jLabelNeuerLieferantFax.setBounds(440, 190, 90, 20); - - jTextFieldNeuerLieferantTelefon.setDocument(new Validator(30)); - add(jTextFieldNeuerLieferantTelefon); - jTextFieldNeuerLieferantTelefon.setBounds(510, 160, 250, 20); - - jLabelNeuerLieferantTelefon.setFont(new java.awt.Font("Dialog", 0, 12)); - jLabelNeuerLieferantTelefon.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - jLabelNeuerLieferantTelefon.setText("Telefon"); - add(jLabelNeuerLieferantTelefon); - jLabelNeuerLieferantTelefon.setBounds(440, 160, 90, 20); - - jLabelNeuerLieferantEMail.setFont(new java.awt.Font("Dialog", 0, 12)); - jLabelNeuerLieferantEMail.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - jLabelNeuerLieferantEMail.setText("eMail"); - add(jLabelNeuerLieferantEMail); - jLabelNeuerLieferantEMail.setBounds(440, 220, 90, 20); - - jTextFieldNeuerLieferantEMail.setDocument(new Validator(50)); - jTextFieldNeuerLieferantEMail.addFocusListener(new java.awt.event.FocusAdapter() { - public void focusLost(java.awt.event.FocusEvent evt) { - jTextFieldNeuerLieferantEMailFocusLost(evt); - } - }); - - add(jTextFieldNeuerLieferantEMail); - jTextFieldNeuerLieferantEMail.setBounds(510, 220, 250, 20); - - jLabelNeuerLieferantLieferqualitaet.setFont(new java.awt.Font("Dialog", 0, 12)); - jLabelNeuerLieferantLieferqualitaet.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - jLabelNeuerLieferantLieferqualitaet.setText("Lieferqualit\u00e4t"); - add(jLabelNeuerLieferantLieferqualitaet); - jLabelNeuerLieferantLieferqualitaet.setBounds(20, 200, 130, 20); - - jComboBoxNeuerLieferantLieferqualitaet.setEditable(true); - jComboBoxNeuerLieferantLieferqualitaet.setFont(new java.awt.Font("Dialog", 0, 12)); - jComboBoxNeuerLieferantLieferqualitaet.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5", "6" })); - jComboBoxNeuerLieferantLieferqualitaet.setSelectedIndex(2); - add(jComboBoxNeuerLieferantLieferqualitaet); - jComboBoxNeuerLieferantLieferqualitaet.setBounds(130, 200, 50, 25); - - jComboBoxNeuerLieferantZuverlaessigkeit.setEditable(true); - jComboBoxNeuerLieferantZuverlaessigkeit.setFont(new java.awt.Font("Dialog", 0, 12)); - jComboBoxNeuerLieferantZuverlaessigkeit.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5", "6" })); - jComboBoxNeuerLieferantZuverlaessigkeit.setSelectedIndex(2); - add(jComboBoxNeuerLieferantZuverlaessigkeit); - jComboBoxNeuerLieferantZuverlaessigkeit.setBounds(130, 240, 50, 25); - - jLabelNeuerLieferantZuverlaessigkeit.setFont(new java.awt.Font("Dialog", 0, 12)); - jLabelNeuerLieferantZuverlaessigkeit.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - jLabelNeuerLieferantZuverlaessigkeit.setText("Zuverl\u00e4ssigkeit"); - add(jLabelNeuerLieferantZuverlaessigkeit); - jLabelNeuerLieferantZuverlaessigkeit.setBounds(20, 240, 130, 20); - - jComboBoxNeuerLieferantArtikel.setFont(new java.awt.Font("Dialog", 0, 12)); - add(jComboBoxNeuerLieferantArtikel); - jComboBoxNeuerLieferantArtikel.setBounds(130, 330, 190, 25); - - jScrollPanePositionen.setMaximumSize(new java.awt.Dimension(300, 320)); - jScrollPanePositionen.setPreferredSize(new java.awt.Dimension(53, 3)); - jTable1.setModel(new javax.swing.table.DefaultTableModel(new Object[][] { - }, new String[] { "Artikelname", "Mindestaufnahme", "Artikelpreis" }) { - boolean[] canEdit = new boolean[] { false, false, false }; - - public boolean isCellEditable(int rowIndex, int columnIndex) { - return canEdit[columnIndex]; - } - }); - jScrollPanePositionen.setViewportView(jTable1); - - add(jScrollPanePositionen); - jScrollPanePositionen.setBounds(420, 330, 350, 90); - - jLabelNeuerLieferantLieferqualitaet1.setFont(new java.awt.Font("Dialog", 0, 10)); - jLabelNeuerLieferantLieferqualitaet1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - jLabelNeuerLieferantLieferqualitaet1.setText("Punkte"); - add(jLabelNeuerLieferantLieferqualitaet1); - jLabelNeuerLieferantLieferqualitaet1.setBounds(190, 200, 130, 20); - - jLabelNeuerLieferantLieferqualitaet2.setFont(new java.awt.Font("Dialog", 0, 10)); - jLabelNeuerLieferantLieferqualitaet2.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - jLabelNeuerLieferantLieferqualitaet2.setText("Punkte"); - add(jLabelNeuerLieferantLieferqualitaet2); - jLabelNeuerLieferantLieferqualitaet2.setBounds(190, 240, 130, 20); - - jLabel1.setFont(new java.awt.Font("Dialog", 0, 10)); - jLabel1.setText("[Bewertung nach Schulnotensystem]"); - add(jLabel1); - jLabel1.setBounds(130, 270, 210, 20); - - jLabel2.setFont(new java.awt.Font("Dialog", 0, 10)); - jLabel2.setText("Ansprechpartner"); - add(jLabel2); - jLabel2.setBounds(680, 70, 80, 20); - - jLabelLieferantBearbeitenUeberschrift.setFont(new java.awt.Font("Dialog", 1, 24)); - jLabelLieferantBearbeitenUeberschrift.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabelLieferantBearbeitenUeberschrift.setText("Lieferant bearbeiten"); - add(jLabelLieferantBearbeitenUeberschrift); - jLabelLieferantBearbeitenUeberschrift.setBounds(0, 0, 800, 40); - - } //GEN-END:initComponents - - private void jButtonLieferantenAnlegen2ActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jButtonLieferantenAnlegen2ActionPerformed - deleteSupplierEvent(); - } //GEN-LAST:event_jButtonLieferantenAnlegen2ActionPerformed - - private void jTextFieldNeuerLieferantPLZFocusLost(java.awt.event.FocusEvent evt) { //GEN-FIRST:event_jTextFieldNeuerLieferantPLZFocusLost - validatePLZ(); - } //GEN-LAST:event_jTextFieldNeuerLieferantPLZFocusLost - - private void jTextFieldNeuerLieferantEMailFocusLost(java.awt.event.FocusEvent evt) { //GEN-FIRST:event_jTextFieldNeuerLieferantEMailFocusLost - validateEmail(); - } //GEN-LAST:event_jTextFieldNeuerLieferantEMailFocusLost - - private void jTextFieldLieferantBearbeitenMindestAbnahmeFocusLost(java.awt.event.FocusEvent evt) { //GEN-FIRST:event_jTextFieldLieferantBearbeitenMindestAbnahmeFocusLost - validateMindestAbnahme(); - } //GEN-LAST:event_jTextFieldLieferantBearbeitenMindestAbnahmeFocusLost - - private void jTextFieldLieferantBearbeitenArtikelPreisFocusLost(java.awt.event.FocusEvent evt) { //GEN-FIRST:event_jTextFieldLieferantBearbeitenArtikelPreisFocusLost - validateArtikelPreis(); - } //GEN-LAST:event_jTextFieldLieferantBearbeitenArtikelPreisFocusLost - private void jButtonLieferantBearbeitenArtikelEntfernenActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jButtonLieferantBearbeitenArtikelEntfernenActionPerformed - artikelEntfernenEvent(); - } //GEN-LAST:event_jButtonLieferantBearbeitenArtikelEntfernenActionPerformed - private void jButtonLieferantBearbeitenArtikelHinzufuegenActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jButtonLieferantBearbeitenArtikelHinzufuegenActionPerformed - artikelHinzufuegenEvent(); - } //GEN-LAST:event_jButtonLieferantBearbeitenArtikelHinzufuegenActionPerformed - - private void jButtonLieferantenAnlegen1ActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jButtonLieferantenAnlegen1ActionPerformed - lieferantAnlegenEvent(); - } //GEN-LAST:event_jButtonLieferantenAnlegen1ActionPerformed - - private void jComboBoxLieferantBearbeitenActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jComboBoxLieferantBearbeitenActionPerformed - /** [DoItBen] change action! */ - if(jComboBoxLieferantBearbeiten.getSelectedItem() != null) { - if (jComboBoxLieferantBearbeiten.getSelectedItem().equals("Bitte wählen")) { - setStandard(); - } else - loadSupplier(); - } - } //GEN-LAST:event_jComboBoxLieferantBearbeitenActionPerformed - - private void jComboBoxLieferantBearbeitenAncestorAdded(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_jComboBoxLieferantBearbeitenAncestorAdded - loadSuppliers(); - loadSpareParts(); - } //GEN-LAST:event_jComboBoxLieferantBearbeitenAncestorAdded - - //Füllt die ComboBox Lieferantenliste mit den in der DB vorhandenen Lieferanten - private void loadSuppliers() { - Collection lieferantenliste = null; - try { - lieferantenliste = dao.getLieferanten(); - } catch (WiSimDAOException e) { - wiSimLogger.log("ladeLieferanten()", e); - } - DefaultComboBoxModel model = (DefaultComboBoxModel) jComboBoxLieferantBearbeiten.getModel(); - model.removeAllElements(); - model.addElement("Bitte wählen"); - - // Verhindert NullPointerException bei einer leeren Liste - int indexcounter = 0; - - if (lieferantenliste != null) { - Iterator it = lieferantenliste.iterator(); - - while (it.hasNext()) { - indexcounter++; - Supplier listenlieferant = (Supplier) it.next(); - String listItem = String.valueOf(listenlieferant.getFirma()); - model.addElement(listItem); - lieferantenObjekte.put((String.valueOf(indexcounter)), listenlieferant); - lieferantenAuswahl.put((String.valueOf(indexcounter)), String.valueOf(listenlieferant.getId())); - } - jComboBoxLieferantBearbeiten.setModel(model); - } - } - - //Lädt einen Kunden zum Bearbeiten aus der Datenbank - private void loadSupplier() { - - //liefert listItem des selektierten Eintrags - String listItem = String.valueOf(jComboBoxLieferantBearbeiten.getSelectedIndex()); - //sucht das aktive KundenObjekt in Hashtabelle lieferantenObjekte - Supplier auswahlLieferant = (Supplier) lieferantenObjekte.get(listItem); - position = 0; - boolean deleted = true; - updatePositionsTable(deleted); - - if (auswahlLieferant != null) { - jTextFieldNeuerLieferantName.setText(auswahlLieferant.getNachname()); - jTextFieldNeuerLieferantVorname.setText(auswahlLieferant.getVorname()); - jTextFieldNeuerLieferantFirma.setText(auswahlLieferant.getFirma()); - jTextFieldNeuerLieferantStrasse.setText(auswahlLieferant.getStrasse()); - jTextFieldNeuerLieferantTelefon.setText(auswahlLieferant.getTelefon()); - jTextFieldNeuerLieferantFax.setText(auswahlLieferant.getFax()); - jTextFieldNeuerLieferantEMail.setText(auswahlLieferant.getEmail()); - jTextFieldNeuerLieferantPLZ.setText(String.valueOf(auswahlLieferant.getPlz())); - jTextFieldNeuerLieferantOrt.setText(auswahlLieferant.getOrt()); - jComboBoxNeuerLieferantLieferqualitaet.setSelectedItem(auswahlLieferant.getLieferqualitaet()); - jComboBoxNeuerLieferantZuverlaessigkeit.setSelectedItem(auswahlLieferant.getZuverlaessigkeit()); - zubehoerTabelle.clear(); - loadDependingSpareParts(auswahlLieferant.getId()); - } - } - - //Füllt die ComboBox Einzelteile mit den in der DB vorhandenen Teilen - private void loadSpareParts() { - Collection teile = null; - try { - teile = dao.getEinzelteile(); - } catch (WiSimDAOException e) { - wiSimLogger.log("ladeEinzelteile()", e); - } - DefaultComboBoxModel model = (DefaultComboBoxModel) jComboBoxNeuerLieferantArtikel.getModel(); - model.removeAllElements(); - model.addElement("Bitte wählen"); - - // Verhindert NullPointerException bei einer leeren Liste - if (teile != null) { - Iterator it = teile.iterator(); - - while (it.hasNext()) { - WiSimComponent teil = (WiSimComponent) it.next(); - if (teil.getNr() != HUB) - model.addElement(teil.getName()); - einzelteileTabelle.put(teil.getName(), String.valueOf(teil.getNr())); - WiSimComponent etatPos = new WiSimComponent(); - etatPos.setNr(teil.getNr()); - alleArtikel.add(etatPos); - } - jComboBoxNeuerLieferantArtikel.setModel(model); - } - } - - // Ladet die Einzelteile des Lieferanten - private void deleteDependingSpareParts(int id) { - - try { - Collection lieferliste = null; - lieferliste = dao.getLieferliste(id); - Iterator it_lieferlisten = lieferliste.iterator(); - - while (it_lieferlisten.hasNext()) { - SupplyList liste = (SupplyList) it_lieferlisten.next(); - dao.getEinzelteil(liste.getEinzelteilID()); //dispensable? - dao.loescheLieferliste(id, liste.getEinzelteilID()); - } - } catch (WiSimDAOException e) { - wiSimLogger.log("loescheZugehoerigeEinzelteile()", e); - } catch (WiSimDAOWriteException e) { - wiSimLogger.log("loescheZugehoerigeEinzelteile()", e); - } - } - - // Ladet die Einzelteile des Lieferanten - private void loadDependingSpareParts(int id) { - - try { - Collection lieferliste = null; - WiSimComponent einzelteil = null; - lieferliste = dao.getLieferliste(id); - Iterator it_lieferlisten = lieferliste.iterator(); - - while (it_lieferlisten.hasNext()) { - SupplyList liste = (SupplyList) it_lieferlisten.next(); - einzelteil = dao.getEinzelteil(liste.getEinzelteilID()); - - //gesamter Tabelleninhalt wird Zwischengespeichert - Vector tableTempRow = new Vector(); - int row = 0; - - while (row < position) { - tableTempRow.add(jTable1.getValueAt(row, 0) + ";" + jTable1.getValueAt(row, 1) + ";" + jTable1.getValueAt(row, 2)); - row++; - } - - //DefaultTableModel mit Variablen Zeilen, 3 TableHeads und nicht editierbaren Zellen - boolean deleted = false; - updatePositionsTable(deleted); - - if (tableTempRow.size() > 0) { - Iterator it_tableTempRow = tableTempRow.iterator(); - row = 0; - while (it_tableTempRow.hasNext()) { - String complete = (String) it_tableTempRow.next(); - String[] chunks = complete.split(";"); - jTable1.setValueAt(chunks[0], row, 0); - jTable1.setValueAt(chunks[1], row, 1); - jTable1.setValueAt(chunks[2], row, 2); - row++; - } - } - - zubehoerTabelle.put(einzelteil.getName(), String.valueOf(einzelteil.getNr())); - jTable1.setValueAt(einzelteil.getName(), position, 0); - jTable1.setValueAt(String.valueOf(liste.getMindestBestellMenge()), position, 1); - jTable1.setValueAt(format.format(liste.getPreis()), position, 2); - position++; - jTable1.setRowSelectionInterval(position - 1, position - 1); - } - } catch (WiSimDAOException e) { - wiSimLogger.log("ladeZugehoerigeEinzelteile()", e); - } - } - - //Setzt Lieferantenstatus auf gelöscht - private void deleteSupplier(int ltId) { - int submit = JOptionPane.showConfirmDialog(this, "Wollen Sie den Lieferanten wirklich löschen?", "Lieferant löschen", JOptionPane.YES_NO_OPTION); - if (submit == 0) { - try { - dao.setLieferantLoeschStatus(ltId, true); - loadSuppliers(); - } catch (WiSimDAOException e) { - wiSimLogger.log("loescheLieferant()", e); - } catch (WiSimDAOWriteException e) { - wiSimLogger.log("loescheLieferant()", e); - } - } - } - - // Setzt nach dem Speichern und Löschen eines Lieferanten die Werte auf Standard - private void setStandard() { - jTextFieldNeuerLieferantVorname.setText(""); - jTextFieldNeuerLieferantName.setText(""); - jTextFieldNeuerLieferantFirma.setText(""); - jTextFieldNeuerLieferantStrasse.setText(""); - jTextFieldNeuerLieferantOrt.setText(""); - jTextFieldNeuerLieferantPLZ.setText(""); - jTextFieldNeuerLieferantTelefon.setText(""); - jTextFieldNeuerLieferantEMail.setText(""); - jTextFieldNeuerLieferantFax.setText(""); - jComboBoxNeuerLieferantLieferqualitaet.setSelectedIndex(2); - jComboBoxNeuerLieferantZuverlaessigkeit.setSelectedIndex(2); - jComboBoxNeuerLieferantArtikel.setSelectedItem("Bitte wählen"); - jTextFieldLieferantBearbeitenArtikelPreis.setText(""); - jTextFieldLieferantBearbeitenMindestAbnahme.setText(""); - position = 0; - boolean deleted = true; - updatePositionsTable(deleted); - } - - /** Schreibt die Positions-Tabelle neu - * @param Deleted boolean - */ - public void updatePositionsTable(boolean deleted) { - int rows; - - if (deleted) { - rows = position; - } else { - rows = position + 1; - } - //DefaultTableModel mit Variablen Zeilen, 3 TableHeads und nicht editierbaren Zellen - Object[][] tableInit = new Object[rows][3]; - DefaultTableModel defTable = new DefaultTableModel(tableInit, new String[] { "Article", "MinAbnahme", "Preis/Stk" }) { - boolean[] canEdit = new boolean[] { false, false, false }; - public boolean isCellEditable(int rowIndex, int columnIndex) { - return canEdit[columnIndex]; - } - }; - jTable1.setModel(defTable); - jTable1.setFocusable(false); - javax.swing.table.TableColumn column = null; - - //Spaltenbreiten der Tabelle werden gesetzt - for (int i = 0; i < 3; i++) { - column = jTable1.getColumnModel().getColumn(i); - switch (i) { - //Article - case 0 : - column.setPreferredWidth(120); - break; - //Menge - case 1 : - column.setPreferredWidth(10); - break; - //Preis - case 2 : - column.setPreferredWidth(15); - break; - } - } - } - - /** Liefert die KD_Nr des aktiven Kunden - * @return int - */ - private int getSelLieferantenID() { - //liefert listItem des selektierten Eintrags - String listItem = String.valueOf(jComboBoxLieferantBearbeiten.getSelectedIndex()); - //sucht das aktive KundenObjekt in Hashtabelle kundenObjekte - Supplier auswahlLieferant = (Supplier) lieferantenObjekte.get(listItem); - if (auswahlLieferant != null) { - return auswahlLieferant.getId(); - } else - return 0; - } - - private void deleteSupplierEvent() { - int auswahl = getSelLieferantenID(); - if (auswahl != 0) { - deleteSupplier(getSelLieferantenID()); - JOptionPane.showMessageDialog(this, "Der Lieferant wurde erfolgreich gelöscht.", "Vertrag", JOptionPane.INFORMATION_MESSAGE); - } else { - JOptionPane.showMessageDialog(this, "Bitte wählen Sie erst einen Lieferanten aus.", "Fehler beim Löschen eines Kunden", JOptionPane.ERROR_MESSAGE); - } - } - - private void validatePLZ() { - Validator validate = new Validator(); - String plz = jTextFieldNeuerLieferantPLZ.getText(); - - boolean plzOk = false; - - if (!plz.equals("") && plz != null) { - - while (!plzOk && plz != null) { - - if (!validate.checkPlz(plz)) { - plz = JOptionPane.showInputDialog("Ungültige PLZ! Bitte neu eingeben:", plz); - } else { - plzOk = true; - } - } - if (plz != null) { - jTextFieldNeuerLieferantPLZ.setText(plz); - } else { - jTextFieldNeuerLieferantPLZ.setText(""); - } - } - } - - private void validateEmail() { - Validator validate = new Validator(); - String email = jTextFieldNeuerLieferantEMail.getText(); - - boolean emailOk = false; - - if (!email.equals("") && email != null) { - - while (!emailOk && email != null) { - - if (!validate.checkEMail(email)) { - email = JOptionPane.showInputDialog("Ungültige eMail! Bitte neu eingeben:", email); - } else { - emailOk = true; - } - } - if (email != null) { - jTextFieldNeuerLieferantEMail.setText(email); - } else { - jTextFieldNeuerLieferantEMail.setText(""); - } - } - } - - private void validateMindestAbnahme() { - Validator validate = new Validator(); - String zahl = jTextFieldLieferantBearbeitenMindestAbnahme.getText(); - - boolean zahlOk = false; - if (!zahl.equals("")) { - while (!zahlOk && zahl != null) { - if (!validate.checkZahl(zahl)) { - zahl = JOptionPane.showInputDialog("Ungültige Zahl!", zahl); - } else { - zahlOk = true; - } - } - if (zahl != null) { - jTextFieldLieferantBearbeitenMindestAbnahme.setText(zahl); - } else { - jTextFieldLieferantBearbeitenMindestAbnahme.setText(""); - } - } - } - - private void validateArtikelPreis() { - Validator validate = new Validator(); - String preis = jTextFieldLieferantBearbeitenArtikelPreis.getText(); - - boolean preisOk = false; - if (!preis.equals("")) { - while (!preisOk && preis != null) { - if (!validate.checkPreis(preis)) { - preis = JOptionPane.showInputDialog("Ungültiger Peis! Bitte geben Sie den Preis implements Format xx.xx ein!", preis); - - } else { - preisOk = true; - } - } - if (preis != null) { - jTextFieldLieferantBearbeitenArtikelPreis.setText(preis); - } else { - jTextFieldLieferantBearbeitenArtikelPreis.setText(""); - } - } - } - - private void artikelEntfernenEvent() { - int selectedPosition = jTable1.getSelectedRow(); - - //gesamter Tabelleninhalt wird Zwischengespeichert - Vector tableTempRow = new Vector(); - int row = 0; - - while (row < position) { - tableTempRow.add(jTable1.getValueAt(row, 0) + "," + jTable1.getValueAt(row, 1) + "," + jTable1.getValueAt(row, 2)); - row++; - } - - //Selektierte Zeile wird gelöscht - - if (selectedPosition >= 0) { - - if (jTable1.getValueAt(selectedPosition, 0) != null) { - zubehoerTabelle.remove(String.valueOf(jTable1.getValueAt(selectedPosition, 0))); - jTable1.setValueAt(null, selectedPosition, 0); - jTable1.setValueAt(null, selectedPosition, 1); - jTable1.setValueAt(null, selectedPosition, 2); - tableTempRow.remove(selectedPosition); - position--; - } - } - - //DefaultTableModel mit Variablen Zeilen, 3 TableHeads und nicht editierbaren Zellen - boolean deleted = true; - updatePositionsTable(deleted); - - //Tabelle wird neu geschrieben - if (tableTempRow.size() > 0) { - Iterator it_tableTempRow = tableTempRow.iterator(); - row = 0; - - while (it_tableTempRow.hasNext()) { - String complete = (String) it_tableTempRow.next(); - String[] chunks = complete.split(","); - jTable1.setValueAt(chunks[0], row, 0); - jTable1.setValueAt(chunks[1], row, 1); - jTable1.setValueAt(chunks[2], row, 2); - row++; - } - } - position = tableTempRow.size(); - - if (position != 0) { - jTable1.setRowSelectionInterval(position - 1, position - 1); - } - } - - private void artikelHinzufuegenEvent() { - Vector errors = new Vector(); - - if (jTextFieldLieferantBearbeitenArtikelPreis.getText().equals("")) - errors.add("Artikelpreis"); - - if (jTextFieldLieferantBearbeitenMindestAbnahme.getText().equals("")) - errors.add("Mindestabnahme"); - - if (errors.isEmpty()) { - String artikel = jComboBoxNeuerLieferantArtikel.getSelectedItem().toString(); - - if (!artikel.equals("Bitte wählen")) { - String preis = jTextFieldLieferantBearbeitenArtikelPreis.getText(); - int menge = Integer.parseInt(jTextFieldLieferantBearbeitenMindestAbnahme.getText()); - - //gesamter Tabelleninhalt wird Zwischengespeichert - Vector tableTempRow = new Vector(); - int row = 0; - while (row < position) { - tableTempRow.add(jTable1.getValueAt(row, 0) + ";" + jTable1.getValueAt(row, 1) + ";" + jTable1.getValueAt(row, 2)); - row++; - } - - if (!zubehoerTabelle.containsValue(String.valueOf(jComboBoxNeuerLieferantArtikel.getSelectedIndex()))) { - - //Position hinzufügen: - WiSimComponent teil = new WiSimComponent(); - WiSimComponent eteil = (WiSimComponent) alleArtikel.get(jComboBoxNeuerLieferantArtikel.getSelectedIndex()); - teil.setNr(eteil.getNr()); - zubehoerTabelle.put(String.valueOf(jComboBoxNeuerLieferantArtikel.getSelectedItem()), String.valueOf(jComboBoxNeuerLieferantArtikel.getSelectedIndex())); - alleArtikel.add(alleArtikel.get(jComboBoxNeuerLieferantArtikel.getSelectedIndex())); - - //DefaultTableModel mit Variablen Zeilen, 3 TableHeads und nicht editierbaren Zellen - boolean deleted = false; - updatePositionsTable(deleted); - - //Tabelle wird neu geschrieben - if (tableTempRow.size() > 0) { - Iterator it_tableTempRow = tableTempRow.iterator(); - row = 0; - - while (it_tableTempRow.hasNext()) { - String complete = (String) it_tableTempRow.next(); - String[] chunks = complete.split(";"); - jTable1.setValueAt(chunks[0], row, 0); - jTable1.setValueAt(chunks[1], row, 1); - jTable1.setValueAt(chunks[2], row, 2); - row++; - } - } - jTable1.setValueAt(artikel, position, 0); - jTable1.setValueAt(String.valueOf(menge), position, 1); - if (preis.matches("^[0-9]*[,][0-9]*")) { - preis = preis.replaceAll(",", "."); - } - jTable1.setValueAt(format.format(Double.parseDouble(preis)), position, 2); - position++; - jTable1.setRowSelectionInterval(position - 1, position - 1); - } else { - JOptionPane.showMessageDialog(null, "Dieser Artikel ist bereits vorhanden!"); - } - } - } else { - if (errors.size() > 1) - JOptionPane.showMessageDialog(this, "Folgende Felder müssen ausgefüllt werden: " + errors.toString().substring(1, errors.toString().length() - 1), "Fehler beim Hinzufügen des Artikels", JOptionPane.ERROR_MESSAGE); - else - JOptionPane.showMessageDialog(this, "Das folgende Feld muss ausgefüllt werden: " + errors.toString().substring(1, errors.toString().length() - 1), "Fehler beim Hinzufügen des Artikels", JOptionPane.ERROR_MESSAGE); - } - } - - private void lieferantAnlegenEvent() { - int auswahl = getSelLieferantenID(); - - if (auswahl == 0) { - JOptionPane.showMessageDialog(this, "Bitte wählen Sie erst einen Lieferanten aus.", "Fehler beim Löschen eines Kunden", JOptionPane.ERROR_MESSAGE); - } else { - Vector check = new Vector(); - if (jTextFieldNeuerLieferantFirma.getText().equals("")) - check.add("Firma"); - if (jTextFieldNeuerLieferantName.getText().equals("")) - check.add("Name"); - if (jTextFieldNeuerLieferantVorname.getText().equals("")) - check.add("Vorname"); - if (jTextFieldNeuerLieferantTelefon.getText().equals("")) - check.add("Telefon"); - if (jTextFieldNeuerLieferantStrasse.getText().equals("")) - check.add("Strasse"); - if (jTextFieldNeuerLieferantOrt.getText().equals("")) - check.add("Ort"); - if (jTextFieldNeuerLieferantPLZ.getText().equals("")) - check.add("PLZ"); - if (!check.isEmpty()) { - - if (check.size() > 1) - JOptionPane.showMessageDialog(this, "Folgende Felder müssen ausgefüllt werden: " + check.toString().substring(1, check.toString().length() - 1), "Fehler beim Bearbeiten des Lieferanten", JOptionPane.ERROR_MESSAGE); - else - JOptionPane.showMessageDialog(this, "Folgende Felder müssen ausgefüllt werden: " + check.toString().substring(1, check.toString().length() - 1), "Fehler beim Bearbeiten des Lieferanten", JOptionPane.ERROR_MESSAGE); - } else { - - //liefert listItem des selektierten Eintrags - String selectedItem = String.valueOf(jComboBoxLieferantBearbeiten.getSelectedIndex()); - //sucht das aktive KundenObjekt in Hashtabelle kundenAuswahl - Supplier changedLieferant = (Supplier) lieferantenObjekte.get(selectedItem); - int ltID = changedLieferant.getId(); - - Supplier lieferant = new Supplier(); - lieferant.setId(ltID); - lieferant.setNachname(jTextFieldNeuerLieferantName.getText()); - lieferant.setVorname(jTextFieldNeuerLieferantVorname.getText()); - lieferant.setFirma(jTextFieldNeuerLieferantFirma.getText()); - lieferant.setStrasse(jTextFieldNeuerLieferantStrasse.getText()); - lieferant.setTelefon(jTextFieldNeuerLieferantTelefon.getText()); - lieferant.setFax(jTextFieldNeuerLieferantFax.getText()); - lieferant.setEmail(jTextFieldNeuerLieferantEMail.getText()); - lieferant.setPlz(jTextFieldNeuerLieferantPLZ.getText()); - lieferant.setOrt(jTextFieldNeuerLieferantOrt.getText()); - lieferant.setLieferqualitaet(String.valueOf(jComboBoxNeuerLieferantLieferqualitaet.getSelectedItem())); - lieferant.setZuverlaessigkeit(String.valueOf(jComboBoxNeuerLieferantZuverlaessigkeit.getSelectedItem())); - - try { - City ort = new City(); - ort.setName(lieferant.getOrt()); - ort.setPlz(lieferant.getPlz()); - lieferant.setPlzId(dao.neuerOrt(ort)); - - //Tabelle wird neu geschrieben - if (jTable1.getRowCount() >= 0) { - - deleteDependingSpareParts(ltID); - SupplyList liste = new SupplyList(); - - for (int row = 0; row < jTable1.getRowCount(); row++) { - liste.setLieferantenID(ltID); - String zubehoerName = (String) jTable1.getValueAt(row, 0); - String zubehoerId = (String) zubehoerTabelle.get(zubehoerName); - liste.setEinzelteilID(Integer.parseInt(zubehoerId)); - liste.setPreis(format.parse(String.valueOf(jTable1.getValueAt(row, 2))).doubleValue()); - liste.setMindestBestellMenge(Long.parseLong(String.valueOf(jTable1.getValueAt(row, 1)))); - dao.setLieferliste(liste); - } - } - } catch (WiSimDAOException e) { - wiSimLogger.log("jButtonLieferantenAnlegen1ActionPerformed()", e); - } catch (WiSimDAOWriteException e) { - wiSimLogger.log("jButtonLieferantenAnlegen1ActionPerformed()", e); - } catch (ParseException e) { - wiSimLogger.log(Level.WARNING, "JPanelModifySupplier.jButtonLieferantenAnlegen1ActionPerformed()", e, false); - } - - try { - dao.aendereLieferant(lieferant); - loadSuppliers(); - loadSupplier(); - setStandard(); - } catch (WiSimDAOException e) { - wiSimLogger.log("jButtonLieferantenAnlegen1ActionPerformed()", e); - } catch (WiSimDAOWriteException e) { - wiSimLogger.log("jButtonLieferantenAnlegen1ActionPerformed()", e); - } - } - JOptionPane.showMessageDialog(this, "Die Änderungen des Lieferanten wurde erfolgreich gespeichert.", "Lieferant", JOptionPane.INFORMATION_MESSAGE); - } - - } - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JButton jButtonLieferantBearbeitenArtikelEntfernen; - private javax.swing.JButton jButtonLieferantBearbeitenArtikelHinzufuegen; - private javax.swing.JButton jButtonLieferantenAnlegen1; - private javax.swing.JButton jButtonLieferantenAnlegen2; - private javax.swing.JComboBox jComboBoxLieferantBearbeiten; - private javax.swing.JComboBox jComboBoxNeuerLieferantArtikel; - private javax.swing.JComboBox jComboBoxNeuerLieferantLieferqualitaet; - private javax.swing.JComboBox jComboBoxNeuerLieferantZuverlaessigkeit; - private javax.swing.JLabel jLabel1; - private javax.swing.JLabel jLabel2; - private javax.swing.JLabel jLabelArtikelName1; - private javax.swing.JLabel jLabelArtikelPreis1; - private javax.swing.JLabel jLabelLieferantBearbeitenUeberschrift; - private javax.swing.JLabel jLabelLieferantenFirma; - private javax.swing.JLabel jLabelMindestAbnahme3; - private javax.swing.JLabel jLabelNeuerLieferantEMail; - private javax.swing.JLabel jLabelNeuerLieferantFax; - private javax.swing.JLabel jLabelNeuerLieferantLieferqualitaet; - private javax.swing.JLabel jLabelNeuerLieferantLieferqualitaet1; - private javax.swing.JLabel jLabelNeuerLieferantLieferqualitaet2; - private javax.swing.JLabel jLabelNeuerLieferantName; - private javax.swing.JLabel jLabelNeuerLieferantOrt; - private javax.swing.JLabel jLabelNeuerLieferantPLZ; - private javax.swing.JLabel jLabelNeuerLieferantStrasse; - private javax.swing.JLabel jLabelNeuerLieferantTelefon; - private javax.swing.JLabel jLabelNeuerLieferantVorname; - private javax.swing.JLabel jLabelNeuerLieferantZuverlaessigkeit; - private javax.swing.JScrollPane jScrollPanePositionen; - private javax.swing.JTable jTable1; - private javax.swing.JTextField jTextFieldLieferantBearbeitenArtikelPreis; - private javax.swing.JTextField jTextFieldLieferantBearbeitenMindestAbnahme; - private javax.swing.JTextField jTextFieldNeuerLieferantEMail; - private javax.swing.JTextField jTextFieldNeuerLieferantFax; - private javax.swing.JTextField jTextFieldNeuerLieferantFirma; - private javax.swing.JTextField jTextFieldNeuerLieferantName; - private javax.swing.JTextField jTextFieldNeuerLieferantOrt; - private javax.swing.JTextField jTextFieldNeuerLieferantPLZ; - private javax.swing.JTextField jTextFieldNeuerLieferantStrasse; - private javax.swing.JTextField jTextFieldNeuerLieferantTelefon; - private javax.swing.JTextField jTextFieldNeuerLieferantVorname; - // End of variables declaration//GEN-END:variables -} \ No newline at end of file + + private static final int HUB = 26; + private WiSimDAO dao; + private Vector alleArtikel; + private Vector listeArtikel; + private Hashtable lieferantenObjekte; + private Hashtable lieferantenAuswahl; + private Hashtable zubehoerTabelle; + private Hashtable einzelteileTabelle; + private int position; + //Logger + private WiSimLogger wiSimLogger; + private DecimalFormat format; + + /** + * Creates new form JPanelLieferantBearbeiten + * + * @param wiSimMainController Der Maincontroller + */ + public JPanelModifySupplier(WiSimMainController wiSimMainController) { + wiSimLogger = wiSimMainController.getWiSimLogger(); + initComponents(); + initDAO(wiSimMainController); + zubehoerTabelle = new Hashtable(); + einzelteileTabelle = new Hashtable(); + lieferantenAuswahl = new Hashtable(); + lieferantenObjekte = new Hashtable(); + alleArtikel = new Vector(); + listeArtikel = new Vector(); + listeArtikel.add("Bitte wählen"); + format = new DecimalFormat("###,##0.00"); + } + + private void initDAO(WiSimMainController wiSimMainController) { + dao = wiSimMainController.getDAO(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + jLabelArtikelName1 = new javax.swing.JLabel(); + jLabelArtikelPreis1 = new javax.swing.JLabel(); + jTextFieldLieferantBearbeitenArtikelPreis = new javax.swing.JTextField(); + jButtonLieferantBearbeitenArtikelHinzufuegen = new javax.swing.JButton(); + jButtonLieferantBearbeitenArtikelEntfernen = new javax.swing.JButton(); + jLabelMindestAbnahme3 = new javax.swing.JLabel(); + jTextFieldLieferantBearbeitenMindestAbnahme = new javax.swing.JTextField(); + jButtonLieferantenAnlegen1 = new javax.swing.JButton(); + jComboBoxLieferantBearbeiten = new javax.swing.JComboBox(); + jButtonLieferantenAnlegen2 = new javax.swing.JButton(); + jLabelNeuerLieferantName = new javax.swing.JLabel(); + jTextFieldNeuerLieferantName = new javax.swing.JTextField(); + jLabelNeuerLieferantVorname = new javax.swing.JLabel(); + jTextFieldNeuerLieferantVorname = new javax.swing.JTextField(); + jTextFieldNeuerLieferantStrasse = new javax.swing.JTextField(); + jLabelNeuerLieferantStrasse = new javax.swing.JLabel(); + jTextFieldNeuerLieferantFirma = new javax.swing.JTextField(); + jLabelLieferantenFirma = new javax.swing.JLabel(); + jLabelNeuerLieferantOrt = new javax.swing.JLabel(); + jTextFieldNeuerLieferantOrt = new javax.swing.JTextField(); + jLabelNeuerLieferantPLZ = new javax.swing.JLabel(); + jTextFieldNeuerLieferantPLZ = new javax.swing.JTextField(); + jTextFieldNeuerLieferantFax = new javax.swing.JTextField(); + jLabelNeuerLieferantFax = new javax.swing.JLabel(); + jTextFieldNeuerLieferantTelefon = new javax.swing.JTextField(); + jLabelNeuerLieferantTelefon = new javax.swing.JLabel(); + jLabelNeuerLieferantEMail = new javax.swing.JLabel(); + jTextFieldNeuerLieferantEMail = new javax.swing.JTextField(); + jLabelNeuerLieferantLieferqualitaet = new javax.swing.JLabel(); + jComboBoxNeuerLieferantLieferqualitaet = new javax.swing.JComboBox<>(); + jComboBoxNeuerLieferantZuverlaessigkeit = new javax.swing.JComboBox<>(); + jLabelNeuerLieferantZuverlaessigkeit = new javax.swing.JLabel(); + jComboBoxNeuerLieferantArtikel = new javax.swing.JComboBox(); + jScrollPanePositionen = new javax.swing.JScrollPane(); + jTable1 = new javax.swing.JTable(); + jTable1.setSelectionMode(0); + jTable1.getTableHeader().setReorderingAllowed(false); + jLabelNeuerLieferantLieferqualitaet1 = new javax.swing.JLabel(); + jLabelNeuerLieferantLieferqualitaet2 = new javax.swing.JLabel(); + jLabel1 = new javax.swing.JLabel(); + jLabel2 = new javax.swing.JLabel(); + jLabelLieferantBearbeitenUeberschrift = new javax.swing.JLabel(); + + setPreferredSize(new java.awt.Dimension(800, 600)); + setLayout(null); + + jLabelArtikelName1.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N + jLabelArtikelName1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabelArtikelName1.setText("Artikelname"); + add(jLabelArtikelName1); + jLabelArtikelName1.setBounds(20, 330, 120, 20); + + jLabelArtikelPreis1.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N + jLabelArtikelPreis1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabelArtikelPreis1.setText("Artikelpreis"); + add(jLabelArtikelPreis1); + jLabelArtikelPreis1.setBounds(20, 370, 120, 20); + + jTextFieldLieferantBearbeitenArtikelPreis.setHorizontalAlignment(javax.swing.JTextField.RIGHT); + jTextFieldLieferantBearbeitenArtikelPreis.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + jTextFieldLieferantBearbeitenArtikelPreisFocusLost(evt); + } + }); + add(jTextFieldLieferantBearbeitenArtikelPreis); + jTextFieldLieferantBearbeitenArtikelPreis.setBounds(130, 370, 190, 26); + + jButtonLieferantBearbeitenArtikelHinzufuegen.setFont(new java.awt.Font("Dialog", 0, 10)); // NOI18N + jButtonLieferantBearbeitenArtikelHinzufuegen.setText(">>"); + jButtonLieferantBearbeitenArtikelHinzufuegen.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButtonLieferantBearbeitenArtikelHinzufuegenActionPerformed(evt); + } + }); + add(jButtonLieferantBearbeitenArtikelHinzufuegen); + jButtonLieferantBearbeitenArtikelHinzufuegen.setBounds(340, 340, 60, 29); + + jButtonLieferantBearbeitenArtikelEntfernen.setFont(new java.awt.Font("Dialog", 0, 10)); // NOI18N + jButtonLieferantBearbeitenArtikelEntfernen.setText("ENTF"); + jButtonLieferantBearbeitenArtikelEntfernen.setMargin(new java.awt.Insets(2, 10, 2, 10)); + jButtonLieferantBearbeitenArtikelEntfernen.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButtonLieferantBearbeitenArtikelEntfernenActionPerformed(evt); + } + }); + add(jButtonLieferantBearbeitenArtikelEntfernen); + jButtonLieferantBearbeitenArtikelEntfernen.setBounds(340, 390, 60, 29); + + jLabelMindestAbnahme3.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N + jLabelMindestAbnahme3.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabelMindestAbnahme3.setText("Mindestabnahme"); + add(jLabelMindestAbnahme3); + jLabelMindestAbnahme3.setBounds(20, 400, 130, 20); + + jTextFieldLieferantBearbeitenMindestAbnahme.setHorizontalAlignment(javax.swing.JTextField.RIGHT); + jTextFieldLieferantBearbeitenMindestAbnahme.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + jTextFieldLieferantBearbeitenMindestAbnahmeFocusLost(evt); + } + }); + add(jTextFieldLieferantBearbeitenMindestAbnahme); + jTextFieldLieferantBearbeitenMindestAbnahme.setBounds(130, 400, 190, 26); + + jButtonLieferantenAnlegen1.setText("Änderungen speichern"); + jButtonLieferantenAnlegen1.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButtonLieferantenAnlegen1ActionPerformed(evt); + } + }); + add(jButtonLieferantenAnlegen1); + jButtonLieferantenAnlegen1.setBounds(220, 450, 170, 31); + + jComboBoxLieferantBearbeiten.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jComboBoxLieferantBearbeitenActionPerformed(evt); + } + }); + jComboBoxLieferantBearbeiten.addAncestorListener(new javax.swing.event.AncestorListener() { + public void ancestorAdded(javax.swing.event.AncestorEvent evt) { + jComboBoxLieferantBearbeitenAncestorAdded(evt); + } + public void ancestorMoved(javax.swing.event.AncestorEvent evt) { + } + public void ancestorRemoved(javax.swing.event.AncestorEvent evt) { + } + }); + add(jComboBoxLieferantBearbeiten); + jComboBoxLieferantBearbeiten.setBounds(130, 60, 250, 27); + + jButtonLieferantenAnlegen2.setText("Lieferanten löschen"); + jButtonLieferantenAnlegen2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButtonLieferantenAnlegen2ActionPerformed(evt); + } + }); + add(jButtonLieferantenAnlegen2); + jButtonLieferantenAnlegen2.setBounds(420, 450, 170, 31); + + jLabelNeuerLieferantName.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N + jLabelNeuerLieferantName.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabelNeuerLieferantName.setText("Name"); + add(jLabelNeuerLieferantName); + jLabelNeuerLieferantName.setBounds(440, 130, 90, 20); + + jTextFieldNeuerLieferantName.setDocument(new Validator(50)); + add(jTextFieldNeuerLieferantName); + jTextFieldNeuerLieferantName.setBounds(510, 130, 250, 20); + + jLabelNeuerLieferantVorname.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N + jLabelNeuerLieferantVorname.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabelNeuerLieferantVorname.setText("Vorname"); + add(jLabelNeuerLieferantVorname); + jLabelNeuerLieferantVorname.setBounds(440, 100, 90, 20); + + jTextFieldNeuerLieferantVorname.setDocument(new Validator(50)); + add(jTextFieldNeuerLieferantVorname); + jTextFieldNeuerLieferantVorname.setBounds(510, 100, 250, 20); + + jTextFieldNeuerLieferantStrasse.setDocument(new Validator(50)); + add(jTextFieldNeuerLieferantStrasse); + jTextFieldNeuerLieferantStrasse.setBounds(130, 130, 250, 26); + + jLabelNeuerLieferantStrasse.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N + jLabelNeuerLieferantStrasse.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabelNeuerLieferantStrasse.setText("Straße"); + add(jLabelNeuerLieferantStrasse); + jLabelNeuerLieferantStrasse.setBounds(20, 130, 90, 20); + + jTextFieldNeuerLieferantFirma.setDocument(new Validator(50)); + add(jTextFieldNeuerLieferantFirma); + jTextFieldNeuerLieferantFirma.setBounds(130, 100, 250, 26); + + jLabelLieferantenFirma.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N + jLabelLieferantenFirma.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabelLieferantenFirma.setText("Firma"); + add(jLabelLieferantenFirma); + jLabelLieferantenFirma.setBounds(20, 100, 90, 20); + + jLabelNeuerLieferantOrt.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N + jLabelNeuerLieferantOrt.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabelNeuerLieferantOrt.setText("Ort"); + add(jLabelNeuerLieferantOrt); + jLabelNeuerLieferantOrt.setBounds(20, 160, 90, 20); + + jTextFieldNeuerLieferantOrt.setDocument(new Validator(50)); + add(jTextFieldNeuerLieferantOrt); + jTextFieldNeuerLieferantOrt.setBounds(130, 160, 160, 26); + + jLabelNeuerLieferantPLZ.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N + jLabelNeuerLieferantPLZ.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabelNeuerLieferantPLZ.setText("PLZ"); + add(jLabelNeuerLieferantPLZ); + jLabelNeuerLieferantPLZ.setBounds(300, 160, 90, 20); + + jTextFieldNeuerLieferantPLZ.setColumns(5); + jTextFieldNeuerLieferantPLZ.setDocument(new Validator(5)); + jTextFieldNeuerLieferantPLZ.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + jTextFieldNeuerLieferantPLZFocusLost(evt); + } + }); + add(jTextFieldNeuerLieferantPLZ); + jTextFieldNeuerLieferantPLZ.setBounds(330, 160, 50, 26); + + jTextFieldNeuerLieferantFax.setDocument(new Validator(30)); + add(jTextFieldNeuerLieferantFax); + jTextFieldNeuerLieferantFax.setBounds(510, 190, 250, 20); + + jLabelNeuerLieferantFax.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N + jLabelNeuerLieferantFax.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabelNeuerLieferantFax.setText("Fax"); + add(jLabelNeuerLieferantFax); + jLabelNeuerLieferantFax.setBounds(440, 190, 90, 20); + + jTextFieldNeuerLieferantTelefon.setDocument(new Validator(30)); + add(jTextFieldNeuerLieferantTelefon); + jTextFieldNeuerLieferantTelefon.setBounds(510, 160, 250, 20); + + jLabelNeuerLieferantTelefon.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N + jLabelNeuerLieferantTelefon.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabelNeuerLieferantTelefon.setText("Telefon"); + add(jLabelNeuerLieferantTelefon); + jLabelNeuerLieferantTelefon.setBounds(440, 160, 90, 20); + + jLabelNeuerLieferantEMail.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N + jLabelNeuerLieferantEMail.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabelNeuerLieferantEMail.setText("eMail"); + add(jLabelNeuerLieferantEMail); + jLabelNeuerLieferantEMail.setBounds(440, 220, 90, 20); + + jTextFieldNeuerLieferantEMail.setDocument(new Validator(50)); + jTextFieldNeuerLieferantEMail.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + jTextFieldNeuerLieferantEMailFocusLost(evt); + } + }); + add(jTextFieldNeuerLieferantEMail); + jTextFieldNeuerLieferantEMail.setBounds(510, 220, 250, 20); + + jLabelNeuerLieferantLieferqualitaet.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N + jLabelNeuerLieferantLieferqualitaet.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabelNeuerLieferantLieferqualitaet.setText("Lieferqualität"); + add(jLabelNeuerLieferantLieferqualitaet); + jLabelNeuerLieferantLieferqualitaet.setBounds(20, 200, 130, 20); + + jComboBoxNeuerLieferantLieferqualitaet.setEditable(true); + jComboBoxNeuerLieferantLieferqualitaet.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N + jComboBoxNeuerLieferantLieferqualitaet.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "1", "2", "3", "4", "5", "6" })); + jComboBoxNeuerLieferantLieferqualitaet.setSelectedIndex(2); + add(jComboBoxNeuerLieferantLieferqualitaet); + jComboBoxNeuerLieferantLieferqualitaet.setBounds(130, 200, 50, 25); + + jComboBoxNeuerLieferantZuverlaessigkeit.setEditable(true); + jComboBoxNeuerLieferantZuverlaessigkeit.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N + jComboBoxNeuerLieferantZuverlaessigkeit.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "1", "2", "3", "4", "5", "6" })); + jComboBoxNeuerLieferantZuverlaessigkeit.setSelectedIndex(2); + add(jComboBoxNeuerLieferantZuverlaessigkeit); + jComboBoxNeuerLieferantZuverlaessigkeit.setBounds(130, 240, 50, 25); + + jLabelNeuerLieferantZuverlaessigkeit.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N + jLabelNeuerLieferantZuverlaessigkeit.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabelNeuerLieferantZuverlaessigkeit.setText("Zuverlässigkeit"); + add(jLabelNeuerLieferantZuverlaessigkeit); + jLabelNeuerLieferantZuverlaessigkeit.setBounds(20, 240, 130, 20); + + jComboBoxNeuerLieferantArtikel.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N + add(jComboBoxNeuerLieferantArtikel); + jComboBoxNeuerLieferantArtikel.setBounds(130, 330, 190, 27); + + jScrollPanePositionen.setMaximumSize(new java.awt.Dimension(300, 320)); + jScrollPanePositionen.setPreferredSize(new java.awt.Dimension(53, 3)); + + jTable1.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + + }, + new String [] { + "Artikelname", "Mindestaufnahme", "Artikelpreis" + } + ) { + boolean[] canEdit = new boolean [] { + false, false, false + }; + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit [columnIndex]; + } + }); + jScrollPanePositionen.setViewportView(jTable1); + + add(jScrollPanePositionen); + jScrollPanePositionen.setBounds(420, 330, 350, 90); + + jLabelNeuerLieferantLieferqualitaet1.setFont(new java.awt.Font("Dialog", 0, 10)); // NOI18N + jLabelNeuerLieferantLieferqualitaet1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabelNeuerLieferantLieferqualitaet1.setText("Punkte"); + add(jLabelNeuerLieferantLieferqualitaet1); + jLabelNeuerLieferantLieferqualitaet1.setBounds(190, 200, 130, 20); + + jLabelNeuerLieferantLieferqualitaet2.setFont(new java.awt.Font("Dialog", 0, 10)); // NOI18N + jLabelNeuerLieferantLieferqualitaet2.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabelNeuerLieferantLieferqualitaet2.setText("Punkte"); + add(jLabelNeuerLieferantLieferqualitaet2); + jLabelNeuerLieferantLieferqualitaet2.setBounds(190, 240, 130, 20); + + jLabel1.setFont(new java.awt.Font("Dialog", 0, 10)); // NOI18N + jLabel1.setText("[Bewertung nach Schulnotensystem]"); + add(jLabel1); + jLabel1.setBounds(130, 270, 210, 20); + + jLabel2.setFont(new java.awt.Font("Dialog", 0, 10)); // NOI18N + jLabel2.setText("Ansprechpartner"); + add(jLabel2); + jLabel2.setBounds(680, 70, 80, 20); + + jLabelLieferantBearbeitenUeberschrift.setFont(new java.awt.Font("Dialog", 1, 24)); // NOI18N + jLabelLieferantBearbeitenUeberschrift.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabelLieferantBearbeitenUeberschrift.setText("Lieferant bearbeiten"); + add(jLabelLieferantBearbeitenUeberschrift); + jLabelLieferantBearbeitenUeberschrift.setBounds(0, 0, 800, 40); + }// //GEN-END:initComponents + + private void jButtonLieferantenAnlegen2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonLieferantenAnlegen2ActionPerformed + deleteSupplierEvent(); + }//GEN-LAST:event_jButtonLieferantenAnlegen2ActionPerformed + + private void jTextFieldNeuerLieferantPLZFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldNeuerLieferantPLZFocusLost + validatePLZ(); + }//GEN-LAST:event_jTextFieldNeuerLieferantPLZFocusLost + + private void jTextFieldNeuerLieferantEMailFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldNeuerLieferantEMailFocusLost + validateEmail(); + }//GEN-LAST:event_jTextFieldNeuerLieferantEMailFocusLost + + private void jTextFieldLieferantBearbeitenMindestAbnahmeFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldLieferantBearbeitenMindestAbnahmeFocusLost + validateMindestAbnahme(); + }//GEN-LAST:event_jTextFieldLieferantBearbeitenMindestAbnahmeFocusLost + + private void jTextFieldLieferantBearbeitenArtikelPreisFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldLieferantBearbeitenArtikelPreisFocusLost + validateArtikelPreis(); + }//GEN-LAST:event_jTextFieldLieferantBearbeitenArtikelPreisFocusLost + private void jButtonLieferantBearbeitenArtikelEntfernenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonLieferantBearbeitenArtikelEntfernenActionPerformed + artikelEntfernenEvent(); + }//GEN-LAST:event_jButtonLieferantBearbeitenArtikelEntfernenActionPerformed + private void jButtonLieferantBearbeitenArtikelHinzufuegenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonLieferantBearbeitenArtikelHinzufuegenActionPerformed + artikelHinzufuegenEvent(); + }//GEN-LAST:event_jButtonLieferantBearbeitenArtikelHinzufuegenActionPerformed + + private void jButtonLieferantenAnlegen1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonLieferantenAnlegen1ActionPerformed + lieferantAnlegenEvent(); + }//GEN-LAST:event_jButtonLieferantenAnlegen1ActionPerformed + + private void jComboBoxLieferantBearbeitenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBoxLieferantBearbeitenActionPerformed + /** + * [DoItBen] change action! + */ + if (jComboBoxLieferantBearbeiten.getSelectedItem() != null) { + if (jComboBoxLieferantBearbeiten.getSelectedItem().equals("Bitte wählen")) { + setStandard(); + } else { + loadSupplier(); + } + } + }//GEN-LAST:event_jComboBoxLieferantBearbeitenActionPerformed + + private void jComboBoxLieferantBearbeitenAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jComboBoxLieferantBearbeitenAncestorAdded + loadSuppliers(); + loadSpareParts(); + }//GEN-LAST:event_jComboBoxLieferantBearbeitenAncestorAdded + + //Füllt die ComboBox Lieferantenliste mit den in der DB vorhandenen Lieferanten + private void loadSuppliers() { + Collection lieferantenliste = null; + try { + lieferantenliste = dao.getSuppliers(); + } catch (WiSimDAOException e) { + wiSimLogger.log("ladeLieferanten()", e); + } + DefaultComboBoxModel model = (DefaultComboBoxModel) jComboBoxLieferantBearbeiten.getModel(); + model.removeAllElements(); + model.addElement("Bitte wählen"); + + // Verhindert NullPointerException bei einer leeren Liste + int indexcounter = 0; + + if (lieferantenliste != null) { + Iterator it = lieferantenliste.iterator(); + + while (it.hasNext()) { + indexcounter++; + Supplier listenlieferant = (Supplier) it.next(); + String listItem = String.valueOf(listenlieferant.getFirma()); + model.addElement(listItem); + lieferantenObjekte.put((String.valueOf(indexcounter)), listenlieferant); + lieferantenAuswahl.put((String.valueOf(indexcounter)), String.valueOf(listenlieferant.getId())); + } + jComboBoxLieferantBearbeiten.setModel(model); + } + } + + //Lädt einen Kunden zum Bearbeiten aus der Datenbank + private void loadSupplier() { + + //liefert listItem des selektierten Eintrags + String listItem = String.valueOf(jComboBoxLieferantBearbeiten.getSelectedIndex()); + //sucht das aktive KundenObjekt in Hashtabelle lieferantenObjekte + Supplier auswahlLieferant = (Supplier) lieferantenObjekte.get(listItem); + position = 0; + boolean deleted = true; + updatePositionsTable(deleted); + + if (auswahlLieferant != null) { + jTextFieldNeuerLieferantName.setText(auswahlLieferant.getNachname()); + jTextFieldNeuerLieferantVorname.setText(auswahlLieferant.getVorname()); + jTextFieldNeuerLieferantFirma.setText(auswahlLieferant.getFirma()); + jTextFieldNeuerLieferantStrasse.setText(auswahlLieferant.getStrasse()); + jTextFieldNeuerLieferantTelefon.setText(auswahlLieferant.getTelefon()); + jTextFieldNeuerLieferantFax.setText(auswahlLieferant.getFax()); + jTextFieldNeuerLieferantEMail.setText(auswahlLieferant.getEmail()); + jTextFieldNeuerLieferantPLZ.setText(String.valueOf(auswahlLieferant.getPlz())); + jTextFieldNeuerLieferantOrt.setText(auswahlLieferant.getOrt()); + jComboBoxNeuerLieferantLieferqualitaet.setSelectedItem(auswahlLieferant.getLieferqualitaet()); + jComboBoxNeuerLieferantZuverlaessigkeit.setSelectedItem(auswahlLieferant.getZuverlaessigkeit()); + zubehoerTabelle.clear(); + loadDependingSpareParts(auswahlLieferant.getId()); + } + } + + //Füllt die ComboBox Einzelteile mit den in der DB vorhandenen Teilen + private void loadSpareParts() { + Collection teile = null; + try { + teile = dao.getAllComponents(); + } catch (WiSimDAOException e) { + wiSimLogger.log("ladeEinzelteile()", e); + } + DefaultComboBoxModel model = (DefaultComboBoxModel) jComboBoxNeuerLieferantArtikel.getModel(); + model.removeAllElements(); + model.addElement("Bitte wählen"); + + // Verhindert NullPointerException bei einer leeren Liste + if (teile != null) { + Iterator it = teile.iterator(); + + while (it.hasNext()) { + WiSimComponent teil = (WiSimComponent) it.next(); + if (teil.getNr() != HUB) { + model.addElement(teil.getName()); + } + einzelteileTabelle.put(teil.getName(), String.valueOf(teil.getNr())); + WiSimComponent etatPos = new WiSimComponent(); + etatPos.setNr(teil.getNr()); + alleArtikel.add(etatPos); + } + jComboBoxNeuerLieferantArtikel.setModel(model); + } + } + + // Ladet die Einzelteile des Lieferanten + private void deleteDependingSpareParts(int id) { + + try { + Collection lieferliste = dao.getSupplyLists(id); + for (SupplyList liste : lieferliste) { + + dao.getComponent(liste.getEinzelteilID()); //dispensable? + dao.loescheLieferliste(id, liste.getEinzelteilID()); + } + } catch (WiSimDAOException e) { + wiSimLogger.log("loescheZugehoerigeEinzelteile()", e); + } catch (WiSimDAOWriteException e) { + wiSimLogger.log("loescheZugehoerigeEinzelteile()", e); + } + } + + // Ladet die Einzelteile des Lieferanten + private void loadDependingSpareParts(int id) { + + try { + Collection lieferliste = dao.getSupplyLists(id);; + WiSimComponent einzelteil = null; + for(SupplyList liste : lieferliste) { + einzelteil = dao.getComponent(liste.getEinzelteilID()); + + //gesamter Tabelleninhalt wird Zwischengespeichert + ArrayList tableTempRow = new ArrayList<>(); + int row = 0; + + while (row < position) { + tableTempRow.add(jTable1.getValueAt(row, 0) + ";" + jTable1.getValueAt(row, 1) + ";" + jTable1.getValueAt(row, 2)); + row++; + } + + //DefaultTableModel mit Variablen Zeilen, 3 TableHeads und nicht editierbaren Zellen + boolean deleted = false; + updatePositionsTable(deleted); + + if (tableTempRow.size() > 0) { + Iterator it_tableTempRow = tableTempRow.iterator(); + row = 0; + while (it_tableTempRow.hasNext()) { + String complete = (String) it_tableTempRow.next(); + String[] chunks = complete.split(";"); + jTable1.setValueAt(chunks[0], row, 0); + jTable1.setValueAt(chunks[1], row, 1); + jTable1.setValueAt(chunks[2], row, 2); + row++; + } + } + + zubehoerTabelle.put(einzelteil.getName(), String.valueOf(einzelteil.getNr())); + jTable1.setValueAt(einzelteil.getName(), position, 0); + jTable1.setValueAt(String.valueOf(liste.getMindestBestellMenge()), position, 1); + jTable1.setValueAt(format.format(liste.getPreis()), position, 2); + position++; + jTable1.setRowSelectionInterval(position - 1, position - 1); + } + } catch (WiSimDAOException e) { + wiSimLogger.log("ladeZugehoerigeEinzelteile()", e); + } + } + + //Setzt Lieferantenstatus auf gelöscht + private void deleteSupplier(int ltId) { + int submit = JOptionPane.showConfirmDialog(this, "Wollen Sie den Lieferanten wirklich löschen?", "Lieferant löschen", JOptionPane.YES_NO_OPTION); + if (submit == 0) { + try { + dao.setLieferantLoeschStatus(ltId, true); + loadSuppliers(); + } catch (WiSimDAOException e) { + wiSimLogger.log("loescheLieferant()", e); + } catch (WiSimDAOWriteException e) { + wiSimLogger.log("loescheLieferant()", e); + } + } + } + + // Setzt nach dem Speichern und Löschen eines Lieferanten die Werte auf Standard + private void setStandard() { + jTextFieldNeuerLieferantVorname.setText(""); + jTextFieldNeuerLieferantName.setText(""); + jTextFieldNeuerLieferantFirma.setText(""); + jTextFieldNeuerLieferantStrasse.setText(""); + jTextFieldNeuerLieferantOrt.setText(""); + jTextFieldNeuerLieferantPLZ.setText(""); + jTextFieldNeuerLieferantTelefon.setText(""); + jTextFieldNeuerLieferantEMail.setText(""); + jTextFieldNeuerLieferantFax.setText(""); + jComboBoxNeuerLieferantLieferqualitaet.setSelectedIndex(2); + jComboBoxNeuerLieferantZuverlaessigkeit.setSelectedIndex(2); + jComboBoxNeuerLieferantArtikel.setSelectedItem("Bitte wählen"); + jTextFieldLieferantBearbeitenArtikelPreis.setText(""); + jTextFieldLieferantBearbeitenMindestAbnahme.setText(""); + position = 0; + boolean deleted = true; + updatePositionsTable(deleted); + } + + /** + * Schreibt die Positions-Tabelle neu + * + * @param Deleted boolean + */ + public void updatePositionsTable(boolean deleted) { + int rows; + + if (deleted) { + rows = position; + } else { + rows = position + 1; + } + //DefaultTableModel mit Variablen Zeilen, 3 TableHeads und nicht editierbaren Zellen + Object[][] tableInit = new Object[rows][3]; + DefaultTableModel defTable = new DefaultTableModel(tableInit, new String[]{"Artikel", "MinAbnahme", "Preis/Stk"}) { + boolean[] canEdit = new boolean[]{false, false, false}; + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit[columnIndex]; + } + }; + jTable1.setModel(defTable); + jTable1.setFocusable(false); + javax.swing.table.TableColumn column = null; + + //Spaltenbreiten der Tabelle werden gesetzt + for (int i = 0; i < 3; i++) { + column = jTable1.getColumnModel().getColumn(i); + switch (i) { + //Article + case 0: + column.setPreferredWidth(120); + break; + //Menge + case 1: + column.setPreferredWidth(10); + break; + //Preis + case 2: + column.setPreferredWidth(15); + break; + } + } + } + + /** + * Liefert die KD_Nr des aktiven Kunden + * + * @return int + */ + private int getSelLieferantenID() { + //liefert listItem des selektierten Eintrags + String listItem = String.valueOf(jComboBoxLieferantBearbeiten.getSelectedIndex()); + //sucht das aktive KundenObjekt in Hashtabelle kundenObjekte + Supplier auswahlLieferant = (Supplier) lieferantenObjekte.get(listItem); + if (auswahlLieferant != null) { + return auswahlLieferant.getId(); + } else { + return 0; + } + } + + private void deleteSupplierEvent() { + int auswahl = getSelLieferantenID(); + if (auswahl != 0) { + deleteSupplier(getSelLieferantenID()); + JOptionPane.showMessageDialog(this, "Der Lieferant wurde erfolgreich gelöscht.", "Vertrag", JOptionPane.INFORMATION_MESSAGE); + } else { + JOptionPane.showMessageDialog(this, "Bitte wählen Sie erst einen Lieferanten aus.", "Fehler beim Löschen eines Kunden", JOptionPane.ERROR_MESSAGE); + } + } + + private void validatePLZ() { + Validator validate = new Validator(); + String plz = jTextFieldNeuerLieferantPLZ.getText(); + + boolean plzOk = false; + + if (plz != null && !plz.equals("")) { + + while (plz != null && !plzOk) { + + if (!validate.checkPlz(plz)) { + plz = JOptionPane.showInputDialog("Ungültige PLZ! Bitte neu eingeben:", plz); + } else { + plzOk = true; + } + } + if (plz != null) { + jTextFieldNeuerLieferantPLZ.setText(plz); + } else { + jTextFieldNeuerLieferantPLZ.setText(""); + } + } + } + + private void validateEmail() { + Validator validate = new Validator(); + String email = jTextFieldNeuerLieferantEMail.getText(); + + boolean emailOk = false; + + if (email != null && !email.equals("")) { + + while (email != null && !emailOk) { + + if (!validate.checkEMail(email)) { + email = JOptionPane.showInputDialog("Ungültige eMail! Bitte neu eingeben:", email); + } else { + emailOk = true; + } + } + if (email != null) { + jTextFieldNeuerLieferantEMail.setText(email); + } else { + jTextFieldNeuerLieferantEMail.setText(""); + } + } + } + + private void validateMindestAbnahme() { + Validator validate = new Validator(); + String zahl = jTextFieldLieferantBearbeitenMindestAbnahme.getText(); + + boolean zahlOk = false; + if (!zahl.equals("")) { + while (!zahlOk && zahl != null) { + if (!validate.checkZahl(zahl)) { + zahl = JOptionPane.showInputDialog("Ungültige Zahl!", zahl); + } else { + zahlOk = true; + } + } + if (zahl != null) { + jTextFieldLieferantBearbeitenMindestAbnahme.setText(zahl); + } else { + jTextFieldLieferantBearbeitenMindestAbnahme.setText(""); + } + } + } + + private void validateArtikelPreis() { + Validator validate = new Validator(); + String preis = jTextFieldLieferantBearbeitenArtikelPreis.getText(); + + boolean preisOk = false; + if (!preis.equals("")) { + while (!preisOk && preis != null) { + if (!validate.checkPreis(preis)) { + preis = JOptionPane.showInputDialog("Ungültiger Peis! Bitte geben Sie den Preis implements Format xx.xx ein!", preis); + + } else { + preisOk = true; + } + } + if (preis != null) { + jTextFieldLieferantBearbeitenArtikelPreis.setText(preis); + } else { + jTextFieldLieferantBearbeitenArtikelPreis.setText(""); + } + } + } + + private void artikelEntfernenEvent() { + int selectedPosition = jTable1.getSelectedRow(); + + //gesamter Tabelleninhalt wird Zwischengespeichert + ArrayList tableTempRow = new ArrayList<>(); + int row = 0; + + while (row < position) { + tableTempRow.add(jTable1.getValueAt(row, 0) + "," + jTable1.getValueAt(row, 1) + "," + jTable1.getValueAt(row, 2)); + row++; + } + + //Selektierte Zeile wird gelöscht + if (selectedPosition >= 0) { + + if (jTable1.getValueAt(selectedPosition, 0) != null) { + zubehoerTabelle.remove(String.valueOf(jTable1.getValueAt(selectedPosition, 0))); + jTable1.setValueAt(null, selectedPosition, 0); + jTable1.setValueAt(null, selectedPosition, 1); + jTable1.setValueAt(null, selectedPosition, 2); + tableTempRow.remove(selectedPosition); + position--; + } + } + + //DefaultTableModel mit Variablen Zeilen, 3 TableHeads und nicht editierbaren Zellen + boolean deleted = true; + updatePositionsTable(deleted); + + //Tabelle wird neu geschrieben + if (tableTempRow.size() > 0) { + Iterator it_tableTempRow = tableTempRow.iterator(); + row = 0; + + while (it_tableTempRow.hasNext()) { + String complete = (String) it_tableTempRow.next(); + String[] chunks = complete.split(","); + jTable1.setValueAt(chunks[0], row, 0); + jTable1.setValueAt(chunks[1], row, 1); + jTable1.setValueAt(chunks[2], row, 2); + row++; + } + } + position = tableTempRow.size(); + + if (position != 0) { + jTable1.setRowSelectionInterval(position - 1, position - 1); + } + } + + private void artikelHinzufuegenEvent() { + ArrayList errors = new ArrayList<>(); + + if (jTextFieldLieferantBearbeitenArtikelPreis.getText().equals("")) { + errors.add("Artikelpreis"); + } + + if (jTextFieldLieferantBearbeitenMindestAbnahme.getText().equals("")) { + errors.add("Mindestabnahme"); + } + + if (errors.isEmpty()) { + String artikel = jComboBoxNeuerLieferantArtikel.getSelectedItem().toString(); + + if (!artikel.equals("Bitte wählen")) { + String preis = jTextFieldLieferantBearbeitenArtikelPreis.getText(); + int menge = Integer.parseInt(jTextFieldLieferantBearbeitenMindestAbnahme.getText()); + + //gesamter Tabelleninhalt wird Zwischengespeichert + Vector tableTempRow = new Vector(); + int row = 0; + while (row < position) { + tableTempRow.add(jTable1.getValueAt(row, 0) + ";" + jTable1.getValueAt(row, 1) + ";" + jTable1.getValueAt(row, 2)); + row++; + } + + if (!zubehoerTabelle.containsValue(String.valueOf(jComboBoxNeuerLieferantArtikel.getSelectedIndex()))) { + + //Position hinzufügen: + WiSimComponent teil = new WiSimComponent(); + WiSimComponent eteil = (WiSimComponent) alleArtikel.get(jComboBoxNeuerLieferantArtikel.getSelectedIndex()); + teil.setNr(eteil.getNr()); + zubehoerTabelle.put(String.valueOf(jComboBoxNeuerLieferantArtikel.getSelectedItem()), String.valueOf(jComboBoxNeuerLieferantArtikel.getSelectedIndex())); + alleArtikel.add(alleArtikel.get(jComboBoxNeuerLieferantArtikel.getSelectedIndex())); + + //DefaultTableModel mit Variablen Zeilen, 3 TableHeads und nicht editierbaren Zellen + boolean deleted = false; + updatePositionsTable(deleted); + + //Tabelle wird neu geschrieben + if (tableTempRow.size() > 0) { + Iterator it_tableTempRow = tableTempRow.iterator(); + row = 0; + + while (it_tableTempRow.hasNext()) { + String complete = (String) it_tableTempRow.next(); + String[] chunks = complete.split(";"); + jTable1.setValueAt(chunks[0], row, 0); + jTable1.setValueAt(chunks[1], row, 1); + jTable1.setValueAt(chunks[2], row, 2); + row++; + } + } + jTable1.setValueAt(artikel, position, 0); + jTable1.setValueAt(String.valueOf(menge), position, 1); + if (preis.matches("^[0-9]*[,][0-9]*")) { + preis = preis.replaceAll(",", "."); + } + jTable1.setValueAt(format.format(Double.parseDouble(preis)), position, 2); + position++; + jTable1.setRowSelectionInterval(position - 1, position - 1); + } else { + JOptionPane.showMessageDialog(null, "Dieser Artikel ist bereits vorhanden!"); + } + } + } else { + if (errors.size() > 1) { + JOptionPane.showMessageDialog(this, "Folgende Felder müssen ausgefüllt werden: " + errors.toString().substring(1, errors.toString().length() - 1), "Fehler beim Hinzufügen des Artikels", JOptionPane.ERROR_MESSAGE); + } else { + JOptionPane.showMessageDialog(this, "Das folgende Feld muss ausgefüllt werden: " + errors.toString().substring(1, errors.toString().length() - 1), "Fehler beim Hinzufügen des Artikels", JOptionPane.ERROR_MESSAGE); + } + } + } + + private void lieferantAnlegenEvent() { + int auswahl = getSelLieferantenID(); + + if (auswahl == 0) { + JOptionPane.showMessageDialog(this, "Bitte wählen Sie erst einen Lieferanten aus.", "Fehler beim Löschen eines Kunden", JOptionPane.ERROR_MESSAGE); + } else { + ArrayList check = new ArrayList<>(); + if (jTextFieldNeuerLieferantFirma.getText().equals("")) { + check.add("Firma"); + } + if (jTextFieldNeuerLieferantName.getText().equals("")) { + check.add("Name"); + } + if (jTextFieldNeuerLieferantVorname.getText().equals("")) { + check.add("Vorname"); + } + if (jTextFieldNeuerLieferantTelefon.getText().equals("")) { + check.add("Telefon"); + } + if (jTextFieldNeuerLieferantStrasse.getText().equals("")) { + check.add("Strasse"); + } + if (jTextFieldNeuerLieferantOrt.getText().equals("")) { + check.add("Ort"); + } + if (jTextFieldNeuerLieferantPLZ.getText().equals("")) { + check.add("PLZ"); + } + if (!check.isEmpty()) { + + if (check.size() > 1) { + JOptionPane.showMessageDialog(this, "Folgende Felder müssen ausgefüllt werden: " + check.toString().substring(1, check.toString().length() - 1), "Fehler beim Bearbeiten des Lieferanten", JOptionPane.ERROR_MESSAGE); + } else { + JOptionPane.showMessageDialog(this, "Folgende Felder müssen ausgefüllt werden: " + check.toString().substring(1, check.toString().length() - 1), "Fehler beim Bearbeiten des Lieferanten", JOptionPane.ERROR_MESSAGE); + } + } else { + + //liefert listItem des selektierten Eintrags + String selectedItem = String.valueOf(jComboBoxLieferantBearbeiten.getSelectedIndex()); + //sucht das aktive KundenObjekt in Hashtabelle kundenAuswahl + Supplier changedLieferant = (Supplier) lieferantenObjekte.get(selectedItem); + int ltID = changedLieferant.getId(); + + Supplier lieferant = new Supplier(); + lieferant.setId(ltID); + lieferant.setNachname(jTextFieldNeuerLieferantName.getText()); + lieferant.setVorname(jTextFieldNeuerLieferantVorname.getText()); + lieferant.setFirma(jTextFieldNeuerLieferantFirma.getText()); + lieferant.setStrasse(jTextFieldNeuerLieferantStrasse.getText()); + lieferant.setTelefon(jTextFieldNeuerLieferantTelefon.getText()); + lieferant.setFax(jTextFieldNeuerLieferantFax.getText()); + lieferant.setEmail(jTextFieldNeuerLieferantEMail.getText()); + lieferant.setPlz(jTextFieldNeuerLieferantPLZ.getText()); + lieferant.setOrt(jTextFieldNeuerLieferantOrt.getText()); + lieferant.setLieferqualitaet(String.valueOf(jComboBoxNeuerLieferantLieferqualitaet.getSelectedItem())); + lieferant.setZuverlaessigkeit(String.valueOf(jComboBoxNeuerLieferantZuverlaessigkeit.getSelectedItem())); + + try { + City ort = new City(); + ort.setName(lieferant.getOrt()); + ort.setPlz(lieferant.getPlz()); + lieferant.setPlzId(dao.neuerOrt(ort)); + + //Tabelle wird neu geschrieben + if (jTable1.getRowCount() >= 0) { + + deleteDependingSpareParts(ltID); + SupplyList liste = new SupplyList(); + + for (int row = 0; row < jTable1.getRowCount(); row++) { + liste.setLieferantenID(ltID); + String zubehoerName = (String) jTable1.getValueAt(row, 0); + String zubehoerId = (String) zubehoerTabelle.get(zubehoerName); + liste.setEinzelteilID(Integer.parseInt(zubehoerId)); + liste.setPreis(format.parse(String.valueOf(jTable1.getValueAt(row, 2))).doubleValue()); + liste.setMindestBestellMenge(Long.parseLong(String.valueOf(jTable1.getValueAt(row, 1)))); + dao.setLieferliste(liste); + } + } + } catch (WiSimDAOException | WiSimDAOWriteException e) { + wiSimLogger.log("jButtonLieferantenAnlegen1ActionPerformed()", e); + } catch (ParseException e) { + wiSimLogger.log(Level.WARNING, "JPanelModifySupplier.jButtonLieferantenAnlegen1ActionPerformed()", e, false); + } + + try { + dao.aendereLieferant(lieferant); + loadSuppliers(); + loadSupplier(); + setStandard(); + } catch (WiSimDAOException | WiSimDAOWriteException e) { + wiSimLogger.log("jButtonLieferantenAnlegen1ActionPerformed()", e); + } + } + JOptionPane.showMessageDialog(this, "Die Änderungen des Lieferanten wurde erfolgreich gespeichert.", "Lieferant", JOptionPane.INFORMATION_MESSAGE); + } + + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton jButtonLieferantBearbeitenArtikelEntfernen; + private javax.swing.JButton jButtonLieferantBearbeitenArtikelHinzufuegen; + private javax.swing.JButton jButtonLieferantenAnlegen1; + private javax.swing.JButton jButtonLieferantenAnlegen2; + private javax.swing.JComboBox jComboBoxLieferantBearbeiten; + private javax.swing.JComboBox jComboBoxNeuerLieferantArtikel; + private javax.swing.JComboBox jComboBoxNeuerLieferantLieferqualitaet; + private javax.swing.JComboBox jComboBoxNeuerLieferantZuverlaessigkeit; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabelArtikelName1; + private javax.swing.JLabel jLabelArtikelPreis1; + private javax.swing.JLabel jLabelLieferantBearbeitenUeberschrift; + private javax.swing.JLabel jLabelLieferantenFirma; + private javax.swing.JLabel jLabelMindestAbnahme3; + private javax.swing.JLabel jLabelNeuerLieferantEMail; + private javax.swing.JLabel jLabelNeuerLieferantFax; + private javax.swing.JLabel jLabelNeuerLieferantLieferqualitaet; + private javax.swing.JLabel jLabelNeuerLieferantLieferqualitaet1; + private javax.swing.JLabel jLabelNeuerLieferantLieferqualitaet2; + private javax.swing.JLabel jLabelNeuerLieferantName; + private javax.swing.JLabel jLabelNeuerLieferantOrt; + private javax.swing.JLabel jLabelNeuerLieferantPLZ; + private javax.swing.JLabel jLabelNeuerLieferantStrasse; + private javax.swing.JLabel jLabelNeuerLieferantTelefon; + private javax.swing.JLabel jLabelNeuerLieferantVorname; + private javax.swing.JLabel jLabelNeuerLieferantZuverlaessigkeit; + private javax.swing.JScrollPane jScrollPanePositionen; + private javax.swing.JTable jTable1; + private javax.swing.JTextField jTextFieldLieferantBearbeitenArtikelPreis; + private javax.swing.JTextField jTextFieldLieferantBearbeitenMindestAbnahme; + private javax.swing.JTextField jTextFieldNeuerLieferantEMail; + private javax.swing.JTextField jTextFieldNeuerLieferantFax; + private javax.swing.JTextField jTextFieldNeuerLieferantFirma; + private javax.swing.JTextField jTextFieldNeuerLieferantName; + private javax.swing.JTextField jTextFieldNeuerLieferantOrt; + private javax.swing.JTextField jTextFieldNeuerLieferantPLZ; + private javax.swing.JTextField jTextFieldNeuerLieferantStrasse; + private javax.swing.JTextField jTextFieldNeuerLieferantTelefon; + private javax.swing.JTextField jTextFieldNeuerLieferantVorname; + // End of variables declaration//GEN-END:variables +} diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelNewContract.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelNewContract.java index 0c83527..fa91dcd 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelNewContract.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelNewContract.java @@ -29,12 +29,12 @@ import java.text.DecimalFormat; import java.text.ParseException; +import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.GregorianCalendar; import java.util.Hashtable; import java.util.Iterator; -import java.util.Vector; import java.util.logging.Level; import javax.swing.DefaultComboBoxModel; import javax.swing.JOptionPane; @@ -44,9 +44,9 @@ import net.sourceforge.wisim.dao.WiSimDAOWriteException; import net.sourceforge.wisim.model.Article; import net.sourceforge.wisim.model.Contract; -import net.sourceforge.wisim.model.ContractAccount; +import net.sourceforge.wisim.model.ContractInvoice; +import net.sourceforge.wisim.model.ContractOrderItem; import net.sourceforge.wisim.model.Customer; -import net.sourceforge.wisim.model.OrderItem; import net.sourceforge.wisim.model.Validator; import net.sourceforge.wisim.model.WiSimLogger; @@ -990,12 +990,12 @@ private void calculate() { } /** - * Method ladeKunden. Lädt alle Kunden aus der Datenbank. + * Method loadCustomer. Lädt alle Kunden aus der Datenbank. */ private void loadCustomer() { - Collection kunden = null; + Collection customers = null; try { - kunden = dao.getKunden(); + customers = dao.getCustomers(); } catch (WiSimDAOException e) { wiSimLogger.log("ladeKunden()", e); } @@ -1005,16 +1005,14 @@ private void loadCustomer() { model.addElement("Bitte wählen:"); // Verhindert NullPointerException bei einer leeren Liste - if (kunden != null) { - Iterator it = kunden.iterator(); - while (it.hasNext()) { - Customer kunde = (Customer) it.next(); + if (customers != null) { + for (Customer customer : customers) { //Merken des Nachnamen und Vornamen, um diese in die ComboBox einzutragen - String merkeName = String.valueOf(kunde.getVorname()).concat(" "); - merkeName = merkeName.concat(String.valueOf(kunde.getNachname())); + String merkeName = String.valueOf(customer.getVorname()).concat(" "); + merkeName = merkeName.concat(String.valueOf(customer.getNachname())); model.addElement(merkeName); //kundeObjekt.put(String.valueOf(kunde.getId()), kunde); - kundeObjekt.put(merkeName, kunde); + kundeObjekt.put(merkeName, customer); // kundenTabelle.put(kunde.getNachname(), String.valueOf(kunde.getId())); } jComboBoxKunde.setModel(model); @@ -1036,22 +1034,19 @@ private void loadCustomerData() { if (auswahlKunde != null) { // sucht vorhandenen Vertraege zum Kunden - Collection vertraege = null; + Collection contracts = null; int vertragszaehler = 0; try { - vertraege = dao.getVertraege(); + contracts = dao.getContracts(); } catch (WiSimDAOException e) { wiSimLogger.log("ladeKundendaten()", e); } - if (vertraege != null) { - Iterator it = vertraege.iterator(); - - while (it.hasNext()) { - Contract vertrag = (Contract) it.next(); + if (contracts != null) { + for (Contract contract : contracts) { - if (vertrag.getKundenId() == auswahlKunde.getId()) { + if (contract.getKundenId() == auswahlKunde.getId()) { vertragszaehler++; } } @@ -1074,9 +1069,9 @@ private void loadCustomerData() { * Method ladeArtikel. Lädt die Article aus der Datenbank. */ private void loadArticle() { - Collection artikel = null; + Collection
articles = null; try { - artikel = dao.getAlleArtikel(); + articles = dao.getAlleArtikel(); } catch (WiSimDAOException e) { wiSimLogger.log("ladeArtikel()", e); } @@ -1086,14 +1081,12 @@ private void loadArticle() { model.addElement("Bitte wählen:"); // Verhindert NullPointerException bei einer leeren Liste - if (artikel != null) { - Iterator it = artikel.iterator(); - while (it.hasNext()) { - Article artikel2 = (Article) it.next(); - model.addElement(artikel2.getName()); - artikelTabelle.put(artikel2.getName(), String.valueOf(artikel2.getNr())); + if (articles != null) { + for (Article article : articles) { + model.addElement(article.getName()); + artikelTabelle.put(article.getName(), String.valueOf(article.getNr())); //speichert das Objekt zum ausgewählten Article in die Hashtable artikelObjekt - artikelObjekt.put(String.valueOf(artikel2.getNr()), artikel2); + artikelObjekt.put(String.valueOf(article.getNr()), article); } jComboBoxArtikel.setModel(model); } @@ -1142,7 +1135,7 @@ private void loadMwSt() { * Pflichtfelder sind gefüllt. */ private boolean checkFields() { - Collection pflichtfelder = new Vector(); + ArrayList pflichtfelder = new ArrayList<>(); if (jComboBoxKunde.getSelectedIndex() == 0) { pflichtfelder.add("Kunde"); @@ -1260,18 +1253,18 @@ private void saveContract() { } java.sql.Date lieferDateSQL = new java.sql.Date(lieferDatum.getTimeInMillis()); - // Id's in ContractAccount und in Auftrag zählen - Collection vertraege = null; - Collection atrechnungen = null; + // Id's in ContractInvoice und in Auftrag zählen + Collection contracts = null; + Collection atrechnungen = null; try { - vertraege = dao.getVertraege(); + contracts = dao.getContracts(); } catch (WiSimDAOException e) { wiSimLogger.log("speicherVertrag()", e); } // Verhindert NullPointerException bei einer leeren Liste - if (vertraege != null) { - Iterator it = vertraege.iterator(); + if (contracts != null) { + Iterator it = contracts.iterator(); while (it.hasNext()) { it.next(); //dispensable? i++; @@ -1305,7 +1298,7 @@ private void saveContract() { int artId = auswahlArtikel.getNr(); boolean zleingang = false; - ContractAccount atr = new ContractAccount(); + ContractInvoice atr = new ContractInvoice(); // Auftragsrechnungsdaten vorbereiten atr.setNr(j + 1); try { @@ -1340,11 +1333,11 @@ private void saveContract() { wiSimLogger.log("speicherVertrag()", e); } - OrderItem atp = new OrderItem(); + ContractOrderItem atp = new ContractOrderItem(); //AuftragsPositionsdaten vorbereiten atp.setAtNr(i + 1); atp.setArtNr(artId); - atp.setBestellmenge(Long.parseLong(jTextFieldNeuerVertragAbnahmemenge.getText())); + atp.setBestellmenge(Integer.parseInt(jTextFieldNeuerVertragAbnahmemenge.getText())); try { dao.setAuftragsPosition(atp); diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelNewCustomer.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelNewCustomer.java index bfef14c..9479477 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelNewCustomer.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelNewCustomer.java @@ -444,7 +444,7 @@ private void newCustomer() { try { int plzId = dao.neuerOrt(ort); kunde.setPlzId(plzId); - int id = dao.neuerKunde(kunde); + int id = dao.newCustomer(kunde); kunde.setId(id); if (!jTextAreaNeuerKundeNotiz.getText().equals("")) { diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelNewOrder.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelNewOrder.java index 4e33706..227cae8 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelNewOrder.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelNewOrder.java @@ -30,22 +30,21 @@ import java.text.DecimalFormat; import java.text.ParseException; +import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.GregorianCalendar; import java.util.Iterator; import java.util.Vector; import java.util.logging.Level; - import javax.swing.JOptionPane; import javax.swing.SpinnerNumberModel; import javax.swing.table.DefaultTableModel; - import net.sourceforge.wisim.dao.WiSimDAO; import net.sourceforge.wisim.dao.WiSimDAOException; import net.sourceforge.wisim.dao.WiSimDAOWriteException; import net.sourceforge.wisim.model.ComponentContract; -import net.sourceforge.wisim.model.ComponentContractAccount; +import net.sourceforge.wisim.model.ComponentContractInvoice; import net.sourceforge.wisim.model.ComponentContractItem; import net.sourceforge.wisim.model.Supplier; import net.sourceforge.wisim.model.SupplyList; @@ -64,18 +63,18 @@ public class JPanelNewOrder extends javax.swing.JPanel { private Vector colLt; private Vector colArtikel; private Vector positionen; - private Vector einzelteile; + private final ArrayList einzelteile; private int position; private double summe; private double skontoToCalc; private double lieferrabattToCalc; - private Validator validate; - private WiSimMainController wiSimMainController; + private final Validator validate; + private final WiSimMainController wiSimMainController; // Logger - private WiSimLogger wiSimLogger; + private final WiSimLogger wiSimLogger; - private DecimalFormat format; + private final DecimalFormat format; /** * Creates new form JPanelBestellung @@ -91,7 +90,7 @@ public JPanelNewOrder(WiSimMainController wiSimMainController) { colArtikel = new Vector(); colArtikel.add("Select:"); positionen = new Vector(); - einzelteile = new Vector(); + einzelteile = new ArrayList<>(); position = 0; summe = 0; skontoToCalc = 0; @@ -760,7 +759,7 @@ private void setSumme() { * Pflichtfelder sind gefüllt. */ private boolean checkAllFields() { - Collection pflichtfelder = new Vector(); + ArrayList pflichtfelder = new ArrayList<>(); if (jTextFieldSkonto.getText().equals("")) { pflichtfelder.add("Skonto"); } @@ -984,7 +983,7 @@ private void saveOrder() { etat.setEinzelteilAuftragsRechnungNr(etatNr); //Einzelteilauftragsrechnung - ComponentContractAccount etatr = new ComponentContractAccount(); + ComponentContractInvoice etatr = new ComponentContractInvoice(); etatr.setBetrag(summe); //MwSt-Satz bestimmen @@ -1323,17 +1322,15 @@ private void getSuppliers() { setSumme(); try { - Collection lieferanten = dao.getLieferanten(); - Iterator lt_it = lieferanten.iterator(); - + Collection suppliers = dao.getSuppliers(); + colLt.removeAllElements(); colLt.add("Select:"); - while (lt_it.hasNext()) { - Supplier lieferant = (Supplier) lt_it.next(); - String item = lieferant.getFirma() + " (#" + lieferant.getId() + ")"; + for (Supplier supplier : suppliers) { + String item = supplier.getFirma() + " (#" + supplier.getId() + ")"; jComboBoxLieferanten.addItem(item); - colLt.add(lieferant); + colLt.add(supplier); } } catch (WiSimDAOException e) { wiSimLogger.log("getLieferanten()", e); @@ -1346,8 +1343,8 @@ private void getSuppliers() { private void getArticle() { //Tabelle wiederherstellen DefaultTableModel defTable = new DefaultTableModel(0, 3); - Vector tableHeader = new Vector(); - tableHeader.add("Article"); + Vector tableHeader = new Vector(); + tableHeader.add("Artikel"); tableHeader.add("Menge"); tableHeader.add("Preis"); defTable.setColumnIdentifiers(tableHeader); @@ -1357,7 +1354,7 @@ private void getArticle() { //Positionen löschen positionen.removeAllElements(); - einzelteile.removeAllElements(); + einzelteile.clear(); colArtikel.removeAllElements(); colArtikel.add("Select:"); @@ -1384,11 +1381,9 @@ private void getArticle() { jComboBoxArtikel.addItem("Select:"); } - Collection lieferlisten = dao.getLieferliste(lieferant.getId()); - Iterator it_lieferlisten = lieferlisten.iterator(); - while (it_lieferlisten.hasNext()) { - SupplyList lieferliste = (SupplyList) it_lieferlisten.next(); - WiSimComponent einzelteil = dao.getEinzelteil(lieferliste.getEinzelteilID()); + Collection lieferlisten = dao.getSupplyLists(lieferant.getId()); + for (SupplyList lieferliste:lieferlisten) { + WiSimComponent einzelteil = dao.getComponent(lieferliste.getEinzelteilID()); jComboBoxArtikel.addItem(einzelteil.getName()); colArtikel.add(lieferliste); } diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelNewSupplier.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelNewSupplier.java index e259bc9..feaaf2e 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelNewSupplier.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelNewSupplier.java @@ -32,12 +32,9 @@ import java.util.Collection; import java.util.Hashtable; import java.util.Iterator; -import java.util.Vector; - import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListModel; import javax.swing.JOptionPane; - import net.sourceforge.wisim.dao.WiSimDAO; import net.sourceforge.wisim.dao.WiSimDAOException; import net.sourceforge.wisim.dao.WiSimDAOWriteException; @@ -419,7 +416,7 @@ private void jButtonLieferantenAnlegenActionPerformed(java.awt.event.ActionEvent }//GEN-LAST:event_jButtonLieferantenAnlegenActionPerformed private void checkArticle() { - Vector check = checkFormArtikel(); + ArrayList check = checkFormArtikel(); if (check.isEmpty()) { addArticle(); } else { @@ -568,7 +565,7 @@ private void newSupplier() { for (int i = 0; i < model.getSize(); i++) { WiSimComponent teil = null; try { - teil = dao.getEinzelteil(Integer.parseInt(einzelteileTabelle.get(model.getElementAt(i).toString()).toString())); + teil = dao.getComponent(Integer.parseInt(einzelteileTabelle.get(model.getElementAt(i).toString()).toString())); } catch (WiSimDAOException e) { wiSimLogger.log("neuerLieferant()", e); } @@ -637,8 +634,8 @@ private ArrayList checkFormLieferant() { * @author Kay Patzwald * @return Vector */ - private Vector checkFormArtikel() { - Vector errors = new Vector(); + private ArrayList checkFormArtikel() { + ArrayList errors = new ArrayList<>(); if (jTextFieldNeuerLieferantPreis.getText().equals("")) { errors.add("Preis"); } @@ -681,9 +678,9 @@ private void clearForm() { * @author Kay Patzwald */ private void loadSpareParts() { - Collection teile = null; + Collection components = null; try { - teile = dao.getEinzelteile(); + components = dao.getAllComponents(); } catch (WiSimDAOException e) { wiSimLogger.log("ladeEinzelteile()", e); } @@ -692,8 +689,8 @@ private void loadSpareParts() { model.removeAllElements(); // Verhindert NullPointerException bei einer leeren Liste - if (teile != null) { - Iterator it = teile.iterator(); + if (components != null) { + Iterator it = components.iterator(); while (it.hasNext()) { WiSimComponent teil = (WiSimComponent) it.next(); if (teil.getNr() != HUB) { diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelSimulationAnalysis.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelSimulationAnalysis.java index 5a3a849..d2717ca 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelSimulationAnalysis.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelSimulationAnalysis.java @@ -21,33 +21,27 @@ ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ -/* + /* * JPanelSimulationAnalysis.java * * Created on 17. März 2003, 14:55 */ - package net.sourceforge.wisim.controller; + import java.sql.Date; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.ConcurrentModificationException; -import java.util.Enumeration; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.HashSet; -import java.util.Hashtable; import java.util.Iterator; import java.util.Set; -import java.util.Vector; - import javax.swing.ImageIcon; import javax.swing.event.TreeExpansionEvent; import javax.swing.plaf.metal.MetalIconFactory; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; - import net.sourceforge.wisim.dao.WiSimDAO; import net.sourceforge.wisim.dao.WiSimDAOException; import net.sourceforge.wisim.dao.WiSimDAOWriteException; @@ -62,117 +56,123 @@ import net.sourceforge.wisim.model.WiSimLogger; import net.sourceforge.wisim.simulation.ProductionController; -/** In diesem Fenster kann der Benutzer die Simulation starten. Ereignisse (z.B. +/** + * In diesem Fenster kann der Benutzer die Simulation starten. Ereignisse (z.B. * eingehende Lieferungen, produzierte Hubs, versendete Hubs) werden angezeigt. + * * @author benjamin.pasero */ public class JPanelSimulationAnalysis extends javax.swing.JPanel implements Refreshable { - private WiSimDAO dao; - private Date actDate; - private int hubBestand; - private ArrayList artikelLagerElemente; - private HashMap stueckliste; - private Collection vertraege; - private GregorianCalendar actDateGC; - private GregorianCalendar lieferDateGC; - private int actDay; - - //Treepath der JTrees werden gespeichert - private Set treepathsEinkauf; - private Set treepathsVertrieb; - private Set treepathsProduktion; - - // Simulation der Produktion - private ProductionController runController; - - // Dauer einer Zeiteinheit für die gesamte Simulation - public final static int TIMESTEP = 100; - - // IconNodes als Elemente der JTrees - private IconNode rootNodeLieferungen; - private IconNode rootNodeVertrieb; - private IconNode rootNodeProduktion; - private IconNode dateNode; - private IconNode lieferantNode; - private IconNode positionNode; - private IconNode hubProduktionNode; - private IconNode hubEinzelteilVerbrauch; - private IconNode hubVertrieb; - private IconNode hubVertriebPos; - - // Icons für einzelene Elemente der JTrees - private ImageIcon rightIcon; - private ImageIcon vanIcon; - private ImageIcon boxIcon; - private ImageIcon hubIcon; - private ImageIcon boxOpenIcon; - private ImageIcon errorIcon; - - //Logger - private WiSimLogger wiSimLogger; - - private WiSimMainController wiSimMainController; - - /** - * [DoItBen] Kommentar für setRunController() - * @param runController - */ - public void setRunController(ProductionController runController) { - this.runController = runController; - } - - /** Creates new form JPanelSimulationAnalysis - * @param wiSimMainController - */ - public JPanelSimulationAnalysis(WiSimMainController wiSimMainController) { - this.wiSimMainController = wiSimMainController; - wiSimLogger = wiSimMainController.getWiSimLogger(); - initDAO(wiSimMainController); - actDay = 0; - actDate = new Date(new GregorianCalendar(2003, 8, 1, 0, 0).getTimeInMillis()); - hubBestand = 0; - artikelLagerElemente = new ArrayList<>(); - stueckliste = new HashMap<>(); - vertraege = new Vector(); - - actDateGC = new GregorianCalendar(); - lieferDateGC = new GregorianCalendar(); - - //Synchronisierte HashSets - treepathsEinkauf = Collections.synchronizedSet(new HashSet()); - treepathsVertrieb = Collections.synchronizedSet(new HashSet()); - treepathsProduktion = Collections.synchronizedSet(new HashSet()); - - //Icon Grafiken - rightIcon = new ImageIcon(getClass().getResource("/icons/right.gif")); - vanIcon = new ImageIcon(getClass().getResource("/icons/van.gif")); - boxIcon = new ImageIcon(getClass().getResource("/icons/box.gif")); - hubIcon = new ImageIcon(getClass().getResource("/icons/hub.gif")); - boxOpenIcon = new ImageIcon(getClass().getResource("/icons/boxopen.gif")); - errorIcon = new ImageIcon(getClass().getResource("/icons/error.gif")); - - // Initialisierung der IconNodes - rootNodeLieferungen = new IconNode(""); - rootNodeVertrieb = new IconNode(""); - rootNodeProduktion = new IconNode(""); - rootNodeLieferungen.setIcon(MetalIconFactory.getFileChooserHomeFolderIcon()); - rootNodeVertrieb.setIcon(MetalIconFactory.getFileChooserHomeFolderIcon()); - rootNodeProduktion.setIcon(MetalIconFactory.getFileChooserHomeFolderIcon()); - - initComponents(); - initializeCollections(); - addJTreeListener(); - } - - private void initDAO(WiSimMainController wiSimMainController) { - dao = wiSimMainController.getDAO(); - } - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ + + private WiSimDAO dao; + private Date actDate; + private int hubBestand; + private ArrayList artikelLagerElemente; + private HashMap stueckliste; + private ArrayList contracts; + private GregorianCalendar actDateGC; + private GregorianCalendar lieferDateGC; + private int actDay; + + //Treepath der JTrees werden gespeichert + private Set treepathsEinkauf; + private Set treepathsVertrieb; + private Set treepathsProduktion; + + // Simulation der Produktion + private ProductionController runController; + + // Dauer einer Zeiteinheit für die gesamte Simulation + public final static int TIMESTEP = 100; + + // IconNodes als Elemente der JTrees + private IconNode rootNodeLieferungen; + private IconNode rootNodeVertrieb; + private IconNode rootNodeProduktion; + private IconNode dateNode; + private IconNode lieferantNode; + private IconNode positionNode; + private IconNode hubProduktionNode; + private IconNode hubEinzelteilVerbrauch; + private IconNode hubVertrieb; + private IconNode hubVertriebPos; + + // Icons für einzelene Elemente der JTrees + private ImageIcon rightIcon; + private ImageIcon vanIcon; + private ImageIcon boxIcon; + private ImageIcon hubIcon; + private ImageIcon boxOpenIcon; + private ImageIcon errorIcon; + + //Logger + private WiSimLogger wiSimLogger; + + private WiSimMainController wiSimMainController; + + /** + * [DoItBen] Kommentar für setRunController() + * + * @param runController + */ + public void setRunController(ProductionController runController) { + this.runController = runController; + } + + /** + * Creates new form JPanelSimulationAnalysis + * + * @param wiSimMainController + */ + public JPanelSimulationAnalysis(WiSimMainController wiSimMainController) { + this.wiSimMainController = wiSimMainController; + wiSimLogger = wiSimMainController.getWiSimLogger(); + initDAO(wiSimMainController); + actDay = 0; + actDate = new Date(new GregorianCalendar(2003, 8, 1, 0, 0).getTimeInMillis()); + hubBestand = 0; + artikelLagerElemente = new ArrayList<>(); + stueckliste = new HashMap<>(); + contracts = new ArrayList<>(); + + actDateGC = new GregorianCalendar(); + lieferDateGC = new GregorianCalendar(); + + //Synchronisierte HashSets + treepathsEinkauf = Collections.synchronizedSet(new HashSet()); + treepathsVertrieb = Collections.synchronizedSet(new HashSet()); + treepathsProduktion = Collections.synchronizedSet(new HashSet()); + + //Icon Grafiken + rightIcon = new ImageIcon(getClass().getResource("/icons/right.gif")); + vanIcon = new ImageIcon(getClass().getResource("/icons/van.gif")); + boxIcon = new ImageIcon(getClass().getResource("/icons/box.gif")); + hubIcon = new ImageIcon(getClass().getResource("/icons/hub.gif")); + boxOpenIcon = new ImageIcon(getClass().getResource("/icons/boxopen.gif")); + errorIcon = new ImageIcon(getClass().getResource("/icons/error.gif")); + + // Initialisierung der IconNodes + rootNodeLieferungen = new IconNode(""); + rootNodeVertrieb = new IconNode(""); + rootNodeProduktion = new IconNode(""); + rootNodeLieferungen.setIcon(MetalIconFactory.getFileChooserHomeFolderIcon()); + rootNodeVertrieb.setIcon(MetalIconFactory.getFileChooserHomeFolderIcon()); + rootNodeProduktion.setIcon(MetalIconFactory.getFileChooserHomeFolderIcon()); + + initComponents(); + initializeCollections(); + addJTreeListener(); + } + + private void initDAO(WiSimMainController wiSimMainController) { + dao = wiSimMainController.getDAO(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ private void initComponents() {//GEN-BEGIN:initComponents jLabelSimulation = new javax.swing.JLabel(); jTabbedPaneSimulationsverlauf = new javax.swing.JTabbedPane(); @@ -227,11 +227,11 @@ public void ancestorRemoved(javax.swing.event.AncestorEvent evt) { }//GEN-END:initComponents private void formAncestorRemoved(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_formAncestorRemoved - wiSimMainController.removeActivPanel(this); + wiSimMainController.removeActivPanel(this); }//GEN-LAST:event_formAncestorRemoved private void formAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_formAncestorAdded - wiSimMainController.addActivPanel(this); + wiSimMainController.addActivPanel(this); }//GEN-LAST:event_formAncestorAdded // Variables declaration - do not modify//GEN-BEGIN:variables @@ -245,351 +245,358 @@ private void formAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST private javax.swing.JTree jTreeVertrieb; // End of variables declaration//GEN-END:variables - /** Baut den JTree mit einer Liste aller Lieferungen auf. Fügt die gelieferten - * Einzelteile außerdem in die Datenbank. - */ - public void refreshJTreeEinkauf() { - actDay++; - Collection etatListe = new Vector(); - - //Liste aller Einzelteilaufträge - try { - etatListe = dao.getEinzelteilauftraege(); - } catch (WiSimDAOException e) { - wiSimLogger.log("refreshJTreeEinkauf()", e); - } - - actDateGC.setTimeInMillis(actDate.getTime()); - - //Neuer Node im JTree - dateNode = new IconNode(actDateGC.get(5) + "." + (actDateGC.get(2) + 1) + "." + actDateGC.get(1)); - dateNode.setIcon(rightIcon); - - Iterator etatListe_it = etatListe.iterator(); - while (etatListe_it.hasNext()) { - ComponentContract etat = (ComponentContract) etatListe_it.next(); - - Date lieferDate = etat.getLieferdatum(); - lieferDateGC.setTimeInMillis(lieferDate.getTime()); - - //Der Einzelteilauftrag hat das selbe Datum wie das aktuelle Datum der Simulation - if (actDateGC.get(5) == lieferDateGC.get(5) && actDateGC.get(2) == lieferDateGC.get(2)) { - Supplier lt = new Supplier(); - try { - lt = dao.getLieferant(etat.getLieferantNr()); - } catch (WiSimDAOException e) { - wiSimLogger.log("refreshJTreeEinkauf()", e); - } - - //Neuer Node im JTree - lieferantNode = new IconNode("Auftrags Nr.: " + etat.getNr() + " Lieferant: " + lt.getFirma()); - lieferantNode.setIcon(vanIcon); - - Collection etatPosis = new Vector(); - try { - etatPosis = dao.getEinzelteilAuftragsPositionen(etat.getNr()); - } catch (WiSimDAOException e) { - wiSimLogger.log("refreshJTreeEinkauf()", e); - } - - Iterator etatPosis_it = etatPosis.iterator(); - int i = 1; - while (etatPosis_it.hasNext()) { - ComponentContractItem etatPos = (ComponentContractItem) etatPosis_it.next(); - WiSimComponent et = new WiSimComponent(); - try { - et = dao.getEinzelteil(etatPos.getEtNr()); - } catch (WiSimDAOException e) { - wiSimLogger.log("refreshJTreeEinkauf()", e); - } - - boolean status = runController.einzelteilLieferung(et.getNr(), etatPos.getBestellmenge()); - - //Neuer Node im JTree - if (status) { - positionNode = new IconNode("Position: " + i + " Einzelteil: " + et.getName() + " Menge: " + etatPos.getBestellmenge() + " wurde ins Lager geschafft!"); - positionNode.setIcon(boxIcon); - } else { - positionNode = new IconNode("Position: " + i + " Einzelteil: " + et.getName() + " Menge: " + etatPos.getBestellmenge() + " überfüllt das Lager!"); - positionNode.setIcon(errorIcon); - } - - lieferantNode.add(positionNode); - i++; - } - dateNode.add(lieferantNode); - } - } - - rootNodeLieferungen.add(dateNode); - jTreeEinkauf.setModel(new DefaultTreeModel(rootNodeLieferungen)); - jTreeEinkauf.setCellRenderer(new IconNodeRenderer()); - - try { - Iterator tp_it = treepathsEinkauf.iterator(); - while (tp_it.hasNext()) { - TreePath tp = (TreePath) tp_it.next(); - jTreeEinkauf.expandPath(tp); - } - } catch (ConcurrentModificationException c) { - } - } - - /** Baut den JTree mit einer Liste aller produzierten Hubs und verbrauchten Einzelteile auf. */ - public void refreshJTreeProduktion() { - if (actDay != 1) { - actDateGC.setTimeInMillis(actDate.getTime() - 24 * 60 * 60 * 1000); - - //JTree Produktion Ereignisbaum wird aufgebaut - //Neuer Node im JTree - dateNode = new IconNode(actDateGC.get(5) + "." + (actDateGC.get(2) + 1) + "." + actDateGC.get(1)); - dateNode.setIcon(rightIcon); - - ArrayList artikelLagerElemente = new ArrayList<>(); - int hubBestandAktuell = 0; - - try { - artikelLagerElemente = dao.getArtikelLagerElement(); - } catch (WiSimDAOException e) { - wiSimLogger.log("refreshJTreeProduktion()", e); - } - - Iterator artIt = artikelLagerElemente.iterator(); - while (artIt.hasNext()) { - ComponentWarehouseItem etElem = (ComponentWarehouseItem) artIt.next(); - hubBestandAktuell = hubBestandAktuell + etElem.getBestand(); - } - - int hubBestandDifferenz = hubBestandAktuell - hubBestand; - hubBestand = hubBestandAktuell; - - //Neuer Node im JTree - hubProduktionNode = new IconNode("Heute wurden " + hubBestandDifferenz + " Hubs produziert!"); - hubProduktionNode.setIcon(hubIcon); - - //Neues Nodes im JTree - if (hubBestandDifferenz > 0) { - for (String key:stueckliste.keySet()) { - //Enumeration keys = stueckliste.keys(); - //while (keys.hasMoreElements()) { - // String key = (String) keys.nextElement(); - WiSimComponent et = new WiSimComponent(); - - try { - et = dao.getEinzelteil(Integer.parseInt(key)); - } catch (WiSimDAOException e) { - wiSimLogger.log("refreshJTreeProduktion()", e); - } - - hubEinzelteilVerbrauch = new IconNode("Einzelteil: " + et.getName() + " Verbrauch: " + (Integer.parseInt((String) stueckliste.get(key)) * hubBestandDifferenz + " Stk.")); - hubEinzelteilVerbrauch.setIcon(boxOpenIcon); - - hubProduktionNode.add(hubEinzelteilVerbrauch); - } - } - dateNode.add(hubProduktionNode); - - rootNodeProduktion.add(dateNode); - jTreeProduktion.setModel(new DefaultTreeModel(rootNodeProduktion)); - jTreeProduktion.setCellRenderer(new IconNodeRenderer()); - - try { - Iterator tp_it = treepathsProduktion.iterator(); - while (tp_it.hasNext()) { - TreePath tp = (TreePath) tp_it.next(); - jTreeProduktion.expandPath(tp); - } - } catch (ConcurrentModificationException c) { - } - } else { - rootNodeProduktion.add(new IconNode("Es wird produziert...", false, hubIcon)); - jTreeProduktion.setModel(new DefaultTreeModel(rootNodeProduktion)); - jTreeProduktion.setCellRenderer(new IconNodeRenderer()); - } - } - - /** Baut den JTree mit einer Liste aller verkauften Hubs für einen Tag auf. Leert außerdem - * das Lager je nach Anzahl der verkauften Hubs - */ - public void refreshJTreeVertrieb() { - actDateGC.setTimeInMillis(actDate.getTime()); - - //JTree Vertrieb Ereignisbaum wird aufgebaut - //Neuer Node im JTree - dateNode = new IconNode(actDateGC.get(5) + "." + (actDateGC.get(2) + 1) + "." + actDateGC.get(1)); - dateNode.setIcon(rightIcon); - - Iterator vertragIt = vertraege.iterator(); - while (vertragIt.hasNext()) { - Contract vertrag = (Contract) vertragIt.next(); - Date lieferDate = vertrag.getLieferdatum(); - - lieferDateGC.setTimeInMillis(lieferDate.getTime()); - - //Der Vertrag hat das selbe Datum wie das aktuelle Datum der Simulation - if (actDateGC.get(5) == lieferDateGC.get(5) && actDateGC.get(2) == lieferDateGC.get(2)) { - int menge = 0; - - try { - menge = dao.getVertragsPositionMenge(vertrag.getVertragsId(), 1); - } catch (WiSimDAOException e) { - wiSimLogger.log("refreshJTreeVertrieb()", e); - } - - //Lagermenge der Hubs wird verringert - boolean status = false; - try { - status = dao.setArtikelLagerBestand(1, -menge); - } catch (WiSimDAOWriteException e) { - wiSimLogger.log("refreshJTreeVertrieb()", e); - } catch (WiSimDAOException e) { - wiSimLogger.log("refreshJTreeVertrieb()", e); - } - - Customer kunde = new Customer(); - - try { - kunde = dao.getKunde(vertrag.getKundenId()); - } catch (WiSimDAOException e) { - wiSimLogger.log("refreshJTreeVertrieb()", e); - } - - //Neuer Node im JTree - hubVertrieb = new IconNode("Auftrags Nr.: " + vertrag.getVertragsId() + " Kunde: " + kunde.getFirma() + " (" + kunde.getNachname() + " " + kunde.getVorname() + ")"); - hubVertrieb.setIcon(vanIcon); - - //Neuer Node im JTree - if (status) { - hubVertriebPos = new IconNode("Article: Hub Menge: " + menge + " Stk. wurden an den Kunden geliefert!"); - hubVertriebPos.setIcon(hubIcon); - hubBestand = hubBestand - menge; - } else { - hubVertriebPos = new IconNode("Article: Hub Menge: " + menge + " Stk. konnte nicht geliefert werden (Lager leer)!"); - hubVertriebPos.setIcon(errorIcon); - } - hubVertrieb.add(hubVertriebPos); - dateNode.add(hubVertrieb); - } - } - rootNodeVertrieb.add(dateNode); - jTreeVertrieb.setModel(new DefaultTreeModel(rootNodeVertrieb)); - jTreeVertrieb.setCellRenderer(new IconNodeRenderer()); - - try { - Iterator tp_it = treepathsVertrieb.iterator(); - while (tp_it.hasNext()) { - TreePath tp = (TreePath) tp_it.next(); - jTreeVertrieb.expandPath(tp); - } - } catch (ConcurrentModificationException c) { - } - } - - /** Setzt das actDate - * @param actDate - */ - public void setActDate(Date actDate) { - this.actDate = actDate; - } - - /** Löscht die JTrees und setzt das Datumsfeld zurück. */ - public void resetFields() { - actDate = new Date(new GregorianCalendar(2003, 8, 1, 0, 0).getTimeInMillis()); - actDay = 0; - jTreeEinkauf.setModel(null); - jTreeVertrieb.setModel(null); - jTreeProduktion.setModel(null); - rootNodeLieferungen = new IconNode(""); - rootNodeVertrieb = new IconNode(""); - rootNodeProduktion = new IconNode(""); - rootNodeLieferungen.setIcon(MetalIconFactory.getFileChooserHomeFolderIcon()); - rootNodeVertrieb.setIcon(MetalIconFactory.getFileChooserHomeFolderIcon()); - rootNodeProduktion.setIcon(MetalIconFactory.getFileChooserHomeFolderIcon()); - treepathsEinkauf.clear(); - treepathsProduktion.clear(); - treepathsVertrieb.clear(); - } - - /** - * Datenbankinfos für die Simulation - */ - public void initializeCollections() { - try { - artikelLagerElemente = dao.getArtikelLagerElement(); - stueckliste = dao.getStueckliste(1); - vertraege = dao.getVertraege(); - } catch (WiSimDAOException e) { - wiSimLogger.log("JPanelSimulationStart()", e); - } - - Iterator artIt = artikelLagerElemente.iterator(); - while (artIt.hasNext()) { - ComponentWarehouseItem etElem = (ComponentWarehouseItem) artIt.next(); - hubBestand = hubBestand + etElem.getBestand(); - } - } - - /** - * Expansion Listeners für die JTrees: Expandierte Nodes werden gespeichert - * und gehen nach setModel(newModel) nicht verloren! - */ - public void addJTreeListener() { - jTreeEinkauf.addTreeExpansionListener(new javax.swing.event.TreeExpansionListener() { - public void treeExpanded(TreeExpansionEvent e) { - treepathsEinkauf.add(e.getPath()); - } - - public void treeCollapsed(TreeExpansionEvent e) { - treepathsEinkauf.remove(e.getPath()); - Iterator tp_it = treepathsEinkauf.iterator(); - while (tp_it.hasNext()) { - TreePath tp = (TreePath) tp_it.next(); - if (e.getPath().isDescendant(tp)) { - treepathsEinkauf.remove(tp); - } - } - } - }); - - jTreeProduktion.addTreeExpansionListener(new javax.swing.event.TreeExpansionListener() { - public void treeExpanded(TreeExpansionEvent e) { - treepathsProduktion.add(e.getPath()); - } - - public void treeCollapsed(TreeExpansionEvent e) { - treepathsProduktion.remove(e.getPath()); - Iterator tp_it = treepathsProduktion.iterator(); - while (tp_it.hasNext()) { - TreePath tp = (TreePath) tp_it.next(); - if (e.getPath().isDescendant(tp)) { - treepathsProduktion.remove(tp); - } - } - } - }); - - jTreeVertrieb.addTreeExpansionListener(new javax.swing.event.TreeExpansionListener() { - public void treeExpanded(TreeExpansionEvent e) { - treepathsVertrieb.add(e.getPath()); - } - - public void treeCollapsed(TreeExpansionEvent e) { - treepathsVertrieb.remove(e.getPath()); - Iterator tp_it = treepathsVertrieb.iterator(); - while (tp_it.hasNext()) { - TreePath tp = (TreePath) tp_it.next(); - if (e.getPath().isDescendant(tp)) { - treepathsVertrieb.remove(tp); - } - } - } - }); - } - - /* (non-Javadoc) + /** + * Baut den JTree mit einer Liste aller Lieferungen auf. Fügt die gelieferten + * Einzelteile außerdem in die Datenbank. + */ + public void refreshJTreeEinkauf() { + actDay++; + ArrayList componentContractList = new ArrayList<>(); + + //Liste aller Einzelteilaufträge + try { + componentContractList = dao.getEinzelteilauftraege(); + } catch (WiSimDAOException e) { + wiSimLogger.log("refreshJTreeEinkauf()", e); + } + + actDateGC.setTimeInMillis(actDate.getTime()); + + //Neuer Node im JTree + dateNode = new IconNode(actDateGC.get(5) + "." + (actDateGC.get(2) + 1) + "." + actDateGC.get(1)); + dateNode.setIcon(rightIcon); + + for (ComponentContract cc : componentContractList) { + Date lieferDate = cc.getLieferdatum(); + lieferDateGC.setTimeInMillis(lieferDate.getTime()); + + //Der Einzelteilauftrag hat das selbe Datum wie das aktuelle Datum der Simulation + if (actDateGC.get(5) == lieferDateGC.get(5) && actDateGC.get(2) == lieferDateGC.get(2)) { + Supplier lt = new Supplier(); + try { + lt = dao.getLieferant(cc.getLieferantNr()); + } catch (WiSimDAOException e) { + wiSimLogger.log("refreshJTreeEinkauf()", e); + } + + //Neuer Node im JTree + lieferantNode = new IconNode("Auftrags Nr.: " + cc.getNr() + " Lieferant: " + lt.getFirma()); + lieferantNode.setIcon(vanIcon); + + ArrayList ccItems = new ArrayList<>(); + try { + ccItems = dao.getEinzelteilAuftragsPositionen(cc.getNr()); + } catch (WiSimDAOException e) { + wiSimLogger.log("refreshJTreeEinkauf()", e); + } + + int i = 1; + for (ComponentContractItem ccItem : ccItems) { + + WiSimComponent et = new WiSimComponent(); + try { + et = dao.getComponent(ccItem.getEtNr()); + } catch (WiSimDAOException e) { + wiSimLogger.log("refreshJTreeEinkauf()", e); + } + + boolean status = runController.einzelteilLieferung(et.getNr(), ccItem.getBestellmenge()); + + //Neuer Node im JTree + if (status) { + positionNode = new IconNode("Position: " + i + " Einzelteil: " + et.getName() + " Menge: " + ccItem.getBestellmenge() + " wurde ins Lager geschafft!"); + positionNode.setIcon(boxIcon); + } else { + positionNode = new IconNode("Position: " + i + " Einzelteil: " + et.getName() + " Menge: " + ccItem.getBestellmenge() + " überfüllt das Lager!"); + positionNode.setIcon(errorIcon); + } + + lieferantNode.add(positionNode); + i++; + } + dateNode.add(lieferantNode); + } + } + + rootNodeLieferungen.add(dateNode); + jTreeEinkauf.setModel(new DefaultTreeModel(rootNodeLieferungen)); + jTreeEinkauf.setCellRenderer(new IconNodeRenderer()); + + try { + Iterator tp_it = treepathsEinkauf.iterator(); + while (tp_it.hasNext()) { + TreePath tp = (TreePath) tp_it.next(); + jTreeEinkauf.expandPath(tp); + } + } catch (ConcurrentModificationException c) { + } + } + + /** + * Baut den JTree mit einer Liste aller produzierten Hubs und verbrauchten + * Einzelteile auf. + */ + public void refreshJTreeProduktion() { + if (actDay != 1) { + actDateGC.setTimeInMillis(actDate.getTime() - 24 * 60 * 60 * 1000); + + //JTree Produktion Ereignisbaum wird aufgebaut + //Neuer Node im JTree + dateNode = new IconNode(actDateGC.get(5) + "." + (actDateGC.get(2) + 1) + "." + actDateGC.get(1)); + dateNode.setIcon(rightIcon); + + ArrayList artikelLagerElemente = new ArrayList<>(); + int hubBestandAktuell = 0; + + try { + artikelLagerElemente = dao.getArtikelLagerElement(); + } catch (WiSimDAOException e) { + wiSimLogger.log("refreshJTreeProduktion()", e); + } + + Iterator artIt = artikelLagerElemente.iterator(); + while (artIt.hasNext()) { + ComponentWarehouseItem etElem = (ComponentWarehouseItem) artIt.next(); + hubBestandAktuell = hubBestandAktuell + etElem.getBestand(); + } + + int hubBestandDifferenz = hubBestandAktuell - hubBestand; + hubBestand = hubBestandAktuell; + + //Neuer Node im JTree + hubProduktionNode = new IconNode("Heute wurden " + hubBestandDifferenz + " Hubs produziert!"); + hubProduktionNode.setIcon(hubIcon); + + //Neues Nodes im JTree + if (hubBestandDifferenz > 0) { + for (String key : stueckliste.keySet()) { + //Enumeration keys = stueckliste.keys(); + //while (keys.hasMoreElements()) { + // String key = (String) keys.nextElement(); + WiSimComponent et = new WiSimComponent(); + + try { + et = dao.getComponent(Integer.parseInt(key)); + } catch (WiSimDAOException e) { + wiSimLogger.log("refreshJTreeProduktion()", e); + } + + hubEinzelteilVerbrauch = new IconNode("Einzelteil: " + et.getName() + " Verbrauch: " + (Integer.parseInt(stueckliste.get(key)) * hubBestandDifferenz + " Stk.")); + hubEinzelteilVerbrauch.setIcon(boxOpenIcon); + + hubProduktionNode.add(hubEinzelteilVerbrauch); + } + } + dateNode.add(hubProduktionNode); + + rootNodeProduktion.add(dateNode); + jTreeProduktion.setModel(new DefaultTreeModel(rootNodeProduktion)); + jTreeProduktion.setCellRenderer(new IconNodeRenderer()); + + try { + Iterator tp_it = treepathsProduktion.iterator(); + while (tp_it.hasNext()) { + TreePath tp = (TreePath) tp_it.next(); + jTreeProduktion.expandPath(tp); + } + } catch (ConcurrentModificationException c) { + } + } else { + rootNodeProduktion.add(new IconNode("Es wird produziert...", false, hubIcon)); + jTreeProduktion.setModel(new DefaultTreeModel(rootNodeProduktion)); + jTreeProduktion.setCellRenderer(new IconNodeRenderer()); + } + } + + /** + * Baut den JTree mit einer Liste aller verkauften Hubs für einen Tag auf. + * Leert außerdem das Lager je nach Anzahl der verkauften Hubs + */ + public void refreshJTreeVertrieb() { + actDateGC.setTimeInMillis(actDate.getTime()); + + //JTree Vertrieb Ereignisbaum wird aufgebaut + //Neuer Node im JTree + dateNode = new IconNode(actDateGC.get(5) + "." + (actDateGC.get(2) + 1) + "." + actDateGC.get(1)); + dateNode.setIcon(rightIcon); + + Iterator vertragIt = contracts.iterator(); + while (vertragIt.hasNext()) { + Contract vertrag = (Contract) vertragIt.next(); + Date lieferDate = vertrag.getLieferdatum(); + + lieferDateGC.setTimeInMillis(lieferDate.getTime()); + + //Der Vertrag hat das selbe Datum wie das aktuelle Datum der Simulation + if (actDateGC.get(5) == lieferDateGC.get(5) && actDateGC.get(2) == lieferDateGC.get(2)) { + int menge = 0; + + try { + menge = dao.getVertragsPositionMenge(vertrag.getVertragsId(), 1); + } catch (WiSimDAOException e) { + wiSimLogger.log("refreshJTreeVertrieb()", e); + } + + //Lagermenge der Hubs wird verringert + boolean status = false; + try { + status = dao.setArtikelLagerBestand(1, -menge); + } catch (WiSimDAOWriteException e) { + wiSimLogger.log("refreshJTreeVertrieb()", e); + } catch (WiSimDAOException e) { + wiSimLogger.log("refreshJTreeVertrieb()", e); + } + + Customer kunde = new Customer(); + + try { + kunde = dao.getCustomer(vertrag.getKundenId()); + } catch (WiSimDAOException e) { + wiSimLogger.log("refreshJTreeVertrieb()", e); + } + + //Neuer Node im JTree + hubVertrieb = new IconNode("Auftrags Nr.: " + vertrag.getVertragsId() + " Kunde: " + kunde.getFirma() + " (" + kunde.getNachname() + " " + kunde.getVorname() + ")"); + hubVertrieb.setIcon(vanIcon); + + //Neuer Node im JTree + if (status) { + hubVertriebPos = new IconNode("Article: Hub Menge: " + menge + " Stk. wurden an den Kunden geliefert!"); + hubVertriebPos.setIcon(hubIcon); + hubBestand = hubBestand - menge; + } else { + hubVertriebPos = new IconNode("Article: Hub Menge: " + menge + " Stk. konnte nicht geliefert werden (Lager leer)!"); + hubVertriebPos.setIcon(errorIcon); + } + hubVertrieb.add(hubVertriebPos); + dateNode.add(hubVertrieb); + } + } + rootNodeVertrieb.add(dateNode); + jTreeVertrieb.setModel(new DefaultTreeModel(rootNodeVertrieb)); + jTreeVertrieb.setCellRenderer(new IconNodeRenderer()); + + try { + Iterator tp_it = treepathsVertrieb.iterator(); + while (tp_it.hasNext()) { + TreePath tp = (TreePath) tp_it.next(); + jTreeVertrieb.expandPath(tp); + } + } catch (ConcurrentModificationException c) { + } + } + + /** + * Setzt das actDate + * + * @param actDate + */ + public void setActDate(Date actDate) { + this.actDate = actDate; + } + + /** + * Löscht die JTrees und setzt das Datumsfeld zurück. + */ + public void resetFields() { + actDate = new Date(new GregorianCalendar(2003, 8, 1, 0, 0).getTimeInMillis()); + actDay = 0; + jTreeEinkauf.setModel(null); + jTreeVertrieb.setModel(null); + jTreeProduktion.setModel(null); + rootNodeLieferungen = new IconNode(""); + rootNodeVertrieb = new IconNode(""); + rootNodeProduktion = new IconNode(""); + rootNodeLieferungen.setIcon(MetalIconFactory.getFileChooserHomeFolderIcon()); + rootNodeVertrieb.setIcon(MetalIconFactory.getFileChooserHomeFolderIcon()); + rootNodeProduktion.setIcon(MetalIconFactory.getFileChooserHomeFolderIcon()); + treepathsEinkauf.clear(); + treepathsProduktion.clear(); + treepathsVertrieb.clear(); + } + + /** + * Datenbankinfos für die Simulation + */ + public void initializeCollections() { + try { + artikelLagerElemente = dao.getArtikelLagerElement(); + stueckliste = dao.getPartsListForArticle(1); + contracts = dao.getContracts(); + } catch (WiSimDAOException e) { + wiSimLogger.log("JPanelSimulationStart()", e); + } + + Iterator artIt = artikelLagerElemente.iterator(); + while (artIt.hasNext()) { + ComponentWarehouseItem etElem = (ComponentWarehouseItem) artIt.next(); + hubBestand = hubBestand + etElem.getBestand(); + } + } + + /** + * Expansion Listeners für die JTrees: Expandierte Nodes werden gespeichert + * und gehen nach setModel(newModel) nicht verloren! + */ + public void addJTreeListener() { + jTreeEinkauf.addTreeExpansionListener(new javax.swing.event.TreeExpansionListener() { + @Override + public void treeExpanded(TreeExpansionEvent e) { + treepathsEinkauf.add(e.getPath()); + } + + @Override + public void treeCollapsed(TreeExpansionEvent e) { + treepathsEinkauf.remove(e.getPath()); + Iterator tp_it = treepathsEinkauf.iterator(); + while (tp_it.hasNext()) { + TreePath tp = (TreePath) tp_it.next(); + if (e.getPath().isDescendant(tp)) { + treepathsEinkauf.remove(tp); + } + } + } + }); + + jTreeProduktion.addTreeExpansionListener(new javax.swing.event.TreeExpansionListener() { + public void treeExpanded(TreeExpansionEvent e) { + treepathsProduktion.add(e.getPath()); + } + + public void treeCollapsed(TreeExpansionEvent e) { + treepathsProduktion.remove(e.getPath()); + Iterator tp_it = treepathsProduktion.iterator(); + while (tp_it.hasNext()) { + TreePath tp = (TreePath) tp_it.next(); + if (e.getPath().isDescendant(tp)) { + treepathsProduktion.remove(tp); + } + } + } + }); + + jTreeVertrieb.addTreeExpansionListener(new javax.swing.event.TreeExpansionListener() { + public void treeExpanded(TreeExpansionEvent e) { + treepathsVertrieb.add(e.getPath()); + } + + public void treeCollapsed(TreeExpansionEvent e) { + treepathsVertrieb.remove(e.getPath()); + Iterator tp_it = treepathsVertrieb.iterator(); + while (tp_it.hasNext()) { + TreePath tp = (TreePath) tp_it.next(); + if (e.getPath().isDescendant(tp)) { + treepathsVertrieb.remove(tp); + } + } + } + }); + } + + /* (non-Javadoc) * @see net.sourceforge.wisim.model.SimulationPane#refresh() - */ - public void refresh() { - resetFields(); - } -} \ No newline at end of file + */ + public void refresh() { + resetFields(); + } +} diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewContract.form b/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewContract.form index d44da57..bc30a6f 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewContract.form +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewContract.form @@ -1,12 +1,20 @@ - + + + + + + + + + @@ -20,7 +28,7 @@ - + @@ -63,7 +71,7 @@ - + @@ -115,7 +123,7 @@ - + @@ -175,7 +183,7 @@ - + @@ -203,7 +211,7 @@ - + @@ -343,7 +351,7 @@ - + @@ -366,7 +374,7 @@ - + @@ -561,7 +569,7 @@ - + @@ -637,7 +645,7 @@ - + @@ -731,6 +739,9 @@ + + + @@ -774,6 +785,9 @@ + + + @@ -810,6 +824,9 @@ + + + diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewContract.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewContract.java index bca693e..d69f81d 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewContract.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewContract.java @@ -21,12 +21,11 @@ ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ -/* + /* * JPanelVertragEinsehen.java * * Created on 10. Februar 2003, 21:04 */ - package net.sourceforge.wisim.controller; import java.awt.Color; @@ -34,1211 +33,1212 @@ import java.awt.Image; import java.awt.image.BufferedImage; import java.text.DecimalFormat; +import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.GregorianCalendar; import java.util.Hashtable; import java.util.Iterator; - import javax.swing.DefaultComboBoxModel; import javax.swing.ImageIcon; import javax.swing.table.DefaultTableModel; - import net.sourceforge.wisim.dao.WiSimDAO; import net.sourceforge.wisim.dao.WiSimDAOException; import net.sourceforge.wisim.model.Article; import net.sourceforge.wisim.model.Contract; -import net.sourceforge.wisim.model.ContractAccount; +import net.sourceforge.wisim.model.ContractInvoice; +import net.sourceforge.wisim.model.ContractOrderItem; import net.sourceforge.wisim.model.Customer; -import net.sourceforge.wisim.model.OrderItem; import net.sourceforge.wisim.model.WiSimLogger; /** * - * @author Denise Freitag + * @author Denise Freitag */ public class JPanelViewContract extends javax.swing.JPanel { - private WiSimDAO dao; - private String tag; - private String monat; - private String jahr; - private int kdId; - private Hashtable auftragObjekt1; - private Hashtable auftragObjekt2; - private Hashtable kundeObjekt; - private Date auftragDateSQL; - private int rows; - private int selectedAuftrag1; - private int selectedAuftrag2; - private int eingabeDatumTag; - private int eingabeDatumMonat; - private int eingabeDatumJahr; - private Color darkgreen = new Color(51, 153, 51); - private Color red = new Color(255, 0, 0); - private WiSimMainController wiSimMainController; - private DecimalFormat format; - - //Logger - private WiSimLogger wiSimLogger; - - /** Creates new form JPanelVertragEinsehen */ - public JPanelViewContract(WiSimMainController wiSimMainController) { - this.wiSimMainController = wiSimMainController; - initDAO(wiSimMainController); - auftragObjekt1 = new Hashtable(); - auftragObjekt2 = new Hashtable(); - kundeObjekt = new Hashtable(); - auftragDateSQL = null; - rows = 0; - kdId = 0; - selectedAuftrag1 = 0; - selectedAuftrag2 = 0; - eingabeDatumTag = 0; - eingabeDatumMonat = 0; - eingabeDatumJahr = 0; - initComponents(); - showLegend(); - format = new DecimalFormat("###,##0.00"); - } - - private void initDAO(WiSimMainController wiSimMainController) { - dao = wiSimMainController.getDAO(); - } - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - private void initComponents() { //GEN-BEGIN:initComponents - jLabelVertragEinsehen = new javax.swing.JLabel(); - jScrollPaneVertraegeEinsehen = new javax.swing.JScrollPane(); - jTableVertraegeEinsehenVertraege = new javax.swing.JTable(); - jTableVertraegeEinsehenVertraege.setSelectionMode(0); - jTableVertraegeEinsehenVertraege.getTableHeader().setReorderingAllowed(false); - - jLabelAuftraege = new javax.swing.JLabel(); - jPanelLegende = new javax.swing.JPanel(); - jLabelGruen = new javax.swing.JLabel(); - jLabelRot = new javax.swing.JLabel(); - jPanelVertraegeEinsehenDetails = new javax.swing.JPanel(); - jPanel2 = new javax.swing.JPanel(); - jLabelArtikel = new javax.swing.JLabel(); - jTextFieldArtikel = new javax.swing.JTextField(); - jLabelStueckpreis = new javax.swing.JLabel(); - jTextFieldStueckpreis = new javax.swing.JTextField(); - jLabelEUR2 = new javax.swing.JLabel(); - jLabelMwst = new javax.swing.JLabel(); - jTextFieldMwst = new javax.swing.JTextField(); - jLabelProzent1 = new javax.swing.JLabel(); - jPanel4 = new javax.swing.JPanel(); - jLabelMenge = new javax.swing.JLabel(); - jTextFieldMenge = new javax.swing.JTextField(); - jLabelZwischensumme1 = new javax.swing.JLabel(); - jSeparator2 = new javax.swing.JSeparator(); - jTextFieldZwischensumme1 = new javax.swing.JTextField(); - jLabelEUR3 = new javax.swing.JLabel(); - jPanel5 = new javax.swing.JPanel(); - jLabelRabatt = new javax.swing.JLabel(); - jTextFieldRabatt = new javax.swing.JTextField(); - jLabelProzent2 = new javax.swing.JLabel(); - jSeparator1 = new javax.swing.JSeparator(); - jLabelSkonto = new javax.swing.JLabel(); - jLabelProzent3 = new javax.swing.JLabel(); - jTextSkonto = new javax.swing.JTextField(); - jLabelSkontofrist = new javax.swing.JLabel(); - jLabelTage = new javax.swing.JLabel(); - jTextFieldSkontofrist = new javax.swing.JTextField(); - jLabelNettozahldatum = new javax.swing.JLabel(); - jTextFieldNettozahldatum = new javax.swing.JTextField(); - jSeparator3 = new javax.swing.JSeparator(); - jLabelZwischensumme2 = new javax.swing.JLabel(); - jTextField2Zwischensumme2 = new javax.swing.JTextField(); - jLabelEUR4 = new javax.swing.JLabel(); - jPanel6 = new javax.swing.JPanel(); - jLabelAngebotspreis1 = new javax.swing.JLabel(); - jTextFieldAngebotspreis1 = new javax.swing.JTextField(); - jLabelEUR1 = new javax.swing.JLabel(); - jPanel1 = new javax.swing.JPanel(); - jLabelAuftragsdatum1 = new javax.swing.JLabel(); - jLabelVertraegeEinsehenKunde = new javax.swing.JLabel(); - jComboBoxVertraegeEinsehenAuftragsdatumTag = new javax.swing.JComboBox(); - jLabel1 = new javax.swing.JLabel(); - jComboBoxVertraegeEinsehenAuftragsdatumMonat = new javax.swing.JComboBox(); - jLabel2 = new javax.swing.JLabel(); - jComboBoxVertraegeEinsehenAuftragsdatumJahr = new javax.swing.JComboBox(); - jLabel3 = new javax.swing.JLabel(); - jComboBoxVertraegeEinsehenKunde = new javax.swing.JComboBox(); - jButtonVertraegeEinsehenAuftragsdatumOK = new javax.swing.JButton(); - jButtonVertraegeEinsehenKundeOK = new javax.swing.JButton(); - jTextFieldVertraegeEinsehen = new javax.swing.JTextField(); - jPanel3 = new javax.swing.JPanel(); - jTextFieldAnmerkung = new javax.swing.JTextField(); - - setLayout(null); - - setPreferredSize(new java.awt.Dimension(800, 600)); - jLabelVertragEinsehen.setFont(new java.awt.Font("Dialog", 1, 24)); - jLabelVertragEinsehen.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabelVertragEinsehen.setText("Vertr\u00e4ge einsehen"); - add(jLabelVertragEinsehen); - jLabelVertragEinsehen.setBounds(0, 0, 800, 40); - - jTableVertraegeEinsehenVertraege.setModel(new javax.swing.table.DefaultTableModel(new Object[][] { - }, new String[] { "", "", "", "" }) { - boolean[] canEdit = new boolean[] { false, false, false, false }; - - public boolean isCellEditable(int rowIndex, int columnIndex) { - return canEdit[columnIndex]; - } - }); - jTableVertraegeEinsehenVertraege.addMouseListener(new java.awt.event.MouseAdapter() { - public void mouseClicked(java.awt.event.MouseEvent evt) { - jTableVertraegeEinsehenVertraegeMouseClicked(evt); - } - }); - - jScrollPaneVertraegeEinsehen.setViewportView(jTableVertraegeEinsehenVertraege); - - add(jScrollPaneVertraegeEinsehen); - jScrollPaneVertraegeEinsehen.setBounds(20, 200, 300, 250); - - jLabelAuftraege.setFont(new java.awt.Font("Dialog", 1, 14)); - jLabelAuftraege.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabelAuftraege.setText("Vertr\u00e4ge"); - add(jLabelAuftraege); - jLabelAuftraege.setBounds(20, 180, 300, 16); - - jPanelLegende.setLayout(null); - - jPanelLegende.setBorder(new javax.swing.border.TitledBorder("Legende")); - jLabelGruen.setText("Auftrag abgeschlossen"); - jPanelLegende.add(jLabelGruen); - jLabelGruen.setBounds(30, 20, 180, 16); - - jLabelRot.setText("Auftrag noch nicht abgeschlossen"); - jPanelLegende.add(jLabelRot); - jLabelRot.setBounds(30, 50, 280, 16); - - add(jPanelLegende); - jPanelLegende.setBounds(20, 460, 300, 80); - - jPanelVertraegeEinsehenDetails.setLayout(null); - - jPanelVertraegeEinsehenDetails.setBorder(new javax.swing.border.TitledBorder("Details zum ausgew\u00e4hlten Vertrag")); - jPanel2.setLayout(null); - - jPanel2.setBorder(new javax.swing.border.TitledBorder(null, "Angaben zum Artikel", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 1, 10))); - jLabelArtikel.setText("Artikel :"); - jPanel2.add(jLabelArtikel); - jLabelArtikel.setBounds(10, 30, 50, 16); - - jTextFieldArtikel.setEditable(false); - jTextFieldArtikel.setHorizontalAlignment(javax.swing.JTextField.RIGHT); - jTextFieldArtikel.setBorder(null); - jPanel2.add(jTextFieldArtikel); - jTextFieldArtikel.setBounds(90, 30, 70, 16); - - jLabelStueckpreis.setText("St\u00fcckpreis :"); - jPanel2.add(jLabelStueckpreis); - jLabelStueckpreis.setBounds(10, 60, 80, 16); - - jTextFieldStueckpreis.setEditable(false); - jTextFieldStueckpreis.setHorizontalAlignment(javax.swing.JTextField.RIGHT); - jTextFieldStueckpreis.setBorder(null); - jPanel2.add(jTextFieldStueckpreis); - jTextFieldStueckpreis.setBounds(90, 60, 70, 16); - - jLabelEUR2.setFont(new java.awt.Font("Dialog", 1, 16)); - jLabelEUR2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabelEUR2.setText("\u20ac"); - jLabelEUR2.setMaximumSize(new java.awt.Dimension(9, 22)); - jLabelEUR2.setMinimumSize(new java.awt.Dimension(9, 22)); - jLabelEUR2.setPreferredSize(new java.awt.Dimension(9, 22)); - jPanel2.add(jLabelEUR2); - jLabelEUR2.setBounds(170, 60, 10, 20); - - jLabelMwst.setText("MwSt :"); - jPanel2.add(jLabelMwst); - jLabelMwst.setBounds(10, 90, 40, 16); - - jTextFieldMwst.setEditable(false); - jTextFieldMwst.setHorizontalAlignment(javax.swing.JTextField.RIGHT); - jTextFieldMwst.setBorder(null); - jPanel2.add(jTextFieldMwst); - jTextFieldMwst.setBounds(120, 90, 40, 16); - - jLabelProzent1.setFont(new java.awt.Font("Dialog", 1, 14)); - jLabelProzent1.setText("%"); - jPanel2.add(jLabelProzent1); - jLabelProzent1.setBounds(170, 90, 10, 19); - - jPanelVertraegeEinsehenDetails.add(jPanel2); - jPanel2.setBounds(20, 30, 190, 120); - - jPanel4.setLayout(null); - - jPanel4.setBorder(new javax.swing.border.TitledBorder(null, "Weiteres", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 1, 10))); - jLabelMenge.setText("Menge :"); - jPanel4.add(jLabelMenge); - jLabelMenge.setBounds(10, 30, 50, 16); - - jTextFieldMenge.setEditable(false); - jTextFieldMenge.setHorizontalAlignment(javax.swing.JTextField.RIGHT); - jTextFieldMenge.setBorder(null); - jPanel4.add(jTextFieldMenge); - jTextFieldMenge.setBounds(60, 30, 100, 16); - - jLabelZwischensumme1.setFont(new java.awt.Font("Dialog", 0, 12)); - jLabelZwischensumme1.setText("Zwischensumme"); - jPanel4.add(jLabelZwischensumme1); - jLabelZwischensumme1.setBounds(50, 70, 100, 16); - - jPanel4.add(jSeparator2); - jSeparator2.setBounds(10, 60, 170, 10); - - jTextFieldZwischensumme1.setEditable(false); - jTextFieldZwischensumme1.setHorizontalAlignment(javax.swing.JTextField.CENTER); - jTextFieldZwischensumme1.setBorder(null); - jPanel4.add(jTextFieldZwischensumme1); - jTextFieldZwischensumme1.setBounds(20, 90, 140, 16); - - jLabelEUR3.setFont(new java.awt.Font("Dialog", 1, 16)); - jLabelEUR3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabelEUR3.setText("\u20ac"); - jLabelEUR3.setMaximumSize(new java.awt.Dimension(9, 22)); - jLabelEUR3.setMinimumSize(new java.awt.Dimension(9, 22)); - jLabelEUR3.setPreferredSize(new java.awt.Dimension(9, 22)); - jPanel4.add(jLabelEUR3); - jLabelEUR3.setBounds(170, 90, 10, 20); - - jPanelVertraegeEinsehenDetails.add(jPanel4); - jPanel4.setBounds(230, 30, 190, 120); - - jPanel5.setLayout(null); - - jPanel5.setBorder(new javax.swing.border.TitledBorder(null, "Abz\u00fcge", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 1, 10))); - jLabelRabatt.setText("Rabatt :"); - jPanel5.add(jLabelRabatt); - jLabelRabatt.setBounds(10, 30, 50, 16); - - jTextFieldRabatt.setEditable(false); - jTextFieldRabatt.setHorizontalAlignment(javax.swing.JTextField.RIGHT); - jTextFieldRabatt.setBorder(null); - jPanel5.add(jTextFieldRabatt); - jTextFieldRabatt.setBounds(120, 30, 40, 16); - - jLabelProzent2.setFont(new java.awt.Font("Dialog", 1, 14)); - jLabelProzent2.setText("%"); - jPanel5.add(jLabelProzent2); - jLabelProzent2.setBounds(170, 30, 10, 19); - - jPanel5.add(jSeparator1); - jSeparator1.setBounds(10, 60, 380, 10); - - jLabelSkonto.setText("Skonto :"); - jPanel5.add(jLabelSkonto); - jLabelSkonto.setBounds(10, 70, 50, 16); - - jLabelProzent3.setFont(new java.awt.Font("Dialog", 1, 14)); - jLabelProzent3.setText("%"); - jPanel5.add(jLabelProzent3); - jLabelProzent3.setBounds(170, 70, 10, 19); - - jTextSkonto.setEditable(false); - jTextSkonto.setHorizontalAlignment(javax.swing.JTextField.RIGHT); - jTextSkonto.setBorder(null); - jPanel5.add(jTextSkonto); - jTextSkonto.setBounds(120, 70, 40, 16); - - jLabelSkontofrist.setText("Skontofrist :"); - jPanel5.add(jLabelSkontofrist); - jLabelSkontofrist.setBounds(220, 70, 70, 16); - - jLabelTage.setText("Tage"); - jPanel5.add(jLabelTage); - jLabelTage.setBounds(360, 70, 30, 16); - - jTextFieldSkontofrist.setEditable(false); - jTextFieldSkontofrist.setHorizontalAlignment(javax.swing.JTextField.RIGHT); - jTextFieldSkontofrist.setBorder(null); - jPanel5.add(jTextFieldSkontofrist); - jTextFieldSkontofrist.setBounds(310, 70, 40, 16); - - jLabelNettozahldatum.setText("Nettozahldatum :"); - jPanel5.add(jLabelNettozahldatum); - jLabelNettozahldatum.setBounds(10, 100, 100, 16); - - jTextFieldNettozahldatum.setEditable(false); - jTextFieldNettozahldatum.setHorizontalAlignment(javax.swing.JTextField.CENTER); - jTextFieldNettozahldatum.setBorder(null); - jPanel5.add(jTextFieldNettozahldatum); - jTextFieldNettozahldatum.setBounds(120, 100, 120, 16); - - jPanel5.add(jSeparator3); - jSeparator3.setBounds(10, 120, 380, 10); - - jLabelZwischensumme2.setFont(new java.awt.Font("Dialog", 0, 12)); - jLabelZwischensumme2.setText("Zwischensumme :"); - jPanel5.add(jLabelZwischensumme2); - jLabelZwischensumme2.setBounds(10, 140, 110, 16); - - jTextField2Zwischensumme2.setEditable(false); - jTextField2Zwischensumme2.setHorizontalAlignment(javax.swing.JTextField.RIGHT); - jTextField2Zwischensumme2.setBorder(null); - jPanel5.add(jTextField2Zwischensumme2); - jTextField2Zwischensumme2.setBounds(120, 140, 150, 16); - - jLabelEUR4.setFont(new java.awt.Font("Dialog", 1, 16)); - jLabelEUR4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabelEUR4.setText("\u20ac"); - jLabelEUR4.setMaximumSize(new java.awt.Dimension(9, 22)); - jLabelEUR4.setMinimumSize(new java.awt.Dimension(9, 22)); - jLabelEUR4.setPreferredSize(new java.awt.Dimension(9, 22)); - jPanel5.add(jLabelEUR4); - jLabelEUR4.setBounds(280, 140, 10, 20); - - jPanelVertraegeEinsehenDetails.add(jPanel5); - jPanel5.setBounds(20, 160, 400, 170); - - jPanel6.setLayout(null); - - jPanel6.setBorder(new javax.swing.border.TitledBorder(null, "Preis", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 1, 10))); - jLabelAngebotspreis1.setFont(new java.awt.Font("Dialog", 1, 18)); - jLabelAngebotspreis1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabelAngebotspreis1.setText("Angebotspreis :"); - jPanel6.add(jLabelAngebotspreis1); - jLabelAngebotspreis1.setBounds(20, 30, 140, 24); - - jTextFieldAngebotspreis1.setEditable(false); - jTextFieldAngebotspreis1.setFont(new java.awt.Font("Dialog", 0, 18)); - jTextFieldAngebotspreis1.setHorizontalAlignment(javax.swing.JTextField.RIGHT); - jTextFieldAngebotspreis1.setBorder(null); - jPanel6.add(jTextFieldAngebotspreis1); - jTextFieldAngebotspreis1.setBounds(170, 30, 200, 20); - - jLabelEUR1.setFont(new java.awt.Font("Dialog", 1, 18)); - jLabelEUR1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabelEUR1.setText("\u20ac"); - jPanel6.add(jLabelEUR1); - jLabelEUR1.setBounds(370, 30, 20, 20); - - jPanelVertraegeEinsehenDetails.add(jPanel6); - jPanel6.setBounds(20, 340, 400, 70); - - add(jPanelVertraegeEinsehenDetails); - jPanelVertraegeEinsehenDetails.setBounds(340, 120, 440, 420); - - jPanel1.setLayout(null); - - jPanel1.setBorder(new javax.swing.border.TitledBorder("Eingabe von Vertragsdatum oder Kunde")); - jLabelAuftragsdatum1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - jLabelAuftragsdatum1.setText("Vertragsdatum"); - jPanel1.add(jLabelAuftragsdatum1); - jLabelAuftragsdatum1.setBounds(10, 30, 100, 16); - - jLabelVertraegeEinsehenKunde.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - jLabelVertraegeEinsehenKunde.setText("Kunde"); - jPanel1.add(jLabelVertraegeEinsehenKunde); - jLabelVertraegeEinsehenKunde.setBounds(10, 60, 110, 16); - - jComboBoxVertraegeEinsehenAuftragsdatumTag.setFont(new java.awt.Font("Dialog", 1, 10)); - jComboBoxVertraegeEinsehenAuftragsdatumTag.setModel( - new javax.swing.DefaultComboBoxModel(new String[] { "", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31" })); - jPanel1.add(jComboBoxVertraegeEinsehenAuftragsdatumTag); - jComboBoxVertraegeEinsehenAuftragsdatumTag.setBounds(110, 30, 40, 20); - - jLabel1.setFont(new java.awt.Font("Dialog", 1, 9)); - jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabel1.setText("Tag"); - jPanel1.add(jLabel1); - jLabel1.setBounds(110, 20, 40, 10); - - jComboBoxVertraegeEinsehenAuftragsdatumMonat.setFont(new java.awt.Font("Dialog", 1, 10)); - jComboBoxVertraegeEinsehenAuftragsdatumMonat.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12" })); - jPanel1.add(jComboBoxVertraegeEinsehenAuftragsdatumMonat); - jComboBoxVertraegeEinsehenAuftragsdatumMonat.setBounds(150, 30, 40, 20); - - jLabel2.setFont(new java.awt.Font("Dialog", 1, 9)); - jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabel2.setText("Monat"); - jPanel1.add(jLabel2); - jLabel2.setBounds(150, 20, 40, 10); - - jComboBoxVertraegeEinsehenAuftragsdatumJahr.setFont(new java.awt.Font("Dialog", 1, 10)); - jComboBoxVertraegeEinsehenAuftragsdatumJahr.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "", "2002", "2003", "2004", "2005", "2006" })); - jPanel1.add(jComboBoxVertraegeEinsehenAuftragsdatumJahr); - jComboBoxVertraegeEinsehenAuftragsdatumJahr.setBounds(190, 30, 60, 20); - - jLabel3.setFont(new java.awt.Font("Dialog", 1, 9)); - jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - jLabel3.setText("Jahr"); - jPanel1.add(jLabel3); - jLabel3.setBounds(190, 20, 60, 12); - - jComboBoxVertraegeEinsehenKunde.addAncestorListener(new javax.swing.event.AncestorListener() { - public void ancestorMoved(javax.swing.event.AncestorEvent evt) { - } - public void ancestorAdded(javax.swing.event.AncestorEvent evt) { - jComboBoxVertraegeEinsehenKundeAncestorAdded(evt); - } - public void ancestorRemoved(javax.swing.event.AncestorEvent evt) { - } - }); - - jPanel1.add(jComboBoxVertraegeEinsehenKunde); - jComboBoxVertraegeEinsehenKunde.setBounds(110, 60, 140, 20); - - jButtonVertraegeEinsehenAuftragsdatumOK.setBackground(new java.awt.Color(153, 153, 153)); - jButtonVertraegeEinsehenAuftragsdatumOK.setFont(new java.awt.Font("Dialog", 1, 10)); - jButtonVertraegeEinsehenAuftragsdatumOK.setText("OK"); - jButtonVertraegeEinsehenAuftragsdatumOK.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED)); - jButtonVertraegeEinsehenAuftragsdatumOK.setMargin(new java.awt.Insets(1, 2, 2, 1)); - jButtonVertraegeEinsehenAuftragsdatumOK.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - jButtonVertraegeEinsehenAuftragsdatumOKActionPerformed(evt); - } - }); - - jPanel1.add(jButtonVertraegeEinsehenAuftragsdatumOK); - jButtonVertraegeEinsehenAuftragsdatumOK.setBounds(270, 30, 20, 18); - - jButtonVertraegeEinsehenKundeOK.setBackground(new java.awt.Color(153, 153, 153)); - jButtonVertraegeEinsehenKundeOK.setFont(new java.awt.Font("Dialog", 1, 10)); - jButtonVertraegeEinsehenKundeOK.setText("OK"); - jButtonVertraegeEinsehenKundeOK.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED)); - jButtonVertraegeEinsehenKundeOK.setMargin(new java.awt.Insets(1, 2, 2, 1)); - jButtonVertraegeEinsehenKundeOK.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - jButtonVertraegeEinsehenKundeOKActionPerformed(evt); - } - }); - - jPanel1.add(jButtonVertraegeEinsehenKundeOK); - jButtonVertraegeEinsehenKundeOK.setBounds(270, 60, 20, 18); - - jTextFieldVertraegeEinsehen.setEditable(false); - jTextFieldVertraegeEinsehen.setFont(new java.awt.Font("Dialog", 1, 12)); - jTextFieldVertraegeEinsehen.setForeground(new java.awt.Color(255, 51, 0)); - jTextFieldVertraegeEinsehen.setHorizontalAlignment(javax.swing.JTextField.CENTER); - jTextFieldVertraegeEinsehen.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0))); - jTextFieldVertraegeEinsehen.setDisabledTextColor(new java.awt.Color(0, 0, 0)); - jPanel1.add(jTextFieldVertraegeEinsehen); - jTextFieldVertraegeEinsehen.setBounds(10, 90, 280, 18); - - add(jPanel1); - jPanel1.setBounds(20, 50, 300, 130); - - jPanel3.setLayout(null); - - jPanel3.setBorder(new javax.swing.border.TitledBorder("Anmerkung")); - jTextFieldAnmerkung.setEditable(false); - jTextFieldAnmerkung.setForeground(new java.awt.Color(51, 0, 255)); - jTextFieldAnmerkung.setHorizontalAlignment(javax.swing.JTextField.CENTER); - jTextFieldAnmerkung.setBorder(null); - jPanel3.add(jTextFieldAnmerkung); - jTextFieldAnmerkung.setBounds(10, 30, 420, 20); - - add(jPanel3); - jPanel3.setBounds(340, 50, 440, 60); - - } //GEN-END:initComponents - - private void jTableVertraegeEinsehenVertraegeMouseClicked(java.awt.event.MouseEvent evt) { //GEN-FIRST:event_jTableVertraegeEinsehenVertraegeMouseClicked - getContractData(); - } //GEN-LAST:event_jTableVertraegeEinsehenVertraegeMouseClicked - - private void jComboBoxVertraegeEinsehenKundeAncestorAdded(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_jComboBoxVertraegeEinsehenKundeAncestorAdded - loadCustomers(); - } //GEN-LAST:event_jComboBoxVertraegeEinsehenKundeAncestorAdded - - private void jButtonVertraegeEinsehenKundeOKActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jButtonVertraegeEinsehenKundeOKActionPerformed - saveData2(); - } //GEN-LAST:event_jButtonVertraegeEinsehenKundeOKActionPerformed - - private void jButtonVertraegeEinsehenAuftragsdatumOKActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jButtonVertraegeEinsehenAuftragsdatumOKActionPerformed - checkModifyingDate(); - } //GEN-LAST:event_jButtonVertraegeEinsehenAuftragsdatumOKActionPerformed - /** - * Method pruefeEingabeDatum. Prüft, ob Tag, Monat und Jahr ausgefüllt wurde. - * Wenn eines fehlt, wird eine Fehlermeldung ausgegeben. - */ - private void checkModifyingDate() { - jComboBoxVertraegeEinsehenKunde.setSelectedIndex(0); - - if (jComboBoxVertraegeEinsehenAuftragsdatumTag.getSelectedIndex() == 0) { - jTextFieldVertraegeEinsehen.setText("Vertragsdatum falsch eingegeben!"); - eingabeDatumTag = 1; - } else - eingabeDatumTag = 0; - - if (jComboBoxVertraegeEinsehenAuftragsdatumMonat.getSelectedIndex() == 0) { - jTextFieldVertraegeEinsehen.setText("Vertragsdatum falsch eingegeben!"); - eingabeDatumMonat = 1; - } else - eingabeDatumMonat = 0; - - if (jComboBoxVertraegeEinsehenAuftragsdatumJahr.getSelectedIndex() == 0) { - jTextFieldVertraegeEinsehen.setText("Vertragsdatum falsch eingegeben!"); - eingabeDatumJahr = 1; - } else - eingabeDatumJahr = 0; - - checkContractDate(); - } - - /** - * Method pruefeAuftragsdatum. Auftragsdatum == Vertragsdatum. - * Prüft, ob für das ausgewählte Auftragsdatum ein Contract besteht. - * Contract == Auftrag. - */ - private void checkContractDate() { - - jComboBoxVertraegeEinsehenKunde.setSelectedIndex(0); - - if ((eingabeDatumTag == 0) && (eingabeDatumMonat == 0) && (eingabeDatumJahr == 0)) { - - tag = String.valueOf(jComboBoxVertraegeEinsehenAuftragsdatumTag.getSelectedItem()); - monat = String.valueOf(jComboBoxVertraegeEinsehenAuftragsdatumMonat.getSelectedItem()); - jahr = String.valueOf(jComboBoxVertraegeEinsehenAuftragsdatumJahr.getSelectedItem()); - - int auftragTag = Integer.parseInt(tag); - int auftragMonat = Integer.parseInt(monat) - 1; - int auftragJahr = Integer.parseInt(jahr); - - GregorianCalendar auftragDatum = new GregorianCalendar(auftragJahr, auftragMonat, auftragTag); - - auftragDateSQL = new java.sql.Date(auftragDatum.getTimeInMillis()); - - // Lädt alle Verträge aus der Datenbank - Collection vertraege = null; - try { - vertraege = dao.getVertraege(); - } catch (WiSimDAOException e) { - wiSimLogger.log("pruefeAuftragsdatum()", e); - } - - // Verhindert NullPointerException bei einer leeren Liste - if (vertraege != null) { - Iterator it = vertraege.iterator(); - while (it.hasNext()) { - Contract vertrag = (Contract) it.next(); - //Schreibt die Objekte von Vertrag in eine Hashtable, die aDatum entsprechen - if (vertrag.getVertragsdatum().equals(auftragDateSQL)) { - rows++; - } - } - if (rows > 0) { - jTextFieldVertraegeEinsehen.setText("Vertragsdatum ist vorhanden!"); - rows = 0; - saveData1(); - } else { - jTextFieldVertraegeEinsehen.setText("Vertragsdatum nicht vorhanden!"); - clearFields(); - clearTable(); - } - } - } else { - clearFields(); - clearTable(); - } - rows = 0; - } - - /** - * Method merkeDaten1. Merkt sich das ausgewählte Vertragsdatum, um die dazu gehörigen - * Vertragsdaten und Kunden aus der Datenbank zu laden. - * Der Benutzer hat einen Kundennamen gewählt. - */ - private void saveData1() { - Collection vertragList = null; - selectedAuftrag2 = 0; - selectedAuftrag1 = 1; - clearFields(); - try { - vertragList = dao.getVertraege(); - } catch (WiSimDAOException e) { - wiSimLogger.log("merkeDaten1()", e); - } - - if (vertragList != null) { - Iterator it = vertragList.iterator(); - - while (it.hasNext()) { - Contract vertrag = (Contract) it.next(); - - if (vertrag.getVertragsdatum().equals(auftragDateSQL)) { - rows++; - auftragObjekt1.put((String.valueOf(rows)), vertrag); - } - } - - if (rows > 0) { - - Customer kunde = null; - int j = 0; - setContractTable1(); - - for (int n = 1; n <= rows; n++) { - - Contract auftrag1 = (Contract) auftragObjekt1.get((String.valueOf(n))); - - if (auftrag1 != null) { - - kdId = auftrag1.getKundenId(); - - try { - kunde = dao.getKunde(kdId); - } catch (WiSimDAOException e) { - wiSimLogger.log("merkeDaten1()", e); - } - - jTableVertraegeEinsehenVertraege.setValueAt(String.valueOf(auftrag1.getVertragsId()), j, 0); - jTableVertraegeEinsehenVertraege.setValueAt(String.valueOf(kunde.getVorname().concat(" " + String.valueOf(kunde.getNachname()))), j, 1); - jTableVertraegeEinsehenVertraege.setValueAt(formatDate(auftrag1.getLieferdatum()), j, 2); - - //Status Icon - Image image = new BufferedImage(28, 30, 2); - Graphics g = image.getGraphics(); - - if (auftrag1.getLieferdatum().before(wiSimMainController.getActDate())) { - g.setColor(darkgreen); - } else { - g.setColor(red); - } - g.fillRoundRect(10, 11, 10, 10, 3, 3); - - ImageIcon ic = new ImageIcon(image); - - jTableVertraegeEinsehenVertraege.setValueAt(ic, j, 3); - - j++; - } - } - } - } - rows = 0; - kdId = 0; - auftragDateSQL = null; - } - - /** - * Method setVertragsTabelle1. Erstellt den Tabellenkopf für die 1. Form der Vertragsausgabe. - * Der Benutzer hat ein Vertragsdatum ausgewählt. - */ - private void setContractTable1() { - - //DefaultTableModel mit Variablen Zeilen, 4 TableHeads und nicht editierbaren Zellen - Object[][] tableInit = new Object[rows][4]; - DefaultTableModel defTable = new DefaultTableModel(tableInit, new String[] { "Nr", "Kunde", "Lieferdatum", "Status" }) { - boolean[] canEdit = new boolean[] { false, false, false, false }; - public boolean isCellEditable(int rowIndex, int columnIndex) { - return canEdit[columnIndex]; - } - public Class getColumnClass(int c) { - return getValueAt(0, c).getClass(); - } - }; - jTableVertraegeEinsehenVertraege.setModel(defTable); - jTableVertraegeEinsehenVertraege.setFocusable(false); - - javax.swing.table.TableColumn column = null; - for (int i = 0; i < 4; i++) { - column = jTableVertraegeEinsehenVertraege.getColumnModel().getColumn(i); - if (i == 1) { - column.setPreferredWidth(70); - } else if (i == 2) { - column.setPreferredWidth(60); - } else if (i == 3) { - column.setPreferredWidth(20); - } else { - column.setPreferredWidth(10); - } - } - - jTableVertraegeEinsehenVertraege.getTableHeader().setReorderingAllowed(false); - jTableVertraegeEinsehenVertraege.setDragEnabled(false); - - } - - /** - * Method merkeDaten2. Merkt sich den ausgewählten Kunden, um die dazu gehörigen - * Vertragsdaten aus der Datenbank zu laden. - * Der Benutzer hat einen Kundennamen gewählt. - */ - private void saveData2() { - selectedAuftrag1 = 0; - selectedAuftrag2 = 1; - clearFields(); - - jComboBoxVertraegeEinsehenAuftragsdatumTag.setSelectedIndex(0); - jComboBoxVertraegeEinsehenAuftragsdatumMonat.setSelectedIndex(0); - jComboBoxVertraegeEinsehenAuftragsdatumJahr.setSelectedIndex(0); - jTableVertraegeEinsehenVertraege.setSelectionMode(0); - - if ((jComboBoxVertraegeEinsehenKunde.getSelectedIndex()) != 0) { - jTextFieldVertraegeEinsehen.setText("Sie haben einen Kunden gewählt!"); - - //liefert listItem des selektierten Eintrags - String listItem = String.valueOf(jComboBoxVertraegeEinsehenKunde.getSelectedItem()); - - //sucht das ausgewählte KundenObjekt in Hashtabelle kundeObjekt - Customer auswahlKunde = (Customer) kundeObjekt.get(listItem); - - if (auswahlKunde != null) { - kdId = auswahlKunde.getId(); - } - - Collection vertragList = null; - - try { - vertragList = dao.getVertraege(); - } catch (WiSimDAOException e) { - wiSimLogger.log("merkeDaten2()", e); - } - - if (vertragList != null) { - Iterator it = vertragList.iterator(); - - while (it.hasNext()) { - Contract vertrag = (Contract) it.next(); - - if (vertrag.getKundenId() == kdId) { - rows++; - auftragObjekt2.put(String.valueOf(rows), vertrag); - } - } - - if (rows > 0) { - - setContractTable2(); - int j = 0; - - for (int n = 1; n <= rows; n++) { - - Contract auftrag2 = (Contract) auftragObjekt2.get(String.valueOf(n)); - - if (auftrag2 != null) { - jTableVertraegeEinsehenVertraege.setValueAt(String.valueOf(auftrag2.getVertragsId()), j, 0); - jTableVertraegeEinsehenVertraege.setValueAt(formatDate(auftrag2.getVertragsdatum()), j, 1); - jTableVertraegeEinsehenVertraege.setValueAt(formatDate(auftrag2.getLieferdatum()), j, 2); - - //Status Icon - Image image = new BufferedImage(28, 30, 2); - Graphics g = image.getGraphics(); - - if (auftrag2.getLieferdatum().before(wiSimMainController.getActDate())) { - g.setColor(darkgreen); - } else { - g.setColor(red); - } - g.fillRoundRect(10, 11, 10, 10, 3, 3); - - ImageIcon ic = new ImageIcon(image); - - jTableVertraegeEinsehenVertraege.setValueAt(ic, j, 3); - j++; - } - } - } else { - jTextFieldVertraegeEinsehen.setText("Kein Auftrag für diesen Kunden!"); - clearTable(); - clearFields(); - } - } - } else { - jTextFieldVertraegeEinsehen.setText("Es wurde nichts ausgewählt!"); - clearTable(); - clearFields(); - } - rows = 0; - kdId = 0; - } - - /** - * Method setVertragsTabelle2. Erstellt den Tabellenkopf für die 2. Form der Vertragsausgabe. - * Der Benutzer hat einen Kundennamen gewählt. - */ - private void setContractTable2() { - - //DefaultTableModel mit Variablen Zeilen, 3 TableHeads und nicht editierbaren Zellen - Object[][] tableInit = new Object[rows][4]; - DefaultTableModel defTable = new DefaultTableModel(tableInit, new String[] { "Nr", "Auftragsdatum", "Lieferdatum", "Status" }) { - boolean[] canEdit = new boolean[] { false, false, false, false }; - public boolean isCellEditable(int rowIndex, int columnIndex) { - return canEdit[columnIndex]; - } - public Class getColumnClass(int c) { - return getValueAt(0, c).getClass(); - } - }; - - jTableVertraegeEinsehenVertraege.setModel(defTable); - jTableVertraegeEinsehenVertraege.setFocusable(false); - - javax.swing.table.TableColumn column = null; - for (int i = 0; i < 4; i++) { - column = jTableVertraegeEinsehenVertraege.getColumnModel().getColumn(i); - if (i == 1) { - column.setPreferredWidth(60); - } else if (i == 2) { - column.setPreferredWidth(50); - } else if (i == 3) { - column.setPreferredWidth(30); - } else { - column.setPreferredWidth(10); - } - } - - jTableVertraegeEinsehenVertraege.getTableHeader().setReorderingAllowed(false); - jTableVertraegeEinsehenVertraege.setDragEnabled(false); - - } - - /** - * Method clearTabelle. Löscht die Tabelle der Verträge mit Tabellenkopf. - */ - private void clearTable() { - //DefaultTableModel mit Variablen Zeilen, 4 TableHeads und nicht editierbaren Zellen - jTableVertraegeEinsehenVertraege.setModel(new javax.swing.table.DefaultTableModel(new Object[][] { - }, new String[] { "", "", "", "" }) { - boolean[] canEdit = new boolean[] { false, false, false, false }; - - public boolean isCellEditable(int rowIndex, int columnIndex) { - return canEdit[columnIndex]; - } - }); - } - - /** Formatiert ein Date Objekt zu einem String TT.MM.JJJJ. - * @param dateToFormat Das zu formatierende Datum. - * @return Das formatierte Datum. - */ - private String formatDate(java.sql.Date dateToFormat) { - String date = String.valueOf(dateToFormat); - String year = date.substring(0, 4); - String month = date.substring(5, 7); - String day = date.substring(8, 10); - String formattedDate = day + "." + month + "." + year; - return formattedDate; - } - - /** Zeigt die Legende an */ - private void showLegend() { - //Legende - Image imageIconGreen = new BufferedImage(28, 30, 2); - Graphics g = imageIconGreen.getGraphics(); - g.setColor(darkgreen); - g.fillRoundRect(10, 11, 10, 10, 3, 3); - ImageIcon ic = new ImageIcon(imageIconGreen); - jLabelGruen.setIcon(ic); - - Image imageIconRed = new BufferedImage(28, 30, 2); - g = imageIconRed.getGraphics(); - g.setColor(red); - g.fillRoundRect(10, 11, 10, 10, 3, 3); - ic = new ImageIcon(imageIconRed); - jLabelRot.setIcon(ic); - } - - /** - * Method ladeKunden. Lädt die Kunden aus der Datenbank. - * Diese werden in die Combo-Box geladen. - */ - private void loadCustomers() { - Collection kunden = null; - try { - kunden = dao.getKunden(); - } catch (WiSimDAOException e) { - wiSimLogger.log("ladeKunden()", e); - } - - DefaultComboBoxModel model = (DefaultComboBoxModel) jComboBoxVertraegeEinsehenKunde.getModel(); - model.removeAllElements(); - model.addElement("Bitte auswählen:"); - - // Verhindert NullPointerException bei einer leeren Liste - if (kunden != null) { - Iterator it = kunden.iterator(); - while (it.hasNext()) { - Customer kunde = (Customer) it.next(); - //Merken des Nachnamen und Vornamen, um diese in die ComboBox einzutragen - String merkeName = String.valueOf(kunde.getVorname()).concat(" "); - merkeName = merkeName.concat(String.valueOf(kunde.getNachname())); - model.addElement(merkeName); - kundeObjekt.put(merkeName, kunde); - - } - jComboBoxVertraegeEinsehenKunde.setModel(model); - } - } - - /** - * Method getVertragsdaten. Lädt die Daten für einen ausgewählten Contract aus der Datenbank. - * Zwischensummen werden berechnet. - */ - private void getContractData() { - int merkeNr = jTableVertraegeEinsehenVertraege.getSelectedRow(); - float mwst = 0; - // + 1, weil index der Zeile mit 0 beginnt!!! - - if (selectedAuftrag1 == 1) { - selectedAuftrag2 = 0; - clearFields(); - Contract auftrag1 = (Contract) auftragObjekt1.get(String.valueOf(merkeNr + 1)); - Customer kunde = null; - Article artikel = null; - Collection vertragList = null; - OrderItem atp = null; - ContractAccount atr = null; - int i = 0; - - try { - kunde = dao.getKunde(auftrag1.getKundenId()); - atp = dao.getAuftragsPosition(auftrag1.getVertragsId()); - artikel = dao.getArtikel(atp.getArtNr()); - mwst = dao.getMwSt(); - vertragList = dao.getVertraege(); - atr = dao.getAuftragsrechnung(auftrag1.getAuftragsrechnungsId()); - } catch (WiSimDAOException e) { - wiSimLogger.log("getVertragsdaten()", e); - } - - if (vertragList != null) { - Iterator it = vertragList.iterator(); - while (it.hasNext()) { - Contract vertrag = (Contract) it.next(); - - if (vertrag.getKundenId() == auftrag1.getKundenId()) { - i++; - } - } - } - - if (i == 1) - jTextFieldAnmerkung.setText("Der Kunde " + kunde.getVorname().concat(" " + kunde.getNachname()) + " besitzt " + i + " Vertrag."); - else - jTextFieldAnmerkung.setText("Der Kunde " + kunde.getVorname().concat(" " + kunde.getNachname()) + " besitzt " + i + " Verträge."); - - jTextFieldRabatt.setText(format.format(auftrag1.getRabatt())); - jTextSkonto.setText(String.valueOf(auftrag1.getSkonto())); - jTextFieldSkontofrist.setText(String.valueOf(auftrag1.getSkontofrist())); - jTextFieldArtikel.setText(artikel.getName()); - jTextFieldStueckpreis.setText(String.valueOf(artikel.getStueckpreis())); - jTextFieldMwst.setText(String.valueOf(mwst)); - jTextFieldMenge.setText(String.valueOf(atp.getBestellmenge())); - jTextFieldAngebotspreis1.setText(String.valueOf(atr.getBetrag())); - - // Zwischensummen werden berechnet - double stueckPreis = 0; - long menge = 0; - double zwischensum1 = 0; - double zwischensum2 = 0; - double summe = 0; - double rabatt = 0; - double skonto = 0; - - stueckPreis = artikel.getStueckpreis(); - menge = atp.getBestellmenge(); - rabatt = auftrag1.getRabatt(); - skonto = auftrag1.getSkonto(); - - summe = stueckPreis * menge; - zwischensum1 = summe + (summe * mwst / 100); - zwischensum2 = summe + (summe * mwst / 100) - (summe * rabatt / 100) - (summe * skonto / 100); - - jTextFieldZwischensumme1.setText(String.valueOf(zwischensum1)); - jTextField2Zwischensumme2.setText(String.valueOf(zwischensum2)); - - //Das Nettozahldatum wird erzeugt - if ((!jTextFieldSkontofrist.getText().equals("")) && (!jTextFieldSkontofrist.getText().equals("0"))) { - Date auftragsDatum = auftrag1.getVertragsdatum(); - long nettoDatumMili = auftragsDatum.getTime() + (Long.parseLong(jTextFieldSkontofrist.getText()) * 1000 * 60 * 60 * 24); - GregorianCalendar nettoDatum = new GregorianCalendar(); - nettoDatum.setTimeInMillis(nettoDatumMili); - - String tag = String.valueOf(nettoDatum.get(Calendar.DATE)); - String monat = String.valueOf(nettoDatum.get(Calendar.MONTH) + 1); - String jahr = String.valueOf(nettoDatum.get(Calendar.YEAR)); - jTextFieldNettozahldatum.setForeground(Color.red); - jTextFieldNettozahldatum.setText(tag + "." + monat + "." + jahr); - } else { - jTextFieldNettozahldatum.setText("Keins vorhanden!"); - } - - i = 0; - - } - - if (selectedAuftrag2 == 1) { - selectedAuftrag1 = 0; - clearFields(); - Contract auftrag2 = (Contract) auftragObjekt2.get(String.valueOf(merkeNr + 1)); - Customer kunde = null; - Article artikel = null; - Collection vertragList = null; - OrderItem atp = null; - ContractAccount atr = null; - int i = 0; - - try { - kunde = dao.getKunde(auftrag2.getKundenId()); - atp = dao.getAuftragsPosition(auftrag2.getVertragsId()); - artikel = dao.getArtikel(atp.getArtNr()); - mwst = dao.getMwSt(); - vertragList = dao.getVertraege(); - atr = dao.getAuftragsrechnung(auftrag2.getAuftragsrechnungsId()); - } catch (WiSimDAOException e) { - wiSimLogger.log("getVertragsdaten()", e); - } - - if (vertragList != null) { - Iterator it = vertragList.iterator(); - while (it.hasNext()) { - Contract vertrag = (Contract) it.next(); - - if (vertrag.getKundenId() == auftrag2.getKundenId()) { - i++; - } - } - } - - if (i == 1) - jTextFieldAnmerkung.setText("Der Kunde " + kunde.getVorname().concat(" " + kunde.getNachname()) + " besitzt " + i + " Vertrag."); - else - jTextFieldAnmerkung.setText("Der Kunde " + kunde.getVorname().concat(" " + kunde.getNachname()) + " besitzt " + i + " Verträge."); - - jTextFieldRabatt.setText(format.format(auftrag2.getRabatt())); - jTextSkonto.setText(format.format(auftrag2.getSkonto())); - jTextFieldSkontofrist.setText(String.valueOf(auftrag2.getSkontofrist())); - jTextFieldArtikel.setText(artikel.getName()); - jTextFieldStueckpreis.setText(format.format(artikel.getStueckpreis())); - jTextFieldMwst.setText(format.format(mwst)); - jTextFieldMenge.setText(String.valueOf(atp.getBestellmenge())); - jTextFieldAngebotspreis1.setText(format.format(atr.getBetrag())); - - //Die Zwischensummen werden berechnet - double stueckPreis = 0; - long menge = 0; - double zwischensum1 = 0; - double zwischensum2 = 0; - double summe = 0; - double rabatt = 0; - double skonto = 0; - - stueckPreis = artikel.getStueckpreis(); - menge = atp.getBestellmenge(); - rabatt = auftrag2.getRabatt(); - skonto = auftrag2.getSkonto(); - - summe = stueckPreis * menge; - zwischensum1 = summe + (summe * mwst / 100); - zwischensum2 = summe + (summe * mwst / 100) - (summe * rabatt / 100) - (summe * skonto / 100); - - jTextFieldZwischensumme1.setText(format.format(zwischensum1)); - jTextField2Zwischensumme2.setText(format.format(zwischensum2)); - - //Das Nettozahldatum wird erzeugt - if ((!jTextFieldSkontofrist.getText().equals("")) && (!jTextFieldSkontofrist.getText().equals("0"))) { - Date auftragsDatum = auftrag2.getVertragsdatum(); - long nettoDatumMili = auftragsDatum.getTime() + (Long.parseLong(jTextFieldSkontofrist.getText()) * 1000 * 60 * 60 * 24); - GregorianCalendar nettoDatum = new GregorianCalendar(); - nettoDatum.setTimeInMillis(nettoDatumMili); - - String tag = String.valueOf(nettoDatum.get(Calendar.DATE)); - String monat = String.valueOf(nettoDatum.get(Calendar.MONTH) + 1); - String jahr = String.valueOf(nettoDatum.get(Calendar.YEAR)); - jTextFieldNettozahldatum.setForeground(Color.red); - jTextFieldNettozahldatum.setText(tag + "." + monat + "." + jahr); - } else { - jTextFieldNettozahldatum.setText("Keins vorhanden!"); - } - - i = 0; - } - } - - /** - * Method leereFelder. Leert alle Textfelder und setzt die Werte wieder zurück. - */ - private void clearFields() { - - jTextField2Zwischensumme2.setText(""); - jTextFieldAngebotspreis1.setText(""); - jTextFieldAnmerkung.setText(""); - jTextFieldArtikel.setText(""); - jTextFieldMenge.setText(""); - jTextFieldMwst.setText(""); - jTextFieldNettozahldatum.setText(""); - jTextFieldRabatt.setText(""); - jTextFieldSkontofrist.setText(""); - jTextFieldStueckpreis.setText(""); - jTextFieldZwischensumme1.setText(""); - jTextSkonto.setText(""); - - } - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JButton jButtonVertraegeEinsehenAuftragsdatumOK; - private javax.swing.JButton jButtonVertraegeEinsehenKundeOK; - private javax.swing.JComboBox jComboBoxVertraegeEinsehenAuftragsdatumJahr; - private javax.swing.JComboBox jComboBoxVertraegeEinsehenAuftragsdatumMonat; - private javax.swing.JComboBox jComboBoxVertraegeEinsehenAuftragsdatumTag; - private javax.swing.JComboBox jComboBoxVertraegeEinsehenKunde; - private javax.swing.JLabel jLabel1; - private javax.swing.JLabel jLabel2; - private javax.swing.JLabel jLabel3; - private javax.swing.JLabel jLabelAngebotspreis1; - private javax.swing.JLabel jLabelArtikel; - private javax.swing.JLabel jLabelAuftraege; - private javax.swing.JLabel jLabelAuftragsdatum1; - private javax.swing.JLabel jLabelEUR1; - private javax.swing.JLabel jLabelEUR2; - private javax.swing.JLabel jLabelEUR3; - private javax.swing.JLabel jLabelEUR4; - private javax.swing.JLabel jLabelGruen; - private javax.swing.JLabel jLabelMenge; - private javax.swing.JLabel jLabelMwst; - private javax.swing.JLabel jLabelNettozahldatum; - private javax.swing.JLabel jLabelProzent1; - private javax.swing.JLabel jLabelProzent2; - private javax.swing.JLabel jLabelProzent3; - private javax.swing.JLabel jLabelRabatt; - private javax.swing.JLabel jLabelRot; - private javax.swing.JLabel jLabelSkonto; - private javax.swing.JLabel jLabelSkontofrist; - private javax.swing.JLabel jLabelStueckpreis; - private javax.swing.JLabel jLabelTage; - private javax.swing.JLabel jLabelVertraegeEinsehenKunde; - private javax.swing.JLabel jLabelVertragEinsehen; - private javax.swing.JLabel jLabelZwischensumme1; - private javax.swing.JLabel jLabelZwischensumme2; - private javax.swing.JPanel jPanel1; - private javax.swing.JPanel jPanel2; - private javax.swing.JPanel jPanel3; - private javax.swing.JPanel jPanel4; - private javax.swing.JPanel jPanel5; - private javax.swing.JPanel jPanel6; - private javax.swing.JPanel jPanelLegende; - private javax.swing.JPanel jPanelVertraegeEinsehenDetails; - private javax.swing.JScrollPane jScrollPaneVertraegeEinsehen; - private javax.swing.JSeparator jSeparator1; - private javax.swing.JSeparator jSeparator2; - private javax.swing.JSeparator jSeparator3; - private javax.swing.JTable jTableVertraegeEinsehenVertraege; - private javax.swing.JTextField jTextField2Zwischensumme2; - private javax.swing.JTextField jTextFieldAngebotspreis1; - private javax.swing.JTextField jTextFieldAnmerkung; - private javax.swing.JTextField jTextFieldArtikel; - private javax.swing.JTextField jTextFieldMenge; - private javax.swing.JTextField jTextFieldMwst; - private javax.swing.JTextField jTextFieldNettozahldatum; - private javax.swing.JTextField jTextFieldRabatt; - private javax.swing.JTextField jTextFieldSkontofrist; - private javax.swing.JTextField jTextFieldStueckpreis; - private javax.swing.JTextField jTextFieldVertraegeEinsehen; - private javax.swing.JTextField jTextFieldZwischensumme1; - private javax.swing.JTextField jTextSkonto; - // End of variables declaration//GEN-END:variables -} \ No newline at end of file + private WiSimDAO dao; + private String tag; + private String monat; + private String jahr; + private int kdId; + private Hashtable auftragObjekt1; + private Hashtable auftragObjekt2; + private Hashtable kundeObjekt; + private Date auftragDateSQL; + private int rows; + private int selectedAuftrag1; + private int selectedAuftrag2; + private int eingabeDatumTag; + private int eingabeDatumMonat; + private int eingabeDatumJahr; + private Color darkgreen = new Color(51, 153, 51); + private Color red = new Color(255, 0, 0); + private WiSimMainController wiSimMainController; + private DecimalFormat format; + + //Logger + private WiSimLogger wiSimLogger; + + /** + * Creates new form JPanelVertragEinsehen + */ + public JPanelViewContract(WiSimMainController wiSimMainController) { + this.wiSimMainController = wiSimMainController; + initDAO(wiSimMainController); + auftragObjekt1 = new Hashtable(); + auftragObjekt2 = new Hashtable(); + kundeObjekt = new Hashtable(); + auftragDateSQL = null; + rows = 0; + kdId = 0; + selectedAuftrag1 = 0; + selectedAuftrag2 = 0; + eingabeDatumTag = 0; + eingabeDatumMonat = 0; + eingabeDatumJahr = 0; + initComponents(); + showLegend(); + format = new DecimalFormat("###,##0.00"); + } + + private void initDAO(WiSimMainController wiSimMainController) { + dao = wiSimMainController.getDAO(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + // //GEN-BEGIN:initComponents + private void initComponents() { + + jLabelVertragEinsehen = new javax.swing.JLabel(); + jScrollPaneVertraegeEinsehen = new javax.swing.JScrollPane(); + jTableVertraegeEinsehenVertraege = new javax.swing.JTable(); + jTableVertraegeEinsehenVertraege.setSelectionMode(0); + jTableVertraegeEinsehenVertraege.getTableHeader().setReorderingAllowed(false); + + jLabelAuftraege = new javax.swing.JLabel(); + jPanelLegende = new javax.swing.JPanel(); + jLabelGruen = new javax.swing.JLabel(); + jLabelRot = new javax.swing.JLabel(); + jPanelVertraegeEinsehenDetails = new javax.swing.JPanel(); + jPanel2 = new javax.swing.JPanel(); + jLabelArtikel = new javax.swing.JLabel(); + jTextFieldArtikel = new javax.swing.JTextField(); + jLabelStueckpreis = new javax.swing.JLabel(); + jTextFieldStueckpreis = new javax.swing.JTextField(); + jLabelEUR2 = new javax.swing.JLabel(); + jLabelMwst = new javax.swing.JLabel(); + jTextFieldMwst = new javax.swing.JTextField(); + jLabelProzent1 = new javax.swing.JLabel(); + jPanel4 = new javax.swing.JPanel(); + jLabelMenge = new javax.swing.JLabel(); + jTextFieldMenge = new javax.swing.JTextField(); + jLabelZwischensumme1 = new javax.swing.JLabel(); + jSeparator2 = new javax.swing.JSeparator(); + jTextFieldZwischensumme1 = new javax.swing.JTextField(); + jLabelEUR3 = new javax.swing.JLabel(); + jPanel5 = new javax.swing.JPanel(); + jLabelRabatt = new javax.swing.JLabel(); + jTextFieldRabatt = new javax.swing.JTextField(); + jLabelProzent2 = new javax.swing.JLabel(); + jSeparator1 = new javax.swing.JSeparator(); + jLabelSkonto = new javax.swing.JLabel(); + jLabelProzent3 = new javax.swing.JLabel(); + jTextSkonto = new javax.swing.JTextField(); + jLabelSkontofrist = new javax.swing.JLabel(); + jLabelTage = new javax.swing.JLabel(); + jTextFieldSkontofrist = new javax.swing.JTextField(); + jLabelNettozahldatum = new javax.swing.JLabel(); + jTextFieldNettozahldatum = new javax.swing.JTextField(); + jSeparator3 = new javax.swing.JSeparator(); + jLabelZwischensumme2 = new javax.swing.JLabel(); + jTextField2Zwischensumme2 = new javax.swing.JTextField(); + jLabelEUR4 = new javax.swing.JLabel(); + jPanel6 = new javax.swing.JPanel(); + jLabelAngebotspreis1 = new javax.swing.JLabel(); + jTextFieldAngebotspreis1 = new javax.swing.JTextField(); + jLabelEUR1 = new javax.swing.JLabel(); + jPanel1 = new javax.swing.JPanel(); + jLabelAuftragsdatum1 = new javax.swing.JLabel(); + jLabelVertraegeEinsehenKunde = new javax.swing.JLabel(); + jComboBoxVertraegeEinsehenAuftragsdatumTag = new javax.swing.JComboBox<>(); + jLabel1 = new javax.swing.JLabel(); + jComboBoxVertraegeEinsehenAuftragsdatumMonat = new javax.swing.JComboBox<>(); + jLabel2 = new javax.swing.JLabel(); + jComboBoxVertraegeEinsehenAuftragsdatumJahr = new javax.swing.JComboBox<>(); + jLabel3 = new javax.swing.JLabel(); + jComboBoxVertraegeEinsehenKunde = new javax.swing.JComboBox(); + jButtonVertraegeEinsehenAuftragsdatumOK = new javax.swing.JButton(); + jButtonVertraegeEinsehenKundeOK = new javax.swing.JButton(); + jTextFieldVertraegeEinsehen = new javax.swing.JTextField(); + jPanel3 = new javax.swing.JPanel(); + jTextFieldAnmerkung = new javax.swing.JTextField(); + + setPreferredSize(new java.awt.Dimension(800, 600)); + setLayout(null); + + jLabelVertragEinsehen.setFont(new java.awt.Font("Dialog", 1, 24)); // NOI18N + jLabelVertragEinsehen.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabelVertragEinsehen.setText("Verträge einsehen"); + add(jLabelVertragEinsehen); + jLabelVertragEinsehen.setBounds(0, 0, 800, 40); + + jTableVertraegeEinsehenVertraege.setModel(new javax.swing.table.DefaultTableModel( + new Object [][] { + + }, + new String [] { + "", "", "", "" + } + ) { + boolean[] canEdit = new boolean [] { + false, false, false, false + }; + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit [columnIndex]; + } + }); + jTableVertraegeEinsehenVertraege.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jTableVertraegeEinsehenVertraegeMouseClicked(evt); + } + }); + jScrollPaneVertraegeEinsehen.setViewportView(jTableVertraegeEinsehenVertraege); + + add(jScrollPaneVertraegeEinsehen); + jScrollPaneVertraegeEinsehen.setBounds(20, 200, 300, 250); + + jLabelAuftraege.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N + jLabelAuftraege.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabelAuftraege.setText("Verträge"); + add(jLabelAuftraege); + jLabelAuftraege.setBounds(20, 180, 300, 16); + + jPanelLegende.setBorder(javax.swing.BorderFactory.createTitledBorder("Legende")); + jPanelLegende.setLayout(null); + + jLabelGruen.setText("Auftrag abgeschlossen"); + jPanelLegende.add(jLabelGruen); + jLabelGruen.setBounds(30, 20, 180, 16); + + jLabelRot.setText("Auftrag noch nicht abgeschlossen"); + jPanelLegende.add(jLabelRot); + jLabelRot.setBounds(30, 50, 280, 16); + + add(jPanelLegende); + jPanelLegende.setBounds(20, 460, 300, 80); + + jPanelVertraegeEinsehenDetails.setBorder(javax.swing.BorderFactory.createTitledBorder("Details zum ausgewählten Vertrag")); + jPanelVertraegeEinsehenDetails.setLayout(null); + + jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Angaben zum Artikel", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 1, 10))); // NOI18N + jPanel2.setLayout(null); + + jLabelArtikel.setText("Artikel :"); + jPanel2.add(jLabelArtikel); + jLabelArtikel.setBounds(10, 30, 50, 16); + + jTextFieldArtikel.setEditable(false); + jTextFieldArtikel.setHorizontalAlignment(javax.swing.JTextField.RIGHT); + jTextFieldArtikel.setBorder(null); + jPanel2.add(jTextFieldArtikel); + jTextFieldArtikel.setBounds(90, 30, 70, 16); + + jLabelStueckpreis.setText("Stückpreis :"); + jPanel2.add(jLabelStueckpreis); + jLabelStueckpreis.setBounds(10, 60, 80, 16); + + jTextFieldStueckpreis.setEditable(false); + jTextFieldStueckpreis.setHorizontalAlignment(javax.swing.JTextField.RIGHT); + jTextFieldStueckpreis.setBorder(null); + jPanel2.add(jTextFieldStueckpreis); + jTextFieldStueckpreis.setBounds(90, 60, 70, 16); + + jLabelEUR2.setFont(new java.awt.Font("Dialog", 1, 16)); // NOI18N + jLabelEUR2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabelEUR2.setText("€"); + jLabelEUR2.setMaximumSize(new java.awt.Dimension(9, 22)); + jLabelEUR2.setMinimumSize(new java.awt.Dimension(9, 22)); + jLabelEUR2.setPreferredSize(new java.awt.Dimension(9, 22)); + jPanel2.add(jLabelEUR2); + jLabelEUR2.setBounds(170, 60, 10, 20); + + jLabelMwst.setText("MwSt :"); + jPanel2.add(jLabelMwst); + jLabelMwst.setBounds(10, 90, 40, 16); + + jTextFieldMwst.setEditable(false); + jTextFieldMwst.setHorizontalAlignment(javax.swing.JTextField.RIGHT); + jTextFieldMwst.setBorder(null); + jPanel2.add(jTextFieldMwst); + jTextFieldMwst.setBounds(120, 90, 40, 16); + + jLabelProzent1.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N + jLabelProzent1.setText("%"); + jPanel2.add(jLabelProzent1); + jLabelProzent1.setBounds(170, 90, 11, 17); + + jPanelVertraegeEinsehenDetails.add(jPanel2); + jPanel2.setBounds(20, 30, 190, 120); + + jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Weiteres", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 1, 10))); // NOI18N + jPanel4.setLayout(null); + + jLabelMenge.setText("Menge :"); + jPanel4.add(jLabelMenge); + jLabelMenge.setBounds(10, 30, 50, 16); + + jTextFieldMenge.setEditable(false); + jTextFieldMenge.setHorizontalAlignment(javax.swing.JTextField.RIGHT); + jTextFieldMenge.setBorder(null); + jPanel4.add(jTextFieldMenge); + jTextFieldMenge.setBounds(60, 30, 100, 16); + + jLabelZwischensumme1.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N + jLabelZwischensumme1.setText("Zwischensumme"); + jPanel4.add(jLabelZwischensumme1); + jLabelZwischensumme1.setBounds(50, 70, 100, 16); + jPanel4.add(jSeparator2); + jSeparator2.setBounds(10, 60, 170, 10); + + jTextFieldZwischensumme1.setEditable(false); + jTextFieldZwischensumme1.setHorizontalAlignment(javax.swing.JTextField.CENTER); + jTextFieldZwischensumme1.setBorder(null); + jPanel4.add(jTextFieldZwischensumme1); + jTextFieldZwischensumme1.setBounds(20, 90, 140, 16); + + jLabelEUR3.setFont(new java.awt.Font("Dialog", 1, 16)); // NOI18N + jLabelEUR3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabelEUR3.setText("€"); + jLabelEUR3.setMaximumSize(new java.awt.Dimension(9, 22)); + jLabelEUR3.setMinimumSize(new java.awt.Dimension(9, 22)); + jLabelEUR3.setPreferredSize(new java.awt.Dimension(9, 22)); + jPanel4.add(jLabelEUR3); + jLabelEUR3.setBounds(170, 90, 10, 20); + + jPanelVertraegeEinsehenDetails.add(jPanel4); + jPanel4.setBounds(230, 30, 190, 120); + + jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Abzüge", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 1, 10))); // NOI18N + jPanel5.setLayout(null); + + jLabelRabatt.setText("Rabatt :"); + jPanel5.add(jLabelRabatt); + jLabelRabatt.setBounds(10, 30, 50, 16); + + jTextFieldRabatt.setEditable(false); + jTextFieldRabatt.setHorizontalAlignment(javax.swing.JTextField.RIGHT); + jTextFieldRabatt.setBorder(null); + jPanel5.add(jTextFieldRabatt); + jTextFieldRabatt.setBounds(120, 30, 40, 16); + + jLabelProzent2.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N + jLabelProzent2.setText("%"); + jPanel5.add(jLabelProzent2); + jLabelProzent2.setBounds(170, 30, 11, 17); + jPanel5.add(jSeparator1); + jSeparator1.setBounds(10, 60, 380, 10); + + jLabelSkonto.setText("Skonto :"); + jPanel5.add(jLabelSkonto); + jLabelSkonto.setBounds(10, 70, 50, 16); + + jLabelProzent3.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N + jLabelProzent3.setText("%"); + jPanel5.add(jLabelProzent3); + jLabelProzent3.setBounds(170, 70, 11, 17); + + jTextSkonto.setEditable(false); + jTextSkonto.setHorizontalAlignment(javax.swing.JTextField.RIGHT); + jTextSkonto.setBorder(null); + jPanel5.add(jTextSkonto); + jTextSkonto.setBounds(120, 70, 40, 16); + + jLabelSkontofrist.setText("Skontofrist :"); + jPanel5.add(jLabelSkontofrist); + jLabelSkontofrist.setBounds(220, 70, 70, 16); + + jLabelTage.setText("Tage"); + jPanel5.add(jLabelTage); + jLabelTage.setBounds(360, 70, 30, 16); + + jTextFieldSkontofrist.setEditable(false); + jTextFieldSkontofrist.setHorizontalAlignment(javax.swing.JTextField.RIGHT); + jTextFieldSkontofrist.setBorder(null); + jPanel5.add(jTextFieldSkontofrist); + jTextFieldSkontofrist.setBounds(310, 70, 40, 16); + + jLabelNettozahldatum.setText("Nettozahldatum :"); + jPanel5.add(jLabelNettozahldatum); + jLabelNettozahldatum.setBounds(10, 100, 100, 16); + + jTextFieldNettozahldatum.setEditable(false); + jTextFieldNettozahldatum.setHorizontalAlignment(javax.swing.JTextField.CENTER); + jTextFieldNettozahldatum.setBorder(null); + jPanel5.add(jTextFieldNettozahldatum); + jTextFieldNettozahldatum.setBounds(120, 100, 120, 16); + jPanel5.add(jSeparator3); + jSeparator3.setBounds(10, 120, 380, 10); + + jLabelZwischensumme2.setFont(new java.awt.Font("Dialog", 0, 12)); // NOI18N + jLabelZwischensumme2.setText("Zwischensumme :"); + jPanel5.add(jLabelZwischensumme2); + jLabelZwischensumme2.setBounds(10, 140, 110, 16); + + jTextField2Zwischensumme2.setEditable(false); + jTextField2Zwischensumme2.setHorizontalAlignment(javax.swing.JTextField.RIGHT); + jTextField2Zwischensumme2.setBorder(null); + jPanel5.add(jTextField2Zwischensumme2); + jTextField2Zwischensumme2.setBounds(120, 140, 150, 16); + + jLabelEUR4.setFont(new java.awt.Font("Dialog", 1, 16)); // NOI18N + jLabelEUR4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabelEUR4.setText("€"); + jLabelEUR4.setMaximumSize(new java.awt.Dimension(9, 22)); + jLabelEUR4.setMinimumSize(new java.awt.Dimension(9, 22)); + jLabelEUR4.setPreferredSize(new java.awt.Dimension(9, 22)); + jPanel5.add(jLabelEUR4); + jLabelEUR4.setBounds(280, 140, 10, 20); + + jPanelVertraegeEinsehenDetails.add(jPanel5); + jPanel5.setBounds(20, 160, 400, 170); + + jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Preis", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", 1, 10))); // NOI18N + jPanel6.setLayout(null); + + jLabelAngebotspreis1.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N + jLabelAngebotspreis1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabelAngebotspreis1.setText("Angebotspreis :"); + jPanel6.add(jLabelAngebotspreis1); + jLabelAngebotspreis1.setBounds(20, 30, 145, 22); + + jTextFieldAngebotspreis1.setEditable(false); + jTextFieldAngebotspreis1.setFont(new java.awt.Font("Dialog", 0, 18)); // NOI18N + jTextFieldAngebotspreis1.setHorizontalAlignment(javax.swing.JTextField.RIGHT); + jTextFieldAngebotspreis1.setBorder(null); + jPanel6.add(jTextFieldAngebotspreis1); + jTextFieldAngebotspreis1.setBounds(170, 30, 200, 20); + + jLabelEUR1.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N + jLabelEUR1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabelEUR1.setText("€"); + jPanel6.add(jLabelEUR1); + jLabelEUR1.setBounds(370, 30, 20, 20); + + jPanelVertraegeEinsehenDetails.add(jPanel6); + jPanel6.setBounds(20, 340, 400, 70); + + add(jPanelVertraegeEinsehenDetails); + jPanelVertraegeEinsehenDetails.setBounds(340, 120, 440, 420); + + jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Eingabe von Vertragsdatum oder Kunde")); + jPanel1.setLayout(null); + + jLabelAuftragsdatum1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabelAuftragsdatum1.setText("Vertragsdatum"); + jPanel1.add(jLabelAuftragsdatum1); + jLabelAuftragsdatum1.setBounds(10, 30, 100, 16); + + jLabelVertraegeEinsehenKunde.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabelVertraegeEinsehenKunde.setText("Kunde"); + jPanel1.add(jLabelVertraegeEinsehenKunde); + jLabelVertraegeEinsehenKunde.setBounds(10, 60, 110, 16); + + jComboBoxVertraegeEinsehenAuftragsdatumTag.setFont(new java.awt.Font("Dialog", 1, 10)); // NOI18N + jComboBoxVertraegeEinsehenAuftragsdatumTag.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31" })); + jPanel1.add(jComboBoxVertraegeEinsehenAuftragsdatumTag); + jComboBoxVertraegeEinsehenAuftragsdatumTag.setBounds(110, 30, 70, 20); + + jLabel1.setFont(new java.awt.Font("Dialog", 1, 9)); // NOI18N + jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel1.setText("Tag"); + jPanel1.add(jLabel1); + jLabel1.setBounds(110, 20, 40, 10); + + jComboBoxVertraegeEinsehenAuftragsdatumMonat.setFont(new java.awt.Font("Dialog", 1, 10)); // NOI18N + jComboBoxVertraegeEinsehenAuftragsdatumMonat.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12" })); + jPanel1.add(jComboBoxVertraegeEinsehenAuftragsdatumMonat); + jComboBoxVertraegeEinsehenAuftragsdatumMonat.setBounds(150, 30, 70, 20); + + jLabel2.setFont(new java.awt.Font("Dialog", 1, 9)); // NOI18N + jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel2.setText("Monat"); + jPanel1.add(jLabel2); + jLabel2.setBounds(150, 20, 40, 10); + + jComboBoxVertraegeEinsehenAuftragsdatumJahr.setFont(new java.awt.Font("Dialog", 1, 10)); // NOI18N + jComboBoxVertraegeEinsehenAuftragsdatumJahr.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "", "2002", "2003", "2004", "2005", "2006" })); + jPanel1.add(jComboBoxVertraegeEinsehenAuftragsdatumJahr); + jComboBoxVertraegeEinsehenAuftragsdatumJahr.setBounds(190, 30, 60, 20); + + jLabel3.setFont(new java.awt.Font("Dialog", 1, 9)); // NOI18N + jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel3.setText("Jahr"); + jPanel1.add(jLabel3); + jLabel3.setBounds(190, 20, 60, 11); + + jComboBoxVertraegeEinsehenKunde.addAncestorListener(new javax.swing.event.AncestorListener() { + public void ancestorAdded(javax.swing.event.AncestorEvent evt) { + jComboBoxVertraegeEinsehenKundeAncestorAdded(evt); + } + public void ancestorMoved(javax.swing.event.AncestorEvent evt) { + } + public void ancestorRemoved(javax.swing.event.AncestorEvent evt) { + } + }); + jPanel1.add(jComboBoxVertraegeEinsehenKunde); + jComboBoxVertraegeEinsehenKunde.setBounds(110, 60, 140, 20); + + jButtonVertraegeEinsehenAuftragsdatumOK.setBackground(new java.awt.Color(153, 153, 153)); + jButtonVertraegeEinsehenAuftragsdatumOK.setFont(new java.awt.Font("Dialog", 1, 10)); // NOI18N + jButtonVertraegeEinsehenAuftragsdatumOK.setText("OK"); + jButtonVertraegeEinsehenAuftragsdatumOK.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); + jButtonVertraegeEinsehenAuftragsdatumOK.setMargin(new java.awt.Insets(1, 2, 2, 1)); + jButtonVertraegeEinsehenAuftragsdatumOK.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButtonVertraegeEinsehenAuftragsdatumOKActionPerformed(evt); + } + }); + jPanel1.add(jButtonVertraegeEinsehenAuftragsdatumOK); + jButtonVertraegeEinsehenAuftragsdatumOK.setBounds(270, 30, 20, 17); + + jButtonVertraegeEinsehenKundeOK.setBackground(new java.awt.Color(153, 153, 153)); + jButtonVertraegeEinsehenKundeOK.setFont(new java.awt.Font("Dialog", 1, 10)); // NOI18N + jButtonVertraegeEinsehenKundeOK.setText("OK"); + jButtonVertraegeEinsehenKundeOK.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); + jButtonVertraegeEinsehenKundeOK.setMargin(new java.awt.Insets(1, 2, 2, 1)); + jButtonVertraegeEinsehenKundeOK.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButtonVertraegeEinsehenKundeOKActionPerformed(evt); + } + }); + jPanel1.add(jButtonVertraegeEinsehenKundeOK); + jButtonVertraegeEinsehenKundeOK.setBounds(270, 60, 20, 17); + + jTextFieldVertraegeEinsehen.setEditable(false); + jTextFieldVertraegeEinsehen.setFont(new java.awt.Font("Dialog", 1, 12)); // NOI18N + jTextFieldVertraegeEinsehen.setForeground(new java.awt.Color(255, 51, 0)); + jTextFieldVertraegeEinsehen.setHorizontalAlignment(javax.swing.JTextField.CENTER); + jTextFieldVertraegeEinsehen.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); + jTextFieldVertraegeEinsehen.setDisabledTextColor(new java.awt.Color(0, 0, 0)); + jPanel1.add(jTextFieldVertraegeEinsehen); + jTextFieldVertraegeEinsehen.setBounds(10, 90, 280, 17); + + add(jPanel1); + jPanel1.setBounds(20, 50, 300, 130); + + jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Anmerkung")); + jPanel3.setLayout(null); + + jTextFieldAnmerkung.setEditable(false); + jTextFieldAnmerkung.setForeground(new java.awt.Color(51, 0, 255)); + jTextFieldAnmerkung.setHorizontalAlignment(javax.swing.JTextField.CENTER); + jTextFieldAnmerkung.setBorder(null); + jPanel3.add(jTextFieldAnmerkung); + jTextFieldAnmerkung.setBounds(10, 30, 420, 20); + + add(jPanel3); + jPanel3.setBounds(340, 50, 440, 60); + }// //GEN-END:initComponents + + private void jTableVertraegeEinsehenVertraegeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableVertraegeEinsehenVertraegeMouseClicked + getContractData(); + }//GEN-LAST:event_jTableVertraegeEinsehenVertraegeMouseClicked + + private void jComboBoxVertraegeEinsehenKundeAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jComboBoxVertraegeEinsehenKundeAncestorAdded + loadCustomers(); + }//GEN-LAST:event_jComboBoxVertraegeEinsehenKundeAncestorAdded + + private void jButtonVertraegeEinsehenKundeOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonVertraegeEinsehenKundeOKActionPerformed + saveData2(); + }//GEN-LAST:event_jButtonVertraegeEinsehenKundeOKActionPerformed + + private void jButtonVertraegeEinsehenAuftragsdatumOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonVertraegeEinsehenAuftragsdatumOKActionPerformed + checkModifyingDate(); + }//GEN-LAST:event_jButtonVertraegeEinsehenAuftragsdatumOKActionPerformed + /** + * Method pruefeEingabeDatum. Prüft, ob Tag, Monat und Jahr ausgefüllt wurde. + * Wenn eines fehlt, wird eine Fehlermeldung ausgegeben. + */ + private void checkModifyingDate() { + jComboBoxVertraegeEinsehenKunde.setSelectedIndex(0); + + if (jComboBoxVertraegeEinsehenAuftragsdatumTag.getSelectedIndex() == 0) { + jTextFieldVertraegeEinsehen.setText("Vertragsdatum falsch eingegeben!"); + eingabeDatumTag = 1; + } else { + eingabeDatumTag = 0; + } + + if (jComboBoxVertraegeEinsehenAuftragsdatumMonat.getSelectedIndex() == 0) { + jTextFieldVertraegeEinsehen.setText("Vertragsdatum falsch eingegeben!"); + eingabeDatumMonat = 1; + } else { + eingabeDatumMonat = 0; + } + + if (jComboBoxVertraegeEinsehenAuftragsdatumJahr.getSelectedIndex() == 0) { + jTextFieldVertraegeEinsehen.setText("Vertragsdatum falsch eingegeben!"); + eingabeDatumJahr = 1; + } else { + eingabeDatumJahr = 0; + } + + checkContractDate(); + } + + /** + * Method pruefeAuftragsdatum. Auftragsdatum == Vertragsdatum. Prüft, ob für + * das ausgewählte Auftragsdatum ein Contract besteht. Contract == Auftrag. + */ + private void checkContractDate() { + + jComboBoxVertraegeEinsehenKunde.setSelectedIndex(0); + + if ((eingabeDatumTag == 0) && (eingabeDatumMonat == 0) && (eingabeDatumJahr == 0)) { + + tag = String.valueOf(jComboBoxVertraegeEinsehenAuftragsdatumTag.getSelectedItem()); + monat = String.valueOf(jComboBoxVertraegeEinsehenAuftragsdatumMonat.getSelectedItem()); + jahr = String.valueOf(jComboBoxVertraegeEinsehenAuftragsdatumJahr.getSelectedItem()); + + int auftragTag = Integer.parseInt(tag); + int auftragMonat = Integer.parseInt(monat) - 1; + int auftragJahr = Integer.parseInt(jahr); + + GregorianCalendar auftragDatum = new GregorianCalendar(auftragJahr, auftragMonat, auftragTag); + + auftragDateSQL = new java.sql.Date(auftragDatum.getTimeInMillis()); + + // Lädt alle Verträge aus der Datenbank + Collection vertraege = null; + try { + vertraege = dao.getContracts(); + } catch (WiSimDAOException e) { + wiSimLogger.log("pruefeAuftragsdatum()", e); + } + + // Verhindert NullPointerException bei einer leeren Liste + if (vertraege != null) { + Iterator it = vertraege.iterator(); + while (it.hasNext()) { + Contract vertrag = (Contract) it.next(); + //Schreibt die Objekte von Vertrag in eine Hashtable, die aDatum entsprechen + if (vertrag.getVertragsdatum().equals(auftragDateSQL)) { + rows++; + } + } + if (rows > 0) { + jTextFieldVertraegeEinsehen.setText("Vertragsdatum ist vorhanden!"); + rows = 0; + saveData1(); + } else { + jTextFieldVertraegeEinsehen.setText("Vertragsdatum nicht vorhanden!"); + clearFields(); + clearTable(); + } + } + } else { + clearFields(); + clearTable(); + } + rows = 0; + } + + /** + * Method merkeDaten1. Merkt sich das ausgewählte Vertragsdatum, um die dazu + * gehörigen Vertragsdaten und Kunden aus der Datenbank zu laden. Der Benutzer + * hat einen Kundennamen gewählt. + */ + private void saveData1() { + ArrayList contracts = null; + selectedAuftrag2 = 0; + selectedAuftrag1 = 1; + clearFields(); + try { + contracts = dao.getContracts(); + } catch (WiSimDAOException e) { + wiSimLogger.log("merkeDaten1()", e); + } + + if (contracts != null) { + for (Contract contract : contracts) { + + if (contract.getVertragsdatum().equals(auftragDateSQL)) { + rows++; + auftragObjekt1.put((String.valueOf(rows)), contract); + } + } + + if (rows > 0) { + + Customer customer = null; + int j = 0; + setContractTable1(); + + for (int n = 1; n <= rows; n++) { + + Contract auftrag1 = (Contract) auftragObjekt1.get((String.valueOf(n))); + + if (auftrag1 != null) { + + kdId = auftrag1.getKundenId(); + + try { + customer = dao.getCustomer(kdId); + } catch (WiSimDAOException e) { + wiSimLogger.log("merkeDaten1()", e); + } + + jTableVertraegeEinsehenVertraege.setValueAt(String.valueOf(auftrag1.getVertragsId()), j, 0); + jTableVertraegeEinsehenVertraege.setValueAt(String.valueOf(customer.getVorname().concat(" " + String.valueOf(customer.getNachname()))), j, 1); + jTableVertraegeEinsehenVertraege.setValueAt(formatDate(auftrag1.getLieferdatum()), j, 2); + + //Status Icon + Image image = new BufferedImage(28, 30, 2); + Graphics g = image.getGraphics(); + + if (auftrag1.getLieferdatum().before(wiSimMainController.getActDate())) { + g.setColor(darkgreen); + } else { + g.setColor(red); + } + g.fillRoundRect(10, 11, 10, 10, 3, 3); + + ImageIcon ic = new ImageIcon(image); + + jTableVertraegeEinsehenVertraege.setValueAt(ic, j, 3); + + j++; + } + } + } + } + rows = 0; + kdId = 0; + auftragDateSQL = null; + } + + /** + * Method setVertragsTabelle1. Erstellt den Tabellenkopf für die 1. Form der + * Vertragsausgabe. Der Benutzer hat ein Vertragsdatum ausgewählt. + */ + private void setContractTable1() { + + //DefaultTableModel mit Variablen Zeilen, 4 TableHeads und nicht editierbaren Zellen + Object[][] tableInit = new Object[rows][4]; + DefaultTableModel defTable = new DefaultTableModel(tableInit, new String[]{"Nr", "Kunde", "Lieferdatum", "Status"}) { + boolean[] canEdit = new boolean[]{false, false, false, false}; + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit[columnIndex]; + } + + public Class getColumnClass(int c) { + return getValueAt(0, c).getClass(); + } + }; + jTableVertraegeEinsehenVertraege.setModel(defTable); + jTableVertraegeEinsehenVertraege.setFocusable(false); + + javax.swing.table.TableColumn column = null; + for (int i = 0; i < 4; i++) { + column = jTableVertraegeEinsehenVertraege.getColumnModel().getColumn(i); + if (i == 1) { + column.setPreferredWidth(70); + } else if (i == 2) { + column.setPreferredWidth(60); + } else if (i == 3) { + column.setPreferredWidth(20); + } else { + column.setPreferredWidth(10); + } + } + + jTableVertraegeEinsehenVertraege.getTableHeader().setReorderingAllowed(false); + jTableVertraegeEinsehenVertraege.setDragEnabled(false); + + } + + /** + * Method merkeDaten2. Merkt sich den ausgewählten Kunden, um die dazu + * gehörigen Vertragsdaten aus der Datenbank zu laden. Der Benutzer hat einen + * Kundennamen gewählt. + */ + private void saveData2() { + selectedAuftrag1 = 0; + selectedAuftrag2 = 1; + clearFields(); + + jComboBoxVertraegeEinsehenAuftragsdatumTag.setSelectedIndex(0); + jComboBoxVertraegeEinsehenAuftragsdatumMonat.setSelectedIndex(0); + jComboBoxVertraegeEinsehenAuftragsdatumJahr.setSelectedIndex(0); + jTableVertraegeEinsehenVertraege.setSelectionMode(0); + + if ((jComboBoxVertraegeEinsehenKunde.getSelectedIndex()) != 0) { + jTextFieldVertraegeEinsehen.setText("Sie haben einen Kunden gewählt!"); + + //liefert listItem des selektierten Eintrags + String listItem = String.valueOf(jComboBoxVertraegeEinsehenKunde.getSelectedItem()); + + //sucht das ausgewählte KundenObjekt in Hashtabelle kundeObjekt + Customer auswahlKunde = (Customer) kundeObjekt.get(listItem); + + if (auswahlKunde != null) { + kdId = auswahlKunde.getId(); + } + + ArrayList contracts = null; + + try { + contracts = dao.getContracts(); + } catch (WiSimDAOException e) { + wiSimLogger.log("merkeDaten2()", e); + } + + + if (contracts != null) { + for (Contract contract : contracts) { + if (contract.getKundenId() == kdId) { + rows++; + auftragObjekt2.put(String.valueOf(rows), contract); + } + } + + if (rows > 0) { + + setContractTable2(); + int j = 0; + + for (int n = 1; n <= rows; n++) { + + Contract auftrag2 = (Contract) auftragObjekt2.get(String.valueOf(n)); + + if (auftrag2 != null) { + jTableVertraegeEinsehenVertraege.setValueAt(String.valueOf(auftrag2.getVertragsId()), j, 0); + jTableVertraegeEinsehenVertraege.setValueAt(formatDate(auftrag2.getVertragsdatum()), j, 1); + jTableVertraegeEinsehenVertraege.setValueAt(formatDate(auftrag2.getLieferdatum()), j, 2); + + //Status Icon + Image image = new BufferedImage(28, 30, 2); + Graphics g = image.getGraphics(); + + if (auftrag2.getLieferdatum().before(wiSimMainController.getActDate())) { + g.setColor(darkgreen); + } else { + g.setColor(red); + } + g.fillRoundRect(10, 11, 10, 10, 3, 3); + + ImageIcon ic = new ImageIcon(image); + + jTableVertraegeEinsehenVertraege.setValueAt(ic, j, 3); + j++; + } + } + } else { + jTextFieldVertraegeEinsehen.setText("Kein Auftrag für diesen Kunden!"); + clearTable(); + clearFields(); + } + } + } else { + jTextFieldVertraegeEinsehen.setText("Es wurde nichts ausgewählt!"); + clearTable(); + clearFields(); + } + rows = 0; + kdId = 0; + } + + /** + * Method setVertragsTabelle2. Erstellt den Tabellenkopf für die 2. Form der + * Vertragsausgabe. Der Benutzer hat einen Kundennamen gewählt. + */ + private void setContractTable2() { + + //DefaultTableModel mit Variablen Zeilen, 3 TableHeads und nicht editierbaren Zellen + Object[][] tableInit = new Object[rows][4]; + DefaultTableModel defTable = new DefaultTableModel(tableInit, new String[]{"Nr", "Auftragsdatum", "Lieferdatum", "Status"}) { + boolean[] canEdit = new boolean[]{false, false, false, false}; + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit[columnIndex]; + } + + public Class getColumnClass(int c) { + return getValueAt(0, c).getClass(); + } + }; + + jTableVertraegeEinsehenVertraege.setModel(defTable); + jTableVertraegeEinsehenVertraege.setFocusable(false); + + javax.swing.table.TableColumn column = null; + for (int i = 0; i < 4; i++) { + column = jTableVertraegeEinsehenVertraege.getColumnModel().getColumn(i); + if (i == 1) { + column.setPreferredWidth(60); + } else if (i == 2) { + column.setPreferredWidth(50); + } else if (i == 3) { + column.setPreferredWidth(30); + } else { + column.setPreferredWidth(10); + } + } + + jTableVertraegeEinsehenVertraege.getTableHeader().setReorderingAllowed(false); + jTableVertraegeEinsehenVertraege.setDragEnabled(false); + + } + + /** + * Method clearTabelle. Löscht die Tabelle der Verträge mit Tabellenkopf. + */ + private void clearTable() { + //DefaultTableModel mit Variablen Zeilen, 4 TableHeads und nicht editierbaren Zellen + jTableVertraegeEinsehenVertraege.setModel(new javax.swing.table.DefaultTableModel(new Object[][]{}, new String[]{"", "", "", ""}) { + boolean[] canEdit = new boolean[]{false, false, false, false}; + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit[columnIndex]; + } + }); + } + + /** + * Formatiert ein Date Objekt zu einem String TT.MM.JJJJ. + * + * @param dateToFormat Das zu formatierende Datum. + * @return Das formatierte Datum. + */ + private String formatDate(java.sql.Date dateToFormat) { + String date = String.valueOf(dateToFormat); + String year = date.substring(0, 4); + String month = date.substring(5, 7); + String day = date.substring(8, 10); + String formattedDate = day + "." + month + "." + year; + return formattedDate; + } + + /** + * Zeigt die Legende an + */ + private void showLegend() { + //Legende + Image imageIconGreen = new BufferedImage(28, 30, 2); + Graphics g = imageIconGreen.getGraphics(); + g.setColor(darkgreen); + g.fillRoundRect(10, 11, 10, 10, 3, 3); + ImageIcon ic = new ImageIcon(imageIconGreen); + jLabelGruen.setIcon(ic); + + Image imageIconRed = new BufferedImage(28, 30, 2); + g = imageIconRed.getGraphics(); + g.setColor(red); + g.fillRoundRect(10, 11, 10, 10, 3, 3); + ic = new ImageIcon(imageIconRed); + jLabelRot.setIcon(ic); + } + + /** + * Method ladeKunden. Lädt die Kunden aus der Datenbank. Diese werden in die + * Combo-Box geladen. + */ + private void loadCustomers() { + ArrayList customers = null; + try { + customers = dao.getCustomers(); + } catch (WiSimDAOException e) { + wiSimLogger.log("ladeKunden()", e); + } + + DefaultComboBoxModel model = (DefaultComboBoxModel) jComboBoxVertraegeEinsehenKunde.getModel(); + model.removeAllElements(); + model.addElement("Bitte auswählen:"); + + // Verhindert NullPointerException bei einer leeren Liste + if (customers != null) { + for (Customer customer : customers) { + //Merken des Nachnamen und Vornamen, um diese in die ComboBox einzutragen + String merkeName = String.valueOf(customer.getVorname()).concat(" "); + merkeName = merkeName.concat(String.valueOf(customer.getNachname())); + model.addElement(merkeName); + kundeObjekt.put(merkeName, customer); + + } + jComboBoxVertraegeEinsehenKunde.setModel(model); + } + } + + /** + * Method getVertragsdaten. Lädt die Daten für einen ausgewählten Contract aus + * der Datenbank. Zwischensummen werden berechnet. + */ + private void getContractData() { + int merkeNr = jTableVertraegeEinsehenVertraege.getSelectedRow(); + float mwst = 0; + // + 1, weil index der Zeile mit 0 beginnt!!! + + if (selectedAuftrag1 == 1) { + selectedAuftrag2 = 0; + clearFields(); + Contract auftrag1 = (Contract) auftragObjekt1.get(String.valueOf(merkeNr + 1)); + Customer kunde = null; + Article artikel = null; + ArrayList contracts = null; + ContractOrderItem atp = null; + ContractInvoice atr = null; + int i = 0; + + try { + kunde = dao.getCustomer(auftrag1.getKundenId()); + atp = dao.getAuftragsPosition(auftrag1.getVertragsId()); + artikel = dao.getArtikel(atp.getArtNr()); + mwst = dao.getMwSt(); + contracts = dao.getContracts(); + atr = dao.getAuftragsrechnung(auftrag1.getAuftragsrechnungsId()); + } catch (WiSimDAOException e) { + wiSimLogger.log("getVertragsdaten()", e); + } + + if (contracts != null) { + for (Contract contract : contracts) { + + if (contract.getKundenId() == auftrag1.getKundenId()) { + i++; + } + } + } + + if (i == 1) { + jTextFieldAnmerkung.setText("Der Kunde " + kunde.getVorname().concat(" " + kunde.getNachname()) + " besitzt " + i + " Vertrag."); + } else { + jTextFieldAnmerkung.setText("Der Kunde " + kunde.getVorname().concat(" " + kunde.getNachname()) + " besitzt " + i + " Verträge."); + } + + jTextFieldRabatt.setText(format.format(auftrag1.getRabatt())); + jTextSkonto.setText(String.valueOf(auftrag1.getSkonto())); + jTextFieldSkontofrist.setText(String.valueOf(auftrag1.getSkontofrist())); + jTextFieldArtikel.setText(artikel.getName()); + jTextFieldStueckpreis.setText(String.valueOf(artikel.getStueckpreis())); + jTextFieldMwst.setText(String.valueOf(mwst)); + jTextFieldMenge.setText(String.valueOf(atp.getBestellmenge())); + jTextFieldAngebotspreis1.setText(String.valueOf(atr.getBetrag())); + + // Zwischensummen werden berechnet + double stueckPreis = 0; + long menge = 0; + double zwischensum1 = 0; + double zwischensum2 = 0; + double summe = 0; + double rabatt = 0; + double skonto = 0; + + stueckPreis = artikel.getStueckpreis(); + menge = atp.getBestellmenge(); + rabatt = auftrag1.getRabatt(); + skonto = auftrag1.getSkonto(); + + summe = stueckPreis * menge; + zwischensum1 = summe + (summe * mwst / 100); + zwischensum2 = summe + (summe * mwst / 100) - (summe * rabatt / 100) - (summe * skonto / 100); + + jTextFieldZwischensumme1.setText(String.valueOf(zwischensum1)); + jTextField2Zwischensumme2.setText(String.valueOf(zwischensum2)); + + //Das Nettozahldatum wird erzeugt + if ((!jTextFieldSkontofrist.getText().equals("")) && (!jTextFieldSkontofrist.getText().equals("0"))) { + Date auftragsDatum = auftrag1.getVertragsdatum(); + long nettoDatumMili = auftragsDatum.getTime() + (Long.parseLong(jTextFieldSkontofrist.getText()) * 1000 * 60 * 60 * 24); + GregorianCalendar nettoDatum = new GregorianCalendar(); + nettoDatum.setTimeInMillis(nettoDatumMili); + + String tag = String.valueOf(nettoDatum.get(Calendar.DATE)); + String monat = String.valueOf(nettoDatum.get(Calendar.MONTH) + 1); + String jahr = String.valueOf(nettoDatum.get(Calendar.YEAR)); + jTextFieldNettozahldatum.setForeground(Color.red); + jTextFieldNettozahldatum.setText(tag + "." + monat + "." + jahr); + } else { + jTextFieldNettozahldatum.setText("Keins vorhanden!"); + } + + i = 0; + + } + + if (selectedAuftrag2 == 1) { + selectedAuftrag1 = 0; + clearFields(); + Contract auftrag2 = (Contract) auftragObjekt2.get(String.valueOf(merkeNr + 1)); + Customer kunde = null; + Article artikel = null; + ArrayList contracts = null; + ContractOrderItem atp = null; + ContractInvoice atr = null; + int i = 0; + + try { + kunde = dao.getCustomer(auftrag2.getKundenId()); + atp = dao.getAuftragsPosition(auftrag2.getVertragsId()); + artikel = dao.getArtikel(atp.getArtNr()); + mwst = dao.getMwSt(); + contracts = dao.getContracts(); + atr = dao.getAuftragsrechnung(auftrag2.getAuftragsrechnungsId()); + } catch (WiSimDAOException e) { + wiSimLogger.log("getVertragsdaten()", e); + } + + if (contracts != null) { + for (Contract contract: contracts) { + if (contract.getKundenId() == auftrag2.getKundenId()) { + i++; + } + } + } + + if (i == 1) { + jTextFieldAnmerkung.setText("Der Kunde " + kunde.getVorname().concat(" " + kunde.getNachname()) + " besitzt " + i + " Vertrag."); + } else { + jTextFieldAnmerkung.setText("Der Kunde " + kunde.getVorname().concat(" " + kunde.getNachname()) + " besitzt " + i + " Verträge."); + } + + jTextFieldRabatt.setText(format.format(auftrag2.getRabatt())); + jTextSkonto.setText(format.format(auftrag2.getSkonto())); + jTextFieldSkontofrist.setText(String.valueOf(auftrag2.getSkontofrist())); + jTextFieldArtikel.setText(artikel.getName()); + jTextFieldStueckpreis.setText(format.format(artikel.getStueckpreis())); + jTextFieldMwst.setText(format.format(mwst)); + jTextFieldMenge.setText(String.valueOf(atp.getBestellmenge())); + jTextFieldAngebotspreis1.setText(format.format(atr.getBetrag())); + + //Die Zwischensummen werden berechnet + double stueckPreis; + long menge; + double zwischensum1; + double zwischensum2; + double summe; + double rabatt; + double skonto; + + stueckPreis = artikel.getStueckpreis(); + menge = atp.getBestellmenge(); + rabatt = auftrag2.getRabatt(); + skonto = auftrag2.getSkonto(); + + summe = stueckPreis * menge; + zwischensum1 = summe + (summe * mwst / 100); + zwischensum2 = summe + (summe * mwst / 100) - (summe * rabatt / 100) - (summe * skonto / 100); + + jTextFieldZwischensumme1.setText(format.format(zwischensum1)); + jTextField2Zwischensumme2.setText(format.format(zwischensum2)); + + //Das Nettozahldatum wird erzeugt + if ((!jTextFieldSkontofrist.getText().equals("")) && (!jTextFieldSkontofrist.getText().equals("0"))) { + Date auftragsDatum = auftrag2.getVertragsdatum(); + long nettoDatumMili = auftragsDatum.getTime() + (Long.parseLong(jTextFieldSkontofrist.getText()) * 1000 * 60 * 60 * 24); + GregorianCalendar nettoDatum = new GregorianCalendar(); + nettoDatum.setTimeInMillis(nettoDatumMili); + + String tag = String.valueOf(nettoDatum.get(Calendar.DATE)); + String monat = String.valueOf(nettoDatum.get(Calendar.MONTH) + 1); + String jahr = String.valueOf(nettoDatum.get(Calendar.YEAR)); + jTextFieldNettozahldatum.setForeground(Color.red); + jTextFieldNettozahldatum.setText(tag + "." + monat + "." + jahr); + } else { + jTextFieldNettozahldatum.setText("Keins vorhanden!"); + } + + i = 0; + } + } + + /** + * Method leereFelder. Leert alle Textfelder und setzt die Werte wieder + * zurück. + */ + private void clearFields() { + + jTextField2Zwischensumme2.setText(""); + jTextFieldAngebotspreis1.setText(""); + jTextFieldAnmerkung.setText(""); + jTextFieldArtikel.setText(""); + jTextFieldMenge.setText(""); + jTextFieldMwst.setText(""); + jTextFieldNettozahldatum.setText(""); + jTextFieldRabatt.setText(""); + jTextFieldSkontofrist.setText(""); + jTextFieldStueckpreis.setText(""); + jTextFieldZwischensumme1.setText(""); + jTextSkonto.setText(""); + + } + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton jButtonVertraegeEinsehenAuftragsdatumOK; + private javax.swing.JButton jButtonVertraegeEinsehenKundeOK; + private javax.swing.JComboBox jComboBoxVertraegeEinsehenAuftragsdatumJahr; + private javax.swing.JComboBox jComboBoxVertraegeEinsehenAuftragsdatumMonat; + private javax.swing.JComboBox jComboBoxVertraegeEinsehenAuftragsdatumTag; + private javax.swing.JComboBox jComboBoxVertraegeEinsehenKunde; + private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabelAngebotspreis1; + private javax.swing.JLabel jLabelArtikel; + private javax.swing.JLabel jLabelAuftraege; + private javax.swing.JLabel jLabelAuftragsdatum1; + private javax.swing.JLabel jLabelEUR1; + private javax.swing.JLabel jLabelEUR2; + private javax.swing.JLabel jLabelEUR3; + private javax.swing.JLabel jLabelEUR4; + private javax.swing.JLabel jLabelGruen; + private javax.swing.JLabel jLabelMenge; + private javax.swing.JLabel jLabelMwst; + private javax.swing.JLabel jLabelNettozahldatum; + private javax.swing.JLabel jLabelProzent1; + private javax.swing.JLabel jLabelProzent2; + private javax.swing.JLabel jLabelProzent3; + private javax.swing.JLabel jLabelRabatt; + private javax.swing.JLabel jLabelRot; + private javax.swing.JLabel jLabelSkonto; + private javax.swing.JLabel jLabelSkontofrist; + private javax.swing.JLabel jLabelStueckpreis; + private javax.swing.JLabel jLabelTage; + private javax.swing.JLabel jLabelVertraegeEinsehenKunde; + private javax.swing.JLabel jLabelVertragEinsehen; + private javax.swing.JLabel jLabelZwischensumme1; + private javax.swing.JLabel jLabelZwischensumme2; + private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; + private javax.swing.JPanel jPanel3; + private javax.swing.JPanel jPanel4; + private javax.swing.JPanel jPanel5; + private javax.swing.JPanel jPanel6; + private javax.swing.JPanel jPanelLegende; + private javax.swing.JPanel jPanelVertraegeEinsehenDetails; + private javax.swing.JScrollPane jScrollPaneVertraegeEinsehen; + private javax.swing.JSeparator jSeparator1; + private javax.swing.JSeparator jSeparator2; + private javax.swing.JSeparator jSeparator3; + private javax.swing.JTable jTableVertraegeEinsehenVertraege; + private javax.swing.JTextField jTextField2Zwischensumme2; + private javax.swing.JTextField jTextFieldAngebotspreis1; + private javax.swing.JTextField jTextFieldAnmerkung; + private javax.swing.JTextField jTextFieldArtikel; + private javax.swing.JTextField jTextFieldMenge; + private javax.swing.JTextField jTextFieldMwst; + private javax.swing.JTextField jTextFieldNettozahldatum; + private javax.swing.JTextField jTextFieldRabatt; + private javax.swing.JTextField jTextFieldSkontofrist; + private javax.swing.JTextField jTextFieldStueckpreis; + private javax.swing.JTextField jTextFieldVertraegeEinsehen; + private javax.swing.JTextField jTextFieldZwischensumme1; + private javax.swing.JTextField jTextSkonto; + // End of variables declaration//GEN-END:variables +} diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewCustomers.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewCustomers.java index ef3fb4b..879e11a 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewCustomers.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewCustomers.java @@ -32,10 +32,8 @@ import java.util.ArrayList; import java.util.Hashtable; import java.util.Iterator; - import javax.swing.DefaultListModel; import javax.swing.table.DefaultTableModel; - import net.sourceforge.wisim.dao.WiSimDAO; import net.sourceforge.wisim.dao.WiSimDAOException; import net.sourceforge.wisim.model.Customer; @@ -320,7 +318,7 @@ private void jTableKundenAncestorAdded(javax.swing.event.AncestorEvent evt) {//G private void loadCustomers() { try { ArrayList kunden = null; - kunden = dao.getKunden(); + kunden = dao.getCustomers(); Iterator it_kunden = kunden.iterator(); positionen = 0; int row; @@ -351,7 +349,7 @@ private void loadCustomers() { } } - Customer liste = (Customer) it_kunden.next(); + Customer liste = it_kunden.next(); kundenObjekte.put((String.valueOf(positionen)), liste); kundenAuswahl.put((String.valueOf(positionen)), String.valueOf(liste.getId())); jTableKunden.setValueAt(liste.getNachname(), positionen, 0); diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewOrders.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewOrders.java index ede6a17..3d3a8c7 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewOrders.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewOrders.java @@ -35,18 +35,14 @@ import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Calendar; -import java.util.Collection; import java.util.GregorianCalendar; import java.util.Iterator; -import java.util.Vector; - import javax.swing.ImageIcon; import javax.swing.table.DefaultTableModel; - import net.sourceforge.wisim.dao.WiSimDAO; import net.sourceforge.wisim.dao.WiSimDAOException; import net.sourceforge.wisim.model.ComponentContract; -import net.sourceforge.wisim.model.ComponentContractAccount; +import net.sourceforge.wisim.model.ComponentContractInvoice; import net.sourceforge.wisim.model.ComponentContractItem; import net.sourceforge.wisim.model.Refreshable; import net.sourceforge.wisim.model.Supplier; @@ -61,7 +57,7 @@ public class JPanelViewOrders extends javax.swing.JPanel implements Refreshable private WiSimDAO dao; private ArrayList etatListe; - private Collection etatPos; + private ArrayList etatPos; private int etatAnzahl; private int etatPosAnzahl; private double summe; @@ -70,14 +66,14 @@ public class JPanelViewOrders extends javax.swing.JPanel implements Refreshable private double calcedLieferrabatt; private double calcedSkonto; private double calcedGesamt; - private static Color darkgreen = new Color(51, 153, 51); - private static Color red = new Color(255, 0, 0); + private final static Color DARKGREEN = new Color(51, 153, 51); + private final static Color RED = new Color(255, 0, 0); private boolean isBuilt; - private WiSimMainController wiSimMainController; - private DecimalFormat format; + private final WiSimMainController wiSimMainController; + private final DecimalFormat format; //Logger - private WiSimLogger wiSimLogger; + private final WiSimLogger wiSimLogger; /** Creates new form JPanelEtatEinsehen * @param wiSimMainController Der WiSimMainController @@ -87,7 +83,7 @@ public JPanelViewOrders(WiSimMainController wiSimMainController) { wiSimLogger = wiSimMainController.getWiSimLogger(); initDAO(wiSimMainController); etatListe = new ArrayList<>(); - etatPos = new Vector(); + etatPos = new ArrayList<>(); etatAnzahl = 0; etatPosAnzahl = 0; summe = 0; @@ -561,7 +557,7 @@ private void calculateSum() { /** Zeigt die Positionen des selektierten Einzelteilauftrages */ private void getEtatInfo() { - ComponentContract etat = (ComponentContract) etatListe.get(jTableEtatListe.getSelectedRow()); + ComponentContract etat = etatListe.get(jTableEtatListe.getSelectedRow()); jTextFieldLieferrabatt.setText(format.format(etat.getLieferrabatt())); jTextFieldSkonto.setText(format.format(etat.getSkonto())); @@ -578,7 +574,7 @@ private void getEtatInfo() { try { etatPos = dao.getEinzelteilAuftragsPositionen(etat.getNr()); - ComponentContractAccount etatr = dao.getEinzelteilauftragsrechnung(etat.getNr()); + ComponentContractInvoice etatr = dao.getEinzelteilauftragsrechnung(etat.getNr()); jTextLTSumme.setText(format.format(etatr.getBetrag())); summe = etatr.getBetrag(); } catch (WiSimDAOException e) { @@ -594,7 +590,7 @@ private void getEtatInfo() { ComponentContractItem etatPosItem = (ComponentContractItem) etatPos_it.next(); try { - WiSimComponent et = dao.getEinzelteil(etatPosItem.getEtNr()); + WiSimComponent et = dao.getComponent(etatPosItem.getEtNr()); jTableEtatPos.setValueAt(et.getName(), i, 0); jTableEtatPos.setValueAt(String.valueOf(etatPosItem.getBestellmenge()), i, 1); SupplyList lieferliste = dao.getLieferliste(etat.getLieferantNr(), etatPosItem.getEtNr()); @@ -649,9 +645,9 @@ private void getEtatListe() { Graphics g = image.getGraphics(); if (etat.getLieferdatum().before(wiSimMainController.getActDate())) { - g.setColor(darkgreen); + g.setColor(DARKGREEN); } else { - g.setColor(red); + g.setColor(RED); } g.fillRoundRect(10, 11, 10, 10, 3, 3); @@ -667,14 +663,14 @@ private void showLegende() { //Legende Image imageIconGreen = new BufferedImage(28, 30, 2); Graphics g = imageIconGreen.getGraphics(); - g.setColor(darkgreen); + g.setColor(DARKGREEN); g.fillRoundRect(10, 11, 10, 10, 3, 3); ImageIcon ic = new ImageIcon(imageIconGreen); jLabelGruen.setIcon(ic); Image imageIconRed = new BufferedImage(28, 30, 2); g = imageIconRed.getGraphics(); - g.setColor(red); + g.setColor(RED); g.fillRoundRect(10, 11, 10, 10, 3, 3); ic = new ImageIcon(imageIconRed); jLabelRot.setIcon(ic); @@ -700,9 +696,9 @@ private void refreshEtatListe() { Graphics g = image.getGraphics(); if (etat.getLieferdatum().before(new java.sql.Date(wiSimMainController.getActDate().getTime()))) { - g.setColor(darkgreen); + g.setColor(DARKGREEN); } else { - g.setColor(red); + g.setColor(RED); } g.fillRoundRect(10, 11, 10, 10, 3, 3); diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewSuppliers.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewSuppliers.java index c9ee505..8bffbb8 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewSuppliers.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewSuppliers.java @@ -21,23 +21,21 @@ ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ -/* + /* * JPanelLieferantenliste.java * * Created on 13. März 2003, 21:06 */ - package net.sourceforge.wisim.controller; import java.awt.Dimension; import java.text.DecimalFormat; +import java.util.ArrayList; import java.util.Collection; import java.util.Hashtable; import java.util.Iterator; import java.util.Vector; - import javax.swing.table.DefaultTableModel; - import net.sourceforge.wisim.dao.WiSimDAO; import net.sourceforge.wisim.dao.WiSimDAOException; import net.sourceforge.wisim.model.Supplier; @@ -48,42 +46,44 @@ /** * JPanelLieferantenliste zeigt Liste aller Lieferanten. */ - public class JPanelViewSuppliers extends javax.swing.JPanel { - private WiSimDAO dao; - private Vector listeArtikel; - private Hashtable lieferantenObjekte; - private Hashtable lieferantenAuswahl; - private Hashtable zubehoerTabelle; - private int position; - private int positionen; - - // Logger - private WiSimLogger wiSimLogger; - - private DecimalFormat format; - - /** Creates new form JPanelLieferantenliste - * @param wiSimMainController Der Maincontroller - */ - public JPanelViewSuppliers(WiSimMainController wiSimMainController) { - wiSimLogger = wiSimMainController.getWiSimLogger(); - initComponents(); - initDAO(wiSimMainController); - zubehoerTabelle = new Hashtable(); - lieferantenAuswahl = new Hashtable(); - lieferantenObjekte = new Hashtable(); - listeArtikel = new Vector(); - listeArtikel.add("Bitte wählen"); - this.setPreferredSize(new Dimension(800, 600)); - format = new DecimalFormat("###,##0.00"); - } - - private void initDAO(WiSimMainController wiSimMainController) { - dao = wiSimMainController.getDAO(); - } - - private void initComponents() { //GEN-BEGIN:initComponents + + private WiSimDAO dao; + private Vector listeArtikel; + private Hashtable lieferantenObjekte; + private Hashtable lieferantenAuswahl; + private Hashtable zubehoerTabelle; + private int position; + private int positionen; + + // Logger + private WiSimLogger wiSimLogger; + + private DecimalFormat format; + + /** + * Creates new form JPanelLieferantenliste + * + * @param wiSimMainController Der Maincontroller + */ + public JPanelViewSuppliers(WiSimMainController wiSimMainController) { + wiSimLogger = wiSimMainController.getWiSimLogger(); + initComponents(); + initDAO(wiSimMainController); + zubehoerTabelle = new Hashtable(); + lieferantenAuswahl = new Hashtable(); + lieferantenObjekte = new Hashtable(); + listeArtikel = new Vector(); + listeArtikel.add("Bitte wählen"); + this.setPreferredSize(new Dimension(800, 600)); + format = new DecimalFormat("###,##0.00"); + } + + private void initDAO(WiSimMainController wiSimMainController) { + dao = wiSimMainController.getDAO(); + } + + private void initComponents() {//GEN-BEGIN:initComponents jLabelLieferantBearbeitenUeberschrift = new javax.swing.JLabel(); jTextFieldLieferantName = new javax.swing.JTextField(); jTextFieldLieferantVorname = new javax.swing.JTextField(); @@ -258,251 +258,253 @@ public void mouseClicked(java.awt.event.MouseEvent evt) { add(jTextLieferantZuverlaessigkeit); jTextLieferantZuverlaessigkeit.setBounds(510, 410, 30, 20); - } //GEN-END:initComponents - - private void jTableLieferantenMouseClicked(java.awt.event.MouseEvent evt) { //GEN-FIRST:event_jTableLieferantenMouseClicked - loadSupplier(); - } //GEN-LAST:event_jTableLieferantenMouseClicked - - private void jTableLieferantenAncestorAdded(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_jTableLieferantenAncestorAdded - setStandard(); - loadSuppliers(); - loadSupplier(); - } //GEN-LAST:event_jTableLieferantenAncestorAdded - - //Füllt die Tabelle Lieferantenliste mit den in der DB vorhandenen Lieferanten - private void loadSuppliers() { - try { - Collection lieferanten = null; - lieferanten = dao.getLieferanten(); - Iterator it_lieferanten = lieferanten.iterator(); - positionen = 0; - int row; - - while (it_lieferanten.hasNext()) { - - //gesamter Tabelleninhalt wird Zwischengespeichert - Vector tableTempRow = new Vector(); - row = 0; - - while (row < positionen) { - tableTempRow.add(jTableLieferanten.getValueAt(row, 0)); - row++; - } - - //DefaultTableModel mit Variablen Zeilen, 3 TableHeads und nicht editierbaren Zellen - boolean delete = false; - updateSupplierTable(delete); - - if (tableTempRow.size() > 0) { - Iterator it_tableTempRow = tableTempRow.iterator(); - row = 0; - while (it_tableTempRow.hasNext()) { - String complete = (String) it_tableTempRow.next(); - String[] chunks = complete.split(","); - jTableLieferanten.setValueAt(chunks[0], row, 0); - row++; - } - } - - Supplier liste = (Supplier) it_lieferanten.next(); - lieferantenObjekte.put((String.valueOf(positionen)), liste); - lieferantenAuswahl.put((String.valueOf(positionen)), String.valueOf(liste.getId())); - jTableLieferanten.setValueAt(liste.getFirma(), positionen, 0); - positionen++; - } - } catch (WiSimDAOException e) { - wiSimLogger.log("ladeLieferanten()", e); - } - } - - //Lädt einen Kunden zum Bearbeiten aus der Datenbank - private void loadSupplier() { - - //liefert listItem des selektierten Eintrags - String listItem = String.valueOf(jTableLieferanten.getSelectedRow()); - Supplier auswahlLieferant = (Supplier) lieferantenObjekte.get(listItem); - - position = 0; - boolean deleted = true; - updatePositionsTable(deleted); - - if (auswahlLieferant != null) { - jTextFieldLieferantName.setText(auswahlLieferant.getNachname()); - jTextFieldLieferantVorname.setText(auswahlLieferant.getVorname()); - jTextFieldLieferantFirma.setText(auswahlLieferant.getFirma()); - jTextFieldLieferantStrasse.setText(auswahlLieferant.getStrasse()); - jTextFieldLieferantTelefon.setText(auswahlLieferant.getTelefon()); - jTextFieldLieferantFax.setText(auswahlLieferant.getFax()); - jTextFieldLieferantEMail.setText(auswahlLieferant.getEmail()); - jTextFieldLieferantPLZ.setText(String.valueOf(auswahlLieferant.getPlz())); - jTextFieldLieferantOrt.setText(auswahlLieferant.getOrt()); - jTextLieferantLieferqualitaet.setText(auswahlLieferant.getLieferqualitaet()); - jTextLieferantZuverlaessigkeit.setText(auswahlLieferant.getZuverlaessigkeit()); - zubehoerTabelle.clear(); - loadDependingSpareParts(auswahlLieferant.getId()); - } - } - - // Ladet die Einzelteile des Lieferanten - private void loadDependingSpareParts(int id) { - - try { - Collection lieferliste = null; - WiSimComponent einzelteil = null; - lieferliste = dao.getLieferliste(id); - Iterator it_lieferlisten = lieferliste.iterator(); - - while (it_lieferlisten.hasNext()) { - SupplyList liste = (SupplyList) it_lieferlisten.next(); - einzelteil = dao.getEinzelteil(liste.getEinzelteilID()); - - //gesamter Tabelleninhalt wird Zwischengespeichert - Vector tableTempRow = new Vector(); - int row = 0; - - while (row < position) { - tableTempRow.add(jTable1.getValueAt(row, 0) + ";" + jTable1.getValueAt(row, 1) + ";" + jTable1.getValueAt(row, 2)); - row++; - } - - //DefaultTableModel mit Variablen Zeilen, 3 TableHeads und nicht editierbaren Zellen - boolean deleted = false; - updatePositionsTable(deleted); - - if (tableTempRow.size() > 0) { - Iterator it_tableTempRow = tableTempRow.iterator(); - row = 0; - while (it_tableTempRow.hasNext()) { - String complete = (String) it_tableTempRow.next(); - String[] chunks = complete.split(";"); - jTable1.setValueAt(chunks[0], row, 0); - jTable1.setValueAt(chunks[1], row, 1); - jTable1.setValueAt(chunks[2], row, 2); - row++; - } - } - - zubehoerTabelle.put(einzelteil.getName(), String.valueOf(einzelteil.getNr())); - jTable1.setValueAt(einzelteil.getName(), position, 0); - jTable1.setValueAt(String.valueOf(liste.getMindestBestellMenge()), position, 1); - double price = liste.getPreis(); - jTable1.setValueAt(format.format(price), position, 2); - position++; - } - } catch (WiSimDAOException e) { - wiSimLogger.log("ladeZugehoerigeEinzelteile()", e); - } - } - - /** Schreibt die Positions-Tabelle neu - * @param Deleted boolean - */ - private void updatePositionsTable(boolean deleted) { - int rows; - - if (deleted) { - rows = position; - } else { - rows = position + 1; - } - //DefaultTableModel mit Variablen Zeilen, 3 TableHeads und nicht editierbaren Zellen - Object[][] tableInit = new Object[rows][3]; - DefaultTableModel defTable = new DefaultTableModel(tableInit, new String[] { "Artikel", "MinAbnahme", "Preis/Stk" }) { - boolean[] canEdit = new boolean[] { false, false, false }; - public boolean isCellEditable(int rowIndex, int columnIndex) { - return canEdit[columnIndex]; - } - }; - jTable1.setModel(defTable); - jTable1.setFocusable(false); - javax.swing.table.TableColumn column = null; - - //Spaltenbreiten der Tabelle werden gesetzt - for (int i = 0; i < 3; i++) { - column = jTable1.getColumnModel().getColumn(i); - switch (i) { - //Article - case 0 : - column.setPreferredWidth(120); - break; - //Menge - case 1 : - column.setPreferredWidth(15); - break; - //Preis - case 2 : - column.setPreferredWidth(15); - break; - } - } - } - - /** Schreibt die Lieferanten-Tabelle neu - * @param Delete boolean - */ - private void updateSupplierTable(boolean delete) { - int rows; - - if (delete) { - rows = positionen; - } else { - rows = positionen + 1; - } - //DefaultTableModel mit Variablen Zeilen, 1 TableHead und nicht editierbaren Zellen - Object[][] tableInit = new Object[rows][1]; - DefaultTableModel defTable = new DefaultTableModel(tableInit, new String[] { "Lieferant" }) { - boolean[] canEdit = new boolean[] { false }; - - public boolean isCellEditable(int rowIndex, int columnIndex) { - return canEdit[columnIndex]; - } - }; - jTableLieferanten.setModel(defTable); - jTableLieferanten.setFocusable(false); - } - - // Setzt nach dem Speichern und Löschen eines Lieferanten die Werte auf Standard - private void setStandard() { - jTextFieldLieferantVorname.setText(""); - jTextFieldLieferantName.setText(""); - jTextFieldLieferantFirma.setText(""); - jTextFieldLieferantStrasse.setText(""); - jTextFieldLieferantOrt.setText(""); - jTextFieldLieferantPLZ.setText(""); - jTextFieldLieferantTelefon.setText(""); - jTextFieldLieferantEMail.setText(""); - jTextFieldLieferantFax.setText(""); - jTextLieferantLieferqualitaet.setText(""); - jTextLieferantZuverlaessigkeit.setText(""); - position = 0; - boolean deleted = true; - updatePositionsTable(deleted); - } - // Variables declaration - do not modify - private javax.swing.JTextField jTextFieldLieferantStrasse; - private javax.swing.JLabel jLabelLieferantBearbeitenUeberschrift; - private javax.swing.JLabel jLabelLieferantLieferqualitaet2; - private javax.swing.JLabel jLabelLieferantLieferqualitaet1; - private javax.swing.JTextField jTextFieldLieferantOrt; - private javax.swing.JTextField jTextLieferantZuverlaessigkeit; - private javax.swing.JTable jTable1; - private javax.swing.JTextField jTextFieldLieferantVorname; - private javax.swing.JTextField jTextFieldLieferantFirma; - private javax.swing.JScrollPane jScrollPaneListe; - private javax.swing.JTextField jTextLieferantLieferqualitaet; - private javax.swing.JTextField jTextFieldLieferantFax; - private javax.swing.JTextField jTextFieldLieferantName; - private javax.swing.JTextField jTextFieldLieferantTelefon; - private javax.swing.JLabel jLabelLieferantZuverlaessigkeit; - private javax.swing.JLabel jLabelLieferantLieferqualitaet; - private javax.swing.JScrollPane jScrollPanePositionen; - private javax.swing.JLabel jLabelLieferantFax; - private javax.swing.JLabel jLabelLieferantTelefon; - private javax.swing.JLabel jLabel2; - private javax.swing.JLabel jLabel1; - private javax.swing.JTextField jTextFieldLieferantPLZ; - private javax.swing.JTextField jTextFieldLieferantEMail; - private javax.swing.JTable jTableLieferanten; - // End of variables declaration -} \ No newline at end of file + }//GEN-END:initComponents + + private void jTableLieferantenMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableLieferantenMouseClicked + loadSupplier(); + }//GEN-LAST:event_jTableLieferantenMouseClicked + + private void jTableLieferantenAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jTableLieferantenAncestorAdded + setStandard(); + loadSuppliers(); + loadSupplier(); + }//GEN-LAST:event_jTableLieferantenAncestorAdded + + //Füllt die Tabelle Lieferantenliste mit den in der DB vorhandenen Lieferanten + private void loadSuppliers() { + try { + Collection suppliers = null; + suppliers = dao.getSuppliers(); + positionen = 0; + int row; + + for (Supplier supplier : suppliers) { + //gesamter Tabelleninhalt wird Zwischengespeichert + Vector tableTempRow = new Vector(); + row = 0; + + while (row < positionen) { + tableTempRow.add(jTableLieferanten.getValueAt(row, 0)); + row++; + } + + //DefaultTableModel mit Variablen Zeilen, 3 TableHeads und nicht editierbaren Zellen + boolean delete = false; + updateSupplierTable(delete); + + if (tableTempRow.size() > 0) { + Iterator it_tableTempRow = tableTempRow.iterator(); + row = 0; + while (it_tableTempRow.hasNext()) { + String complete = (String) it_tableTempRow.next(); + String[] chunks = complete.split(","); + jTableLieferanten.setValueAt(chunks[0], row, 0); + row++; + } + } + + lieferantenObjekte.put((String.valueOf(positionen)), supplier); + lieferantenAuswahl.put((String.valueOf(positionen)), String.valueOf(supplier.getId())); + jTableLieferanten.setValueAt(supplier.getFirma(), positionen, 0); + positionen++; + } + } catch (WiSimDAOException e) { + wiSimLogger.log("loadSuppliers()", e); + } + } + + //Lädt einen Kunden zum Bearbeiten aus der Datenbank + private void loadSupplier() { + + //liefert listItem des selektierten Eintrags + String listItem = String.valueOf(jTableLieferanten.getSelectedRow()); + Supplier auswahlLieferant = (Supplier) lieferantenObjekte.get(listItem); + + position = 0; + boolean deleted = true; + updatePositionsTable(deleted); + + if (auswahlLieferant != null) { + jTextFieldLieferantName.setText(auswahlLieferant.getNachname()); + jTextFieldLieferantVorname.setText(auswahlLieferant.getVorname()); + jTextFieldLieferantFirma.setText(auswahlLieferant.getFirma()); + jTextFieldLieferantStrasse.setText(auswahlLieferant.getStrasse()); + jTextFieldLieferantTelefon.setText(auswahlLieferant.getTelefon()); + jTextFieldLieferantFax.setText(auswahlLieferant.getFax()); + jTextFieldLieferantEMail.setText(auswahlLieferant.getEmail()); + jTextFieldLieferantPLZ.setText(String.valueOf(auswahlLieferant.getPlz())); + jTextFieldLieferantOrt.setText(auswahlLieferant.getOrt()); + jTextLieferantLieferqualitaet.setText(auswahlLieferant.getLieferqualitaet()); + jTextLieferantZuverlaessigkeit.setText(auswahlLieferant.getZuverlaessigkeit()); + zubehoerTabelle.clear(); + loadDependingSpareParts(auswahlLieferant.getId()); + } + } + + // Ladet die Einzelteile des Lieferanten + private void loadDependingSpareParts(int id) { + + try { + ArrayList lieferliste = null; + WiSimComponent einzelteil = null; + lieferliste = dao.getSupplyLists(id); + Iterator it_lieferlisten = lieferliste.iterator(); + + while (it_lieferlisten.hasNext()) { + SupplyList liste = (SupplyList) it_lieferlisten.next(); + einzelteil = dao.getComponent(liste.getEinzelteilID()); + + //gesamter Tabelleninhalt wird Zwischengespeichert + Vector tableTempRow = new Vector(); + int row = 0; + + while (row < position) { + tableTempRow.add(jTable1.getValueAt(row, 0) + ";" + jTable1.getValueAt(row, 1) + ";" + jTable1.getValueAt(row, 2)); + row++; + } + + //DefaultTableModel mit Variablen Zeilen, 3 TableHeads und nicht editierbaren Zellen + boolean deleted = false; + updatePositionsTable(deleted); + + if (tableTempRow.size() > 0) { + Iterator it_tableTempRow = tableTempRow.iterator(); + row = 0; + while (it_tableTempRow.hasNext()) { + String complete = (String) it_tableTempRow.next(); + String[] chunks = complete.split(";"); + jTable1.setValueAt(chunks[0], row, 0); + jTable1.setValueAt(chunks[1], row, 1); + jTable1.setValueAt(chunks[2], row, 2); + row++; + } + } + + zubehoerTabelle.put(einzelteil.getName(), String.valueOf(einzelteil.getNr())); + jTable1.setValueAt(einzelteil.getName(), position, 0); + jTable1.setValueAt(String.valueOf(liste.getMindestBestellMenge()), position, 1); + double price = liste.getPreis(); + jTable1.setValueAt(format.format(price), position, 2); + position++; + } + } catch (WiSimDAOException e) { + wiSimLogger.log("ladeZugehoerigeEinzelteile()", e); + } + } + + /** + * Schreibt die Positions-Tabelle neu + * + * @param Deleted boolean + */ + private void updatePositionsTable(boolean deleted) { + int rows; + + if (deleted) { + rows = position; + } else { + rows = position + 1; + } + //DefaultTableModel mit Variablen Zeilen, 3 TableHeads und nicht editierbaren Zellen + Object[][] tableInit = new Object[rows][3]; + DefaultTableModel defTable = new DefaultTableModel(tableInit, new String[]{"Artikel", "MinAbnahme", "Preis/Stk"}) { + boolean[] canEdit = new boolean[]{false, false, false}; + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit[columnIndex]; + } + }; + jTable1.setModel(defTable); + jTable1.setFocusable(false); + javax.swing.table.TableColumn column = null; + + //Spaltenbreiten der Tabelle werden gesetzt + for (int i = 0; i < 3; i++) { + column = jTable1.getColumnModel().getColumn(i); + switch (i) { + //Article + case 0: + column.setPreferredWidth(120); + break; + //Menge + case 1: + column.setPreferredWidth(15); + break; + //Preis + case 2: + column.setPreferredWidth(15); + break; + } + } + } + + /** + * Schreibt die Lieferanten-Tabelle neu + * + * @param Delete boolean + */ + private void updateSupplierTable(boolean delete) { + int rows; + + if (delete) { + rows = positionen; + } else { + rows = positionen + 1; + } + //DefaultTableModel mit Variablen Zeilen, 1 TableHead und nicht editierbaren Zellen + Object[][] tableInit = new Object[rows][1]; + DefaultTableModel defTable = new DefaultTableModel(tableInit, new String[]{"Lieferant"}) { + boolean[] canEdit = new boolean[]{false}; + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit[columnIndex]; + } + }; + jTableLieferanten.setModel(defTable); + jTableLieferanten.setFocusable(false); + } + + // Setzt nach dem Speichern und Löschen eines Lieferanten die Werte auf Standard + private void setStandard() { + jTextFieldLieferantVorname.setText(""); + jTextFieldLieferantName.setText(""); + jTextFieldLieferantFirma.setText(""); + jTextFieldLieferantStrasse.setText(""); + jTextFieldLieferantOrt.setText(""); + jTextFieldLieferantPLZ.setText(""); + jTextFieldLieferantTelefon.setText(""); + jTextFieldLieferantEMail.setText(""); + jTextFieldLieferantFax.setText(""); + jTextLieferantLieferqualitaet.setText(""); + jTextLieferantZuverlaessigkeit.setText(""); + position = 0; + boolean deleted = true; + updatePositionsTable(deleted); + } + // Variables declaration - do not modify + private javax.swing.JTextField jTextFieldLieferantStrasse; + private javax.swing.JLabel jLabelLieferantBearbeitenUeberschrift; + private javax.swing.JLabel jLabelLieferantLieferqualitaet2; + private javax.swing.JLabel jLabelLieferantLieferqualitaet1; + private javax.swing.JTextField jTextFieldLieferantOrt; + private javax.swing.JTextField jTextLieferantZuverlaessigkeit; + private javax.swing.JTable jTable1; + private javax.swing.JTextField jTextFieldLieferantVorname; + private javax.swing.JTextField jTextFieldLieferantFirma; + private javax.swing.JScrollPane jScrollPaneListe; + private javax.swing.JTextField jTextLieferantLieferqualitaet; + private javax.swing.JTextField jTextFieldLieferantFax; + private javax.swing.JTextField jTextFieldLieferantName; + private javax.swing.JTextField jTextFieldLieferantTelefon; + private javax.swing.JLabel jLabelLieferantZuverlaessigkeit; + private javax.swing.JLabel jLabelLieferantLieferqualitaet; + private javax.swing.JScrollPane jScrollPanePositionen; + private javax.swing.JLabel jLabelLieferantFax; + private javax.swing.JLabel jLabelLieferantTelefon; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel1; + private javax.swing.JTextField jTextFieldLieferantPLZ; + private javax.swing.JTextField jTextFieldLieferantEMail; + private javax.swing.JTable jTableLieferanten; + // End of variables declaration +} diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelWarehouse.form b/wisim/src/java/net/sourceforge/wisim/controller/JPanelWarehouse.form index 77bd820..b3af5a2 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelWarehouse.form +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelWarehouse.form @@ -1,6 +1,6 @@ - + @@ -11,6 +11,14 @@ + + + + + + + + @@ -67,7 +75,7 @@ - + @@ -337,9 +345,9 @@ - + - + @@ -349,7 +357,7 @@ - + @@ -357,9 +365,9 @@ - + - + diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelWarehouse.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelWarehouse.java index 882ec2c..f10e302 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelWarehouse.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelWarehouse.java @@ -35,10 +35,8 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; - import javax.swing.ImageIcon; import javax.swing.table.DefaultTableModel; - import net.sourceforge.wisim.dao.WiSimDAO; import net.sourceforge.wisim.dao.WiSimDAOException; import net.sourceforge.wisim.model.Article; @@ -60,22 +58,22 @@ public class JPanelWarehouse extends javax.swing.JPanel implements Refreshable { private WiSimDAO dao; private Collection lagerplaetze; private ArrayList einzelteileListe; - private ArrayList artikelListe; + private ArrayList articles; private int etAnzahl; - private ArrayList etElems; + private final ArrayList etElems; private String actLgPlatz; private boolean isBuilt; - private static Color darkgreen = new Color(51, 153, 51); - private static Color red = new Color(255, 0, 0); - private static Color orange = new Color(255, 153, 0); - private static Color darkgreenDither = new Color(51, 153, 51, 50); - private static Color redDither = new Color(255, 0, 0, 50); - private static Color orangeDither = new Color(255, 153, 0, 50); - private static Color blackDither = new Color(255, 255, 255, 50); - private WiSimMainController wiSimMainController; + private static final Color DARKGREEN = new Color(51, 153, 51); + private static final Color RED = new Color(255, 0, 0); + private static final Color ORANGE = new Color(255, 153, 0); + private static final Color DARKGREENDITHER = new Color(51, 153, 51, 50); + private static final Color REDDITHER = new Color(255, 0, 0, 50); + private static final Color ORANGEDITHER = new Color(255, 153, 0, 50); + private static final Color BLACKDITHER = new Color(255, 255, 255, 50); + private final WiSimMainController wiSimMainController; //Logger - private WiSimLogger wiSimLogger; + private final WiSimLogger wiSimLogger; /** * Creates new form JPanelLager @@ -88,7 +86,7 @@ public JPanelWarehouse(WiSimMainController wiSimMainController) { initDAO(wiSimMainController); lagerplaetze = new ArrayList<>(); einzelteileListe = new ArrayList<>(); - artikelListe = new ArrayList<>(); + articles = new ArrayList<>(); etElems = new ArrayList<>(); etAnzahl = 0; actLgPlatz = ""; @@ -384,6 +382,7 @@ public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit[columnIndex]; } + @Override public Class getColumnClass(int c) { return getValueAt(0, c).getClass(); } @@ -433,15 +432,15 @@ public Class getColumnClass(int c) { public void buildMainTable() { try { einzelteileListe = dao.getEinzelteilLagerElement(); - artikelListe = dao.getArtikelLagerElement(); + articles = dao.getArtikelLagerElement(); } catch (WiSimDAOException e) { wiSimLogger.log("buildGesamtListeTabelle()", e); } - etAnzahl = einzelteileListe.size() + artikelListe.size(); + etAnzahl = einzelteileListe.size() + articles.size(); setMainTable(); int i = 0; - Iterator art_it = artikelListe.iterator(); + Iterator art_it = articles.iterator(); while (art_it.hasNext()) { ComponentWarehouseItem artikel = (ComponentWarehouseItem) art_it.next(); jTableGesamtliste.setValueAt(artikel.getEinzelteilName(), i, 0); @@ -466,7 +465,7 @@ public void buildMainTable() { double actBestand = artikel.getBestand(); double actMaxBestand = artikel.getMaxBestand(); - double rects = (double) (actBestand / actMaxBestand) * 5; + double rects = actBestand / actMaxBestand * 5; int filledrectsCount = (int) Math.round(rects); if (artikel.getBestand() < artikel.getMinBestand()) { @@ -504,7 +503,7 @@ public void buildMainTable() { double actBestand = einzelteil.getBestand(); double actMaxBestand = einzelteil.getMaxBestand(); - double rects = (double) (actBestand / actMaxBestand) * 5; + double rects = actBestand / actMaxBestand * 5; int filledrectsCount = (int) Math.round(rects); if (einzelteil.getBestand() < einzelteil.getMinBestand()) { @@ -526,14 +525,14 @@ private void buildLegend() { //Gr�n Image imageIconGreen = new BufferedImage(70, 30, 2); Graphics g = imageIconGreen.getGraphics(); - g.setColor(darkgreen); + g.setColor(DARKGREEN); g.fillRect(10, 11, 10, 10); g.fillRect(22, 11, 10, 10); g.fillRect(34, 11, 10, 10); g.drawRect(46, 11, 9, 9); g.drawRect(58, 11, 9, 9); - g.setColor(darkgreenDither); + g.setColor(DARKGREENDITHER); g.fillRect(46, 11, 9, 9); g.fillRect(58, 11, 9, 9); @@ -544,14 +543,14 @@ private void buildLegend() { //Orange Image imageIconOrange = new BufferedImage(70, 30, 2); g = imageIconOrange.getGraphics(); - g.setColor(orange); + g.setColor(ORANGE); g.fillRect(10, 11, 10, 10); g.fillRect(22, 11, 10, 10); g.fillRect(34, 11, 10, 10); g.drawRect(46, 11, 9, 9); g.drawRect(58, 11, 9, 9); - g.setColor(orangeDither); + g.setColor(ORANGEDITHER); g.fillRect(46, 11, 9, 9); g.fillRect(58, 11, 9, 9); ic = new ImageIcon(imageIconOrange); @@ -561,14 +560,14 @@ private void buildLegend() { //Rot Image imageIconRed = new BufferedImage(70, 30, 2); g = imageIconRed.getGraphics(); - g.setColor(red); + g.setColor(RED); g.fillRect(10, 11, 10, 10); g.fillRect(22, 11, 10, 10); g.fillRect(34, 11, 10, 10); g.drawRect(46, 11, 9, 9); g.drawRect(58, 11, 9, 9); - g.setColor(redDither); + g.setColor(REDDITHER); g.fillRect(46, 11, 9, 9); g.fillRect(58, 11, 9, 9); ic = new ImageIcon(imageIconRed); @@ -585,7 +584,7 @@ private void buildLegend() { g.drawRect(34, 11, 9, 9); g.drawRect(46, 11, 9, 9); g.drawRect(58, 11, 9, 9); - g.setColor(blackDither); + g.setColor(BLACKDITHER); g.fillRect(22, 11, 9, 9); g.fillRect(34, 11, 9, 9); g.fillRect(46, 11, 9, 9); @@ -604,7 +603,7 @@ private void buildLegend() { g.fillRect(46, 11, 10, 10); g.drawRect(58, 11, 9, 9); - g.setColor(blackDither); + g.setColor(BLACKDITHER); g.fillRect(58, 11, 9, 9); ic = new ImageIcon(imageIconKapazBaldErschoepft); jLabelKapazBaldErschoepft.setIcon(ic); @@ -630,7 +629,7 @@ private void buildLegend() { private void getArticle() { if (jComboBoxArtikelImLager.getSelectedItem() != null) { if (!jComboBoxArtikelImLager.getSelectedItem().toString().equals("leer")) { - ComponentWarehouseItem selectedElem = (ComponentWarehouseItem) etElems.get(jComboBoxArtikelImLager.getSelectedIndex()); + ComponentWarehouseItem selectedElem = etElems.get(jComboBoxArtikelImLager.getSelectedIndex()); jTextFieldMindestbestand.setText(String.valueOf(selectedElem.getMinBestand())); jTextFieldBestand.setText(String.valueOf(selectedElem.getBestand())); jTextFieldBelegung.setText(String.valueOf(selectedElem.getBestand() * 100 / selectedElem.getMaxBestand())); @@ -660,7 +659,7 @@ private void getArticleData() { if (jComboBoxLagerplatz.getSelectedItem() != null) { if (!jComboBoxLagerplatz.getSelectedItem().toString().equals("Select:") && !jComboBoxLagerplatz.getSelectedItem().toString().equals(actLgPlatz)) { jComboBoxArtikelImLager.removeAllItems(); - etElems.removeAll(etElems); + etElems.clear(); actLgPlatz = jComboBoxLagerplatz.getSelectedItem().toString(); ArrayList etElemsCol = new ArrayList<>(); @@ -697,7 +696,7 @@ private void getArticleData() { ComponentWarehouseItem etElem = (ComponentWarehouseItem) etElems_it.next(); WiSimComponent et = new WiSimComponent(); try { - et = dao.getEinzelteil(etElem.getId()); + et = dao.getComponent(etElem.getId()); } catch (WiSimDAOException e) { wiSimLogger.log("getArtikelImLagerplatzInfo()", e); } @@ -718,7 +717,7 @@ private void getArticleData() { if (jComboBoxLagerplatz.getSelectedItem().toString().equals("Select:")) { actLgPlatz = jComboBoxLagerplatz.getSelectedItem().toString(); jComboBoxArtikelImLager.removeAllItems(); - etElems.removeAll(etElems); + etElems.clear(); jTextFieldMindestbestand.setText(""); jTextFieldBestand.setText(""); jTextFieldBelegung.setText(""); @@ -754,7 +753,7 @@ private void refreshMainTable() { //Update der Lagerplatz-Detailansicht if (!jComboBoxLagerplatz.getSelectedItem().equals("Select:") && !jComboBoxArtikelImLager.getSelectedItem().equals("leer")) { - etElems.removeAll(etElems); + etElems.clear(); ArrayList etElemsCol = new ArrayList<>(); ArrayList artElemsCol = new ArrayList<>(); @@ -789,7 +788,7 @@ private void refreshMainTable() { ComponentWarehouseItem etElem = (ComponentWarehouseItem) etElems_it.next(); WiSimComponent et = new WiSimComponent(); try { - et = dao.getEinzelteil(etElem.getId()); + et = dao.getComponent(etElem.getId()); } catch (WiSimDAOException e) { wiSimLogger.log("refreshLagerGesamtliste()", e); } @@ -799,7 +798,7 @@ private void refreshMainTable() { etElems.add(etElem); } - ComponentWarehouseItem selectedElem = (ComponentWarehouseItem) etElems.get(jComboBoxArtikelImLager.getSelectedIndex()); + ComponentWarehouseItem selectedElem = etElems.get(jComboBoxArtikelImLager.getSelectedIndex()); //Aktualisiere nur wenn sich der Bestand ge�ndert hat! if (selectedElem.getBestand() != Integer.parseInt(jTextFieldBestand.getText())) { @@ -813,32 +812,29 @@ private void refreshMainTable() { //Update der Gesamtliste try { einzelteileListe = dao.getEinzelteilLagerElement(); - artikelListe = dao.getArtikelLagerElement(); + articles = dao.getArtikelLagerElement(); } catch (WiSimDAOException e) { wiSimLogger.log("refreshLagerGesamtliste()", e); } int i = 0; - - Iterator art_it = artikelListe.iterator(); - while (art_it.hasNext()) { - ComponentWarehouseItem artikel = (ComponentWarehouseItem) art_it.next(); - - //Aktualisiere nur wenn sich der Bestand ge�ndert hat! - if (artikel.getBestand() != Integer.parseInt((String) jTableGesamtliste.getValueAt(i, 1))) { - jTableGesamtliste.setValueAt(String.valueOf(artikel.getBestand()), i, 1); + for (ComponentWarehouseItem article : articles) { + + //Aktualisiere nur wenn sich der Bestand geändert hat! + if (article.getBestand() != Integer.parseInt((String) jTableGesamtliste.getValueAt(i, 1))) { + jTableGesamtliste.setValueAt(String.valueOf(article.getBestand()), i, 1); IconGenerater iconGen = new IconGenerater(); - double actBestand = artikel.getBestand(); - double actMaxBestand = artikel.getMaxBestand(); + double actBestand = article.getBestand(); + double actMaxBestand = article.getMaxBestand(); - double rects = (double) (actBestand / actMaxBestand) * 5; + double rects = actBestand / actMaxBestand * 5; int filledrectsCount = (int) Math.round(rects); - if (artikel.getBestand() < artikel.getMinBestand()) { + if (article.getBestand() < article.getMinBestand()) { jTableGesamtliste.setValueAt(iconGen.generateIcon(2, filledrectsCount), i, 5); - } else if ((artikel.getBestand() - artikel.getMinBestand() / 2) < artikel.getMinBestand()) { + } else if ((article.getBestand() - article.getMinBestand() / 2) < article.getMinBestand()) { jTableGesamtliste.setValueAt(iconGen.generateIcon(1, filledrectsCount), i, 5); } else { jTableGesamtliste.setValueAt(iconGen.generateIcon(0, filledrectsCount), i, 5); @@ -859,7 +855,7 @@ private void refreshMainTable() { double actBestand = einzelteil.getBestand(); double actMaxBestand = einzelteil.getMaxBestand(); - double rects = (double) (actBestand / actMaxBestand) * 5; + double rects = actBestand / actMaxBestand * 5; int filledrectsCount = (int) Math.round(rects); if (einzelteil.getBestand() < einzelteil.getMinBestand()) { diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelWorkPlaceStore.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelWorkPlaceStore.java index 982964e..e95f823 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelWorkPlaceStore.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelWorkPlaceStore.java @@ -21,19 +21,16 @@ ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ -/* + /* * JPanelArbeitsplatzlager.java * * Created on 21. März 2003, 21:04 */ - package net.sourceforge.wisim.controller; import java.util.ArrayList; -import java.util.Collection; import java.util.Iterator; import java.util.Vector; - import javax.swing.JComponent; import javax.swing.JProgressBar; import javax.swing.JTable; @@ -42,7 +39,6 @@ import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; - import net.sourceforge.wisim.dao.WiSimDAO; import net.sourceforge.wisim.dao.WiSimDAOException; import net.sourceforge.wisim.dao.WiSimDAOWriteException; @@ -54,52 +50,55 @@ /** * Gibt eine Tabellenübersicht aller Arbeitsplätze mit den Beständen der - * jeweiligen Einzelteile aus. Es lassen sich die Anzahl der Arbeiter - * pro WorkPlace einstellen. - * @author benjamin.pasero + * jeweiligen Einzelteile aus. Es lassen sich die Anzahl der Arbeiter pro + * WorkPlace einstellen. + * + * @author benjamin.pasero */ public class JPanelWorkPlaceStore extends javax.swing.JPanel implements Refreshable { - private WiSimDAO dao; - private ArrayList arbeitsplaetze; - private Collection arbeitsplatzLager; - private int apAnzahl; - private int apElemAnzahl; - private JProgressBar jprg; - private boolean isBuilt; - private Vector tempEingangslagerBestand; - private Vector tempAusgangslagerBestand; - private WiSimMainController wiSimMainController; - - //Logger - private WiSimLogger wiSimLogger; - - /** Creates new form JPanelArbeitsplatzlager - * @param wiSimMainController - */ - public JPanelWorkPlaceStore(WiSimMainController wiSimMainController) { - this.wiSimMainController = wiSimMainController; - wiSimLogger = wiSimMainController.getWiSimLogger(); - initDAO(wiSimMainController); - arbeitsplaetze = new ArrayList<>(); - arbeitsplatzLager = new Vector(); - apAnzahl = 0; - apElemAnzahl = 0; - isBuilt = false; - tempEingangslagerBestand = new Vector(); - tempAusgangslagerBestand = new Vector(); - initComponents(); - } - - private void initDAO(WiSimMainController wiSimMainController) { - dao = wiSimMainController.getDAO(); - } - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ + private WiSimDAO dao; + private ArrayList arbeitsplaetze; + private ArrayList arbeitsplatzLager; + private int apAnzahl; + private int apElemAnzahl; + private JProgressBar jprg; + private boolean isBuilt; + private Vector tempEingangslagerBestand; + private Vector tempAusgangslagerBestand; + private WiSimMainController wiSimMainController; + + //Logger + private WiSimLogger wiSimLogger; + + /** + * Creates new form JPanelArbeitsplatzlager + * + * @param wiSimMainController + */ + public JPanelWorkPlaceStore(WiSimMainController wiSimMainController) { + this.wiSimMainController = wiSimMainController; + wiSimLogger = wiSimMainController.getWiSimLogger(); + initDAO(wiSimMainController); + arbeitsplaetze = new ArrayList<>(); + arbeitsplatzLager = new ArrayList<>(); + apAnzahl = 0; + apElemAnzahl = 0; + isBuilt = false; + tempEingangslagerBestand = new Vector(); + tempAusgangslagerBestand = new Vector(); + initComponents(); + } + + private void initDAO(WiSimMainController wiSimMainController) { + dao = wiSimMainController.getDAO(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ private void initComponents() {//GEN-BEGIN:initComponents jLabelArbeitsplatzlager = new javax.swing.JLabel(); jPanelArbeitsplatzlager = new javax.swing.JPanel(); @@ -278,37 +277,37 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { }//GEN-END:initComponents private void formAncestorRemoved(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_formAncestorRemoved - wiSimMainController.removeActivPanel(this); + wiSimMainController.removeActivPanel(this); }//GEN-LAST:event_formAncestorRemoved private void formAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_formAncestorAdded - setIsBuilt(true); - wiSimMainController.addActivPanel(this); + setIsBuilt(true); + wiSimMainController.addActivPanel(this); }//GEN-LAST:event_formAncestorAdded private void jPanelArbeiterAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jPanelArbeiterAncestorAdded - //Reset des Arbeiter-Panes - jTextFieldArbeitsplatz.setText(""); - jSpinnerArbeiter.setModel(new SpinnerNumberModel(0, 0, 0, 0)); + //Reset des Arbeiter-Panes + jTextFieldArbeitsplatz.setText(""); + jSpinnerArbeiter.setModel(new SpinnerNumberModel(0, 0, 0, 0)); }//GEN-LAST:event_jPanelArbeiterAncestorAdded private void jButtonOkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOkActionPerformed - if (!jTextFieldArbeitsplatz.getText().equals("")) { - setWorkerNumber(Integer.parseInt(jTextFieldArbeitsplatz.getText()), (Integer) jSpinnerArbeiter.getValue()); - } - jTextFieldArbeitsplatz.grabFocus(); + if (!jTextFieldArbeitsplatz.getText().equals("")) { + setWorkerNumber(Integer.parseInt(jTextFieldArbeitsplatz.getText()), (Integer) jSpinnerArbeiter.getValue()); + } + jTextFieldArbeitsplatz.grabFocus(); }//GEN-LAST:event_jButtonOkActionPerformed private void jTableGesamtlisteAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jTableGesamtlisteAncestorAdded - resetMainTable(); + resetMainTable(); }//GEN-LAST:event_jTableGesamtlisteAncestorAdded private void jTableArbeitsplaetzeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableArbeitsplaetzeMouseClicked - getWorkPlaceStorageElements(); + getWorkPlaceStorageElements(); }//GEN-LAST:event_jTableArbeitsplaetzeMouseClicked private void jScrollPaneArbeitsplaetzeAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jScrollPaneArbeitsplaetzeAncestorAdded - getWorkPlaceStorage(); + getWorkPlaceStorage(); }//GEN-LAST:event_jScrollPaneArbeitsplaetzeAncestorAdded // Variables declaration - do not modify//GEN-BEGIN:variables @@ -327,374 +326,401 @@ private void jScrollPaneArbeitsplaetzeAncestorAdded(javax.swing.event.AncestorEv private javax.swing.JTextField jTextFieldArbeitsplatz; // End of variables declaration//GEN-END:variables - /** Holt alle Eingangs und Ausgangslager aus der DB. */ - public void getWorkPlaceStorage() { - try { - arbeitsplaetze = dao.getArbeitsplaetze(); - } catch (WiSimDAOException e) { - wiSimLogger.log("getArbeitsplatzLager()", e); - } - apAnzahl = arbeitsplaetze.size(); - - setWorkPlaceStorage(); - int i = 0; - Iterator ap_it = arbeitsplaetze.iterator(); - while (ap_it.hasNext()) { - WorkPlace ap = (WorkPlace) ap_it.next(); - - jTableArbeitsplaetze.setValueAt(String.valueOf(ap.getNr()), i, 0); - jTableArbeitsplaetze.setValueAt(ap.getBeschreibung(), i, 1); - - String vorgaenger = ""; - int[] vorgaengerNr = ap.getVorgaenger(); - if (vorgaengerNr.length > 0) { - vorgaenger = String.valueOf(vorgaengerNr[0]); - int x = 1; - while (x < vorgaengerNr.length) { - vorgaenger = vorgaenger + ", " + vorgaengerNr[x]; - x++; - } - } - - String nachfolger = ""; - int[] nachfolgerNr = ap.getNachfolger(); - if (nachfolgerNr.length > 0) { - nachfolger = String.valueOf(nachfolgerNr[0]); - int x = 1; - while (x < nachfolgerNr.length) { - nachfolger = nachfolger + ", " + nachfolgerNr[x]; - x++; - } - } - - if (vorgaenger.equals("0")) - jTableArbeitsplaetze.setValueAt("-", i, 2); - else - jTableArbeitsplaetze.setValueAt(vorgaenger, i, 2); - - if (nachfolger.equals("0")) - jTableArbeitsplaetze.setValueAt("-", i, 3); - else - jTableArbeitsplaetze.setValueAt(nachfolger, i, 3); - - jTableArbeitsplaetze.setValueAt(String.valueOf(ap.getDauer()), i, 4); - - WorkPlaceStore apLager = new WorkPlaceStore(); - try { - apLager = dao.getArbeitsplatzLager(ap.getNr(), 26, "Eingang"); - } catch (WiSimDAOException e) { - wiSimLogger.log("getArbeitsplatzLager()", e); - } - - tempEingangslagerBestand.add(String.valueOf(apLager.getBestand())); - - jprg = new JProgressBar(0, 10); - jprg.setValue(apLager.getBestand()); - jprg.setToolTipText("Bestand: " + apLager.getBestand()); - if (vorgaenger.equals("0")) - jprg.setEnabled(false); - jTableArbeitsplaetze.setValueAt(jprg, i, 5); - - try { - apLager = dao.getArbeitsplatzLager(ap.getNr(), 26, "Ausgang"); - } catch (WiSimDAOException e) { - wiSimLogger.log("getArbeitsplatzLager()", e); - } - - tempAusgangslagerBestand.add(String.valueOf(apLager.getBestand())); - - jprg = new JProgressBar(0, 10); - jprg.setValue(apLager.getBestand()); - jprg.setToolTipText("Bestand: " + apLager.getBestand()); - if (nachfolger.equals("0")) - jprg.setEnabled(false); - jTableArbeitsplaetze.setValueAt(jprg, i, 6); - - i++; - } - } - - /** Zeigt die Elemente eines Arbeitsplatzlagers an. */ - private void getWorkPlaceStorageElements() { - WorkPlace ap = (WorkPlace) arbeitsplaetze.get(jTableArbeitsplaetze.getSelectedRow()); - - //Arbeiter-Pane - jTextFieldArbeitsplatz.setText(String.valueOf(ap.getNr())); - jSpinnerArbeiter.setModel(new SpinnerNumberModel(ap.getAnzahlArbeiter(), 0, 10, 1)); - - try { - arbeitsplatzLager = dao.getArbeitsplatzLager(ap.getNr(), "Einzelteil"); - } catch (WiSimDAOException e) { - wiSimLogger.log("getArbeitsplatzLagerElemente()", e); - } - apElemAnzahl = arbeitsplatzLager.size(); - - if (apElemAnzahl > 0) { - buildWorkPlaceStoreElementsTable(); - } else { - resetMainTable(); - } - } - - /** Baut die WorkPlace-Tabelle */ - public void buildWorkPlaceStoreElementsTable() { - setWorkPlaceStoragerElementsTable(); - int i = 0; - Iterator arbeitsplatzLager_it = arbeitsplatzLager.iterator(); - while (arbeitsplatzLager_it.hasNext()) { - WorkPlaceStore apLager = (WorkPlaceStore) arbeitsplatzLager_it.next(); - - WiSimComponent et = new WiSimComponent(); - try { - et = dao.getEinzelteil(apLager.getEinzelteilNr()); - } catch (WiSimDAOException e) { - wiSimLogger.log("buildArbeitsplatzLagerElementeTabelle()", e); - } - - jTableGesamtliste.setValueAt(et.getName(), i, 0); - jTableGesamtliste.setValueAt(String.valueOf(apLager.getBestand()), i, 1); - jTableGesamtliste.setValueAt(String.valueOf(apLager.getMaxBestand()), i, 2); - - IconGenerater iconGen = new IconGenerater(); - - double actBestand = apLager.getBestand(); - double actMaxBestand = apLager.getMaxBestand(); - - double rects = (double) (actBestand / actMaxBestand) * 5; - int filledrectsCount = (int) Math.round(rects); - - if (apLager.getBestand() < (apLager.getMaxBestand() / 4)) { - jTableGesamtliste.setValueAt(iconGen.generateIcon(2, filledrectsCount), i, 3); - } else if ((apLager.getBestand() < (apLager.getMaxBestand() / 2))) { - jTableGesamtliste.setValueAt(iconGen.generateIcon(1, filledrectsCount), i, 3); - } else { - jTableGesamtliste.setValueAt(iconGen.generateIcon(0, filledrectsCount), i, 3); - } - i++; - } - } - - /** Erstellt die ArbeitsplatzTabelle. */ - private void setWorkPlaceStorage() { - //DefaultTableModel mit Variablen Zeilen, 4 TableHeads und nicht editierbaren Zellen - Object[][] tableInit = new Object[apAnzahl][7]; - DefaultTableModel defTable = new DefaultTableModel(tableInit, new String[] { "Nr. ", "Beschreibung", "Vorgänger", "Nachfolger", "Zeit", "Eingangslager", "Ausgangslager" }) { - boolean[] canEdit = new boolean[] { false, false, false, false, false, false, false }; - public boolean isCellEditable(int rowIndex, int columnIndex) { - return canEdit[columnIndex]; - } - public Class getColumnClass(int c) { - return getValueAt(0, c).getClass(); - } - }; - jTableArbeitsplaetze.setModel(defTable); - jTableArbeitsplaetze.setFocusable(false); - jTableArbeitsplaetze.getTableHeader().setReorderingAllowed(false); - - javax.swing.table.TableColumn column = null; - - //Spaltenbreiten der Tabelle werden gesetzt - for (int i = 0; i < 7; i++) { - column = jTableArbeitsplaetze.getColumnModel().getColumn(i); - switch (i) { - //Nr - case 0 : - column.setPreferredWidth(30); - break; - //Beschreibung - case 1 : - column.setPreferredWidth(300); - break; - //Vorgänger - case 2 : - column.setPreferredWidth(80); - break; - //Nachfolger - case 3 : - column.setPreferredWidth(80); - break; - //Zeit - case 4 : - column.setPreferredWidth(40); - break; - //Eingangslager - case 5 : - column.setPreferredWidth(110); - break; - //Ausgangslager - case 6 : - column.setPreferredWidth(110); - break; - } - } - jTableArbeitsplaetze.setDefaultRenderer(JComponent.class, new JComponentCellRenderer()); - jTableArbeitsplaetze.setDefaultEditor(JComponent.class, new JComponentCellEditor()); - } - - /** Erstellt die ArbeitsplatzLagerElementeTabelle. */ - private void setWorkPlaceStoragerElementsTable() { - //DefaultTableModel mit Variablen Zeilen, 4 TableHeads und nicht editierbaren Zellen - Object[][] tableInit = new Object[4][4]; - DefaultTableModel defTable = new DefaultTableModel(tableInit, new String[] { "Artikelname", "aktueller Bestand", "Max. Bestand", "Belegung" }) { - boolean[] canEdit = new boolean[] { false, false, false, false }; - public boolean isCellEditable(int rowIndex, int columnIndex) { - return canEdit[columnIndex]; - } - public Class getColumnClass(int c) { - return getValueAt(0, c).getClass(); - } - }; - jTableGesamtliste.setModel(defTable); - jTableGesamtliste.setEnabled(false); - jTableGesamtliste.getTableHeader().setReorderingAllowed(false); - } - - /** Refreshed beide Tabellen */ - private void refreshWorkPlaceStorageElementsTable() { - - //Refresh Tabelle Arbeitsplaetze - try { - arbeitsplaetze = dao.getArbeitsplaetze(); - } catch (WiSimDAOException e) { - wiSimLogger.log("refreshArbeitsplatzLagerElementeTabelle()", e); - } - - int i = 0; - Iterator ap_it = arbeitsplaetze.iterator(); - while (ap_it.hasNext()) { - WorkPlace ap = (WorkPlace) ap_it.next(); - - WorkPlaceStore apLager = new WorkPlaceStore(); - try { - apLager = dao.getArbeitsplatzLager(ap.getNr(), 26, "Eingang"); - } catch (WiSimDAOException e) { - wiSimLogger.log("refreshArbeitsplatzLagerElementeTabelle()", e); - } - - //Zelle wird nur refreshed wenn sich der Bestand geändert hat! - if (!((String) tempEingangslagerBestand.get(i)).equals(String.valueOf(apLager.getBestand()))) { - tempEingangslagerBestand.setElementAt(String.valueOf(apLager.getBestand()), i); - jprg = new JProgressBar(0, 10); - jprg.setValue(apLager.getBestand()); - jprg.setToolTipText("Bestand: " + apLager.getBestand()); - jTableArbeitsplaetze.setValueAt(jprg, i, 5); - } - - try { - apLager = dao.getArbeitsplatzLager(ap.getNr(), 26, "Ausgang"); - } catch (WiSimDAOException e) { - wiSimLogger.log("refreshArbeitsplatzLagerElementeTabelle()", e); - } - - //Zelle wird nur refreshed wenn sich der Bestand geändert hat! - if (!((String) tempAusgangslagerBestand.get(i)).equals(String.valueOf(apLager.getBestand()))) { - tempAusgangslagerBestand.setElementAt(String.valueOf(apLager.getBestand()), i); - jprg = new JProgressBar(0, 10); - jprg.setValue(apLager.getBestand()); - jprg.setToolTipText("Bestand: " + apLager.getBestand()); - jTableArbeitsplaetze.setValueAt(jprg, i, 6); - } - i++; - } - - //Refresh Tabelle WorkPlaceStore - if (jTableArbeitsplaetze.getSelectedRow() >= 0) { - WorkPlace ap = (WorkPlace) arbeitsplaetze.get(jTableArbeitsplaetze.getSelectedRow()); - try { - arbeitsplatzLager = dao.getArbeitsplatzLager(ap.getNr(), "Einzelteil"); - } catch (WiSimDAOException e) { - wiSimLogger.log("refreshArbeitsplatzLagerElementeTabelle()", e); - } - apElemAnzahl = arbeitsplatzLager.size(); - i = 0; - if (apElemAnzahl > 0) { - Iterator arbeitsplatzLager_it = arbeitsplatzLager.iterator(); - while (arbeitsplatzLager_it.hasNext()) { - WorkPlaceStore apLager = (WorkPlaceStore) arbeitsplatzLager_it.next(); - - //Zelle wird nur aktualisiert wenn sich der Bestand geändert hat. - if (jTableGesamtliste.getValueAt(i, 1) != null && !jTableGesamtliste.getValueAt(i, 1).equals("")) { - if (apLager.getBestand() != Integer.parseInt((String) jTableGesamtliste.getValueAt(i, 1))) { - - jTableGesamtliste.setValueAt(String.valueOf(apLager.getBestand()), i, 1); - - IconGenerater iconGen = new IconGenerater(); - - double actBestand = apLager.getBestand(); - double actMaxBestand = apLager.getMaxBestand(); - - double rects = (double) (actBestand / actMaxBestand) * 5; - int filledrectsCount = (int) Math.round(rects); - - if (apLager.getBestand() < (apLager.getMaxBestand() / 4)) { - jTableGesamtliste.setValueAt(iconGen.generateIcon(2, filledrectsCount), i, 3); - } else if ((apLager.getBestand() < (apLager.getMaxBestand() / 2))) { - jTableGesamtliste.setValueAt(iconGen.generateIcon(1, filledrectsCount), i, 3); - } else { - jTableGesamtliste.setValueAt(iconGen.generateIcon(0, filledrectsCount), i, 3); - } - } - } - i++; - } - } else { - resetMainTable(); - } - } - } - - /** Löscht die GesamtListe unterhalb der Arbeitsplatztabelle. */ - private void resetMainTable() { - int i = jTableGesamtliste.getRowCount() - 1; - while (i >= 0) { - jTableGesamtliste.setValueAt("", 3 - i, 0); - jTableGesamtliste.setValueAt("", 3 - i, 1); - jTableGesamtliste.setValueAt("", 3 - i, 2); - jTableGesamtliste.setValueAt("", 3 - i, 3); - i--; - } - } - - /** Setzt die Zahl an Arbeiter an diesem WorkPlace - * @param apNr WorkPlace Nr - * @param anzahl Anzahl der Mitarbeiter - */ - private void setWorkerNumber(int apNr, Integer anzahl) { - try { - dao.setArbeiterZahl(apNr, anzahl.intValue()); - } catch (WiSimDAOWriteException e) { - wiSimLogger.log("setArbeiterZahl()", e); - } - - //Aktualisierung der arbeitsplaetze-Collection - try { - arbeitsplaetze = dao.getArbeitsplaetze(); - } catch (WiSimDAOException e) { - wiSimLogger.log("setArbeiterZahl()", e); - } - } - - /** Setzt die Variable isBuilt - * @param isBuilt - */ - public void setIsBuilt(boolean isBuilt) { - this.isBuilt = isBuilt; - } - - /** Wurde das Pane schon einmal aufgebaut, so ist "isBuilt" = TRUE. - * Wichtig ist diese Variable für die Simulation: Wurde das Pane - * schon einmal aufgebaut, so müssen die Simulationsthread das Pane - * nicht noch einmal initialisieren! - * @return boolean isBuilt - */ - public boolean getIsBuilt() { - return isBuilt; - } - - /* (non-Javadoc) + /** + * Holt alle Eingangs und Ausgangslager aus der DB. + */ + public void getWorkPlaceStorage() { + try { + arbeitsplaetze = dao.getArbeitsplaetze(); + } catch (WiSimDAOException e) { + wiSimLogger.log("getArbeitsplatzLager()", e); + } + apAnzahl = arbeitsplaetze.size(); + + setWorkPlaceStorage(); + int i = 0; + Iterator ap_it = arbeitsplaetze.iterator(); + while (ap_it.hasNext()) { + WorkPlace ap = (WorkPlace) ap_it.next(); + + jTableArbeitsplaetze.setValueAt(String.valueOf(ap.getNr()), i, 0); + jTableArbeitsplaetze.setValueAt(ap.getBeschreibung(), i, 1); + + String vorgaenger = ""; + int[] vorgaengerNr = ap.getVorgaenger(); + if (vorgaengerNr.length > 0) { + vorgaenger = String.valueOf(vorgaengerNr[0]); + int x = 1; + while (x < vorgaengerNr.length) { + vorgaenger = vorgaenger + ", " + vorgaengerNr[x]; + x++; + } + } + + String nachfolger = ""; + int[] nachfolgerNr = ap.getNachfolger(); + if (nachfolgerNr.length > 0) { + nachfolger = String.valueOf(nachfolgerNr[0]); + int x = 1; + while (x < nachfolgerNr.length) { + nachfolger = nachfolger + ", " + nachfolgerNr[x]; + x++; + } + } + + if (vorgaenger.equals("0")) { + jTableArbeitsplaetze.setValueAt("-", i, 2); + } else { + jTableArbeitsplaetze.setValueAt(vorgaenger, i, 2); + } + + if (nachfolger.equals("0")) { + jTableArbeitsplaetze.setValueAt("-", i, 3); + } else { + jTableArbeitsplaetze.setValueAt(nachfolger, i, 3); + } + + jTableArbeitsplaetze.setValueAt(String.valueOf(ap.getDauer()), i, 4); + + WorkPlaceStore apLager = new WorkPlaceStore(); + try { + apLager = dao.getWorkPlaceStore(ap.getNr(), 26, "Eingang"); + } catch (WiSimDAOException e) { + wiSimLogger.log("getArbeitsplatzLager()", e); + } + + tempEingangslagerBestand.add(String.valueOf(apLager.getBestand())); + + jprg = new JProgressBar(0, 10); + jprg.setValue(apLager.getBestand()); + jprg.setToolTipText("Bestand: " + apLager.getBestand()); + if (vorgaenger.equals("0")) { + jprg.setEnabled(false); + } + jTableArbeitsplaetze.setValueAt(jprg, i, 5); + + try { + apLager = dao.getWorkPlaceStore(ap.getNr(), 26, "Ausgang"); + } catch (WiSimDAOException e) { + wiSimLogger.log("getArbeitsplatzLager()", e); + } + + tempAusgangslagerBestand.add(String.valueOf(apLager.getBestand())); + + jprg = new JProgressBar(0, 10); + jprg.setValue(apLager.getBestand()); + jprg.setToolTipText("Bestand: " + apLager.getBestand()); + if (nachfolger.equals("0")) { + jprg.setEnabled(false); + } + jTableArbeitsplaetze.setValueAt(jprg, i, 6); + + i++; + } + } + + /** + * Zeigt die Elemente eines Arbeitsplatzlagers an. + */ + private void getWorkPlaceStorageElements() { + WorkPlace ap = arbeitsplaetze.get(jTableArbeitsplaetze.getSelectedRow()); + + //Arbeiter-Pane + jTextFieldArbeitsplatz.setText(String.valueOf(ap.getNr())); + jSpinnerArbeiter.setModel(new SpinnerNumberModel(ap.getAnzahlArbeiter(), 0, 10, 1)); + + try { + arbeitsplatzLager = dao.getArbeitsplatzLager(ap.getNr(), "Einzelteil"); + } catch (WiSimDAOException e) { + wiSimLogger.log("getArbeitsplatzLagerElemente()", e); + } + apElemAnzahl = arbeitsplatzLager.size(); + + if (apElemAnzahl > 0) { + buildWorkPlaceStoreElementsTable(); + } else { + resetMainTable(); + } + } + + /** + * Baut die WorkPlace-Tabelle + */ + public void buildWorkPlaceStoreElementsTable() { + setWorkPlaceStoragerElementsTable(); + int i = 0; + Iterator arbeitsplatzLager_it = arbeitsplatzLager.iterator(); + while (arbeitsplatzLager_it.hasNext()) { + WorkPlaceStore apLager = (WorkPlaceStore) arbeitsplatzLager_it.next(); + + WiSimComponent et = new WiSimComponent(); + try { + et = dao.getComponent(apLager.getEinzelteilNr()); + } catch (WiSimDAOException e) { + wiSimLogger.log("buildArbeitsplatzLagerElementeTabelle()", e); + } + + jTableGesamtliste.setValueAt(et.getName(), i, 0); + jTableGesamtliste.setValueAt(String.valueOf(apLager.getBestand()), i, 1); + jTableGesamtliste.setValueAt(String.valueOf(apLager.getMaxBestand()), i, 2); + + IconGenerater iconGen = new IconGenerater(); + + double actBestand = apLager.getBestand(); + double actMaxBestand = apLager.getMaxBestand(); + + double rects = actBestand / actMaxBestand * 5; + int filledrectsCount = (int) Math.round(rects); + + if (apLager.getBestand() < (apLager.getMaxBestand() / 4)) { + jTableGesamtliste.setValueAt(iconGen.generateIcon(2, filledrectsCount), i, 3); + } else if ((apLager.getBestand() < (apLager.getMaxBestand() / 2))) { + jTableGesamtliste.setValueAt(iconGen.generateIcon(1, filledrectsCount), i, 3); + } else { + jTableGesamtliste.setValueAt(iconGen.generateIcon(0, filledrectsCount), i, 3); + } + i++; + } + } + + /** + * Erstellt die ArbeitsplatzTabelle. + */ + private void setWorkPlaceStorage() { + //DefaultTableModel mit Variablen Zeilen, 4 TableHeads und nicht editierbaren Zellen + Object[][] tableInit = new Object[apAnzahl][7]; + DefaultTableModel defTable = new DefaultTableModel(tableInit, new String[]{"Nr. ", "Beschreibung", "Vorgänger", "Nachfolger", "Zeit", "Eingangslager", "Ausgangslager"}) { + boolean[] canEdit = new boolean[]{false, false, false, false, false, false, false}; + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit[columnIndex]; + } + + public Class getColumnClass(int c) { + return getValueAt(0, c).getClass(); + } + }; + jTableArbeitsplaetze.setModel(defTable); + jTableArbeitsplaetze.setFocusable(false); + jTableArbeitsplaetze.getTableHeader().setReorderingAllowed(false); + + javax.swing.table.TableColumn column = null; + + //Spaltenbreiten der Tabelle werden gesetzt + for (int i = 0; i < 7; i++) { + column = jTableArbeitsplaetze.getColumnModel().getColumn(i); + switch (i) { + //Nr + case 0: + column.setPreferredWidth(30); + break; + //Beschreibung + case 1: + column.setPreferredWidth(300); + break; + //Vorgänger + case 2: + column.setPreferredWidth(80); + break; + //Nachfolger + case 3: + column.setPreferredWidth(80); + break; + //Zeit + case 4: + column.setPreferredWidth(40); + break; + //Eingangslager + case 5: + column.setPreferredWidth(110); + break; + //Ausgangslager + case 6: + column.setPreferredWidth(110); + break; + } + } + jTableArbeitsplaetze.setDefaultRenderer(JComponent.class, new JComponentCellRenderer()); + jTableArbeitsplaetze.setDefaultEditor(JComponent.class, new JComponentCellEditor()); + } + + /** + * Erstellt die ArbeitsplatzLagerElementeTabelle. + */ + private void setWorkPlaceStoragerElementsTable() { + //DefaultTableModel mit Variablen Zeilen, 4 TableHeads und nicht editierbaren Zellen + Object[][] tableInit = new Object[4][4]; + DefaultTableModel defTable = new DefaultTableModel(tableInit, new String[]{"Artikelname", "aktueller Bestand", "Max. Bestand", "Belegung"}) { + boolean[] canEdit = new boolean[]{false, false, false, false}; + + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit[columnIndex]; + } + + public Class getColumnClass(int c) { + return getValueAt(0, c).getClass(); + } + }; + jTableGesamtliste.setModel(defTable); + jTableGesamtliste.setEnabled(false); + jTableGesamtliste.getTableHeader().setReorderingAllowed(false); + } + + /** + * Refreshed beide Tabellen + */ + private void refreshWorkPlaceStorageElementsTable() { + + //Refresh Tabelle Arbeitsplaetze + try { + arbeitsplaetze = dao.getArbeitsplaetze(); + } catch (WiSimDAOException e) { + wiSimLogger.log("refreshArbeitsplatzLagerElementeTabelle()", e); + } + + int i = 0; + Iterator ap_it = arbeitsplaetze.iterator(); + while (ap_it.hasNext()) { + WorkPlace ap = (WorkPlace) ap_it.next(); + + WorkPlaceStore apLager = new WorkPlaceStore(); + try { + apLager = dao.getWorkPlaceStore(ap.getNr(), 26, "Eingang"); + } catch (WiSimDAOException e) { + wiSimLogger.log("refreshArbeitsplatzLagerElementeTabelle()", e); + } + + //Zelle wird nur refreshed wenn sich der Bestand geändert hat! + if (!((String) tempEingangslagerBestand.get(i)).equals(String.valueOf(apLager.getBestand()))) { + tempEingangslagerBestand.setElementAt(String.valueOf(apLager.getBestand()), i); + jprg = new JProgressBar(0, 10); + jprg.setValue(apLager.getBestand()); + jprg.setToolTipText("Bestand: " + apLager.getBestand()); + jTableArbeitsplaetze.setValueAt(jprg, i, 5); + } + + try { + apLager = dao.getWorkPlaceStore(ap.getNr(), 26, "Ausgang"); + } catch (WiSimDAOException e) { + wiSimLogger.log("refreshArbeitsplatzLagerElementeTabelle()", e); + } + + //Zelle wird nur refreshed wenn sich der Bestand geändert hat! + if (!((String) tempAusgangslagerBestand.get(i)).equals(String.valueOf(apLager.getBestand()))) { + tempAusgangslagerBestand.setElementAt(String.valueOf(apLager.getBestand()), i); + jprg = new JProgressBar(0, 10); + jprg.setValue(apLager.getBestand()); + jprg.setToolTipText("Bestand: " + apLager.getBestand()); + jTableArbeitsplaetze.setValueAt(jprg, i, 6); + } + i++; + } + + //Refresh Tabelle WorkPlaceStore + if (jTableArbeitsplaetze.getSelectedRow() >= 0) { + WorkPlace ap = arbeitsplaetze.get(jTableArbeitsplaetze.getSelectedRow()); + try { + arbeitsplatzLager = dao.getArbeitsplatzLager(ap.getNr(), "Einzelteil"); + } catch (WiSimDAOException e) { + wiSimLogger.log("refreshArbeitsplatzLagerElementeTabelle()", e); + } + apElemAnzahl = arbeitsplatzLager.size(); + i = 0; + if (apElemAnzahl > 0) { + Iterator arbeitsplatzLager_it = arbeitsplatzLager.iterator(); + while (arbeitsplatzLager_it.hasNext()) { + WorkPlaceStore apLager = (WorkPlaceStore) arbeitsplatzLager_it.next(); + + //Zelle wird nur aktualisiert wenn sich der Bestand geändert hat. + if (jTableGesamtliste.getValueAt(i, 1) != null && !jTableGesamtliste.getValueAt(i, 1).equals("")) { + if (apLager.getBestand() != Integer.parseInt((String) jTableGesamtliste.getValueAt(i, 1))) { + + jTableGesamtliste.setValueAt(String.valueOf(apLager.getBestand()), i, 1); + + IconGenerater iconGen = new IconGenerater(); + + double actBestand = apLager.getBestand(); + double actMaxBestand = apLager.getMaxBestand(); + + double rects = actBestand / actMaxBestand * 5; + int filledrectsCount = (int) Math.round(rects); + + if (apLager.getBestand() < (apLager.getMaxBestand() / 4)) { + jTableGesamtliste.setValueAt(iconGen.generateIcon(2, filledrectsCount), i, 3); + } else if ((apLager.getBestand() < (apLager.getMaxBestand() / 2))) { + jTableGesamtliste.setValueAt(iconGen.generateIcon(1, filledrectsCount), i, 3); + } else { + jTableGesamtliste.setValueAt(iconGen.generateIcon(0, filledrectsCount), i, 3); + } + } + } + i++; + } + } else { + resetMainTable(); + } + } + } + + /** + * Löscht die GesamtListe unterhalb der Arbeitsplatztabelle. + */ + private void resetMainTable() { + int i = jTableGesamtliste.getRowCount() - 1; + while (i >= 0) { + jTableGesamtliste.setValueAt("", 3 - i, 0); + jTableGesamtliste.setValueAt("", 3 - i, 1); + jTableGesamtliste.setValueAt("", 3 - i, 2); + jTableGesamtliste.setValueAt("", 3 - i, 3); + i--; + } + } + + /** + * Setzt die Zahl an Arbeiter an diesem WorkPlace + * + * @param apNr WorkPlace Nr + * @param anzahl Anzahl der Mitarbeiter + */ + private void setWorkerNumber(int apNr, Integer anzahl) { + try { + dao.setArbeiterZahl(apNr, anzahl.intValue()); + } catch (WiSimDAOWriteException e) { + wiSimLogger.log("setArbeiterZahl()", e); + } + + //Aktualisierung der arbeitsplaetze-Collection + try { + arbeitsplaetze = dao.getArbeitsplaetze(); + } catch (WiSimDAOException e) { + wiSimLogger.log("setArbeiterZahl()", e); + } + } + + /** + * Setzt die Variable isBuilt + * + * @param isBuilt + */ + public void setIsBuilt(boolean isBuilt) { + this.isBuilt = isBuilt; + } + + /** + * Wurde das Pane schon einmal aufgebaut, so ist "isBuilt" = TRUE. Wichtig ist + * diese Variable für die Simulation: Wurde das Pane schon einmal aufgebaut, + * so müssen die Simulationsthread das Pane nicht noch einmal initialisieren! + * + * @return boolean isBuilt + */ + public boolean getIsBuilt() { + return isBuilt; + } + + /* (non-Javadoc) * @see net.sourceforge.wisim.model.SimulationPane#refresh() - */ - public void refresh() { - refreshWorkPlaceStorageElementsTable(); - } -} \ No newline at end of file + */ + public void refresh() { + refreshWorkPlaceStorageElementsTable(); + } +} diff --git a/wisim/src/java/net/sourceforge/wisim/controller/WiSimMainController.form b/wisim/src/java/net/sourceforge/wisim/controller/WiSimMainController.form index f0f4f05..b39d9d1 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/WiSimMainController.form +++ b/wisim/src/java/net/sourceforge/wisim/controller/WiSimMainController.form @@ -424,6 +424,9 @@ + + + diff --git a/wisim/src/java/net/sourceforge/wisim/controller/WiSimMainController.java b/wisim/src/java/net/sourceforge/wisim/controller/WiSimMainController.java index 8f10aa7..7f94853 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/WiSimMainController.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/WiSimMainController.java @@ -39,7 +39,6 @@ import java.util.Iterator; import java.util.Locale; import java.util.logging.Level; - import javax.swing.JInternalFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; @@ -48,7 +47,6 @@ import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; - import net.sourceforge.wisim.dao.WiSimAuthentificationDAO; import net.sourceforge.wisim.dao.WiSimDAO; import net.sourceforge.wisim.dao.WiSimDAOException; @@ -273,7 +271,7 @@ private void initComponents() { jButtonSimStop = new javax.swing.JButton(); jButtonSimReset = new javax.swing.JButton(); jLabelFactor = new javax.swing.JLabel(); - jComboBoxFactor = new javax.swing.JComboBox(); + jComboBoxFactor = new javax.swing.JComboBox<>(); jCheckBoxOneWeek = new javax.swing.JCheckBox(); jPanelStatus = new javax.swing.JPanel(); jLabelStatus = new javax.swing.JLabel(); @@ -370,7 +368,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jLabelFactor.setText(" Zeitfaktor "); jPanelSimControl.add(jLabelFactor); - jComboBoxFactor.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1x", "1/2x", "1/4x", "1/8x", "1/16x" })); + jComboBoxFactor.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "1x", "1/2x", "1/4x", "1/8x", "1/16x" })); jComboBoxFactor.setMaximumSize(new java.awt.Dimension(59, 25)); jPanelSimControl.add(jComboBoxFactor); @@ -1256,7 +1254,7 @@ private void showTrafficLightStatus() { private javax.swing.JButton jButtonSimStart; private javax.swing.JButton jButtonSimStop; private javax.swing.JCheckBox jCheckBoxOneWeek; - private javax.swing.JComboBox jComboBoxFactor; + private javax.swing.JComboBox jComboBoxFactor; private javax.swing.JLabel jLabelDate; private javax.swing.JLabel jLabelFactor; private javax.swing.JLabel jLabelGreen; diff --git a/wisim/src/java/net/sourceforge/wisim/dao/WiSimDAO.java b/wisim/src/java/net/sourceforge/wisim/dao/WiSimDAO.java index 80ef78a..d82f4f5 100644 --- a/wisim/src/java/net/sourceforge/wisim/dao/WiSimDAO.java +++ b/wisim/src/java/net/sourceforge/wisim/dao/WiSimDAO.java @@ -32,18 +32,17 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; - import net.sourceforge.wisim.model.Article; import net.sourceforge.wisim.model.City; import net.sourceforge.wisim.model.ComponentContract; -import net.sourceforge.wisim.model.ComponentContractAccount; +import net.sourceforge.wisim.model.ComponentContractInvoice; import net.sourceforge.wisim.model.ComponentContractItem; import net.sourceforge.wisim.model.ComponentWarehouseItem; import net.sourceforge.wisim.model.Contract; -import net.sourceforge.wisim.model.ContractAccount; +import net.sourceforge.wisim.model.ContractInvoice; +import net.sourceforge.wisim.model.ContractOrderItem; import net.sourceforge.wisim.model.Customer; import net.sourceforge.wisim.model.Memo; -import net.sourceforge.wisim.model.OrderItem; import net.sourceforge.wisim.model.Supplier; import net.sourceforge.wisim.model.SupplyList; import net.sourceforge.wisim.model.WarehouseLocation; @@ -69,7 +68,7 @@ public interface WiSimDAO { * connection was never initialized * @return KundenNr */ - public int neuerKunde(Customer kunde) throws WiSimDAOException, WiSimDAOWriteException; + public int newCustomer(Customer kunde) throws WiSimDAOException, WiSimDAOWriteException; /** * method to get all customer @@ -78,26 +77,26 @@ public interface WiSimDAO { * @throws WiSimDAOException if a database problem occurs or the connection * was never initialized */ - public ArrayList getKunden() throws WiSimDAOException; + public ArrayList getCustomers() throws WiSimDAOException; /** - * Gibt eine ContractAccount eines Auftrages zurück. + * Gibt eine ContractInvoice eines Auftrages zurück. * * @param atrNr Auftragrechnungs Nummer * @throws WiSimDAOException if a database problem occurs or the connection * was never initialized - * @return ContractAccount + * @return ContractInvoice */ - public ContractAccount getAuftragsrechnung(int atrNr) throws WiSimDAOException; + public ContractInvoice getAuftragsrechnung(int atrNr) throws WiSimDAOException; /** * gibt alle Auftragsrechnungen aus * - * @return Collection von ContractAccount + * @return Collection von ContractInvoice * @throws WiSimDAOException if a database problem occurs or the connection * was never initialized */ - public Collection getAuftragsrechnungen() throws WiSimDAOException; + public Collection getAuftragsrechnungen() throws WiSimDAOException; /** * Holt einen Kunden aus der Datenbank @@ -106,7 +105,7 @@ public interface WiSimDAO { * @param kdNr Kunden Nummer * @throws WiSimDAOException Fehler beim Abfragen der DB */ - public Customer getKunde(int kdNr) throws WiSimDAOException; + public Customer getCustomer(int kdNr) throws WiSimDAOException; /** * Aendert Kundendaten @@ -228,7 +227,7 @@ public interface WiSimDAO { * @throws WiSimDAOException Fehler beim Abfragen der DB * @return Collection mit Objekten vom Typ Supplier */ - public Collection getLieferanten() throws WiSimDAOException; + public ArrayList getSuppliers() throws WiSimDAOException; /** * Markiert einen Lieferanten als geloescht bzw sichtbar @@ -247,7 +246,7 @@ public interface WiSimDAO { * @return Collection * @throws WiSimDAOException ToDo */ - public Collection getEinzelteile() throws WiSimDAOException; + public Collection getAllComponents() throws WiSimDAOException; /** * Holt ein WiSimComponent aus der Datenbank @@ -256,7 +255,7 @@ public interface WiSimDAO { * @param id Einzelteile Nummer * @throws WiSimDAOException ToDo */ - public WiSimComponent getEinzelteil(int id) throws WiSimDAOException; + public WiSimComponent getComponent(int id) throws WiSimDAOException; /** * Erstellt eine SupplyList @@ -296,7 +295,7 @@ public interface WiSimDAO { * @throws WiSimDAOException Fehler beim Abfragen der DB * @return Collection mit Objekten des Typs Einzeiteil */ - public Collection getLieferliste(int lieferantenID) throws WiSimDAOException; + public ArrayList getSupplyLists(int lieferantenID) throws WiSimDAOException; /** * Diese Funktion verringert den Bestand eines Einzelteils an einem bestimmten @@ -360,14 +359,14 @@ public interface WiSimDAO { /** * Erstellt eine neue EinzelteilAuftragsRechnung * - * @param einzelteilauftragsrechnung Die ComponentContractAccount. + * @param einzelteilauftragsrechnung Die ComponentContractInvoice. * @throws WiSimDAOException if a database problem occurs or the connection * was never initialized * @throws WiSimDAOWriteException if a database problem occurs or the * connection was never initialized * @return EinzelteilauftragsrechnungsNr */ - public int setEinzelteilauftragsrechnung(ComponentContractAccount einzelteilauftragsrechnung) throws WiSimDAOException, WiSimDAOWriteException; + public int setEinzelteilauftragsrechnung(ComponentContractInvoice einzelteilauftragsrechnung) throws WiSimDAOException, WiSimDAOWriteException; /** * Erstellt eine neue AuftragsRechnung @@ -379,7 +378,7 @@ public interface WiSimDAO { * connection was never initialized * @return AuftragsrechnungsNr */ - public int setAuftragsrechnung(ContractAccount auftragsrechnung) throws WiSimDAOException, WiSimDAOWriteException; + public int setAuftragsrechnung(ContractInvoice auftragsrechnung) throws WiSimDAOException, WiSimDAOWriteException; /** * Holt alle Article aus der Datenbank @@ -436,7 +435,7 @@ public interface WiSimDAO { * was never initialized * @return Collection mit allen Einzelteilauftragspositionen */ - public Collection getEinzelteilAuftragsPositionen(int etatNr) throws WiSimDAOException; + public ArrayList getEinzelteilAuftragsPositionen(int etatNr) throws WiSimDAOException; /** * Gibt alle Positionen eines Auftrages zurück. @@ -446,18 +445,18 @@ public interface WiSimDAO { * was never initialized * @return Collection mit allen Auftragspositionen */ - public Collection getAuftragsPositionen(int atNr) throws WiSimDAOException; + public Collection getAuftragsPositionen(int atNr) throws WiSimDAOException; /** - * Gibt die ComponentContractAccount zurück die zu dem entsprechenden - * ComponentContract gehört. + * Gibt die ComponentContractInvoice zurück die zu dem entsprechenden + ComponentContract gehört. * * @param etatrNr Einzelteilauftrags Nummer * @throws WiSimDAOException if a database problem occurs or the connection * was never initialized - * @return Die ComponentContractAccount. + * @return Die ComponentContractInvoice. */ - public ComponentContractAccount getEinzelteilauftragsrechnung(int etatrNr) throws WiSimDAOException; + public ComponentContractInvoice getEinzelteilauftragsrechnung(int etatrNr) throws WiSimDAOException; /** * Gibt alle Lagerplätz des Lagers aus @@ -576,7 +575,7 @@ public interface WiSimDAO { * @return WorkPlaceStore * @throws WiSimDAOException */ - public WorkPlaceStore getArbeitsplatzLager(int arbeitsplatzNr, int einzelteilNr, String lagerTyp) throws WiSimDAOException; + public WorkPlaceStore getWorkPlaceStore(int arbeitsplatzNr, int einzelteilNr, String lagerTyp) throws WiSimDAOException; /** * @param arbeitsplatzNr @@ -584,7 +583,7 @@ public interface WiSimDAO { * @return Collection * @throws WiSimDAOException */ - public Collection getArbeitsplatzLager(int arbeitsplatzNr, String lagerTyp) throws WiSimDAOException; + public ArrayList getArbeitsplatzLager(int arbeitsplatzNr, String lagerTyp) throws WiSimDAOException; /** * Gibt Stueckliste für einen bestimmten Article zurück. Der Key der Hashtable @@ -595,7 +594,7 @@ public interface WiSimDAO { * @throws WiSimDAOException if an database error occurs * @return HashMap (Stückliste) */ - public HashMap getStueckliste(int artNr) throws WiSimDAOException; + public HashMap getPartsListForArticle(int artNr) throws WiSimDAOException; /** * Holt alle Verträge aus der Datenbank @@ -603,7 +602,7 @@ public interface WiSimDAO { * @return Collection * @throws WiSimDAOException */ - public Collection getVertraege() throws WiSimDAOException; + public ArrayList getContracts() throws WiSimDAOException; /** * Holt einen Contract aus der Datenbank @@ -622,7 +621,7 @@ public interface WiSimDAO { * was never initialized * @return Auftragsposition */ - public OrderItem getAuftragsPosition(int atNr) throws WiSimDAOException; + public ContractOrderItem getAuftragsPosition(int atNr) throws WiSimDAOException; /** * Gibt die Auftragsposition zurück die zu dem entsprechenden Auftrag gehört. @@ -633,7 +632,7 @@ public interface WiSimDAO { * was never initialized * @return Die Auftragsposition. */ - public OrderItem getAuftragsPosition(int atNr, int artNr) throws WiSimDAOException; + public ContractOrderItem getContractOrderItem(int atNr, int artNr) throws WiSimDAOException; /** * Gibt die Bestellmenge eines bestimmten Artikels in einem Contract zurück. @@ -648,11 +647,11 @@ public interface WiSimDAO { /** * Setzt die Position eines bestimmten Auftrags in einem Contract. * - * @param atp OrderItem + * @param atp ContractOrderItem * @return TODO * @throws net.sourceforge.wisim.dao.WiSimDAOWriteException Fehler beim Schreiben in die DB * @return -1 */ - public int setAuftragsPosition(OrderItem atp) throws WiSimDAOWriteException; + public int setAuftragsPosition(ContractOrderItem atp) throws WiSimDAOWriteException; /** * Setzt die Zahl der Arbeiter für einen WorkPlace @@ -666,7 +665,7 @@ public interface WiSimDAO { /** * Setzt Rechnungsstatus auf bezahlt * - * @param Nr ContractAccount Nummer + * @param Nr ContractInvoice Nummer * @param status * @return TODO * @throws net.sourceforge.wisim.dao.WiSimDAOException Fehler beim Abfragen der DB diff --git a/wisim/src/java/net/sourceforge/wisim/dao/WiSimDAOImpl.java b/wisim/src/java/net/sourceforge/wisim/dao/WiSimDAOImpl.java index 22c384f..54b8ecd 100644 --- a/wisim/src/java/net/sourceforge/wisim/dao/WiSimDAOImpl.java +++ b/wisim/src/java/net/sourceforge/wisim/dao/WiSimDAOImpl.java @@ -54,14 +54,14 @@ import net.sourceforge.wisim.model.Article; import net.sourceforge.wisim.model.City; import net.sourceforge.wisim.model.ComponentContract; -import net.sourceforge.wisim.model.ComponentContractAccount; +import net.sourceforge.wisim.model.ComponentContractInvoice; import net.sourceforge.wisim.model.ComponentContractItem; import net.sourceforge.wisim.model.ComponentWarehouseItem; import net.sourceforge.wisim.model.Contract; -import net.sourceforge.wisim.model.ContractAccount; +import net.sourceforge.wisim.model.ContractInvoice; +import net.sourceforge.wisim.model.ContractOrderItem; import net.sourceforge.wisim.model.Customer; import net.sourceforge.wisim.model.Memo; -import net.sourceforge.wisim.model.OrderItem; import net.sourceforge.wisim.model.Supplier; import net.sourceforge.wisim.model.SupplyList; import net.sourceforge.wisim.model.WarehouseLocation; @@ -381,9 +381,9 @@ protected void initialize() throws WiSimDAOException { } /** - * method to create a new customer + * Method to create a new customer * - * @param kunde Objekt: kunde + * @param customer Object: customer * @throws WiSimDAOException if a database problem occurs or the connection * was never initialized * @throws WiSimDAOWriteException if a database problem occurs or the @@ -391,7 +391,7 @@ protected void initialize() throws WiSimDAOException { * @return KundenNr */ @Override - public int neuerKunde(Customer kunde) throws WiSimDAOException, WiSimDAOWriteException { + public int newCustomer(Customer customer) throws WiSimDAOException, WiSimDAOWriteException { // Serverlog logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); String sql; @@ -408,23 +408,23 @@ public int neuerKunde(Customer kunde) throws WiSimDAOException, WiSimDAOWriteExc sql = "insert into kd " + "(kd_Name, kd_Vorname, kd_Firma, kd_Strasse, f_ort_Nr, kd_Telefon, kd_Fax, kd_Email, kd_Typ) values (\"" - + kunde.getNachname() + + customer.getNachname() + "\", \"" - + kunde.getVorname() + + customer.getVorname() + "\", \"" - + kunde.getFirma() + + customer.getFirma() + "\", \"" - + kunde.getStrasse() + + customer.getStrasse() + "\", \"" - + kunde.getPlzId() + + customer.getPlzId() + "\", \"" - + kunde.getTelefon() + + customer.getTelefon() + "\", \"" - + kunde.getFax() + + customer.getFax() + "\", \"" - + kunde.getEmail() + + customer.getEmail() + "\", \"" - + kunde.getKundentyp() + + customer.getKundentyp() + "\") "; stmt.executeUpdate(sql); @@ -446,13 +446,13 @@ public int neuerKunde(Customer kunde) throws WiSimDAOException, WiSimDAOWriteExc /** * Holt alle Kunden aus der Datenbank * - * @return ArrayList + * @return ArrayList All customers * @throws WiSimDAOException Fehler beim Abfragen der DB */ @Override - public ArrayList getKunden() throws WiSimDAOException { + public ArrayList getCustomers() throws WiSimDAOException { String sql = "SELECT * FROM kd WHERE kd_deleted = 'FALSE'"; - ArrayList kunden = new ArrayList(); + ArrayList customers = new ArrayList(); try { // Create a Statement Statement stmt = conn.createStatement(); @@ -460,50 +460,50 @@ public ArrayList getKunden() throws WiSimDAOException { City ort; while (rset.next()) { - Customer kundendaten = new Customer(); - kundendaten.setId(rset.getInt("kd_Nr")); - kundendaten.setKundentyp(rset.getString("kd_Typ")); - kundendaten.setAnspruch(rset.getString("kd_Anspruch")); - kundendaten.setZahlungsmoral(rset.getString("kd_Zahlungsmoral")); - kundendaten.setFirma(rset.getString("kd_Firma")); - kundendaten.setVorname(rset.getString("kd_Vorname")); - kundendaten.setNachname(rset.getString("kd_Name")); - kundendaten.setStrasse(rset.getString("kd_Strasse")); - kundendaten.setEmail(rset.getString("kd_Email")); - kundendaten.setTelefon(rset.getString("kd_Telefon")); - kundendaten.setFax(rset.getString("kd_Fax")); - kundendaten.setPlzId(rset.getInt("f_ort_Nr")); - //Kunden-Ort und PLZ wird aus Tabelle ort geladen + Customer customer = new Customer(); + customer.setId(rset.getInt("kd_Nr")); + customer.setKundentyp(rset.getString("kd_Typ")); + customer.setAnspruch(rset.getString("kd_Anspruch")); + customer.setZahlungsmoral(rset.getString("kd_Zahlungsmoral")); + customer.setFirma(rset.getString("kd_Firma")); + customer.setVorname(rset.getString("kd_Vorname")); + customer.setNachname(rset.getString("kd_Name")); + customer.setStrasse(rset.getString("kd_Strasse")); + customer.setEmail(rset.getString("kd_Email")); + customer.setTelefon(rset.getString("kd_Telefon")); + customer.setFax(rset.getString("kd_Fax")); + customer.setPlzId(rset.getInt("f_ort_Nr")); + //Kunden-Ort und PLZ wird aus Tabelle city geladen ort = getOrt(rset.getInt("f_ort_Nr")); - kundendaten.setPlz(ort.getPlz()); - kundendaten.setOrt(ort.getName()); - kunden.add(kundendaten); + customer.setPlz(ort.getPlz()); + customer.setOrt(ort.getName()); + customers.add(customer); } } catch (SQLException sqlE) { throw new WiSimDAOException(sqlE.getMessage()); } - return kunden; + return customers; } /** - * gibt alle Auftragsrechnungen aus + * Gibt alle Auftragsrechnungen aus * - * @return Collection<ContractAccount> + * @return Collection<ContractInvoice> * @throws WiSimDAOException if a database problem occurs or the connection * was never initialized */ @Override - public Collection getAuftragsrechnungen() throws WiSimDAOException { + public Collection getAuftragsrechnungen() throws WiSimDAOException { String sql = "SELECT * FROM atr"; - Collection atrechnungen = new ArrayList<>(); + Collection atrechnungen = new ArrayList<>(); try { // Create a Statement Statement stmt = conn.createStatement(); ResultSet rset = stmt.executeQuery(sql); while (rset.next()) { - ContractAccount atr = new ContractAccount(); + ContractInvoice atr = new ContractInvoice(); atr.setNr(rset.getInt("atr_Nr")); atr.setBetrag(rset.getDouble("atr_Betrag")); atr.setAuftragNr(rset.getInt("f_at_Nr")); @@ -523,36 +523,36 @@ public Collection getAuftragsrechnungen() throws WiSimDAOExcept * Holt einen Kunden aus der Datenbank * * @return Object Customer - * @param kdNr Kundennummer + * @param customerID Customer ID * @throws WiSimDAOException Fehler beim Abfragen der DB */ @Override - public Customer getKunde(int kdNr) throws WiSimDAOException { - String sql = "SELECT * FROM kd WHERE kd_Nr = " + kdNr + ""; + public Customer getCustomer(int customerID) throws WiSimDAOException { + String sql = "SELECT * FROM kd WHERE kd_Nr = " + customerID + ""; try { // Create a Statement Statement stmt = conn.createStatement(); ResultSet rset = stmt.executeQuery(sql); - City ort; - Customer kundendaten = new Customer(); + City city; + Customer customer = new Customer(); while (rset.next()) { - kundendaten.setId(rset.getInt("kd_Nr")); - kundendaten.setKundentyp(rset.getString("kd_Typ")); - kundendaten.setAnspruch(rset.getString("kd_Anspruch")); - kundendaten.setZahlungsmoral(rset.getString("kd_Zahlungsmoral")); - kundendaten.setFirma(rset.getString("kd_Firma")); - kundendaten.setVorname(rset.getString("kd_Vorname")); - kundendaten.setNachname(rset.getString("kd_Name")); - kundendaten.setStrasse(rset.getString("kd_Strasse")); - kundendaten.setEmail(rset.getString("kd_Email")); - kundendaten.setTelefon(rset.getString("kd_Telefon")); - kundendaten.setFax(rset.getString("kd_Fax")); - kundendaten.setPlzId(rset.getInt("f_ort_Nr")); - //Kunden-Ort und PLZ wird aus Tabelle ort geladen - ort = getOrt(rset.getInt("f_ort_Nr")); - kundendaten.setPlz(ort.getPlz()); - kundendaten.setOrt(ort.getName()); - return kundendaten; + customer.setId(rset.getInt("kd_Nr")); + customer.setKundentyp(rset.getString("kd_Typ")); + customer.setAnspruch(rset.getString("kd_Anspruch")); + customer.setZahlungsmoral(rset.getString("kd_Zahlungsmoral")); + customer.setFirma(rset.getString("kd_Firma")); + customer.setVorname(rset.getString("kd_Vorname")); + customer.setNachname(rset.getString("kd_Name")); + customer.setStrasse(rset.getString("kd_Strasse")); + customer.setEmail(rset.getString("kd_Email")); + customer.setTelefon(rset.getString("kd_Telefon")); + customer.setFax(rset.getString("kd_Fax")); + customer.setPlzId(rset.getInt("f_ort_Nr")); + //Kunden-Ort und PLZ wird aus Tabelle city geladen + city = getOrt(rset.getInt("f_ort_Nr")); + customer.setPlz(city.getPlz()); + customer.setOrt(city.getName()); + return customer; } } catch (SQLException sqlE) { throw new WiSimDAOException(sqlE.getMessage()); @@ -842,7 +842,7 @@ public int aendereLieferant(Supplier lieferant) throws WiSimDAOException, WiSimD } /** - * Aendert ContractAccount + * Aendert ContractInvoice * * @return Boolean * @param Nr Auftragsrechnungsnummer @@ -1115,11 +1115,11 @@ public int neuerOrt(City ort) throws WiSimDAOException { * @return Collection mit Objekten vom Typ Supplier */ @Override - public Collection getLieferanten() throws WiSimDAOException { + public ArrayList getSuppliers() throws WiSimDAOException { // Serverlog logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getLieferanten() Action: start"); String sql; - Collection lieferanten = new ArrayList<>(); + ArrayList suppliers = new ArrayList<>(); try { Statement stmt = conn.createStatement(); sql = "select * from lt WHERE lt_deleted = 'FALSE'"; @@ -1129,7 +1129,7 @@ public Collection getLieferanten() throws WiSimDAOException { City ort = getOrt(resLieferanten.getInt("f_ort_Nr")); - Supplier lieferant + Supplier supplier = new Supplier( resLieferanten.getInt("lt_Nr"), resLieferanten.getString("lt_Firma"), @@ -1144,69 +1144,69 @@ public Collection getLieferanten() throws WiSimDAOException { resLieferanten.getString("lt_Email"), resLieferanten.getString("lt_Zuverlaessigkeit"), resLieferanten.getString("lt_Qualitaet")); - lieferanten.add(lieferant); + suppliers.add(supplier); } } catch (SQLException sqlE) { throw new WiSimDAOException(sqlE.getMessage()); } - return lieferanten; + return suppliers; } /** * Holt alle Einzelteile aus der Datenbank * - * @return Collection + * @return Collection all Components * @throws WiSimDAOException Fehler beim Abfragen der DB */ @Override - public Collection getEinzelteile() throws WiSimDAOException { + public Collection getAllComponents() throws WiSimDAOException { String sql = "SELECT * FROM et"; - Collection einzelteile = new ArrayList<>(); + Collection components = new ArrayList<>(); try { // Create a Statement Statement stmt = conn.createStatement(); ResultSet rset = stmt.executeQuery(sql); while (rset.next()) { - WiSimComponent einzelteil = new WiSimComponent(); - einzelteil.setNr(rset.getInt(1)); - einzelteil.setName(rset.getString(2)); - einzelteil.setMindestbestand(rset.getInt(3)); - einzelteile.add(einzelteil); + WiSimComponent component = new WiSimComponent(); + component.setNr(rset.getInt(1)); + component.setName(rset.getString(2)); + component.setMindestbestand(rset.getInt(3)); + components.add(component); } } catch (SQLException sqlE) { throw new WiSimDAOException(sqlE.getMessage()); } - return einzelteile; + return components; } /** * Holt ein WiSimComponent aus der Datenbank * * @return WiSimComponent - * @param id EinzelteilNr + * @param id Component ID * @throws WiSimDAOException Fehler beim Abfragen der DB */ @Override - public WiSimComponent getEinzelteil(int id) throws WiSimDAOException { + public WiSimComponent getComponent(int id) throws WiSimDAOException { String sql = "SELECT * FROM et WHERE et_Nr = " + id; - WiSimComponent einzelteil = new WiSimComponent(); + WiSimComponent component = new WiSimComponent(); try { // Create a Statement Statement stmt = conn.createStatement(); ResultSet rset = stmt.executeQuery(sql); while (rset.next()) { - einzelteil.setNr(rset.getInt(1)); - einzelteil.setName(rset.getString(2)); - einzelteil.setMindestbestand(rset.getInt(3)); + component.setNr(rset.getInt(1)); + component.setName(rset.getString(2)); + component.setMindestbestand(rset.getInt(3)); } } catch (SQLException sqlE) { throw new WiSimDAOException(sqlE.getMessage()); } - return einzelteil; + return component; } /** @@ -1264,43 +1264,43 @@ public SupplyList getLieferliste(int lieferantenID, int einzelteilID) throws WiS /** * Collection mit allen Lieferlisten des Lieferanten * - * @param lieferantenID LieferantNr + * @param supplierID LieferantNr * @throws WiSimDAOException Fehler beim Ablesen aus der DB - * @return Collection mit Objekten vom Typ SupplyList + * @return ArrayList mit Objekten vom Typ SupplyList */ @Override - public Collection getLieferliste(int lieferantenID) throws WiSimDAOException { - Collection lieferlisten = new ArrayList<>(); + public ArrayList getSupplyLists(int supplierID) throws WiSimDAOException { + ArrayList supplyLists = new ArrayList<>(); String sql; - SupplyList lieferliste; + SupplyList supplyList; try { // Create a Statement Statement stmt = conn.createStatement(); - sql = "select * from rel_lt_et WHERE f_lt_Nr = " + lieferantenID; + sql = "select * from rel_lt_et WHERE f_lt_Nr = " + supplierID; ResultSet rset = stmt.executeQuery(sql); while (rset.next()) { - lieferliste = new SupplyList(); - lieferliste.setEinzelteilID(rset.getInt(1)); - lieferliste.setLieferantenID(rset.getInt(2)); - lieferliste.setPreis(rset.getDouble(3)); - lieferliste.setMindestBestellMenge(rset.getLong(4)); + supplyList = new SupplyList(); + supplyList.setEinzelteilID(rset.getInt(1)); + supplyList.setLieferantenID(rset.getInt(2)); + supplyList.setPreis(rset.getDouble(3)); + supplyList.setMindestBestellMenge(rset.getLong(4)); - lieferlisten.add(lieferliste); + supplyLists.add(supplyList); } } catch (SQLException sqlE) { throw new WiSimDAOException(sqlE.getMessage()); } - return lieferlisten; + return supplyLists; } /* (non-Javadoc) * @see com.pixelpark.wisim.dao.WiSimDAO#setEinzelteilArbeitsplatzBestand(int, int, java.lang.String) */ /** - * �ndert den Bestand an Einzelteilen an einem WorkPlace + * Ändert den Bestand an Einzelteilen an einem WorkPlace * * @param arbeitsplatzNr Arbeitsplatznummer * @param einzelteilNr Einzelteilnummer @@ -1367,7 +1367,7 @@ public synchronized boolean setEinzelteilArbeitsplatzBestand(int arbeitsplatzNr, * @see com.pixelpark.wisim.dao.WiSimDAO#setEinzelteilArbeitsplatzBestand(int, int, int, java.lang.String) */ /** - * �ndert den Bestand an Einzelteilen an einem WorkPlace + * Ändert den Bestand an Einzelteilen an einem WorkPlace * * @param arbeitsplatzNr Arbeitsplatznummer * @param einzelteilNr Einzelteilnummer @@ -1570,7 +1570,7 @@ public int setEinzelteilauftrag(ComponentContract etat) throws WiSimDAOException * connection was never initialized */ @Override - public int setEinzelteilauftragsrechnung(ComponentContractAccount etatr) throws WiSimDAOException, WiSimDAOWriteException { + public int setEinzelteilauftragsrechnung(ComponentContractInvoice etatr) throws WiSimDAOException, WiSimDAOWriteException { String sql = "insert into etatr (etatr_Nr, etatr_Betrag, f_etat_Nr, f_mwst_Satz) " + "VALUES ( " + etatr.getNr() + ", " + etatr.getBetrag() + ", " + etatr.getEinzelteilauftragNr() + ", " + etatr.getMwSt() + ");"; try { @@ -1599,7 +1599,7 @@ public int setEinzelteilauftragsrechnung(ComponentContractAccount etatr) throws * connection was never initialized */ @Override - public int setAuftragsrechnung(ContractAccount atr) throws WiSimDAOException, WiSimDAOWriteException { + public int setAuftragsrechnung(ContractInvoice atr) throws WiSimDAOException, WiSimDAOWriteException { String dbZlEingang; @@ -1710,37 +1710,37 @@ public Article getArtikel(int id) throws WiSimDAOException { } /** - * Holt alle Vertr�ge aus der Datenbank + * Holt alle Verträge aus der Datenbank * - * @return Collection + * @return ArrayList * @throws WiSimDAOException Fehler beim Lesen von der DB */ @Override - public Collection getVertraege() throws WiSimDAOException { + public ArrayList getContracts() throws WiSimDAOException { String sql = "SELECT * FROM at"; - Collection vertraege = new ArrayList<>(); + ArrayList contracts = new ArrayList<>(); try { // Create a Statement Statement stmt = conn.createStatement(); ResultSet rset = stmt.executeQuery(sql); while (rset.next()) { - Contract vertrag = new Contract(); - vertrag.setVertragsId(rset.getInt("at_Nr")); - vertrag.setLieferdatum(rset.getDate("at_Lieferdatum")); - vertrag.setSkonto(rset.getDouble("at_Skonto")); - vertrag.setSkontofrist(rset.getLong("at_Skontofrist")); - vertrag.setRabatt(rset.getDouble("at_Rabatt")); - vertrag.setVertragsdatum(rset.getDate("at_Datum")); - vertrag.setKundenId(rset.getInt("f_kd_Nr")); - vertrag.setAuftragsrechnungsId(rset.getInt("f_atr_Nr")); - vertraege.add(vertrag); + Contract contract = new Contract(); + contract.setVertragsId(rset.getInt("at_Nr")); + contract.setLieferdatum(rset.getDate("at_Lieferdatum")); + contract.setSkonto(rset.getDouble("at_Skonto")); + contract.setSkontofrist(rset.getLong("at_Skontofrist")); + contract.setRabatt(rset.getDouble("at_Rabatt")); + contract.setVertragsdatum(rset.getDate("at_Datum")); + contract.setKundenId(rset.getInt("f_kd_Nr")); + contract.setAuftragsrechnungsId(rset.getInt("f_atr_Nr")); + contracts.add(contract); } } catch (SQLException sqlE) { throw new WiSimDAOException(sqlE.getMessage()); } - return vertraege; + return contracts; } /** @@ -1880,11 +1880,11 @@ public ArrayList getEinzelteilauftraege() throws WiSimDAOExce * @return Collection mit allen Einzelteilauftragspositionen */ @Override - public Collection getEinzelteilAuftragsPositionen(int etatNr) throws WiSimDAOException { + public ArrayList getEinzelteilAuftragsPositionen(int etatNr) throws WiSimDAOException { // Serverlog logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); String sql; - Collection etatPositionen = new ArrayList<>(); + ArrayList etatPositionen = new ArrayList<>(); try { sql = "SELECT f_et_Nr, f_etat_Nr, rel_etat_et_Bestellmenge, rel_etat_et_Stueckpreis FROM rel_etat_et WHERE " + "f_etat_Nr = " + etatNr + ""; Statement stmt = conn.createStatement(); @@ -1914,21 +1914,21 @@ public Collection getEinzelteilAuftragsPositionen(int eta * @return Collection mit allen Auftragspositionen */ @Override - public Collection getAuftragsPositionen(int atNr) throws WiSimDAOException { + public Collection getAuftragsPositionen(int atNr) throws WiSimDAOException { // Serverlog logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); String sql; - Collection atPositionen = new ArrayList<>(); + Collection atPositionen = new ArrayList<>(); try { sql = "SELECT f_art_Nr, f_at_Nr, rel_at_art_Bestellmenge FROM rel_at_art WHERE " + "f_at_Nr = " + atNr + ""; Statement stmt = conn.createStatement(); ResultSet rset = stmt.executeQuery(sql); while (rset.next()) { - OrderItem atPos = new OrderItem(); + ContractOrderItem atPos = new ContractOrderItem(); atPos.setArtNr(rset.getInt(1)); atPos.setAtNr(rset.getInt(2)); - atPos.setBestellmenge(rset.getLong(3)); + atPos.setBestellmenge(rset.getInt(3)); atPositionen.add(atPos); } @@ -1948,11 +1948,11 @@ public Collection getAuftragsPositionen(int atNr) throws WiSimDAOExce * @return Auftragsposition */ @Override - public OrderItem getAuftragsPosition(int atNr) throws WiSimDAOException { + public ContractOrderItem getAuftragsPosition(int atNr) throws WiSimDAOException { // Serverlog logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getVertrag Action: start"); String sql; - OrderItem atp = new OrderItem(); + ContractOrderItem atp = new ContractOrderItem(); try { sql = "SELECT f_art_Nr, f_at_Nr, rel_at_art_Bestellmenge FROM rel_at_art WHERE " + "f_at_Nr = " + atNr + ""; Statement stmt = conn.createStatement(); @@ -1961,7 +1961,7 @@ public OrderItem getAuftragsPosition(int atNr) throws WiSimDAOException { while (rset.next()) { atp.setArtNr(rset.getInt(1)); atp.setAtNr(rset.getInt(2)); - atp.setBestellmenge(rset.getLong(3)); + atp.setBestellmenge(rset.getInt(3)); } } catch (SQLException sqlE) { @@ -1971,19 +1971,19 @@ public OrderItem getAuftragsPosition(int atNr) throws WiSimDAOException { } /** - * Gibt eine ContractAccount eines Auftrages zur�ck. + * Gibt eine ContractInvoice eines Auftrages zur�ck. * * @param atrNr Auftragrechnungs Nummer * @throws WiSimDAOException if a database problem occurs or the connection * was never initialized - * @return ContractAccount + * @return ContractInvoice */ @Override - public ContractAccount getAuftragsrechnung(int atrNr) throws WiSimDAOException { + public ContractInvoice getAuftragsrechnung(int atrNr) throws WiSimDAOException { // Serverlog logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getVertrag Action: start"); String sql; - ContractAccount atr = new ContractAccount(); + ContractInvoice atr = new ContractInvoice(); try { sql = "SELECT atr_Nr, atr_Betrag, f_at_Nr, f_mwst_Satz, atr_zleingang FROM atr WHERE " + "atr_Nr = " + atrNr + ""; Statement stmt = conn.createStatement(); @@ -2004,20 +2004,20 @@ public ContractAccount getAuftragsrechnung(int atrNr) throws WiSimDAOException { } /** - * Gibt die ComponentContractAccount zur�ck die zu dem entsprechenden + * Gibt die ComponentContractInvoice zur�ck die zu dem entsprechenden * ComponentContract geh�rt. * * @param etatrNr Einzelteilauftrags Nummer * @throws WiSimDAOException if a database problem occurs or the connection * was never initialized - * @return Die ComponentContractAccount. + * @return Die ComponentContractInvoice. */ @Override - public ComponentContractAccount getEinzelteilauftragsrechnung(int etatrNr) throws WiSimDAOException { + public ComponentContractInvoice getEinzelteilauftragsrechnung(int etatrNr) throws WiSimDAOException { // Serverlog logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); String sql; - ComponentContractAccount etatr = new ComponentContractAccount(); + ComponentContractInvoice etatr = new ComponentContractInvoice(); try { sql = "SELECT etatr_Betrag, f_mwst_Satz FROM etatr WHERE etatr_Nr = " + etatrNr; Statement stmt = conn.createStatement(); @@ -2176,7 +2176,7 @@ public ArrayList getEinzelteilLagerElement() throws WiSi ResultSet rset = stmt.executeQuery(sql); int i = 0; while (rset.next()) { - WiSimComponent et = getEinzelteil(rset.getInt(1)); + WiSimComponent et = getComponent(rset.getInt(1)); ComponentWarehouseItem etElem = new ComponentWarehouseItem(); etElem.setEinzelteilName(et.getName()); etElem.setId(et.getNr()); @@ -2190,7 +2190,7 @@ public ArrayList getEinzelteilLagerElement() throws WiSi int a = einzelteillagerelemente.size() - 1; while (a >= 0) { ComponentWarehouseItem etElem = einzelteillagerelemente.get(a); - Collection lagerplaetze = new ArrayList<>(); + ArrayList lagerplaetze = new ArrayList<>(); // TODO Warum String? sql = "SELECT f_lg_StellplatzNr FROM rel_et_lg WHERE f_et_Nr = " + etElem.getId(); stmt = conn.createStatement(); rset = stmt.executeQuery(sql); @@ -2280,7 +2280,7 @@ public ArrayList getArtikelLagerElement() throws WiSimDA int a = artikellagerelemente.size() - 1; while (a >= 0) { ComponentWarehouseItem etElem = artikellagerelemente.get(a); - Collection lagerplaetze = new ArrayList<>(); + ArrayList lagerplaetze = new ArrayList<>(); sql = "SELECT f_lg_StellplatzNr FROM rel_art_lg WHERE f_art_Nr = " + etElem.getId(); stmt = conn.createStatement(); rset = stmt.executeQuery(sql); @@ -2509,10 +2509,10 @@ public synchronized ArrayList getArbeitsplaetze() throws WiSimDAOExce * @return Collection */ @Override - public synchronized Collection getArbeitsplatzLager(int arbeitsplatzNr, String lagerTyp) throws WiSimDAOException { + public synchronized ArrayList getArbeitsplatzLager(int arbeitsplatzNr, String lagerTyp) throws WiSimDAOException { String sql = "SELECT * FROM rel_et_ap" + " WHERE f_ap_Nr = " + arbeitsplatzNr + " AND rel_et_ap_Lagertyp = '" + lagerTyp + "';"; - Collection apLager = new ArrayList<>(); + ArrayList apLager = new ArrayList<>(); try { Statement stmt = conn.createStatement(); @@ -2537,83 +2537,81 @@ public synchronized Collection getArbeitsplatzLager(int arbeitsp * @param einzelteilNr Einzelteilnummer * @param typ Lagertyp * @throws WiSimDAOException Fehler beim Lesen aus der DB - * @return Arbeitsplatzlager + * @return WorkPlaceStore */ @Override - public synchronized WorkPlaceStore getArbeitsplatzLager(int arbeitsplatzNr, int einzelteilNr, String typ) throws WiSimDAOException { + public synchronized WorkPlaceStore getWorkPlaceStore(int arbeitsplatzNr, int einzelteilNr, String typ) throws WiSimDAOException { String sql = "SELECT * FROM rel_et_ap" + " WHERE f_ap_Nr = " + arbeitsplatzNr + " AND rel_et_ap_Lagertyp = '" + typ + "' AND f_et_Nr = " + einzelteilNr; - WorkPlaceStore apLager = new WorkPlaceStore(); + WorkPlaceStore workPlaceStore = new WorkPlaceStore(); try { Statement stmt = conn.createStatement(); ResultSet res = stmt.executeQuery(sql); while (res.next()) { - apLager = new WorkPlaceStore(res.getInt(1), res.getInt(2), res.getString(3), res.getInt(4), res.getInt(5), res.getInt(6)); + workPlaceStore = new WorkPlaceStore(res.getInt(1), res.getInt(2), res.getString(3), res.getInt(4), res.getInt(5), res.getInt(6)); } } catch (SQLException e) { System.err.println(e.getMessage()); } - return apLager; + return workPlaceStore; } /** - * Gibt Stueckliste für einen bestimmten Artikel zurück. Der Key der Hashmap + * Gibt Stückliste für einen bestimmten Artikel zurück. Der Key der Hashmap * ist die WiSimComponent-Nummer, der Value ist die erforderliche Menge um 1 * Stück von diesem Artikel zu produzieren. * - * @param artNr Article Nummer + * @param artNr Article nummer * @throws WiSimDAOException if an database error occurs - * @return HashMap (Stückliste) + * @return HashMap (parts list of the article) */ @Override - public HashMap getStueckliste(int artNr) throws WiSimDAOException { - HashMap stueckliste = new HashMap<>(); + public HashMap getPartsListForArticle(int artNr) throws WiSimDAOException { + HashMap partsList = new HashMap<>(); String sql = "SELECT f_et_Nr, rel_art_et_EinzelteileMenge FROM rel_art_et WHERE f_art_Nr = " + artNr; try { Statement stmt = conn.createStatement(); ResultSet rset = stmt.executeQuery(sql); while (rset.next()) { - stueckliste.put(String.valueOf(rset.getInt(1)), String.valueOf(rset.getInt(2))); + partsList.put(String.valueOf(rset.getInt(1)), String.valueOf(rset.getInt(2))); } } catch (SQLException e) { throw new WiSimDAOException(e.getMessage()); } - return stueckliste; + return partsList; } /** - * Gibt die Auftragsposition zur�ck die zu dem entsprechenden Auftrag - * geh�rt. + * Gibt die Auftragsposition zurück die zu dem entsprechenden Auftrag gehört. * - * @param atNr Auftrags Nummer - * @param artNr Article Nummer + * @param atNr Auftragsnummer + * @param artNr Artikelnummer * @throws WiSimDAOException if a database problem occurs or the connection * was never initialized - * @return Die Auftragsposition. + * @return ContractOrderItem. */ @Override - public OrderItem getAuftragsPosition(int atNr, int artNr) throws WiSimDAOException { + public ContractOrderItem getContractOrderItem(int atNr, int artNr) throws WiSimDAOException { // Serverlog logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getAuftrag Action: start"); - String sql; - OrderItem atp = new OrderItem(); + ContractOrderItem contractOrderItem = new ContractOrderItem(); try { - sql = "SELECT f_art_Nr, f_at_Nr, rel_at_art_Bestellmenge FROM rel_at_art WHERE f_at_Nr = " + atNr + " AND f_art_Nr = " + artNr; + String sql = "SELECT f_art_Nr, f_at_Nr, rel_at_art_Bestellmenge FROM rel_at_art WHERE f_at_Nr = " + atNr + " AND f_art_Nr = " + artNr; Statement stmt = conn.createStatement(); ResultSet rset = stmt.executeQuery(sql); while (rset.next()) { - atp.setArtNr(rset.getInt(1)); - atp.setAtNr(rset.getInt(2)); - atp.setBestellmenge(rset.getLong(3)); + contractOrderItem.setArtNr(rset.getInt(1)); + contractOrderItem.setAtNr(rset.getInt(2)); + contractOrderItem.setBestellmenge(rset.getInt(3)); } } catch (SQLException sqlE) { throw new WiSimDAOException(sqlE.getMessage()); } - return atp; + return contractOrderItem; } /** @@ -2648,7 +2646,7 @@ public int getVertragsPositionMenge(int atNr, int artNr) throws WiSimDAOExceptio * @throws WiSimDAOWriteException Fehler beim Schreiben in die DB */ @Override - public int setAuftragsPosition(OrderItem atp) throws WiSimDAOWriteException { + public int setAuftragsPosition(ContractOrderItem atp) throws WiSimDAOWriteException { String sql = "insert into rel_at_art (f_art_Nr, f_at_Nr, rel_at_art_Bestellmenge) " + "VALUES ( " + atp.getArtNr() + ", " + atp.getAtNr() + ", " + atp.getBestellmenge() + ");"; try { diff --git a/wisim/src/java/net/sourceforge/wisim/mdi/DesktopMenu.java b/wisim/src/java/net/sourceforge/wisim/mdi/DesktopMenu.java index d40b46c..aabfd06 100644 --- a/wisim/src/java/net/sourceforge/wisim/mdi/DesktopMenu.java +++ b/wisim/src/java/net/sourceforge/wisim/mdi/DesktopMenu.java @@ -20,15 +20,13 @@ ** ** ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ - package net.sourceforge.wisim.mdi; + import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; -import java.util.Collection; +import java.util.ArrayList; import java.util.Iterator; -import java.util.Vector; - import javax.swing.JMenu; import javax.swing.JRadioButtonMenuItem; @@ -36,164 +34,160 @@ * This class provides the optional "Window" menu for the scrollable desktop. * * @author Tom Tessier - * @version 1.0 11-Aug-2001 + * @version 1.0 11-Aug-2001 */ - public class DesktopMenu extends JMenu implements ActionListener { - private DesktopMediator desktopMediator; - - private boolean tileMode; - private int baseItemsEndIndex; - //private ButtonGroup frameRadioButtonMenuItemGroup; - private Collection buttons; - - /** - * @return - */ - public boolean isTileMode() { - return tileMode; - } - - /** - * @param tileMode - */ - public void setTileMode(boolean tileMode) { - this.tileMode = tileMode; - } - - /** - * creates the DesktopMenu object - * - * @param desktopMediator a reference to the DesktopMediator object - */ - public DesktopMenu(DesktopMediator desktopMediator) { - this(desktopMediator, false); - } - - /** - * creates the DesktopMenu object with the specified tileMode - * - * @param desktopMediator a reference to the DesktopMediator object - * @param tileMode the tile mode to use (true = tile - * internal frames, false = cascade internal frames) - */ - public DesktopMenu(DesktopMediator desktopMediator, boolean tileMode) { - - super("Fenster"); - - setMnemonic(KeyEvent.VK_W); - setMnemonic('F'); - - this.desktopMediator = desktopMediator; - this.tileMode = tileMode; - - buttons = (Collection) new Vector(); - // frameRadioButtonMenuItemGroup = new ButtonGroup(); - - new ConstructWindowMenu(this, desktopMediator, tileMode); - - // set the default item count (ie: number of items comprising - // current menu contents) - baseItemsEndIndex = getItemCount(); - - } - - /** - * adds a - * {@link com.tomtessier.scrollabledesktop.BaseRadioButtonMenuItem - * BaseRadioButtonMenuItem} to the menu and associates it with an internal frame - * - * @param associatedFrame the internal frame to associate with the menu item - */ - public void add(BaseInternalFrame associatedFrame) { - - int displayedCount = getItemCount() - baseItemsEndIndex + 1; - int currentMenuCount = displayedCount; - - // compute the key mnemonic based upon the currentMenuCount - if (currentMenuCount > 9) { - currentMenuCount /= 10; - } - - BaseRadioButtonMenuItem menuButton = new BaseRadioButtonMenuItem(this, displayedCount + " " + associatedFrame.getTitle(), KeyEvent.VK_0 + currentMenuCount, -1, true, associatedFrame); - - associatedFrame.setAssociatedMenuButton(menuButton); - - add(menuButton); - // frameRadioButtonMenuItemGroup.add(menuButton); - buttons.add(menuButton); - - if (getSelectedButton() != null) - { - getSelectedButton().setSelected(false); - } - - menuButton.setSelected(true); // and reselect here, so that the - // buttongroup recognizes the change - - } - - /** - * removes the specified radio menu button from the menu - * - * @param menuButton the JRadioButtonMenuItem to remove - */ - public void remove(JRadioButtonMenuItem menuButton) { - // frameRadioButtonMenuItemGroup.remove(menuButton); - buttons.remove(menuButton); - super.remove(menuButton); - - // cannot simply remove the radio menu button, as need to renumber the - // keyboard shortcut keys as well. Hence, a call to refreshMenu is in order... - - refreshMenu(); // refresh the mnemonics associated with the other items - } - - private void refreshMenu() { - // refresh the associated mnemonics, so that the keyboard shortcut - // keys are properly renumbered... - - // get an enumeration to the elements of the current button group - Iterator it = buttons.iterator(); - - int displayedCount = 1; - int currentMenuCount = 0; - - while (it.hasNext()) { - BaseRadioButtonMenuItem b = (BaseRadioButtonMenuItem) it.next(); - - // compute the key mnemonic based upon the currentMenuCount - currentMenuCount = displayedCount; - if (currentMenuCount > 9) { - currentMenuCount /= 10; - } - b.setMnemonic(KeyEvent.VK_0 + currentMenuCount); - b.setText(displayedCount + " " + b.getAssociatedFrame().getTitle()); - displayedCount++; - } - } - - public BaseRadioButtonMenuItem getSelectedButton () - { - BaseRadioButtonMenuItem b = null; - Iterator it = buttons.iterator(); - while (it.hasNext()) - { - b = (BaseRadioButtonMenuItem) it.next(); - if (b.isSelected()) - return b; - } - return b; - } - - /** - * propogates the actionPerformed menu event to DesktopMediator - * - * @param e the ActionEvent to propogate - */ - public void actionPerformed(ActionEvent e) { - desktopMediator.actionPerformed(e); - } - -} \ No newline at end of file + private DesktopMediator desktopMediator; + + private boolean tileMode; + private int baseItemsEndIndex; + //private ButtonGroup frameRadioButtonMenuItemGroup; + private ArrayList buttons; + + /** + * @return + */ + public boolean isTileMode() { + return tileMode; + } + + /** + * @param tileMode + */ + public void setTileMode(boolean tileMode) { + this.tileMode = tileMode; + } + + /** + * creates the DesktopMenu object + * + * @param desktopMediator a reference to the DesktopMediator object + */ + public DesktopMenu(DesktopMediator desktopMediator) { + this(desktopMediator, false); + } + + /** + * creates the DesktopMenu object with the specified tileMode + * + * @param desktopMediator a reference to the DesktopMediator object + * @param tileMode the tile mode to use (true = tile internal + * frames, false = cascade internal frames) + */ + public DesktopMenu(DesktopMediator desktopMediator, boolean tileMode) { + + super("Fenster"); + + setMnemonic(KeyEvent.VK_W); + setMnemonic('F'); + + this.desktopMediator = desktopMediator; + this.tileMode = tileMode; + + buttons = new ArrayList<>(); + // frameRadioButtonMenuItemGroup = new ButtonGroup(); + + new ConstructWindowMenu(this, desktopMediator, tileMode); + + // set the default item count (ie: number of items comprising + // current menu contents) + baseItemsEndIndex = getItemCount(); + + } + + /** + * adds a {@link com.tomtessier.scrollabledesktop.BaseRadioButtonMenuItem + * BaseRadioButtonMenuItem} to the menu and associates it with an internal + * frame + * + * @param associatedFrame the internal frame to associate with the menu item + */ + public void add(BaseInternalFrame associatedFrame) { + + int displayedCount = getItemCount() - baseItemsEndIndex + 1; + int currentMenuCount = displayedCount; + + // compute the key mnemonic based upon the currentMenuCount + if (currentMenuCount > 9) { + currentMenuCount /= 10; + } + + BaseRadioButtonMenuItem menuButton = new BaseRadioButtonMenuItem(this, displayedCount + " " + associatedFrame.getTitle(), KeyEvent.VK_0 + currentMenuCount, -1, true, associatedFrame); + + associatedFrame.setAssociatedMenuButton(menuButton); + + add(menuButton); + // frameRadioButtonMenuItemGroup.add(menuButton); + buttons.add(menuButton); + + if (getSelectedButton() != null) { + getSelectedButton().setSelected(false); + } + + menuButton.setSelected(true); // and reselect here, so that the + // buttongroup recognizes the change + + } + + /** + * removes the specified radio menu button from the menu + * + * @param menuButton the JRadioButtonMenuItem to remove + */ + public void remove(JRadioButtonMenuItem menuButton) { + // frameRadioButtonMenuItemGroup.remove(menuButton); + buttons.remove(menuButton); + super.remove(menuButton); + + // cannot simply remove the radio menu button, as need to renumber the + // keyboard shortcut keys as well. Hence, a call to refreshMenu is in order... + refreshMenu(); // refresh the mnemonics associated with the other items + } + + private void refreshMenu() { + // refresh the associated mnemonics, so that the keyboard shortcut + // keys are properly renumbered... + + // get an enumeration to the elements of the current button group + Iterator it = buttons.iterator(); + + int displayedCount = 1; + int currentMenuCount = 0; + + while (it.hasNext()) { + BaseRadioButtonMenuItem b = (BaseRadioButtonMenuItem) it.next(); + + // compute the key mnemonic based upon the currentMenuCount + currentMenuCount = displayedCount; + if (currentMenuCount > 9) { + currentMenuCount /= 10; + } + b.setMnemonic(KeyEvent.VK_0 + currentMenuCount); + b.setText(displayedCount + " " + b.getAssociatedFrame().getTitle()); + displayedCount++; + } + } + + public BaseRadioButtonMenuItem getSelectedButton() { + BaseRadioButtonMenuItem b = null; + Iterator it = buttons.iterator(); + while (it.hasNext()) { + b = (BaseRadioButtonMenuItem) it.next(); + if (b.isSelected()) { + return b; + } + } + return b; + } + + /** + * propogates the actionPerformed menu event to DesktopMediator + * + * @param e the ActionEvent to propogate + */ + public void actionPerformed(ActionEvent e) { + desktopMediator.actionPerformed(e); + } + +} diff --git a/wisim/src/java/net/sourceforge/wisim/mdi/FramePositioning.java b/wisim/src/java/net/sourceforge/wisim/mdi/FramePositioning.java index 3e8af5a..d40e18f 100644 --- a/wisim/src/java/net/sourceforge/wisim/mdi/FramePositioning.java +++ b/wisim/src/java/net/sourceforge/wisim/mdi/FramePositioning.java @@ -24,7 +24,6 @@ package net.sourceforge.wisim.mdi; import java.awt.Point; import java.awt.Rectangle; - import javax.swing.JInternalFrame; @@ -140,9 +139,9 @@ private Point cascadeInternalFrame(JInternalFrame f, int count) { // position relative to the current viewport (viewP.x/viewP.y) // (so new windows appear onscreen) int xLoc = viewP.x + X_OFFSET*((count+1) - - (numFramesWide-1)*(int)(count/numFramesWide)); + (numFramesWide-1)*(count/numFramesWide)); int yLoc = viewP.y + Y_OFFSET*((count+1) - - numFramesHigh*(int)(count/numFramesHigh)); + numFramesHigh*(count/numFramesHigh)); return new Point(xLoc, yLoc); diff --git a/wisim/src/java/net/sourceforge/wisim/mdi/ResizableToolBar.java b/wisim/src/java/net/sourceforge/wisim/mdi/ResizableToolBar.java index fbef4bb..7fe1a01 100644 --- a/wisim/src/java/net/sourceforge/wisim/mdi/ResizableToolBar.java +++ b/wisim/src/java/net/sourceforge/wisim/mdi/ResizableToolBar.java @@ -20,94 +20,89 @@ ** ** ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ - package net.sourceforge.wisim.mdi; import java.awt.Dimension; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; -import java.util.Collection; +import java.util.ArrayList; import java.util.Iterator; -import java.util.Vector; - import javax.swing.AbstractButton; import javax.swing.JToggleButton; import javax.swing.JToolBar; import javax.swing.SwingUtilities; /** - * Generic self-contained resizable toolbar class. When a button addition exceeds - * the width of the toolbar container, all buttons within the container are - * automatically resized to compensate, down to the minimum button width defined - * upon creation of the ResizableToolbar instance. + * Generic self-contained resizable toolbar class. When a button addition + * exceeds the width of the toolbar container, all buttons within the container + * are automatically resized to compensate, down to the minimum button width + * defined upon creation of the ResizableToolbar instance. * * @author Tom Tessier - * @version 1.0 03-Mar-2001 + * @version 1.0 03-Mar-2001 */ - public class ResizableToolBar extends JToolBar implements ComponentListener { - private Collection buttons; - - private int minButtonWidth; - private int maxButtonWidth; - - /** - * creates the ResizableToolbar object - * - * @param minButtonWidth the minimum button width allowed - * @param maxButtonWidth the maximum button width allowed - */ - public ResizableToolBar(int minButtonWidth, int maxButtonWidth) { - buttons = (Collection) new Vector(); - setFloatable(false); - this.minButtonWidth = minButtonWidth; - this.maxButtonWidth = maxButtonWidth; - - addComponentListener(this); - - } - - /** - * adds a button to the ResizableToolbar - * - * @param button the button to add - */ - public void add(AbstractButton button) { - buttons.add(button); - super.add(button); - if (getSelectedButton() != null) - { - getSelectedButton().setSelected(false); - } - button.setSelected(true); - resizeButtons(); - - } - - public AbstractButton getSelectedButton () - { - JToggleButton b = null; - Iterator it = buttons.iterator(); - while (it.hasNext()) - { - b = (JToggleButton) it.next(); - if (b.isSelected()) - return b; - } - return b; - } - - /** - * removes a button from the ResizableToolbar - * - * @param button the button to remove - */ - public void remove(AbstractButton button) { - super.remove(button); - button.remove(button); - resizeButtons(); - repaint(); - } + + private ArrayList buttons; + + private int minButtonWidth; + private int maxButtonWidth; + + /** + * creates the ResizableToolbar object + * + * @param minButtonWidth the minimum button width allowed + * @param maxButtonWidth the maximum button width allowed + */ + public ResizableToolBar(int minButtonWidth, int maxButtonWidth) { + buttons = new ArrayList<>(); + setFloatable(false); + this.minButtonWidth = minButtonWidth; + this.maxButtonWidth = maxButtonWidth; + + addComponentListener(this); + + } + + /** + * adds a button to the ResizableToolbar + * + * @param button the button to add + */ + public void add(AbstractButton button) { + buttons.add(button); + super.add(button); + if (getSelectedButton() != null) { + getSelectedButton().setSelected(false); + } + button.setSelected(true); + resizeButtons(); + + } + + public AbstractButton getSelectedButton() { + JToggleButton b = null; + Iterator it = buttons.iterator(); + while (it.hasNext()) { + b = (JToggleButton) it.next(); + if (b.isSelected()) { + return b; + } + } + return b; + } + + /** + * removes a button from the ResizableToolbar + * + * @param button the button to remove + */ + public void remove(AbstractButton button) { + super.remove(button); + button.remove(button); + resizeButtons(); + repaint(); + } // /** // * returns the ResizableToolbar elements @@ -117,132 +112,132 @@ public void remove(AbstractButton button) { // private Collection getElements() { // return buttons; // } - - /** - * returns the number of buttons stored within the ResizableToolbar - * - * @return the number of buttons - */ - public int getButtonCount() { - return buttons.size(); - } - - /** - * resizes the buttons of the toolbar, depending upon the total number - * of components stored therein. - * Executes as an "invoked later" thread for a slight perceived - * performance boost. - */ - private void resizeButtons() { - - final float exactButtonWidth = getCurrentButtonWidth(); - - SwingUtilities.invokeLater(new Runnable() { - - public void run() { - - JToggleButton b = null; - Iterator it = buttons.iterator(); - - float currentButtonXLocation = 0.0f; - - // resize the buttons - while (it.hasNext() ) { - b = (JToggleButton) it.next(); - int buttonWidth = Math.round(currentButtonXLocation + exactButtonWidth) - Math.round(currentButtonXLocation); - assignWidth(b, buttonWidth); - - currentButtonXLocation += exactButtonWidth; - } - - revalidate(); - - } - }); - } - - /** - * returns the current button width, defined as the width of the ResizableToolbar - * divided by the number of buttons. The value returned ranges from - * minButtonWidth to maxButtonWidth (two variables defined upon creation - * of the ResizableToolbar instance). - * - * @return the current button width as a float. - */ - private float getCurrentButtonWidth() { - - int width = getWidth() - getInsets().left - getInsets().right; - - // if width <= 0, means JToolbar hasn't been displayed yet, so use - // the maximum button width - float buttonWidth = ((width <= 0) ? maxButtonWidth : width); - - int numButtons = getButtonCount(); - - // have at least one button? then divide the width by the # of buttons - // (ie: resultant buttonWidth = viewport width / # of buttons) - if (numButtons > 0) { - buttonWidth /= numButtons; - } - - if (buttonWidth < minButtonWidth) { - buttonWidth = minButtonWidth; - } else if (buttonWidth > maxButtonWidth) { - buttonWidth = maxButtonWidth; - } - - return buttonWidth; - } - - /** - * assigns a new width to the specified button - * - * @param b the button whose width is to be adjusted - * @param buttonWidth the new width - */ - private void assignWidth(JToggleButton b, int buttonWidth) { - - b.setMinimumSize(new Dimension(buttonWidth - 2, b.getPreferredSize().height)); - b.setPreferredSize(new Dimension(buttonWidth, b.getPreferredSize().height)); - Dimension newSize = b.getPreferredSize(); - b.setMaximumSize(newSize); - b.setSize(newSize); - - } - - ///// - // respond to resize events... - ///// - - /** - * resize the buttons when the ResizableToolbar itself is resized - * - * @param e the ComponentEvent - */ - public void componentResized(ComponentEvent e) { - resizeButtons(); - } - - /** - * interface placeholder - * - * @param e the ComponentEvent - */ - public void componentShown(ComponentEvent e) { - } - /** - * interface placeholder - * - * @param e the ComponentEvent - */ - public void componentMoved(ComponentEvent e) { - } - /** - * interface placeholder - * - * @param e the ComponentEvent - */ - public void componentHidden(ComponentEvent e) { - } - -} \ No newline at end of file + /** + * returns the number of buttons stored within the ResizableToolbar + * + * @return the number of buttons + */ + public int getButtonCount() { + return buttons.size(); + } + + /** + * resizes the buttons of the toolbar, depending upon the total number of + * components stored therein. Executes as an "invoked later" thread for a + * slight perceived performance boost. + */ + private void resizeButtons() { + + final float exactButtonWidth = getCurrentButtonWidth(); + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + + JToggleButton b; + Iterator it = buttons.iterator(); + + float currentButtonXLocation = 0.0f; + + // resize the buttons + while (it.hasNext()) { + b = (JToggleButton) it.next(); + int buttonWidth = Math.round(currentButtonXLocation + exactButtonWidth) - Math.round(currentButtonXLocation); + assignWidth(b, buttonWidth); + + currentButtonXLocation += exactButtonWidth; + } + + revalidate(); + + } + }); + } + + /** + * returns the current button width, defined as the width of the + * ResizableToolbar divided by the number of buttons. The value returned + * ranges from minButtonWidth to maxButtonWidth (two variables defined upon + * creation of the ResizableToolbar instance). + * + * @return the current button width as a float. + */ + private float getCurrentButtonWidth() { + + int width = getWidth() - getInsets().left - getInsets().right; + + // if width <= 0, means JToolbar hasn't been displayed yet, so use + // the maximum button width + float buttonWidth = ((width <= 0) ? maxButtonWidth : width); + + int numButtons = getButtonCount(); + + // have at least one button? then divide the width by the # of buttons + // (ie: resultant buttonWidth = viewport width / # of buttons) + if (numButtons > 0) { + buttonWidth /= numButtons; + } + + if (buttonWidth < minButtonWidth) { + buttonWidth = minButtonWidth; + } else if (buttonWidth > maxButtonWidth) { + buttonWidth = maxButtonWidth; + } + + return buttonWidth; + } + + /** + * assigns a new width to the specified button + * + * @param b the button whose width is to be adjusted + * @param buttonWidth the new width + */ + private void assignWidth(JToggleButton b, int buttonWidth) { + + b.setMinimumSize(new Dimension(buttonWidth - 2, b.getPreferredSize().height)); + b.setPreferredSize(new Dimension(buttonWidth, b.getPreferredSize().height)); + Dimension newSize = b.getPreferredSize(); + b.setMaximumSize(newSize); + b.setSize(newSize); + + } + + ///// + // respond to resize events... + ///// + /** + * resize the buttons when the ResizableToolbar itself is resized + * + * @param e the ComponentEvent + */ + public void componentResized(ComponentEvent e) { + resizeButtons(); + } + + /** + * interface placeholder + * + * @param e the ComponentEvent + */ + public void componentShown(ComponentEvent e) { + } + + /** + * interface placeholder + * + * @param e the ComponentEvent + */ + public void componentMoved(ComponentEvent e) { + } + + /** + * interface placeholder + * + * @param e the ComponentEvent + */ + public void componentHidden(ComponentEvent e) { + } + +} diff --git a/wisim/src/java/net/sourceforge/wisim/model/ComponentContract.java b/wisim/src/java/net/sourceforge/wisim/model/ComponentContract.java index 3d0ab5e..00bddd9 100644 --- a/wisim/src/java/net/sourceforge/wisim/model/ComponentContract.java +++ b/wisim/src/java/net/sourceforge/wisim/model/ComponentContract.java @@ -22,14 +22,14 @@ ** ******************************************************************** */ /* - * Einzelteilauftrag.java + * ComponentContract.java * * Created on 6. März 2003, 19:24 */ package net.sourceforge.wisim.model; import java.sql.Date; -import java.util.Collection; +import java.util.ArrayList; /** * ComponentContract für Einzelteile @@ -46,7 +46,7 @@ public class ComponentContract { private Date lieferdatum; private Date auftragsdatum; private float skonto; - private Collection einzelteilauftragPositionen; + private ArrayList einzelteilauftragPositionen; /** * Creates a new instance of ComponentContract @@ -67,7 +67,7 @@ public ComponentContract() { * @param skonto * @param einzelteilauftragPositionen */ - public ComponentContract(int nr, int lieferantNr, int einzelteilAuftragsRechnungNr, float lieferrabatt, int skontofrist, Date lieferdatum, Date auftragsdatum, float skonto, Collection einzelteilauftragPositionen) { + public ComponentContract(int nr, int lieferantNr, int einzelteilAuftragsRechnungNr, float lieferrabatt, int skontofrist, Date lieferdatum, Date auftragsdatum, float skonto, ArrayList einzelteilauftragPositionen) { this.nr = nr; this.lieferantNr = lieferantNr; this.einzelteilAuftragsRechnungNr = einzelteilAuftragsRechnungNr; @@ -156,7 +156,7 @@ public int getLieferantNr() { * * @return Collection mit Objekten des Typs EinzelteilAuftragsPosition */ - public Collection getEinzelteilauftragPositionen() { + public ArrayList getEinzelteilauftragPositionen() { return einzelteilauftragPositionen; } @@ -235,7 +235,7 @@ public void setLieferantNr(int lieferantNr) { /** * @param col Collection mit Objekten vom Typ EinzelteilAuftragPosition */ - public void setEinzelteilauftragPositionen(Collection col) { + public void setEinzelteilauftragPositionen(ArrayList col) { this.einzelteilauftragPositionen = col; } } diff --git a/wisim/src/java/net/sourceforge/wisim/model/ComponentContractAccount.java b/wisim/src/java/net/sourceforge/wisim/model/ComponentContractInvoice.java similarity index 94% rename from wisim/src/java/net/sourceforge/wisim/model/ComponentContractAccount.java rename to wisim/src/java/net/sourceforge/wisim/model/ComponentContractInvoice.java index 58eb8a8..841d139 100644 --- a/wisim/src/java/net/sourceforge/wisim/model/ComponentContractAccount.java +++ b/wisim/src/java/net/sourceforge/wisim/model/ComponentContractInvoice.java @@ -22,17 +22,17 @@ ** ******************************************************************** */ /* - * Einzelteilauftragsrechnung.java + * ComponentContractInvoice.java * * Created on 6. März 2003, 19:57 */ package net.sourceforge.wisim.model; -/** ComponentContractAccount +/** ComponentContractInvoice * @author Ben */ -public class ComponentContractAccount { +public class ComponentContractInvoice { private int nr; private double betrag; @@ -42,7 +42,7 @@ public class ComponentContractAccount { /** Einzelteileauftragsrechnung wenn die HUBFirma Einzelteile bei einem * Lieferanten bestellt. */ - public ComponentContractAccount() { + public ComponentContractInvoice() { } /** ComponentContractAccount @@ -51,7 +51,7 @@ public ComponentContractAccount() { * @param EinzelteilauftragNr Referenz auf den ComponentContract * @param MwSt Mehrwertsteuer */ - public ComponentContractAccount(int nr, double betrag, int einzelteilauftragNr, float mwSt) { + public ComponentContractInvoice(int nr, double betrag, int einzelteilauftragNr, float mwSt) { this.nr = nr; this.betrag = betrag; this.einzelteilauftragNr = einzelteilauftragNr; diff --git a/wisim/src/java/net/sourceforge/wisim/model/ComponentContractItem.java b/wisim/src/java/net/sourceforge/wisim/model/ComponentContractItem.java index 0a6d275..f45a693 100644 --- a/wisim/src/java/net/sourceforge/wisim/model/ComponentContractItem.java +++ b/wisim/src/java/net/sourceforge/wisim/model/ComponentContractItem.java @@ -21,95 +21,96 @@ ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ -/* - * EinzelteilauftragPositionen.java + /* + * ComponentContractItem.java * * Created on 8. März 2003, 15:46 */ - package net.sourceforge.wisim.model; /** * - * @author benjamin.pasero + * @author benjamin.pasero */ public class ComponentContractItem { - - private int etNr; - private int etatNr; - private int bestellmenge; - private double preis; - - /** Creates a new instance of EinzelteilauftragPositionen */ - public ComponentContractItem() { - } - - /** - * @param Preis - * @param etNr - * @param etatNr - * @param Bestellmenge - */ - public ComponentContractItem(int etNr, int etatNr, int bestellmenge, double preis) { - this.etNr = etNr; - this.etatNr = etatNr; - this.bestellmenge = bestellmenge; - this.preis = preis; - } - - /** - * @return Einzelteilenummer - */ - public int getEtNr(){ - return etNr; - } - - /** - * @return Einzelteilauftragsnummer - */ - public int getEtatNr() { - return etatNr; - } - - /** - * @return Bestellmenge - */ - public int getBestellmenge() { - return bestellmenge; - } - - /** - * @return Preis - */ - public double getPreis() { - return preis; - } - - /** - * @param etNr - */ - public void setEtNr(int etNr){ - this.etNr = etNr; - } - - /** - * @param etatNr - */ - public void setEtatNr(int etatNr) { - this.etatNr = etatNr; - } - - /** - * @param Bestellmenge - */ - public void setBestellmenge(int bestellmenge) { - this.bestellmenge = bestellmenge; - } - - /** - * @param Preis - */ - public void setPreis(double preis) { - this.preis = preis; - } -} \ No newline at end of file + + private int etNr; + private int etatNr; + private int bestellmenge; + private double preis; + + /** + * Creates a new instance of EinzelteilauftragPositionen + */ + public ComponentContractItem() { + } + + /** + * @param preis + * @param etNr + * @param etatNr + * @param bestellmenge + */ + public ComponentContractItem(int etNr, int etatNr, int bestellmenge, double preis) { + this.etNr = etNr; + this.etatNr = etatNr; + this.bestellmenge = bestellmenge; + this.preis = preis; + } + + /** + * @return Einzelteilenummer + */ + public int getEtNr() { + return etNr; + } + + /** + * @return Einzelteilauftragsnummer + */ + public int getEtatNr() { + return etatNr; + } + + /** + * @return Bestellmenge + */ + public int getBestellmenge() { + return bestellmenge; + } + + /** + * @return Preis + */ + public double getPreis() { + return preis; + } + + /** + * @param etNr + */ + public void setEtNr(int etNr) { + this.etNr = etNr; + } + + /** + * @param etatNr + */ + public void setEtatNr(int etatNr) { + this.etatNr = etatNr; + } + + /** + * @param bestellmenge + */ + public void setBestellmenge(int bestellmenge) { + this.bestellmenge = bestellmenge; + } + + /** + * @param preis + */ + public void setPreis(double preis) { + this.preis = preis; + } +} diff --git a/wisim/src/java/net/sourceforge/wisim/model/ComponentWarehouseItem.java b/wisim/src/java/net/sourceforge/wisim/model/ComponentWarehouseItem.java index 8b7401a..627962b 100644 --- a/wisim/src/java/net/sourceforge/wisim/model/ComponentWarehouseItem.java +++ b/wisim/src/java/net/sourceforge/wisim/model/ComponentWarehouseItem.java @@ -27,7 +27,7 @@ */ package net.sourceforge.wisim.model; -import java.util.Collection; +import java.util.ArrayList; /** * Die Summe der Einzelteile eines bestimmten Typs (Name, Einzelteile Nr, @@ -43,7 +43,7 @@ public class ComponentWarehouseItem { private int minBestand; private int maxBestand; private int bestand; - private Collection lagerplaetze; + private ArrayList workPlaces; // TODO Warum String? /** * Erstellt eine neue Instanz ComponentWarehouseItem. Es kann sich um einen @@ -54,16 +54,16 @@ public class ComponentWarehouseItem { * @param minBestand Mindestbestand * @param maxBestand Maximalbestand * @param bestand aktueller Bestand - * @param lagerplaetze Lagerplätze an denen der Article oder das + * @param workplaces Lagerplätze an denen der Article oder das * WiSimComponent lagert */ - public ComponentWarehouseItem(String einzelteilName, int id, int minBestand, int maxBestand, int bestand, Collection lagerplaetze) { + public ComponentWarehouseItem(String einzelteilName, int id, int minBestand, int maxBestand, int bestand, ArrayList workplaces) { this.einzelteilName = einzelteilName; this.id = id; this.minBestand = minBestand; this.maxBestand = maxBestand; this.bestand = bestand; - this.lagerplaetze = lagerplaetze; + this.workPlaces = workplaces; } /** @@ -120,8 +120,8 @@ public int getMinBestand() { /** * @return Anzahl der Lagerplätze */ - public Collection getLagerplaetze() { - return lagerplaetze; + public ArrayList getLagerplaetze() { + return workPlaces; } /** @@ -161,10 +161,10 @@ public void setMinBestand(int minBestand) { } /** - * @param lagerplaetze + * @param workplaces */ - public void setLagerplaetze(Collection lagerplaetze) { - this.lagerplaetze = lagerplaetze; + public void setLagerplaetze(ArrayList workplaces) { + this.workPlaces = workplaces; } /** diff --git a/wisim/src/java/net/sourceforge/wisim/model/Contract.java b/wisim/src/java/net/sourceforge/wisim/model/Contract.java index f2e4322..c0d63c3 100644 --- a/wisim/src/java/net/sourceforge/wisim/model/Contract.java +++ b/wisim/src/java/net/sourceforge/wisim/model/Contract.java @@ -22,13 +22,14 @@ ** ******************************************************************** */ /* - * Vertrag.java + * Contract.java * * Created on 4. März 2003, 23:46 */ package net.sourceforge.wisim.model; +import java.sql.Date; import java.util.Collection; /** @@ -38,14 +39,14 @@ public class Contract { private int nr; //Vertrags ID - private java.sql.Date lieferdatum; + private Date lieferdatum; private double skonto; private long skontofrist; private double rabatt; - private java.sql.Date vertragsdatum; + private Date vertragsdatum; private int kd_nr; private int atr_nr;//Auftrags-Rechnungs-ID - private Collection auftragPositionen; + private Collection auftragPositionen; /** Creates a new instance of Contract */ public Contract() { @@ -62,7 +63,7 @@ public Contract() { * @param atr_nr * @param skonto */ - public Contract(int nr, java.sql.Date lieferdatum, double skonto, long skontofrist, double rabatt, java.sql.Date vertragsdatum, int kd_nr, int atr_nr, Collection auftragPositionen){ + public Contract(int nr, Date lieferdatum, double skonto, long skontofrist, double rabatt, Date vertragsdatum, int kd_nr, int atr_nr, Collection auftragPositionen){ this.nr = nr; this.lieferdatum = lieferdatum; this.skonto = skonto; @@ -84,7 +85,7 @@ public int getVertragsId(){ /** Gibt das Lieferdatum zurück * @return Date */ - public java.sql.Date getLieferdatum(){ + public Date getLieferdatum(){ return lieferdatum; } @@ -131,9 +132,9 @@ public int getAuftragsrechnungsId(){ } /** Liste der einzelnen Positionen aus dem Auftrag - * @return Collection mit Objekten des Typs OrderItem + * @return Collection mit Objekten des Typs ContractOrderItem */ - public Collection getAuftragPositionen() { + public Collection getAuftragPositionen() { return auftragPositionen; } @@ -204,7 +205,7 @@ public void setAuftragsrechnungsId(int atr_nr){ /** * @param col Collection mit Objekten vom Typ AuftragPosition */ - public void setAuftragPositionen(Collection col) { + public void setAuftragPositionen(Collection col) { this.auftragPositionen = col; } diff --git a/wisim/src/java/net/sourceforge/wisim/model/ContractAccount.java b/wisim/src/java/net/sourceforge/wisim/model/ContractInvoice.java similarity index 95% rename from wisim/src/java/net/sourceforge/wisim/model/ContractAccount.java rename to wisim/src/java/net/sourceforge/wisim/model/ContractInvoice.java index e248577..fd5e984 100644 --- a/wisim/src/java/net/sourceforge/wisim/model/ContractAccount.java +++ b/wisim/src/java/net/sourceforge/wisim/model/ContractInvoice.java @@ -22,17 +22,17 @@ ** ******************************************************************** */ /* - * ContractAccount.java + * ContractInvoice.java * * Created on 21. März 2003, 03:30 */ package net.sourceforge.wisim.model; -/** ContractAccount +/** ContractInvoice * @author Denise freitag */ -public class ContractAccount { +public class ContractInvoice { private int nr; private double betrag; @@ -43,7 +43,7 @@ public class ContractAccount { /** ContractAccount wenn die HUBFirma einen neuen Contract mit * einem Kunden macht. */ - public ContractAccount() { + public ContractInvoice() { } /** ContractAccount @@ -52,7 +52,7 @@ public ContractAccount() { * @param AuftragNr Referenz auf den Auftrag * @param MwSt Mehrwertsteuer */ - public ContractAccount(int nr, double betrag, int auftragNr, float mwSt, boolean zEingang) { + public ContractInvoice(int nr, double betrag, int auftragNr, float mwSt, boolean zEingang) { this.nr = nr; this.betrag = betrag; this.auftragNr = auftragNr; diff --git a/wisim/src/java/net/sourceforge/wisim/model/OrderItem.java b/wisim/src/java/net/sourceforge/wisim/model/ContractOrderItem.java similarity index 58% rename from wisim/src/java/net/sourceforge/wisim/model/OrderItem.java rename to wisim/src/java/net/sourceforge/wisim/model/ContractOrderItem.java index 9429553..8783255 100644 --- a/wisim/src/java/net/sourceforge/wisim/model/OrderItem.java +++ b/wisim/src/java/net/sourceforge/wisim/model/ContractOrderItem.java @@ -21,84 +21,82 @@ ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ -/* + /* * EinzelteilauftragPositionen.java * * Created on 21. März 2003, 04:14 */ - package net.sourceforge.wisim.model; /** + * The order items for the contract. * - * @author Denise freitag + * @author Denise freitag */ -public class OrderItem { - - private int atNr; - private int artNr; - private long bestellmenge; - - - /** Creates a new instance of AuftragPositionen */ - public OrderItem() { - } - - /** - * @param atNr Referenz auf den Auftrag - * @param artNr Referenz auf Article - * @param Bestellmenge Menge eines Artikels - */ - public OrderItem(int atNr, int artNr, long bestellmenge) { - this.atNr = atNr; - this.artNr = artNr; - this.bestellmenge = bestellmenge; - - } - - /** - * @return Auftragsnummer - */ - public int getAtNr(){ - return atNr; - } - - /** - * @return Artikelnummer - */ - public int getArtNr() { - return artNr; - } - - /** - * @return Bestellmenge - */ - public long getBestellmenge() { - return bestellmenge; - } - - - - /** - * @param atNr - */ - public void setAtNr(int atNr){ - this.atNr = atNr; - } - - /** - * @param artNr - */ - public void setArtNr(int artNr) { - this.artNr = artNr; - } - - /** - * @param Bestellmenge - */ - public void setBestellmenge(long bestellmenge) { - this.bestellmenge = bestellmenge; - } - - +public class ContractOrderItem { + + private int atNr; + private int artNr; + private int bestellmenge; + + /** + * Creates a new instance of AuftragPositionen + */ + public ContractOrderItem() { + } + + /** + * @param atNr Referenz auf den Auftrag + * @param artNr Referenz auf Article + * @param bestellmenge Menge eines Artikels + */ + public ContractOrderItem(int atNr, int artNr, int bestellmenge) { + this.atNr = atNr; + this.artNr = artNr; + this.bestellmenge = bestellmenge; + + } + + /** + * @return Auftragsnummer + */ + public int getAtNr() { + return atNr; + } + + /** + * @return Artikelnummer + */ + public int getArtNr() { + return artNr; + } + + /** + * @return Bestellmenge + */ + public long getBestellmenge() { + return bestellmenge; + } + + /** + * @param atNr + */ + public void setAtNr(int atNr) { + this.atNr = atNr; + } + + /** + * @param artNr + */ + public void setArtNr(int artNr) { + this.artNr = artNr; + } + + /** + * @param bestellmenge + */ + public void setBestellmenge(int bestellmenge) { + this.bestellmenge = bestellmenge; + } + } diff --git a/wisim/src/java/net/sourceforge/wisim/model/Memo.java b/wisim/src/java/net/sourceforge/wisim/model/Memo.java index 77b0f2e..60220aa 100644 --- a/wisim/src/java/net/sourceforge/wisim/model/Memo.java +++ b/wisim/src/java/net/sourceforge/wisim/model/Memo.java @@ -21,96 +21,117 @@ ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ -/* + /* * Notiz.java * * Created on 26. Februar 2003, 22:22 */ - package net.sourceforge.wisim.model; import java.sql.Date; -/** Klasse Memo +/** + * Klasse Memo + * * @author Benjamin Pasero */ public class Memo { - - private int id; - private int kundenNr; - private String text; - private Date date; - - /** Creates a new instance of Memo - * @param id ID - * @param KundenNr Kundennummer - * @param text Text - * @param date Datum - */ - public Memo(int id, int kundenNr, String text, Date date) { - this.id = id; - this.kundenNr = kundenNr; - this.text = text; - this.date = date; - } - - /** Erstellt eine neue Memo */ - public Memo () { - } - - /** Setzt die ID - * @param id ID - */ - public void setId(int id) { - this.id = id; - } - - /** Setzt die Kundennummer - * @param KundenNr Kundennummer - */ - public void setKundenNr(int kundenNr) { - this.kundenNr = kundenNr; - } - - /** Setzt den Text - * @param text Text - */ - public void setText(String text) { - this.text = text; - } - - /** Setzt das Datum - * @param date Datum - */ - public void setDate(Date date) { - this.date = date; - } - - /** Liefert die ID - * @return int - */ - public int getId() { - return id; - } - - /** Liefert die Kundennummer - * @return int - */ - public int getKundenNr() { - return kundenNr; - } - - /** Liefert den Text - * @return String - */ - public String getText() { - return text; - } - - /** Liefert das Datum - * @return java.sql.Date - */ - public Date getDate() { - return date; - } + + private int id; + private int kundenNr; + private String text; + private Date date; + + /** + * Creates a new instance of Memo + * + * @param id ID + * @param KundenNr Kundennummer + * @param text Text + * @param date Datum + */ + public Memo(int id, int kundenNr, String text, Date date) { + this.id = id; + this.kundenNr = kundenNr; + this.text = text; + this.date = date; + } + + /** + * Erstellt eine neue Memo + */ + public Memo() { + } + + /** + * Setzt die ID + * + * @param id ID + */ + public void setId(int id) { + this.id = id; + } + + /** + * Setzt die Kundennummer + * + * @param KundenNr Kundennummer + */ + public void setKundenNr(int kundenNr) { + this.kundenNr = kundenNr; + } + + /** + * Setzt den Text + * + * @param text Text + */ + public void setText(String text) { + this.text = text; + } + + /** + * Setzt das Datum + * + * @param date Datum + */ + public void setDate(Date date) { + this.date = date; + } + + /** + * Liefert die ID + * + * @return int + */ + public int getId() { + return id; + } + + /** + * Liefert die Kundennummer + * + * @return int + */ + public int getKundenNr() { + return kundenNr; + } + + /** + * Liefert den Text + * + * @return String + */ + public String getText() { + return text; + } + + /** + * Liefert das Datum + * + * @return java.sql.Date + */ + public Date getDate() { + return date; + } } diff --git a/wisim/src/java/net/sourceforge/wisim/model/Person.java b/wisim/src/java/net/sourceforge/wisim/model/Person.java index a658a6e..4afe555 100644 --- a/wisim/src/java/net/sourceforge/wisim/model/Person.java +++ b/wisim/src/java/net/sourceforge/wisim/model/Person.java @@ -21,214 +21,219 @@ ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ -/* + /* * Person.java * * Created on 26. Februar 2003, 20:07 */ - package net.sourceforge.wisim.model; -/** Person: Erben sind Customer und Supplier +/** + * Person: Erben sind Customer und Supplier + * * @author Benjamin Pasero */ public class Person { - - private int id; - private String vorname; - private String nachname; - private String firma; - private String strasse; - private String telefon; - private String fax; - private String email; - private String plz; - private int plzId; - private String ort; - - /** Creates a new instance of Person - * @param plzId - * @param id - * @param vorname - * @param nachname - * @param firma - * @param strasse - * @param telefon - * @param fax - * @param email - * @param plz - * @param ort - */ - public Person(int id, String vorname, String nachname, String firma, String strasse, String telefon, - String fax, String email, String plz, int plzId, String ort) { - this.id = id; - this.vorname = vorname; - this.nachname = nachname; - this.firma = firma; - this.strasse = strasse; - this.telefon = telefon; - this.fax = fax; - this.email = email; - this.plz = plz; - this.plzId = plzId; - this.ort = ort; - } - - /** Creates a new instance of Customer */ - public Person(){ - } - - /** - * @param id - */ - public void setId(int id) { - this.id = id; - } - - /** - * @param vorname - */ - public void setVorname(String vorname) { - this.vorname = vorname; - } - - /** - * @param nachname - */ - public void setNachname(String nachname) { - this.nachname = nachname; - } - - /** - * @param firma - */ - public void setFirma(String firma) { - this.firma = firma; - } - - /** - * @param strasse - */ - public void setStrasse(String strasse) { - this.strasse = strasse; - } - - /** - * @param telefon - */ - public void setTelefon(String telefon) { - this.telefon = telefon; - } - - /** - * @param fax - */ - public void setFax(String fax) { - this.fax = fax; - } - - /** - * @param email - */ - public void setEmail(String email) { - this.email = email; - } - - /** - * @param ort - */ - public void setOrt(String ort) { - this.ort = ort; - } - - /** - * @param plz - */ - public void setPlz(String plz) { - this.plz = plz; - } - - /** - * @param plzId - */ - public void setPlzId(int plzId) { - this.plzId = plzId; - } - - /** - * @return ID - */ - public int getId() { - return id; - } - - /** - * @return Vorname - */ - public String getVorname() { - return vorname; - } - - /** - * @return Nachname - */ - public String getNachname() { - return nachname; - } - - /** - * @return Firma - */ - public String getFirma() { - return firma; - } - - /** - * @return Strasse - */ - public String getStrasse() { - return strasse; - } - - /** - * @return Telefon - */ - public String getTelefon() { - return telefon; - } - - /** - * @return Fax - */ - public String getFax() { - return fax; - } - - /** - * @return eMail - */ - public String getEmail() { - return email; - } - - /** - * @return City - */ - public String getOrt() { - return ort; - } - - /** - * @return PLZ - */ - public String getPlz() { - return plz; - } - - /** - * @return PLZ-ID - */ - public int getPlzId() { - return plzId; - } + + private int id; + private String vorname; + private String nachname; + private String firma; + private String strasse; + private String telefon; + private String fax; + private String email; + private String plz; + private int plzId; + private String ort; + + /** + * Creates a new instance of Person + * + * @param plzId + * @param id + * @param vorname + * @param nachname + * @param firma + * @param strasse + * @param telefon + * @param fax + * @param email + * @param plz + * @param ort + */ + public Person(int id, String vorname, String nachname, String firma, String strasse, String telefon, + String fax, String email, String plz, int plzId, String ort) { + this.id = id; + this.vorname = vorname; + this.nachname = nachname; + this.firma = firma; + this.strasse = strasse; + this.telefon = telefon; + this.fax = fax; + this.email = email; + this.plz = plz; + this.plzId = plzId; + this.ort = ort; + } + + /** + * Creates a new instance of Customer + */ + public Person() { + } + + /** + * @param id + */ + public void setId(int id) { + this.id = id; + } + + /** + * @param vorname + */ + public void setVorname(String vorname) { + this.vorname = vorname; + } + + /** + * @param nachname + */ + public void setNachname(String nachname) { + this.nachname = nachname; + } + + /** + * @param firma + */ + public void setFirma(String firma) { + this.firma = firma; + } + + /** + * @param strasse + */ + public void setStrasse(String strasse) { + this.strasse = strasse; + } + + /** + * @param telefon + */ + public void setTelefon(String telefon) { + this.telefon = telefon; + } + + /** + * @param fax + */ + public void setFax(String fax) { + this.fax = fax; + } + + /** + * @param email + */ + public void setEmail(String email) { + this.email = email; + } + + /** + * @param ort + */ + public void setOrt(String ort) { + this.ort = ort; + } + + /** + * @param plz + */ + public void setPlz(String plz) { + this.plz = plz; + } + + /** + * @param plzId + */ + public void setPlzId(int plzId) { + this.plzId = plzId; + } + + /** + * @return ID + */ + public int getId() { + return id; + } + + /** + * @return Vorname + */ + public String getVorname() { + return vorname; + } + + /** + * @return Nachname + */ + public String getNachname() { + return nachname; + } + + /** + * @return Firma + */ + public String getFirma() { + return firma; + } + + /** + * @return Strasse + */ + public String getStrasse() { + return strasse; + } + + /** + * @return Telefon + */ + public String getTelefon() { + return telefon; + } + + /** + * @return Fax + */ + public String getFax() { + return fax; + } + + /** + * @return eMail + */ + public String getEmail() { + return email; + } + + /** + * @return City + */ + public String getOrt() { + return ort; + } + + /** + * @return PLZ + */ + public String getPlz() { + return plz; + } + + /** + * @return PLZ-ID + */ + public int getPlzId() { + return plzId; + } } diff --git a/wisim/src/java/net/sourceforge/wisim/model/Refreshable.java b/wisim/src/java/net/sourceforge/wisim/model/Refreshable.java index d40ed53..89032d6 100644 --- a/wisim/src/java/net/sourceforge/wisim/model/Refreshable.java +++ b/wisim/src/java/net/sourceforge/wisim/model/Refreshable.java @@ -20,7 +20,6 @@ ** ** ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ - /* * Created on 25.06.2003 * @@ -32,7 +31,7 @@ * */ public interface Refreshable { - - public void refresh(); + + public void refresh(); } diff --git a/wisim/src/java/net/sourceforge/wisim/model/Supplier.java b/wisim/src/java/net/sourceforge/wisim/model/Supplier.java index 9a572dd..1544099 100644 --- a/wisim/src/java/net/sourceforge/wisim/model/Supplier.java +++ b/wisim/src/java/net/sourceforge/wisim/model/Supplier.java @@ -21,47 +21,51 @@ ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ -/* + /* * Lieferant.java * * Created on 26. Februar 2003, 20:04 */ - package net.sourceforge.wisim.model; /** * - * @author Kay Patzwald + * @author Kay Patzwald */ -public class Supplier extends Person { +public class Supplier extends Person { + private String lieferqualitaet; private String zuverlaessigkeit; - - /** Creates a new instance of Supplier */ + + /** + * Creates a new instance of Supplier + */ public Supplier() { super(); } - - /** Creates a new instance of Supplier */ - public Supplier(int id, String firma, String name, String vorname, String telefon, String fax, - String strasse, String ort, String plz, int plzId, String eMail, String zuverlaessigkeit, String lieferqualitaet) { + + /** + * Creates a new instance of Supplier + */ + public Supplier(int id, String firma, String name, String vorname, String telefon, String fax, + String strasse, String ort, String plz, int plzId, String eMail, String zuverlaessigkeit, String lieferqualitaet) { super(id, vorname, name, firma, strasse, telefon, fax, eMail, plz, plzId, ort); this.lieferqualitaet = lieferqualitaet; this.zuverlaessigkeit = zuverlaessigkeit; } - + public String getLieferqualitaet() { return lieferqualitaet; } - + public void setLieferqualitaet(String lieferqualitaet) { this.lieferqualitaet = lieferqualitaet; } public String getZuverlaessigkeit() { return zuverlaessigkeit; - } - + } + public void setZuverlaessigkeit(String zuverlaessigkeit) { this.zuverlaessigkeit = zuverlaessigkeit; } diff --git a/wisim/src/java/net/sourceforge/wisim/model/SupplyList.java b/wisim/src/java/net/sourceforge/wisim/model/SupplyList.java index f9c7ae9..2be89af 100644 --- a/wisim/src/java/net/sourceforge/wisim/model/SupplyList.java +++ b/wisim/src/java/net/sourceforge/wisim/model/SupplyList.java @@ -21,74 +21,69 @@ ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ -/* + /* * Lieferliste.java * * Created on 2. März 2003, 00:39 */ - package net.sourceforge.wisim.model; /** * - * @author Kay Patzwald + * @author Kay Patzwald */ public class SupplyList { - + private int lieferantenID; private int einzelteilID; private double preis; private long mindestBestellMenge; - - /** Creates a new instance of SupplyList */ + + /** + * Creates a new instance of SupplyList + */ public SupplyList() { } - - /** Creates a new instance of SupplyList */ + + /** + * Creates a new instance of SupplyList + */ public SupplyList(int lieferantenID, int einzelteilID, double preis, long mindestBestellMenge) { this.lieferantenID = lieferantenID; this.einzelteilID = einzelteilID; this.preis = preis; this.mindestBestellMenge = mindestBestellMenge; } - - public void setLieferantenID(int id) - { + + public void setLieferantenID(int id) { this.lieferantenID = id; } - - public void setEinzelteilID(int id) - { + + public void setEinzelteilID(int id) { this.einzelteilID = id; } - - public void setPreis(double preis) - { + + public void setPreis(double preis) { this.preis = preis; } - - public void setMindestBestellMenge(long mindestBestellMenge) - { + + public void setMindestBestellMenge(long mindestBestellMenge) { this.mindestBestellMenge = mindestBestellMenge; } - - public int getLieferantenID() - { + + public int getLieferantenID() { return lieferantenID; } - - public int getEinzelteilID() - { + + public int getEinzelteilID() { return einzelteilID; } - - public double getPreis() - { + + public double getPreis() { return preis; } - - public long getMindestBestellMenge() - { + + public long getMindestBestellMenge() { return mindestBestellMenge; } } diff --git a/wisim/src/java/net/sourceforge/wisim/model/Validator.java b/wisim/src/java/net/sourceforge/wisim/model/Validator.java index a4012d9..f6a2798 100644 --- a/wisim/src/java/net/sourceforge/wisim/model/Validator.java +++ b/wisim/src/java/net/sourceforge/wisim/model/Validator.java @@ -21,155 +21,187 @@ ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ -/* + /* * Validator.java * * Created on 28. Februar 2003, 15:07 */ - package net.sourceforge.wisim.model; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.PlainDocument; -/** Verschiedene Methoden zum Validiern der User Eingabe in der Applikation +/** + * Verschiedene Methoden zum Validiern der User Eingabe in der Applikation + * * @author benjamin.pasero */ public class Validator extends PlainDocument { - private int limit; - - /** Creates a new instance of Validate */ - public Validator() { - } - - /** - * Konstruktor für das Validationdokument - * @param int limit: maximale Anzahl der einzugebenen Zeichen - */ - public Validator(int newLimit) { - super(); - if (limit < 0) { - limit = 0; - } else { - limit = newLimit; - } - } - - /** - * Funktion überschreibt die Methode insertString von PlaintDocument - * @param int offset: Position - * @param String str: der String - * @param AttributeSet attr: Attributset - */ - public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException { - if (str == null) - return; - - if ((getLength() + str.length()) <= limit) { - super.insertString(offset, str, attr); - } - } - - /** Überprüft ob die PLZ 5 Zeichen besitzt und nur aus Ziffern besteht. - * @param text Die PLZ als String - * @return TRUE wenn die PLZ stimmt - */ - public boolean checkPlz(String text) { - String regExp = "^[0-9][1-9][0-9]{3}|[1-9][0-9][0-9]{3}$"; - if (text.matches(regExp)) - return true; - - return false; - } - - /** Überprüft die eingegebene email auf Gültigkeit. - * @param text Die email als String - * @return TRUE wenn die email korrekt ist - */ - public boolean checkEMail(String text) { - String regExpEmail = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"; - int length = text.length(); - if (length > 0) { - if (text.matches(regExpEmail)) - return true; - - return false; - } - return false; - } - - /** Überprüft, ob ein korrekter Preis eingegeben wurde. - * @return boolean - * @param text Zu überprüfender Text. - */ - public boolean checkPreis(String text) { - String regExp = "^([.|,][0-9]{1,2})|[0-9]{1,7}([.|,][0-9]{0,2})?$"; - if (text.matches(regExp)) - return true; - - return false; - } - - /** Überprüft, ob eine Zahl eingegeben wurde und das nicht mehr - * als 10 Ziffern eingegeben worden sind. - * @return boolean - * @param text Zu überprüfender Text. - */ - public boolean checkZahl(String text) { - String regExp = "^([0-9]{0,10})$"; - if (text.matches(regExp)) - return true; - - return false; - } - - /** Erlaubt sind nur Eingaben von 1- oder 2-stellige Zahlen mit 1 Nachkommastelle - * getrennt durch einen Punkt - * @return boolean - * @param text Zu überprüfender Text. - */ - public boolean checkPercent(String text) { - String regExp = "^([.|,][0-9]{1,2})|[0-9]{1,2}([.|,][0-9]{0,2})?$"; - if (text.matches(regExp)) - return true; - - return false; - } - - /** Erlaubt sind nur Eingaben von 4-stelligen Zahlen die nicht mit 0 beginnen - * @param text Zu überprüfender Text. - * @return boolean - */ - public boolean checkYear(String text) { - String regExp = "^([1-9]{1}[0-9]{3})$"; - if (text.matches(regExp)) - return true; - - return false; - } - - /** Erlaubt sind nur Eingaben von 1- oder 2-stellige Zahlen - * @param text Zu überprüfender Text. - * @return boolean - */ - public boolean checkTwoDigits(String text) { - String regExp = "^([0-9]{1,2})$"; - if (text.matches(regExp)) - return true; - - return false; - } - - /** Erlaubt sind nur Eingaben von 1- oder 2-stellige Zahlen - * @param text Zu überprüfender Text. - * @return boolean - */ - public boolean checkThreeDigits(String text) { - String regExp = "^[1-9]{1}[0-9]{0,2}$"; - if (text.matches(regExp)) - return true; - - return false; - } -} \ No newline at end of file + + private int limit; + + /** + * Creates a new instance of Validate + */ + public Validator() { + } + + /** + * Konstruktor für das Validationdokument + * + * @param newLimit: maximale Anzahl der einzugebenen Zeichen + */ + public Validator(int newLimit) { + super(); + if (limit < 0) { + limit = 0; + } else { + limit = newLimit; + } + } + + /** + * Funktion überschreibt die Methode insertString von PlaintDocument + * + * @param offset: Position + * @param str: der String + * @param attr: Attributset + */ + @Override + public void insertString(int offset, String str, AttributeSet attr) throws BadLocationException { + if (str == null) { + return; + } + + if ((getLength() + str.length()) <= limit) { + super.insertString(offset, str, attr); + } + } + + /** + * Überprüft ob die PLZ 5 Zeichen besitzt und nur aus Ziffern besteht. + * + * @param text Die PLZ als String + * @return TRUE wenn die PLZ stimmt + */ + public boolean checkPlz(String text) { + String regExp = "^[0-9][1-9][0-9]{3}|[1-9][0-9][0-9]{3}$"; + if (text.matches(regExp)) { + return true; + } + + return false; + } + + /** + * Überprüft die eingegebene email auf Gültigkeit. + * + * @param text Die email als String + * @return TRUE wenn die email korrekt ist + */ + public boolean checkEMail(String text) { + String regExpEmail = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"; + int length = text.length(); + if (length > 0) { + if (text.matches(regExpEmail)) { + return true; + } + + return false; + } + return false; + } + + /** + * Überprüft, ob ein korrekter Preis eingegeben wurde. + * + * @return boolean + * @param text Zu überprüfender Text. + */ + public boolean checkPreis(String text) { + String regExp = "^([.|,][0-9]{1,2})|[0-9]{1,7}([.|,][0-9]{0,2})?$"; + if (text.matches(regExp)) { + return true; + } + + return false; + } + + /** + * Überprüft, ob eine Zahl eingegeben wurde und das nicht mehr als 10 Ziffern + * eingegeben worden sind. + * + * @return boolean + * @param text Zu überprüfender Text. + */ + public boolean checkZahl(String text) { + String regExp = "^([0-9]{0,10})$"; + if (text.matches(regExp)) { + return true; + } + + return false; + } + + /** + * Erlaubt sind nur Eingaben von 1- oder 2-stellige Zahlen mit 1 + * Nachkommastelle getrennt durch einen Punkt + * + * @return boolean + * @param text Zu überprüfender Text. + */ + public boolean checkPercent(String text) { + String regExp = "^([.|,][0-9]{1,2})|[0-9]{1,2}([.|,][0-9]{0,2})?$"; + if (text.matches(regExp)) { + return true; + } + + return false; + } + + /** + * Erlaubt sind nur Eingaben von 4-stelligen Zahlen die nicht mit 0 beginnen + * + * @param text Zu überprüfender Text. + * @return boolean + */ + public boolean checkYear(String text) { + String regExp = "^([1-9]{1}[0-9]{3})$"; + if (text.matches(regExp)) { + return true; + } + + return false; + } + + /** + * Erlaubt sind nur Eingaben von 1- oder 2-stellige Zahlen + * + * @param text Zu überprüfender Text. + * @return boolean + */ + public boolean checkTwoDigits(String text) { + String regExp = "^([0-9]{1,2})$"; + if (text.matches(regExp)) { + return true; + } + + return false; + } + + /** + * Erlaubt sind nur Eingaben von 1- oder 2-stellige Zahlen + * + * @param text Zu überprüfender Text. + * @return boolean + */ + public boolean checkThreeDigits(String text) { + String regExp = "^[1-9]{1}[0-9]{0,2}$"; + if (text.matches(regExp)) { + return true; + } + + return false; + } +} diff --git a/wisim/src/java/net/sourceforge/wisim/model/WarehouseLocation.java b/wisim/src/java/net/sourceforge/wisim/model/WarehouseLocation.java index 1295624..c2d919b 100644 --- a/wisim/src/java/net/sourceforge/wisim/model/WarehouseLocation.java +++ b/wisim/src/java/net/sourceforge/wisim/model/WarehouseLocation.java @@ -21,108 +21,109 @@ ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ -/* - * Lagerplatz.java + /* + * WarehouseLocation.java * * Created on 15. März 2003, 18:45 */ - package net.sourceforge.wisim.model; /** * - * @author Ben + * @author Ben */ public class WarehouseLocation { - - private String stellplatzNr; - private int einzelteilNr; - private int bestand; - private int maxBestand; - - /** Creates a new instance of WarehouseLocation - * @param stellplatzNr - */ - public WarehouseLocation(String stellplatzNr) { - this.stellplatzNr = stellplatzNr; - } - - /** Creates a new instance of WarehouseLocation*/ - public WarehouseLocation() - { - } - - /** Creates a new instance of WarehouseLocation*/ - public WarehouseLocation(String stellplatzNr, int einzelteilNr, int bestand, int maxBestand) - { - this.stellplatzNr = stellplatzNr; - this.einzelteilNr = einzelteilNr; - this.bestand = bestand; - this.maxBestand = maxBestand; - } - - /** - * @param stellplatzNr - */ - public void setStellplatzNr(String stellplatzNr) { - this.stellplatzNr = stellplatzNr; - } - - /** - * @return Stellplatz - */ - public String getStellplatzNr() { - return stellplatzNr; - } - /** - * @return int - */ - public int getBestand() - { - return bestand; - } - /** - * @return int - */ - public int getEinzelteilNr() - { - return einzelteilNr; - } + private String stellplatzNr; + private int einzelteilNr; + private int bestand; + private int maxBestand; + + /** + * Creates a new instance of WarehouseLocation + * + * @param stellplatzNr + */ + public WarehouseLocation(String stellplatzNr) { + this.stellplatzNr = stellplatzNr; + } + + /** + * Creates a new instance of WarehouseLocation + */ + public WarehouseLocation() { + } + + /** + * Creates a new instance of WarehouseLocation + */ + public WarehouseLocation(String stellplatzNr, int einzelteilNr, int bestand, int maxBestand) { + this.stellplatzNr = stellplatzNr; + this.einzelteilNr = einzelteilNr; + this.bestand = bestand; + this.maxBestand = maxBestand; + } + + /** + * @param stellplatzNr + */ + public void setStellplatzNr(String stellplatzNr) { + this.stellplatzNr = stellplatzNr; + } + + /** + * @return Stellplatz + */ + public String getStellplatzNr() { + return stellplatzNr; + } + + /** + * @return int + */ + public int getBestand() { + return bestand; + } + + /** + * @return int + */ + public int getEinzelteilNr() { + return einzelteilNr; + } - /** - * @return int - */ - public int getMaxBestand() - { - return maxBestand; - } + /** + * @return int + */ + public int getMaxBestand() { + return maxBestand; + } - /** - * Sets the bestand. - * @param bestand The bestand to set - */ - public void setBestand(int bestand) - { - this.bestand = bestand; - } + /** + * Sets the bestand. + * + * @param bestand The bestand to set + */ + public void setBestand(int bestand) { + this.bestand = bestand; + } - /** - * Sets the einzelteilNr. - * @param einzelteilNr The einzelteilNr to set - */ - public void setEinzelteilNr(int einzelteilNr) - { - this.einzelteilNr = einzelteilNr; - } + /** + * Sets the einzelteilNr. + * + * @param einzelteilNr The einzelteilNr to set + */ + public void setEinzelteilNr(int einzelteilNr) { + this.einzelteilNr = einzelteilNr; + } - /** - * Sets the maxBestand. - * @param maxBestand The maxBestand to set - */ - public void setMaxBestand(int maxBestand) - { - this.maxBestand = maxBestand; - } + /** + * Sets the maxBestand. + * + * @param maxBestand The maxBestand to set + */ + public void setMaxBestand(int maxBestand) { + this.maxBestand = maxBestand; + } } diff --git a/wisim/src/java/net/sourceforge/wisim/model/WiSimComponent.java b/wisim/src/java/net/sourceforge/wisim/model/WiSimComponent.java index 2c19d6f..99b24e5 100644 --- a/wisim/src/java/net/sourceforge/wisim/model/WiSimComponent.java +++ b/wisim/src/java/net/sourceforge/wisim/model/WiSimComponent.java @@ -29,7 +29,7 @@ package net.sourceforge.wisim.model; -/** +/** Describe a WiSim Component * * @author Kay Patzwald */ diff --git a/wisim/src/java/net/sourceforge/wisim/model/WorkPlaceStore.java b/wisim/src/java/net/sourceforge/wisim/model/WorkPlaceStore.java index 7a1380b..9e26b62 100644 --- a/wisim/src/java/net/sourceforge/wisim/model/WorkPlaceStore.java +++ b/wisim/src/java/net/sourceforge/wisim/model/WorkPlaceStore.java @@ -21,31 +21,36 @@ ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ -/* + /* * Created on 05.03.2003 * */ package net.sourceforge.wisim.model; -/** Arbeitsplatzlager +/** + * WorkPlaceStore + * * @author Kay Patzwald */ -public class WorkPlaceStore -{ - private int arbeitsplatzNr; - private int einzelteilNr; - private String lagerTyp; - private int bestand; - private int maxBestand; - private int benoetigt; - - /** Creates a new instance of Arbeitsplatzlager */ - public WorkPlaceStore() - { - - } - - /** Creates a new instance of Arbeitsplatzlager +public class WorkPlaceStore { + + private int arbeitsplatzNr; + private int einzelteilNr; + private String lagerTyp; + private int bestand; + private int maxBestand; + private int benoetigt; + + /** + * Creates a new instance of Arbeitsplatzlager + */ + public WorkPlaceStore() { + + } + + /** + * Creates a new instance of Arbeitsplatzlager + * * @param arbeitsplatzNr Arbeitsplatznummer * @param einzelteilNr Einzelteilnummer * @param lagerTyp Lagertyp @@ -53,122 +58,127 @@ public WorkPlaceStore() * @param maxBestand Max. Bestand * @param benoetigt benötigte Teile */ - public WorkPlaceStore( - int arbeitsplatzNr, - int einzelteilNr, - String lagerTyp, - int bestand, - int maxBestand, - int benoetigt) - { - this.arbeitsplatzNr = arbeitsplatzNr; - this.einzelteilNr = einzelteilNr; - this.lagerTyp = lagerTyp; - this.bestand = bestand; - this.maxBestand = maxBestand; - this.benoetigt = benoetigt; - } - - /** Liefert die Arbeitsplatznummer + public WorkPlaceStore( + int arbeitsplatzNr, + int einzelteilNr, + String lagerTyp, + int bestand, + int maxBestand, + int benoetigt) { + this.arbeitsplatzNr = arbeitsplatzNr; + this.einzelteilNr = einzelteilNr; + this.lagerTyp = lagerTyp; + this.bestand = bestand; + this.maxBestand = maxBestand; + this.benoetigt = benoetigt; + } + + /** + * Liefert die Arbeitsplatznummer + * * @return int */ - public int getArbeitsplatzNr() - { - return arbeitsplatzNr; - } + public int getArbeitsplatzNr() { + return arbeitsplatzNr; + } - /** Liefert den aktuellen Bestand + /** + * Liefert den aktuellen Bestand + * * @return int */ - public int getBestand() - { - return bestand; - } + public int getBestand() { + return bestand; + } - /** Liefert die Einzelteile-Nummer + /** + * Liefert die Einzelteile-Nummer + * * @return int */ - public int getEinzelteilNr() - { - return einzelteilNr; - } + public int getEinzelteilNr() { + return einzelteilNr; + } - /** Liefert den max. Bestand + /** + * Liefert den max. Bestand + * * @return int */ - public int getMaxBestand() - { - return maxBestand; - } - - /** - * Sets the arbeitsplatzNr. - * @param arbeitsplatzNr The arbeitsplatzNr to set - */ - public void setArbeitsplatzNr(int arbeitsplatzNr) - { - this.arbeitsplatzNr = arbeitsplatzNr; - } - - /** - * Sets the bestand. - * @param bestand The bestand to set - */ - public void setBestand(int bestand) - { - this.bestand = bestand; - } - - /** - * Sets the einzelteilNr. - * @param einzelteilNr The einzelteilNr to set - */ - public void setEinzelteilNr(int einzelteilNr) - { - this.einzelteilNr = einzelteilNr; - } - - /** - * Sets the maxBestand. - * @param maxBestand The maxBestand to set - */ - public void setMaxBestand(int maxBestand) - { - this.maxBestand = maxBestand; - } - - /** Liefert die Anzahl der benötigten Teile + public int getMaxBestand() { + return maxBestand; + } + + /** + * Sets the arbeitsplatzNr. + * + * @param arbeitsplatzNr The arbeitsplatzNr to set + */ + public void setArbeitsplatzNr(int arbeitsplatzNr) { + this.arbeitsplatzNr = arbeitsplatzNr; + } + + /** + * Sets the bestand. + * + * @param bestand The bestand to set + */ + public void setBestand(int bestand) { + this.bestand = bestand; + } + + /** + * Sets the einzelteilNr. + * + * @param einzelteilNr The einzelteilNr to set + */ + public void setEinzelteilNr(int einzelteilNr) { + this.einzelteilNr = einzelteilNr; + } + + /** + * Sets the maxBestand. + * + * @param maxBestand The maxBestand to set + */ + public void setMaxBestand(int maxBestand) { + this.maxBestand = maxBestand; + } + + /** + * Liefert die Anzahl der benötigten Teile + * * @return int */ - public int getBenoetigt() - { - return benoetigt; - } - - /** - * Sets the benoetigt. - * @param benoetigt The benoetigt to set - */ - public void setBenoetigt(int benoetigt) - { - this.benoetigt = benoetigt; - } - - /** Liefert den Lagertyp + public int getBenoetigt() { + return benoetigt; + } + + /** + * Sets the benoetigt. + * + * @param benoetigt The benoetigt to set + */ + public void setBenoetigt(int benoetigt) { + this.benoetigt = benoetigt; + } + + /** + * Liefert den Lagertyp + * * @return String */ - public String getLagerTyp() - { - return lagerTyp; - } - - /** - * Sets the lagerTyp. - * @param lagerTyp The lagerTyp to set - */ - public void setLagerTyp(String lagerTyp) - { - this.lagerTyp = lagerTyp; - } + public String getLagerTyp() { + return lagerTyp; + } + + /** + * Sets the lagerTyp. + * + * @param lagerTyp The lagerTyp to set + */ + public void setLagerTyp(String lagerTyp) { + this.lagerTyp = lagerTyp; + } } diff --git a/wisim/src/java/net/sourceforge/wisim/networkplan/JNetworkplan.java b/wisim/src/java/net/sourceforge/wisim/networkplan/JNetworkplan.java index 4f9d9fe..68adafb 100644 --- a/wisim/src/java/net/sourceforge/wisim/networkplan/JNetworkplan.java +++ b/wisim/src/java/net/sourceforge/wisim/networkplan/JNetworkplan.java @@ -20,7 +20,6 @@ ** ** ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ - package net.sourceforge.wisim.networkplan; import java.awt.Color; @@ -36,7 +35,6 @@ import java.util.Hashtable; import java.util.Iterator; import java.util.Vector; - import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; @@ -44,7 +42,6 @@ import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.border.LineBorder; - import net.sourceforge.wisim.controller.WiSimMainController; import net.sourceforge.wisim.dao.WiSimDAO; import net.sourceforge.wisim.dao.WiSimDAOWriteException; @@ -53,1544 +50,1953 @@ /** * JNetworkplan extends JPanel and represents the networkplan + * * @author benjamin.pasero * @version 0.7a */ public class JNetworkplan extends JPanel implements MouseListener, MouseMotionListener { - private WiSimDAO dao; - - // Logger - private WiSimLogger wiSimLogger; - - private ArrayList npElemente; - private NetworkplanCalculator npCalc; - private int[][] position; - private Vector tupel[]; - - /** Variables showing the dimension of the JNetworkplan */ - private int maxWidthPos; - private int maxHeightPos; - private final int maxPosX; - private final int maxPosY; - - /** Variables for movement of an element */ - private int x1, y1; - private int maxX, maxY; - private boolean dragging; - private int offsetX, offsetY; - private JNetworkplanElement movedElement; - private JNetworkplanElement selectedElement; - - /** Array for each JNetworkplanElement */ - private JNetworkplanElement jNpElem[]; - - /** Hashtable to save the positions of the JNetworkplanElements */ - private Hashtable elementsPosition; - - /** Hashtable for the connection lines */ - private Hashtable elementsConLine; - - /** Variables for the Edit panel */ - private JPanel jPanelEdit; - private boolean editPanelOpen; - private JNetworkplanElement clickedComponent; - - /** Bounds of each JNetworkplanElement */ - private final int jNpElemBoundsX = 430; - private final int jNpElemBoundsY = 280; - - /** Size of each JNetworkplanElement */ - private final int jNpElemWidth = 300; - private final int jNpElemHeight = 190; - - /** Padding of elements */ - private final int jNPaddingX = 30; - private final int jNPaddingY = 30; - - /** - * Initialize the position-Matrix and tupel-Array for each row. - * Add each networkplan element on this JPanel. - * @param npElemente Vector with all networkplan elements - */ - public JNetworkplan(WiSimMainController wiSimMainController, ArrayList npElemente) { - wiSimLogger = wiSimMainController.getWiSimLogger(); - initDAO(wiSimMainController); - - /** Initializing */ - x1 = 0; - y1 = 0; - elementsConLine = new Hashtable(); - elementsPosition = new Hashtable(); - editPanelOpen = false; - this.npElemente = npElemente; - - /** Listener for user-interaction with the mouse */ - addMouseListener(this); - addMouseMotionListener(this); - - /** Guess the x and y spread of the network plan */ - maxPosX = npElemente.size(); - maxPosY = npElemente.size(); - tupel = new Vector[maxPosY * 2]; //[DoItBen] Dynamische Tupel Größe! - - /** Matrix for positioning of the elements */ - position = new int[maxPosX][maxPosY]; - - /** Calculate the networkplan elements */ - npCalc = new NetworkplanCalculator(npElemente, false); - npElemente = npCalc.getNpElemente(); - - /** Display the critical path */ - showCriticalPath(); - - /** Get positions of each element */ - calculatePositions(); - - /** Max. size of networkplan: Width */ - maxWidthPos = 0; - for (int a = 0; a < maxPosX; a++) { - for (int b = 0; b < maxPosY; b++) { - if (position[a][b] != 0) { - maxWidthPos = a + 1; - } - } - } - - /** Max. size of networkplan: Height */ - maxHeightPos = 0; - for (int a = 0; a < maxPosY; a++) { - for (int b = 0; b < maxPosX; b++) { - if (position[b][a] != 0) { - maxHeightPos = a + 1; - } - } - } - - /** Get all JNetworkplanElements on this JNetworkplan */ - paintJNetworkplanElements(); - - /** Get the max width and hight in px */ - for (int a = 0; a < jNpElem.length; a++) { - if ((jNpElem[a].getLocation().getX() + jNpElem[a].getSize().getWidth()) > maxX) - maxX = (int) jNpElem[a].getLocation().getX() + (int) jNpElem[a].getSize().getWidth(); - - if ((jNpElem[a].getLocation().getY() + jNpElem[a].getSize().getHeight()) > maxY) - maxY = (int) jNpElem[a].getLocation().getY() + (int) jNpElem[a].getSize().getHeight(); - } - } - - /** - * Initialize the position-Matrix and tupel-Array for each row. - * Add each networkplan element on this JPanel. - * @param npElemente Vector with all networkplan elements - */ - public JNetworkplan(ArrayList npElemente) { - - /** Initializing */ - x1 = 0; - y1 = 0; - elementsConLine = new Hashtable(); - elementsPosition = new Hashtable(); - editPanelOpen = false; - this.npElemente = npElemente; - - /** Listener for user-interaction with the mouse */ - addMouseListener(this); - addMouseMotionListener(this); - - /** Guess the x and y spread of the network plan */ - maxPosX = npElemente.size(); - maxPosY = npElemente.size(); - tupel = new Vector[maxPosY * 2]; //[DoItBen] Dynamische Tupel Größe! - - /** Matrix for positioning of the elements */ - position = new int[maxPosX][maxPosY]; - - /** Calculate the networkplan elements */ - npCalc = new NetworkplanCalculator(npElemente, false); - npElemente = npCalc.getNpElemente(); - - /** Display the critical path */ - showCriticalPath(); - - /** Get positions of each element */ - calculatePositions(); - - /** Max. size of networkplan: Width */ - maxWidthPos = 0; - for (int a = 0; a < maxPosX; a++) { - for (int b = 0; b < maxPosY; b++) { - if (position[a][b] != 0) { - maxWidthPos = a + 1; - } - } - } - - /** Max. size of networkplan: Height */ - maxHeightPos = 0; - for (int a = 0; a < maxPosY; a++) { - for (int b = 0; b < maxPosX; b++) { - if (position[b][a] != 0) { - maxHeightPos = a + 1; - } - } - } - - /** Get all JNetworkplanElements on this JNetworkplan */ - paintJNetworkplanElements(); - - /** Get the max width and hight in px */ - for (int a = 0; a < jNpElem.length; a++) { - if ((jNpElem[a].getLocation().getX() + jNpElem[a].getSize().getWidth()) > maxX) - maxX = (int) jNpElem[a].getLocation().getX() + (int) jNpElem[a].getSize().getWidth(); - - if ((jNpElem[a].getLocation().getY() + jNpElem[a].getSize().getHeight()) > maxY) - maxY = (int) jNpElem[a].getLocation().getY() + (int) jNpElem[a].getSize().getHeight(); - } - } - - /** Default constructor */ - public JNetworkplan() { - maxPosX = 0; - maxPosY = 0; - } - - private void initDAO(WiSimMainController wiSimMainController) { - dao = wiSimMainController.getDAO(); - } - - /** Sets the swing elements and builds the network plan */ - public void paintJNetworkplanElements() { - - /** TRUE if the networkplan has only one element */ - boolean onlyOneElement = false; - - int child[] = ((NetworkplanElement) npElemente.get(0)).getChild(); - - /** This JNetworkplan has only one element */ - if (child[0] == 0) - onlyOneElement = true; - - /** Count the elements of the tupel */ - int a = 0; - int count = 0; - while (a < tupel.length) { - if (tupel[a] != null) { - for (int b = 0; b < tupel[a].size(); b++) { - if (((Integer) tupel[a].get(b)).intValue() > 0) - count++; - } - } else { - break; - } - a++; - } - - /** Array with JNetworkplanElements */ - jNpElem = new JNetworkplanElement[count]; - - int i = 0; - int freeWidth = 0; - - /********************************************************* - * Paint the middle of the tree with the most elements * - *********************************************************/ - - /** Get the row thats the middle of the networkplan */ - int middlePos = getMostWidthRow() - 1; - int middlePosElements = tupel[middlePos].size(); - - /** Width of the middle */ - int stomachSize = jNpElemBoundsX * middlePosElements; - - Vector middleElements = tupel[middlePos]; - - Iterator middleElementsIt = middleElements.iterator(); - - int x = 0; - - while (middleElementsIt.hasNext()) { - - int currentElementNumber = ((Integer) middleElementsIt.next()).intValue(); - - /** If this element is a long vertical connection line checkIfLine is negative */ - int checkIfLine = currentElementNumber; - - if (currentElementNumber < 0) - currentElementNumber *= -1; - - NetworkplanElement np = (NetworkplanElement) npElemente.get(currentElementNumber - 1); - - /** This element is not a vertical connection line */ - if (checkIfLine > 0) { - jNpElem[i] = new JNetworkplanElement(np); - np.setLayoutManager(i); - jNpElem[i].setName(String.valueOf(np.getIndex())); - - if (jNpElem[i].getNp().isCriticalPath()) - this.add(jNpElem[i], 0); - else - this.add(jNpElem[i]); - - /** Place the element on the JNetworkplan and save the position */ - jNpElem[i].setBounds(jNPaddingX + x * jNpElemBoundsX, jNPaddingY + middlePos * jNpElemBoundsY, jNpElemWidth, jNpElemHeight); - elementsPosition.put(new Integer(np.getIndex()), new Point(jNPaddingX + x * jNpElemBoundsX, jNPaddingY + middlePos * jNpElemBoundsY)); - i++; - } - x++; - } - - /****************************************** - * Paint the elements top of the middle * - ******************************************/ - - int topPos = middlePos - 1; - - while (topPos >= 0 && !onlyOneElement) { - - Vector topElements = tupel[topPos]; - - /** Calculate the count of the childs */ - int childCount = 0; - Iterator topElementsIt = topElements.iterator(); - while (topElementsIt.hasNext()) { - int currentElementNumber = ((Integer) topElementsIt.next()).intValue(); - - if (currentElementNumber < 0) - currentElementNumber *= -1; - - NetworkplanElement np = (NetworkplanElement) npElemente.get(currentElementNumber - 1); - childCount += np.getChild().length; - } - - topElementsIt = topElements.iterator(); - - int y = 0; - int occupied = 0; - - while (topElementsIt.hasNext()) { - - int currentElementNumber = ((Integer) topElementsIt.next()).intValue(); - - /** If this element is a long vertical connection line checkIfLine is negative */ - int checkIfLine = currentElementNumber; - - if (currentElementNumber < 0) - currentElementNumber *= -1; - - NetworkplanElement np = (NetworkplanElement) npElemente.get(currentElementNumber - 1); - - child = np.getChild(); - double relFreeSize = ((double) child.length / (double) childCount) * stomachSize; - - /** Center the element */ - freeWidth = (int) relFreeSize / 2 - 215 + occupied; - - occupied = freeWidth * 2; - - /** This element is not a vertical connection line */ - if (checkIfLine > 0) { - jNpElem[i] = new JNetworkplanElement(np); - np.setLayoutManager(i); - jNpElem[i].setName(String.valueOf(np.getIndex())); - - if (jNpElem[i].getNp().isCriticalPath()) - this.add(jNpElem[i], 0); - else - this.add(jNpElem[i]); - - /** Place the element on the JNetworkplan and save the position */ - jNpElem[i].setBounds(jNPaddingX + y * jNpElemBoundsX + freeWidth, jNPaddingY + topPos * jNpElemBoundsY, jNpElemWidth, jNpElemHeight); - elementsPosition.put(new Integer(np.getIndex()), new Point(jNPaddingX + y * jNpElemBoundsX + freeWidth, jNPaddingY + topPos * jNpElemBoundsY)); - i++; - } - y++; - - } - topPos--; - } - - /**************************************************** - * Paint the elements in the bottom of the middle * - ****************************************************/ - - int bottomPos = middlePos + 1; - - while (tupel[bottomPos] != null && !onlyOneElement) { - - int y = 0; - Vector bottomElements = tupel[bottomPos]; - - int occupied = 0; - - Iterator bottomElementsIt = bottomElements.iterator(); - while (bottomElementsIt.hasNext()) { - - int currentElementNumber = ((Integer) bottomElementsIt.next()).intValue(); - - /** If this element is a long vertical connection line checkIfLine is negative */ - int checkIfLine = currentElementNumber; - - if (currentElementNumber < 0) - currentElementNumber *= -1; - - NetworkplanElement np = (NetworkplanElement) npElemente.get(currentElementNumber - 1); - - /** This element is not a vertical connection line */ - if (checkIfLine > 0) { - - jNpElem[i] = new JNetworkplanElement(np); - np.setLayoutManager(i); - jNpElem[i].setName(String.valueOf(np.getIndex())); - - if (jNpElem[i].getNp().isCriticalPath()) - this.add(jNpElem[i], 0); - else - this.add(jNpElem[i]); - - /** Place the element on the JNetworkplan and save the position */ - - /** - * Check if child element has only one parent and vice versa. If true the - * element's position is right under the position of his parent. This - * position is get with the getAnchor()-Method. - */ - int parent[] = np.getParent(); - if (parent.length == 1) { - child = ((NetworkplanElement) npElemente.get(parent[0] - 1)).getChild(); - if (child.length == 1) { - int anchorX = (int) jNpElem[((NetworkplanElement) npElemente.get(parent[0] - 1)).getLayoutManager()].getAnchorPoint(JNetworkplanElement.ANCHOR_BOTTOM_MIDDLE).getX() - jNpElemWidth / 2; - int anchorY = (int) jNpElem[((NetworkplanElement) npElemente.get(parent[0] - 1)).getLayoutManager()].getAnchorPoint(JNetworkplanElement.ANCHOR_BOTTOM_MIDDLE).getY() + 110; - - jNpElem[i].setBounds(anchorX, anchorY, jNpElemWidth, jNpElemHeight); - elementsPosition.put(new Integer(np.getIndex()), new Point(anchorX, anchorY)); - } - } else { - Hashtable childWidth = getRelWidthOfChilds(bottomPos); - double freeWidthProzent = ((Double) childWidth.get(new Integer(np.getIndex()))).doubleValue(); - freeWidth = (int) ((double) stomachSize / (double) 100 * freeWidthProzent) / 2 - 215 + occupied; - - if (freeWidth < 0) - freeWidth = 0; - - occupied = freeWidth * 2; - - jNpElem[i].setBounds(jNPaddingX + y * jNpElemBoundsX + freeWidth, jNPaddingY + bottomPos * jNpElemBoundsY, jNpElemWidth, jNpElemHeight); - elementsPosition.put(new Integer(np.getIndex()), new Point(jNPaddingX + y * jNpElemBoundsX + freeWidth, jNPaddingY + bottomPos * jNpElemBoundsY)); - } - i++; - } - y++; - } - bottomPos++; - } - - /** Paint the horizontal and vertical connection lines with JSeperators */ - paintConnectionLines(); - } - - /** - * Calculate the positions of the elements in the matrix position[x][y] - * position is a coordinate system with x and y axis. Each x/y-coordinate - * can contain a number of a network plan element. This is used to get - * the row of the networkplan with the biggest width. - */ - public void calculatePositions() { - - /** START-Element is stored in Vector Tupel */ - tupel[0] = new Vector(); - tupel[0].add(new Integer(((NetworkplanElement) npElemente.get(0)).getIndex())); - - /** Followers of the START-Element */ - int child[] = ((NetworkplanElement) npElemente.get(0)).getChild(); - - /** All followers of the START-Element are stored in tupel[1] */ - int y = 0; - tupel[1] = new Vector(); - while (y < child.length) { - tupel[1].add(new Integer(child[y])); - y++; - } - - int i = 1; - boolean lastElement = false; - - /** Check if the Networkplan only exists of one networkplan element */ - if (child[0] == 0) - lastElement = true; - - while (!lastElement) { - - /** Get the followers of the current tupel (row) */ - int a = 0; - - tupel[i + 1] = new Vector(); - - /** Foreach networkplan element of this tupel */ - while (a < tupel[i].size()) { - - int currentElem = ((Integer) tupel[i].get(a)).intValue(); - - if (currentElem < 0) { - currentElem *= -1; - } - - child = ((NetworkplanElement) npElemente.get(currentElem - 1)).getChild(); - - /** Last tupel reached */ - if (child[0] == 0) { - lastElement = true; - break; - } - - /** Foreach child-element */ - int b = 0; - while (b < child.length) { - - int parent[] = ((NetworkplanElement) npElemente.get(child[b] - 1)).getParent(); - - /** Add this element because the parent exists */ - if (parent.length == 1) { - tupel[i + 1].add(new Integer(child[b])); - } - - /** The child-element has more than one parents */ - else { - int c = 0; - boolean parentsExists = true; - while (c < parent.length) { - - /** The current tupel (row) does not contain the parents */ - if (!tupel[i].contains(new Integer(parent[c])) && !tupel[i].contains(new Integer(parent[c] * (-1)))) { - parentsExists = false; - break; - } - c++; - } - - /** Add this child because all parents exist */ - if (parentsExists) { - - /** Only add if its not yet in! */ - if (!tupel[i + 1].contains(new Integer(child[b]))) - tupel[i + 1].add(new Integer(child[b])); - - /** - * Add the negative value of the parent again, because some parents for - * this child dont exist - */ - } else { - tupel[i + 1].add(new Integer(((NetworkplanElement) npElemente.get(currentElem - 1)).getIndex() * (-1))); - } - } - b++; - } - a++; - } - i++; - } - - /** Set the positions */ - int j = 0; - while (j < i) { - Vector actTupel = tupel[j]; - Iterator actTupelIt = actTupel.iterator(); - int k = 0; - while (actTupelIt.hasNext()) { - int actInt = ((Integer) actTupelIt.next()).intValue(); - if (actInt < 0) - actInt *= -1; - - if (actInt > 0) { - NetworkplanElement actNpElem = (NetworkplanElement) npElemente.get(actInt - 1); - position[k][j] = actNpElem.getIndex(); - } - k++; - } - j++; - } - - /** START Debug output */ - // int e = 0; - // while (e < i) { - // - // String string = ""; - // Vector test = (Vector) tupel[e]; - // Iterator testIt = test.iterator(); - // while (testIt.hasNext()) { - // int tempInt = ((Integer) testIt.next()).intValue(); - // int outInt = tempInt; - // if (tempInt < 0) - // tempInt *= -1; - // - // if (tempInt != 0) { - // NetworkplanElement npEle = (NetworkplanElement) npElemente.get(tempInt - 1); - // string = string + " " + (outInt); - // } else { - // string = string + " 0"; - // } - // } - // System.out.println("Tupel[" + e + "]: " + string); - // e++; - // } - /** END Debug output */ - } - - /** Display the critical path */ - public void showCriticalPath() { - ArrayList criticalPath = npCalc.getCriticalPath(); - Iterator criticalPathIt = criticalPath.iterator(); - while (criticalPathIt.hasNext()) { - npElemente.get(((Integer) criticalPathIt.next()).intValue() - 1).setCriticalPath(true); - } - } - - /** - * Get the max Height of this JNetworkplan - * @return maxHeightPos - */ - public int getMaxHeightPos() { - return maxHeightPos; - } - - /** - * Get the max Width of this JNetworkplan - * @return maxWidthPos - */ - public int getMaxWidthPos() { - return maxWidthPos; - } - - /** - * @return row with the most width - */ - public int getMostWidthRow() { - - int size = 0; - int tupelPos = 0; - - for (int b = 0; b < tupel.length; b++) { - if (tupel[b] != null) { - if (size < tupel[b].size()) { - tupelPos = b; - size = tupel[b].size(); - } - } else { - break; - } - } - return tupelPos + 1; - } - - /** - * Calculates the width that each child-Element has because of its parents - * @param tupelNr the row number - * @return childWidth - */ - public Hashtable getRelWidthOfChilds(int tupelNr) { - - Vector childs = tupel[tupelNr]; - Vector parents = new Vector(); - Hashtable childWidth = new Hashtable(); - int countParents; - - if (tupel[tupelNr].size() == 1) { - childWidth.put(tupel[tupelNr].get(0), new Double(100)); - return childWidth; - } - - int a = 0; - - /** Count the number of parents for the child elements */ - while (a < childs.size()) { - - int currentPos = ((Integer) childs.get(a)).intValue(); - - int tempPos = currentPos; - - if (currentPos < 0) - currentPos *= -1; - - if (tempPos > 0) { - int parent[] = ((NetworkplanElement) npElemente.get(currentPos - 1)).getParent(); - int b = 0; - while (b < parent.length) { - if (!parents.contains(new Integer(parent[b]))) - parents.add(new Integer(parent[b])); - b++; - } - } else { - if (!parents.contains(new Integer((tempPos)))) - parents.add(new Integer(tempPos)); - } - - a++; - } - - countParents = parents.size(); - - /** Get the width each childgroup of a parent */ - double widthForChildGroup = 100 / countParents; - - int c = 0; - - /** Get the width each child of the parent gets */ - while (c < parents.size()) { - - int currentPos = ((Integer) parents.get(c)).intValue(); - - int tempPos = currentPos; - - if (currentPos < 0) - currentPos *= -1; - - if (tempPos > 0) { - int child[] = ((NetworkplanElement) npElemente.get(currentPos - 1)).getChild(); - - int countChilds = child.length; - - double widthForChild = (double) widthForChildGroup / (double) countChilds; - - int d = 0; - while (d < child.length) { - if (childWidth.containsKey(new Integer(child[d]))) { - double temp = ((Double) childWidth.get(new Integer(child[d]))).doubleValue(); - childWidth.put(new Integer(child[d]), new Double(widthForChild + temp)); - } else { - childWidth.put(new Integer(child[d]), new Double(widthForChild)); - } - d++; - } - } else { - double widthForChild = widthForChildGroup; - childWidth.put(new Integer(tempPos * (-1)), new Double(widthForChild)); - } - c++; - } - return childWidth; - } - - /**************************************** - * Mouse Event Listener * - ****************************************/ - - /** Save this component if its a JNetworkplanElement for movement */ - public void mousePressed(MouseEvent evt) { - if (dragging || editPanelOpen) - return; - - int x = evt.getX(); - int y = evt.getY(); - - if (getComponentAt(x, y).getName() != null) { - if (x1 == 0 && y1 == 0) { - x1 = (int) getComponentAt(x, y).getLocation().getX(); - y1 = (int) getComponentAt(x, y).getLocation().getY(); - } - - if (movedElement == null) { - movedElement = (JNetworkplanElement) getComponentAt(x, y); - - /** Place this Element top of all */ - remove(movedElement); - add(movedElement, 0); - } - - dragging = true; - offsetX = x - x1; - offsetY = y - y1; - - movedElement.setCursor(new Cursor(Cursor.MOVE_CURSOR)); - } - } - - /** Forget this JNetworkplanElement after Mouse-Release*/ - public void mouseReleased(MouseEvent evt) { - if (movedElement != null) { - - /** Save the new position of this element */ - elementsPosition.put(new Integer(((JNetworkplanElement) movedElement).getNp().getIndex()), movedElement.getLocation()); - - movedElement.setCursor(new Cursor(Cursor.HAND_CURSOR)); - movedElement = null; - } - dragging = false; - x1 = 0; - y1 = 0; - } - - /** Move the selected JNetworkPlan */ - public void mouseDragged(MouseEvent evt) { - if (!dragging || evt.getX() < 0 || evt.getY() < 0 || editPanelOpen) - return; - - int x = evt.getX(); - int y = evt.getY(); - x1 = x - offsetX; - y1 = y - offsetY; - - if (getComponentAt(x, y).getName() != null) { - - /** Do not move the element out in the negative area */ - if (x1 < 0) - x1 = 0; - - if (y1 < 0) - y1 = 0; - - /** Set horizontal and vertical Scrollbars if needed */ - if ((x1 + movedElement.getSize().getWidth()) > maxX) - maxX = x1 + (int) movedElement.getSize().getWidth(); - - if ((y1 + movedElement.getSize().getHeight()) > maxY) - maxY = y1 + (int) movedElement.getSize().getHeight(); - - /** Set new dimension with padding */ - Dimension newD = new Dimension(maxX + jNPaddingX, maxY + jNPaddingY); - - scrollRectToVisible(new Rectangle(newD)); - setPreferredSize(newD); - - movedElement.setLocation(x1, y1); - positionConnectionLines(movedElement); - } - } - - /** Highlight the JNetworkPlan element that becomes selected */ - public void mouseMoved(MouseEvent evt) { - int x = evt.getX(); - int y = evt.getY(); - - /** Only highlight if no Edit-Panel is opened */ - if (!editPanelOpen) { - - /** Only highlight if Mouselocation is on a JNetworkplanElement */ - if (getComponentAt(x, y).getName() != null && selectedElement == null) { - selectedElement = (JNetworkplanElement) getComponentAt(x, y); - selectedElement.npElementRectMouseMoved(); - selectedElement.setCursor(new Cursor(Cursor.HAND_CURSOR)); - - /** Deselect the element when the user leaves it */ - } else if (getComponentAt(x, y).getName() == null && selectedElement != null) { - selectedElement.npElementRectMouseExited(); - selectedElement = null; - - /** Case when JNetworkplanElements are overlapping */ - } else if (getComponentAt(x, y).getName() != null && selectedElement != null) { - if (!getComponentAt(x, y).getName().equals(selectedElement.getName())) { - selectedElement.npElementRectMouseExited(); - selectedElement = null; - } - } - } - } - - /** - * When the user clicks on an element, show a JPanel where the user may edit - * the description and the duration - */ - public void mouseClicked(MouseEvent evt) { - int x = evt.getX(); - int y = evt.getY(); - - /** - * Open the JPanel for editing if the user clicked on an networkplan element - * and no other JPanel for editing is opened at that time. - */ - if (getComponentAt(x, y).getName() != null && !editPanelOpen) { - - editPanelOpen = true; - - clickedComponent = (JNetworkplanElement) getComponentAt(x, y); - - jPanelEdit = new JPanel(); - JLabel jLabelDescription = new JLabel(); - JLabel jLabelDuration = new JLabel(); - final JTextField jTextFieldDuration = new JTextField(); - final JTextField jTextFieldDescription = new JTextField(); - JButton jButtonEdit = new JButton(); - JButton jButtonCancle = new JButton(); - - jPanelEdit.setLayout(null); - jPanelEdit.setBorder(new LineBorder(Color.BLACK)); - - jLabelDescription.setHorizontalAlignment(SwingConstants.RIGHT); - jLabelDescription.setText("Beschreibung:"); - jPanelEdit.add(jLabelDescription); - jLabelDescription.setBounds(0, 50, 90, 16); - - jLabelDuration.setHorizontalAlignment(SwingConstants.RIGHT); - jLabelDuration.setText("Dauer:"); - jPanelEdit.add(jLabelDuration); - jLabelDuration.setBounds(10, 20, 80, 20); - - jPanelEdit.add(jTextFieldDuration); - jTextFieldDuration.setBounds(100, 20, 70, 20); - jTextFieldDuration.setBorder(new LineBorder(new Color(0, 0, 0))); - jTextFieldDuration.setText(String.valueOf(clickedComponent.getNp().getDuration())); - - jPanelEdit.add(jTextFieldDescription); - jTextFieldDescription.setBounds(100, 50, 160, 20); - jTextFieldDescription.setBorder(new LineBorder(new Color(0, 0, 0))); - jTextFieldDescription.setText(clickedComponent.getNp().getDescription()); - jTextFieldDescription.moveCaretPosition(0); - - jButtonEdit.setText("Edit"); - jButtonEdit.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - - /** Check if the number is not a string. If its a string reset to old number */ - try { - Double.parseDouble(jTextFieldDuration.getText()); - } catch (Exception e) { - jTextFieldDuration.setText(String.valueOf(clickedComponent.getNp().getDuration())); - } - - /** Check if the user made changes. If not, do nothing */ - if (clickedComponent.getNp().getDuration() == Double.parseDouble(jTextFieldDuration.getText()) && clickedComponent.getNp().getDescription().equals(jTextFieldDescription.getText())) { - editPanelOpen = false; - remove(jPanelEdit); - repaint(); - return; - } - - /** Set the changes the user made and repaint the network plan */ - clickedComponent.getNp().setDuration(Double.parseDouble(jTextFieldDuration.getText())); - clickedComponent.getNp().setDescription(jTextFieldDescription.getText()); - - ((NetworkplanElement) npElemente.get(clickedComponent.getNp().getIndex() - 1)).setDuration(Double.parseDouble(jTextFieldDuration.getText())); - ((NetworkplanElement) npElemente.get(clickedComponent.getNp().getIndex() - 1)).setDescription(jTextFieldDescription.getText()); - - /** Remove networkplan */ - removeAll(); - - /** Start stopwatch */ - long startTime = System.currentTimeMillis(); - - /** Make a new calculation (light) */ - npCalc = new NetworkplanCalculator(npElemente, true); - npElemente = npCalc.getNpElemente(); - resetCriticalPath(); - showCriticalPath(); - - /** Set positions of all JNetworkplanElements on this JNetworkplan */ - positionSavedElements(); - - /** Set positions of all connection lines between the JNetworkplanElements */ - positionSavedConnectionLines(); - - /** Re-draw the critical path (red lines) */ - updateCriticalPathLines(); - - /** Stop stopwatch */ - long endTime = System.currentTimeMillis(); - - /** Get the time for calculating and showing the networkplan */ - long calculationTime = endTime - startTime; - - JLabel showCalculationTime = new JLabel("Rendertime: " + (double) calculationTime / 1000 + " sec."); - add(showCalculationTime); - showCalculationTime.setBounds(10, 5, 200, 20); - - remove(jPanelEdit); - editPanelOpen = false; - - /** Update the activity in the database */ - WorkPlace workplace = new WorkPlace(); - workplace.setNr(clickedComponent.getNp().getNumber()); - workplace.setDauer((int) clickedComponent.getNp().getDuration()); - workplace.setBeschreibung(clickedComponent.getNp().getDescription()); - - try { - dao.updateWorkplace(workplace); - } catch (WiSimDAOWriteException e) { - wiSimLogger.log("updateWorkplace", e); - } - } - }); - - jPanelEdit.add(jButtonEdit); - jButtonEdit.setBounds(55, 82, 81, 26); - jButtonEdit.setBorder(new LineBorder(Color.BLACK)); - - jButtonCancle.setText("Cancle"); - - jButtonCancle.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - remove(jPanelEdit); - editPanelOpen = false; - repaint(); - } - }); - - jPanelEdit.add(jButtonCancle); - jButtonCancle.setBounds(145, 82, 81, 26); - jButtonCancle.setBorder(new LineBorder(Color.BLACK)); - - jPanelEdit.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); - - add(jPanelEdit, 0); - - /** Center the Edit-Panel over the JNetworkplanElement */ - int elemXPos = (int) clickedComponent.getLocation().getX() + 10; - int elemYPos = (int) clickedComponent.getLocation().getY() + 35; - - /** The Edit-Panel will allways be shown in the visible rect */ - if (elemXPos < 0) - elemXPos = 0; - - if (elemYPos < 0) - elemYPos = 0; - - jPanelEdit.setBounds(elemXPos, elemYPos, 280, 120); - jPanelEdit.setBackground(java.awt.SystemColor.controlHighlight); - } - } - - public void mouseEntered(MouseEvent evt) { - } - - public void mouseExited(MouseEvent evt) { - } - - /** - * Sets all elements criticalpath-values to FALSE - */ - public void resetCriticalPath() { - int a = 0; - while (a < npElemente.size()) { - ((NetworkplanElement) npElemente.get(a)).setCriticalPath(false); - a++; - } - } - - /** - * Set the positions of each saved JNetworkplanElement - */ - public void positionSavedElements() { - - /** Get elements where arrows are disabled */ - Vector disabledArrowElements = new Vector(); - for (int b = 0; b < jNpElem.length && jNpElem[b] != null; b++) { - if (!jNpElem[b].isDisplayArrow()) - disabledArrowElements.add(new Integer(jNpElem[b].getNp().getNumber())); - } - - int a = 0; - while (a < npElemente.size()) { - - NetworkplanElement np = (NetworkplanElement) npElemente.get(a); - - jNpElem[a] = new JNetworkplanElement(np); - np.setLayoutManager(a); - jNpElem[a].setName(String.valueOf(np.getIndex())); - - /** Remove the arrow if it's disabled */ - if (disabledArrowElements.contains(new Integer(jNpElem[a].getNp().getNumber()))) - jNpElem[a].setDisplayArrow(false); - - this.add(jNpElem[a]); - - Point location = (Point) elementsPosition.get(new Integer(np.getIndex())); - - jNpElem[a].setBounds((int) location.getX(), (int) location.getY(), jNpElemWidth, jNpElemHeight); - - a++; - } - } - - /** - * Set the positions of all saved connection lines - */ - public void positionSavedConnectionLines() { - Enumeration connectionLines = elementsConLine.elements(); - while (connectionLines.hasMoreElements()) { - add((JSeparator) connectionLines.nextElement()); - } - } - - /** - * Paint the connection lines between the networkplan elements - */ - public void paintConnectionLines() { - - /** Paint the horizontal and vertical connection lines with JSeperators */ - int a = 0; - - int child[] = ((NetworkplanElement) npElemente.get(0)).getChild(); - - JSeparator horizontalCon[] = new JSeparator[jNpElem.length]; - - while (a < jNpElem.length && jNpElem[a] != null) { - - /** Vertical small connection lines to the element at top and bottom */ - int xPosStart = (int) jNpElem[a].getAnchorPoint(JNetworkplanElement.ANCHOR_TOP_MIDDLE).getX(); - - /** Top Connection */ - if (!jNpElem[a].getNp().isStartElem()) { - - int parent[] = jNpElem[a].getNp().getParent(); - - int yPosStart = (int) jNpElem[a].getAnchorPoint(JNetworkplanElement.ANCHOR_TOP_MIDDLE).getY() - 65; - - JSeparator jSeparatorVerticalCon = new JSeparator(); - - /** This element is a pseudo activity */ - if (jNpElem[a].getNp().isPseudoActivity()) - jSeparatorVerticalCon = new JDottedLine(); - - jSeparatorVerticalCon.setOrientation(SwingConstants.VERTICAL); - jSeparatorVerticalCon.setBounds(xPosStart, yPosStart, 1, 65); - - if (jNpElem[a].getNp().isCriticalPath()) - jSeparatorVerticalCon.setForeground(Color.RED); - else - jSeparatorVerticalCon.setForeground(Color.BLACK); - - this.add(jSeparatorVerticalCon); - - /** Save this line */ - elementsConLine.put(jNpElem[a].getName() + "top", jSeparatorVerticalCon); - - /** Save a possible middle horizontal connection line */ - horizontalCon[a] = new JSeparator(); - - /** This Element is a pseudo Activity */ - if (jNpElem[a].getNp().isPseudoActivity() || ((NetworkplanElement) npElemente.get(parent[0] - 1)).isPseudoActivity()) - horizontalCon[a] = new JDottedLine(); - - add(horizontalCon[a]); - elementsConLine.put(parent[0] + "middle" + jNpElem[a].getName(), horizontalCon[a]); - } - - /** Bottom Connection */ - if (!jNpElem[a].getNp().isEndElem()) { - int yPosStart = (int) jNpElem[a].getAnchorPoint(JNetworkplanElement.ANCHOR_BOTTOM_MIDDLE).getY(); - - child = jNpElem[a].getNp().getChild(); - - JSeparator jSeparatorVerticalCon = new JSeparator(); - - /** This element is a pseudo activity */ - if (jNpElem[a].getNp().isPseudoActivity()) - jSeparatorVerticalCon = new JDottedLine(); - - jSeparatorVerticalCon.setOrientation(SwingConstants.VERTICAL); - jSeparatorVerticalCon.setBounds(xPosStart, yPosStart, 1, 65); - - if (jNpElem[a].getNp().isCriticalPath()) - jSeparatorVerticalCon.setForeground(Color.RED); - else - jSeparatorVerticalCon.setForeground(Color.BLACK); - - this.add(jSeparatorVerticalCon); - - /** Save this line */ - elementsConLine.put(jNpElem[a].getName() + "bottom", jSeparatorVerticalCon); - - /** Save a possible middle horizontal connection line */ - horizontalCon[a] = new JSeparator(); - - /** This Element is a pseudo Activity */ - if (jNpElem[a].getNp().isPseudoActivity() || ((NetworkplanElement) npElemente.get(child[0] - 1)).isPseudoActivity()) - horizontalCon[a] = new JDottedLine(); - - add(horizontalCon[a]); - elementsConLine.put(jNpElem[a].getName() + "middle" + child[0], horizontalCon[a]); - } - a++; - } - - /** Update the connection lines */ - int g = 0; - while (g < jNpElem.length && jNpElem[g] != null) { - movedElement = jNpElem[g]; - positionConnectionLines(movedElement); - g++; - } - movedElement = null; - } - - /** - * This method is called one on startup and then every time the user moves a - * JNetworkplanElement with the mouse. The connected lines to this element move - * in dependence of the movement of the JNetworkplanElement. - * @param jNpActElem Current JNetworkplanElement - */ - public void positionConnectionLines(JNetworkplanElement jNpActElem) { - - /** The moved JNetworkplanElement is not the End-Element and has a connection-line on the bottom */ - if (elementsConLine.containsKey(jNpActElem.getName() + "bottom")) { - updateVerticalLinesBottom(jNpActElem); - } - - /** The moved JNetworkplanElement is not the Start-Element and has a connection-line on the top */ - if (elementsConLine.containsKey(jNpActElem.getName() + "top")) { - updateVerticalLinesTop(jNpActElem); - } - } - - /** - * This element has a vertical connection line on the bottom. Set its position! - * @param jNpActElem The current JNetworkplanElement - */ - public void updateVerticalLinesBottom(JNetworkplanElement jNpActElem) { - - JSeparator actLineBottom = (JSeparator) elementsConLine.get(jNpActElem.getName() + "bottom"); - - int child[] = jNpActElem.getNp().getChild(); - JNetworkplanElement childJNpElem = jNpElem[((NetworkplanElement) npElemente.get(child[0] - 1)).getLayoutManager()]; - - /** Set the position and size of the connection line */ - int difHeight = (int) ((JSeparator) elementsConLine.get(childJNpElem.getName() + "top")).getLocation().getY() - (int) jNpActElem.getLocation().getY() - 170; - - /** Position the horizontal middle line alaways in the middle of the elements */ - int childsParents[] = childJNpElem.getNp().getParent(); - if (child.length == 1 && childsParents.length == 1) { - - /** YPos of the bottom line of the rect of the parent */ - int line1YPos = (int) ((JSeparator) elementsConLine.get(jNpActElem.getName() + "bottom")).getLocation().getY(); - - /** YPos ofthe top line of the rect of the child */ - int line2YPos = (int) ((JSeparator) elementsConLine.get(childJNpElem.getName() + "top")).getLocation().getY() + (int) ((JSeparator) elementsConLine.get(childJNpElem.getName() + "top")).getSize().getHeight(); - - /** Middle-YPosition of the distance between Parent and Child */ - difHeight = (line2YPos - line1YPos) / 2; - - /** Update child */ - JSeparator actLineTop = (JSeparator) elementsConLine.get(childJNpElem.getName() + "top"); - - int parent[] = childJNpElem.getNp().getParent(); - JNetworkplanElement parentJNpElem = jNpElem[((NetworkplanElement) npElemente.get(parent[0] - 1)).getLayoutManager()]; - - /** Set the position and size of the connection line */ - - /** YPosition of the ending point of the vertical connection line on bottom of the parent element */ - int anchorY = (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getLocation().getY() + (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getSize().getHeight(); - - actLineTop.setLocation((int) childJNpElem.getLocation().getX() + jNpElemWidth / 2, anchorY); - actLineTop.setSize(1, difHeight); - - /** Remove the arrow if difHeight is < 15px */ - if (difHeight < 15) - childJNpElem.setDisplayArrow(false); - else - childJNpElem.setDisplayArrow(true); - - /** Update the horizontal connection line bottom of the element */ - updateHorizontalLinesBottom(childJNpElem); - - /** Update the horizontal connection line for the elements parents */ - if (parent[0] != 0) { - for (int u = 0; u < parent.length; u++) { - updateHorizontalLinesBottom(jNpElem[((NetworkplanElement) npElemente.get(parent[u] - 1)).getLayoutManager()]); - } - } - - /** Synchronize the position of the vertical top-line of the child */ - syncVerticalLinesTop(childJNpElem); - } - - actLineBottom.setLocation((int) jNpActElem.getLocation().getX() + jNpElemWidth / 2, (int) jNpActElem.getLocation().getY() + 170); - actLineBottom.setSize(1, difHeight); - - /** Update the horizontal connection line top of the element */ - updateHorizontalLinesTop(jNpActElem); - - /** Update the horizontal connection line for the elements childs */ - if (child[0] != 0) { - for (int u = 0; u < child.length; u++) { - updateHorizontalLinesTop(jNpElem[((NetworkplanElement) npElemente.get(child[u] - 1)).getLayoutManager()]); - } - } - } - - /** - * This element has a vertical connection line on the top. Set its position! - * @param jNpActElem The current JNetworkplanElement - */ - public void updateVerticalLinesTop(JNetworkplanElement jNpActElem) { - - JSeparator actLineTop = (JSeparator) elementsConLine.get(jNpActElem.getName() + "top"); - - int parent[] = jNpActElem.getNp().getParent(); - JNetworkplanElement parentJNpElem = jNpElem[((NetworkplanElement) npElemente.get(parent[0] - 1)).getLayoutManager()]; - - /** Set the position and size of the connection line */ - - /** YPosition of the ending point of the vertical connection line on bottom of the parent element */ - int anchorY = (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getLocation().getY() + (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getSize().getHeight(); - - /** Position the horizontal middle line alaways in the middle of the elements */ - int parentsChilds[] = parentJNpElem.getNp().getChild(); - - if (parentsChilds.length == 1 && parent.length == 1) { - - int line1YPos = (int) ((JSeparator) elementsConLine.get(jNpActElem.getName() + "top")).getLocation().getY() + (int) ((JSeparator) elementsConLine.get(jNpActElem.getName() + "top")).getSize().getHeight(); - int line2YPos = (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getLocation().getY(); - int difY = (line2YPos - line1YPos) / 2; - - anchorY = (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getLocation().getY() - difY; - - /** Update parent */ - JSeparator actLineBottom = (JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom"); - - int child[] = parentJNpElem.getNp().getChild(); - JNetworkplanElement childJNpElem = jNpElem[((NetworkplanElement) npElemente.get(child[0] - 1)).getLayoutManager()]; - - /** Set the position and size of the connection line */ - int difHeight = (int) ((JSeparator) elementsConLine.get(childJNpElem.getName() + "top")).getLocation().getY() - (int) parentJNpElem.getLocation().getY() - 170; - - actLineBottom.setLocation((int) parentJNpElem.getLocation().getX() + jNpElemWidth / 2, (int) parentJNpElem.getLocation().getY() + 170); - actLineBottom.setSize(1, difHeight); - - /** Update the horizontal connection line top of the element */ - updateHorizontalLinesTop(parentJNpElem); - - /** Update the horizontal connection line for the elements childs */ - if (child[0] != 0) { - for (int u = 0; u < child.length; u++) { - updateHorizontalLinesTop(jNpElem[((NetworkplanElement) npElemente.get(child[u] - 1)).getLayoutManager()]); - } - } - syncVerticalLinesBottom(parentJNpElem); - } - - int difHeight = (int) jNpActElem.getLocation().getY() - anchorY + 20; - - actLineTop.setLocation((int) jNpActElem.getLocation().getX() + jNpElemWidth / 2, anchorY); - actLineTop.setSize(1, difHeight); - - /** Check if to display the arrow */ - if (parentJNpElem.getNp().getChild().length > 1 || jNpActElem.getNp().getParent().length > 1) { - - /** Remove the arrow if difHeight is < 15px */ - if (difHeight < 15) - jNpActElem.setDisplayArrow(false); - else - jNpActElem.setDisplayArrow(true); - } else { - - /** Remove the arrow if the two elements are touching each other */ - if ((int) jNpActElem.getLocation().getY() < ((int) parentJNpElem.getLocation().getY() + 170)) - jNpActElem.setDisplayArrow(false); - else - jNpActElem.setDisplayArrow(true); - } - - /** Update the horizontal connection line bottom of the element */ - updateHorizontalLinesBottom(jNpActElem); - - /** Update the horizontal connection line for the elements parents */ - if (parent[0] != 0) { - for (int u = 0; u < parent.length; u++) { - updateHorizontalLinesBottom(jNpElem[((NetworkplanElement) npElemente.get(parent[u] - 1)).getLayoutManager()]); - } - } - } - - /** - * Update the horizontal connection line top of the element - * @param jNpActElem Current JNetworkplanElement - */ - public void updateHorizontalLinesTop(JNetworkplanElement jNpActElem) { - int parent[] = jNpActElem.getNp().getParent(); - - if (parent[0] != 0) { - JNetworkplanElement parentJNpElem = jNpElem[((NetworkplanElement) npElemente.get(parent[0] - 1)).getLayoutManager()]; - - /** The user moved the element on the X-Axis */ - int difX = (int) jNpActElem.getLocation().getX() - (int) parentJNpElem.getLocation().getX(); - if (difX != 0) { - JSeparator horizontalCon = (JSeparator) elementsConLine.get(parentJNpElem.getName() + "middle" + jNpActElem.getName()); - horizontalCon.setOrientation(SwingConstants.HORIZONTAL); - - if (jNpActElem.getNp().isCriticalPath() && parentJNpElem.getNp().isCriticalPath()) - horizontalCon.setForeground(Color.RED); - else - horizontalCon.setForeground(Color.BLACK); - - /** YPosition of the ending point of the vertical connection line on bottom of the parent element */ - int anchorY = (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getLocation().getY() + (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getSize().getHeight(); - - /** The user moved the element to the right */ - if (difX > 0) { - - /** Set the position and size of the connection line */ - int xStart = (int) parentJNpElem.getAnchorPoint(JNetworkplanElement.ANCHOR_TOP_MIDDLE).getX(); - int yStart = anchorY; - int xLength = difX; - - horizontalCon.setBounds(xStart, yStart, xLength, 1); - - /** The user moved the element to the left */ - } else if (difX < 0) { - - /** Set the position and size of the connection line */ - int xStart = (int) parentJNpElem.getAnchorPoint(JNetworkplanElement.ANCHOR_TOP_MIDDLE).getX() + difX; - int yStart = anchorY; - int xLength = difX * (-1); - - horizontalCon.setBounds(xStart, yStart, xLength, 1); - } - - /** Always display the critical path line in the foreground */ - if (horizontalCon.getForeground().equals(Color.RED)) { - remove(horizontalCon); - add(horizontalCon, 2); - } - } - } - } - - /** - * Update the horizontal connection line bottom of the element - * @param jNpActElem Current JNetworkplanElement - */ - public void updateHorizontalLinesBottom(JNetworkplanElement jNpActElem) { - int child[] = jNpActElem.getNp().getChild(); - - if (child[0] != 0) { - JNetworkplanElement childJNpElem = jNpElem[((NetworkplanElement) npElemente.get(child[0] - 1)).getLayoutManager()]; - - /** The user moved the element on the X-Axis */ - int difX = (int) jNpActElem.getLocation().getX() - (int) childJNpElem.getLocation().getX(); - if (difX != 0) { - JSeparator horizontalCon = (JSeparator) elementsConLine.get(jNpActElem.getName() + "middle" + childJNpElem.getName()); - horizontalCon.setOrientation(SwingConstants.HORIZONTAL); - - if (jNpActElem.getNp().isCriticalPath() && childJNpElem.getNp().isCriticalPath()) - horizontalCon.setForeground(Color.RED); - else - horizontalCon.setForeground(Color.BLACK); - - /** The user moved the element to the right */ - if (difX > 0) { - - /** Set the position and size of the connection line */ - int xStart = (int) childJNpElem.getAnchorPoint(JNetworkplanElement.ANCHOR_BOTTOM_MIDDLE).getX(); - int yStart = (int) ((JSeparator) elementsConLine.get(childJNpElem.getName() + "top")).getLocation().getY(); - int xLength = difX; - - horizontalCon.setBounds(xStart, yStart, xLength, 1); - - /** The user moved the element to the left */ - } else if (difX < 0) { - - /** Set the position and size of the connection line */ - int xStart = (int) childJNpElem.getAnchorPoint(JNetworkplanElement.ANCHOR_BOTTOM_MIDDLE).getX() + difX; - int yStart = (int) ((JSeparator) elementsConLine.get(childJNpElem.getName() + "top")).getLocation().getY(); - int xLength = difX * (-1); - - horizontalCon.setBounds(xStart, yStart, xLength, 1); - } - - /** Always display the critical path line in the foreground */ - if (horizontalCon.getForeground().equals(Color.RED)) { - remove(horizontalCon); - add(horizontalCon, 2); - } - } - } - } - - /** Sets the JSeperators of the critical path to Color.RED */ - public void updateCriticalPathLines() { - Enumeration keys = elementsConLine.keys(); - - /** Foreach key */ - while (keys.hasMoreElements()) { - String key = (String) keys.nextElement(); - - /** Get the JSeperator with the key */ - JSeparator actSeparator = (JSeparator) elementsConLine.get(key); - actSeparator.setForeground(Color.BLACK); - - /** This JSeperator is a vertical connection line on top of an element */ - if (key.matches("^[0-9]*top$")) { - String index = key.replaceAll("top", ""); - - /** Check if the element connected to this line is a critical path member */ - if (((NetworkplanElement) npElemente.get(Integer.parseInt(index) - 1)).isCriticalPath()) { - actSeparator.setForeground(Color.RED); - } - - /** This JSeperator is a vertical connection line on the bottom of an element */ - } else if (key.matches("^[0-9]*bottom$")) { - String index = key.replaceAll("bottom", ""); - - /** Check if the element connected to this line is a critical path member */ - if (((NetworkplanElement) npElemente.get(Integer.parseInt(index) - 1)).isCriticalPath()) { - actSeparator.setForeground(Color.RED); - } - - /** This JSeperator is a horizontal connection line */ - } else if (key.matches("^[0-9]*middle[0-9]*$")) { - String index[] = key.split("middle"); - - /** Check if the elements connected to this line is are critical path member */ - if (((NetworkplanElement) npElemente.get(Integer.parseInt(index[0]) - 1)).isCriticalPath() && ((NetworkplanElement) npElemente.get(Integer.parseInt(index[1]) - 1)).isCriticalPath()) { - actSeparator.setForeground(Color.RED); - } - } - } - } - - /** - * Sync this elements vertical connection line in the top to the child element's line - * @param jNpActElem The current JNetworkplanElement - */ - public void syncVerticalLinesBottom(JNetworkplanElement jNpActElem) { - - JSeparator actLineBottom = (JSeparator) elementsConLine.get(jNpActElem.getName() + "bottom"); - - int child[] = jNpActElem.getNp().getChild(); - JNetworkplanElement childJNpElem = jNpElem[((NetworkplanElement) npElemente.get(child[0] - 1)).getLayoutManager()]; - - /** Set the position and size of the connection line */ - int difHeight = (int) ((JSeparator) elementsConLine.get(childJNpElem.getName() + "top")).getLocation().getY() - (int) jNpActElem.getLocation().getY() - 170; - - actLineBottom.setLocation((int) jNpActElem.getLocation().getX() + jNpElemWidth / 2, (int) jNpActElem.getLocation().getY() + 170); - actLineBottom.setSize(1, difHeight); - } - - /** - * Sync this elements vertical connection line in the top to the parent element's line - * @param jNpActElem The current JNetworkplanElement - */ - public void syncVerticalLinesTop(JNetworkplanElement jNpActElem) { - - JSeparator actLineTop = (JSeparator) elementsConLine.get(jNpActElem.getName() + "top"); - - int parent[] = jNpActElem.getNp().getParent(); - JNetworkplanElement parentJNpElem = jNpElem[((NetworkplanElement) npElemente.get(parent[0] - 1)).getLayoutManager()]; - - /** Set the position and size of the connection line */ - - /** YPosition of the ending point of the vertical connection line on bottom of the parent element */ - int anchorY = (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getLocation().getY() + (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getSize().getHeight(); - - int difHeight = (int) jNpActElem.getLocation().getY() - anchorY + 20; - - actLineTop.setLocation((int) jNpActElem.getLocation().getX() + jNpElemWidth / 2, anchorY); - actLineTop.setSize(1, difHeight); - - /** Check if to display the arrow */ - if (parentJNpElem.getNp().getChild().length > 1 || jNpActElem.getNp().getParent().length > 1) { - - /** Remove the arrow if difHeight is < 15px */ - if (difHeight < 15) - jNpActElem.setDisplayArrow(false); - else - jNpActElem.setDisplayArrow(true); - } else { - - /** Remove the arrow if the two elements are touching each other */ - if ((int) jNpActElem.getLocation().getY() < ((int) parentJNpElem.getLocation().getY() + 170)) - jNpActElem.setDisplayArrow(false); - else - jNpActElem.setDisplayArrow(true); - } - } -} \ No newline at end of file + private WiSimDAO dao; + + // Logger + private WiSimLogger wiSimLogger; + + private ArrayList npElemente; + private NetworkplanCalculator npCalc; + private int[][] position; + private Vector tupel[]; + + /** + * Variables showing the dimension of the JNetworkplan + */ + private int maxWidthPos; + private int maxHeightPos; + private final int maxPosX; + private final int maxPosY; + + /** + * Variables for movement of an element + */ + private int x1, y1; + private int maxX, maxY; + private boolean dragging; + private int offsetX, offsetY; + private JNetworkplanElement movedElement; + private JNetworkplanElement selectedElement; + + /** + * Array for each JNetworkplanElement + */ + private JNetworkplanElement jNpElem[]; + + /** + * Hashtable to save the positions of the JNetworkplanElements + */ + private Hashtable elementsPosition; + + /** + * Hashtable for the connection lines + */ + private Hashtable elementsConLine; + + /** + * Variables for the Edit panel + */ + private JPanel jPanelEdit; + private boolean editPanelOpen; + private JNetworkplanElement clickedComponent; + + /** + * Bounds of each JNetworkplanElement + */ + private final int jNpElemBoundsX = 430; + private final int jNpElemBoundsY = 280; + + /** + * Size of each JNetworkplanElement + */ + private final int jNpElemWidth = 300; + private final int jNpElemHeight = 190; + + /** + * Padding of elements + */ + private final int jNPaddingX = 30; + private final int jNPaddingY = 30; + + /** + * Initialize the position-Matrix and tupel-Array for each row. Add each + * networkplan element on this JPanel. + * + * @param npElemente Vector with all networkplan elements + */ + public JNetworkplan(WiSimMainController wiSimMainController, ArrayList npElemente) { + wiSimLogger = wiSimMainController.getWiSimLogger(); + initDAO(wiSimMainController); + + /** + * Initializing + */ + x1 = 0; + y1 = 0; + elementsConLine = new Hashtable(); + elementsPosition = new Hashtable(); + editPanelOpen = false; + this.npElemente = npElemente; + + /** + * Listener for user-interaction with the mouse + */ + addMouseListener(this); + addMouseMotionListener(this); + + /** + * Guess the x and y spread of the network plan + */ + maxPosX = npElemente.size(); + maxPosY = npElemente.size(); + tupel = new Vector[maxPosY * 2]; //[DoItBen] Dynamische Tupel Größe! + + /** + * Matrix for positioning of the elements + */ + position = new int[maxPosX][maxPosY]; + + /** + * Calculate the networkplan elements + */ + npCalc = new NetworkplanCalculator(npElemente, false); + npElemente = npCalc.getNpElemente(); + + /** + * Display the critical path + */ + showCriticalPath(); + + /** + * Get positions of each element + */ + calculatePositions(); + + /** + * Max. size of networkplan: Width + */ + maxWidthPos = 0; + for (int a = 0; a < maxPosX; a++) { + for (int b = 0; b < maxPosY; b++) { + if (position[a][b] != 0) { + maxWidthPos = a + 1; + } + } + } + + /** + * Max. size of networkplan: Height + */ + maxHeightPos = 0; + for (int a = 0; a < maxPosY; a++) { + for (int b = 0; b < maxPosX; b++) { + if (position[b][a] != 0) { + maxHeightPos = a + 1; + } + } + } + + /** + * Get all JNetworkplanElements on this JNetworkplan + */ + paintJNetworkplanElements(); + + /** + * Get the max width and hight in px + */ + for (int a = 0; a < jNpElem.length; a++) { + if ((jNpElem[a].getLocation().getX() + jNpElem[a].getSize().getWidth()) > maxX) { + maxX = (int) jNpElem[a].getLocation().getX() + (int) jNpElem[a].getSize().getWidth(); + } + + if ((jNpElem[a].getLocation().getY() + jNpElem[a].getSize().getHeight()) > maxY) { + maxY = (int) jNpElem[a].getLocation().getY() + (int) jNpElem[a].getSize().getHeight(); + } + } + } + + /** + * Initialize the position-Matrix and tupel-Array for each row. Add each + * networkplan element on this JPanel. + * + * @param npElemente Vector with all networkplan elements + */ + public JNetworkplan(ArrayList npElemente) { + + /** + * Initializing + */ + x1 = 0; + y1 = 0; + elementsConLine = new Hashtable(); + elementsPosition = new Hashtable(); + editPanelOpen = false; + this.npElemente = npElemente; + + /** + * Listener for user-interaction with the mouse + */ + addMouseListener(this); + addMouseMotionListener(this); + + /** + * Guess the x and y spread of the network plan + */ + maxPosX = npElemente.size(); + maxPosY = npElemente.size(); + tupel = new Vector[maxPosY * 2]; //[DoItBen] Dynamische Tupel Größe! + + /** + * Matrix for positioning of the elements + */ + position = new int[maxPosX][maxPosY]; + + /** + * Calculate the networkplan elements + */ + npCalc = new NetworkplanCalculator(npElemente, false); + npElemente = npCalc.getNpElemente(); + + /** + * Display the critical path + */ + showCriticalPath(); + + /** + * Get positions of each element + */ + calculatePositions(); + + /** + * Max. size of networkplan: Width + */ + maxWidthPos = 0; + for (int a = 0; a < maxPosX; a++) { + for (int b = 0; b < maxPosY; b++) { + if (position[a][b] != 0) { + maxWidthPos = a + 1; + } + } + } + + /** + * Max. size of networkplan: Height + */ + maxHeightPos = 0; + for (int a = 0; a < maxPosY; a++) { + for (int b = 0; b < maxPosX; b++) { + if (position[b][a] != 0) { + maxHeightPos = a + 1; + } + } + } + + /** + * Get all JNetworkplanElements on this JNetworkplan + */ + paintJNetworkplanElements(); + + /** + * Get the max width and hight in px + */ + for (int a = 0; a < jNpElem.length; a++) { + if ((jNpElem[a].getLocation().getX() + jNpElem[a].getSize().getWidth()) > maxX) { + maxX = (int) jNpElem[a].getLocation().getX() + (int) jNpElem[a].getSize().getWidth(); + } + + if ((jNpElem[a].getLocation().getY() + jNpElem[a].getSize().getHeight()) > maxY) { + maxY = (int) jNpElem[a].getLocation().getY() + (int) jNpElem[a].getSize().getHeight(); + } + } + } + + /** + * Default constructor + */ + public JNetworkplan() { + maxPosX = 0; + maxPosY = 0; + } + + private void initDAO(WiSimMainController wiSimMainController) { + dao = wiSimMainController.getDAO(); + } + + /** + * Sets the swing elements and builds the network plan + */ + public void paintJNetworkplanElements() { + + /** + * TRUE if the networkplan has only one element + */ + boolean onlyOneElement = false; + + int child[] = npElemente.get(0).getChild(); + + /** + * This JNetworkplan has only one element + */ + if (child[0] == 0) { + onlyOneElement = true; + } + + /** + * Count the elements of the tupel + */ + int a = 0; + int count = 0; + while (a < tupel.length) { + if (tupel[a] != null) { + for (int b = 0; b < tupel[a].size(); b++) { + if (((Integer) tupel[a].get(b)).intValue() > 0) { + count++; + } + } + } else { + break; + } + a++; + } + + /** + * Array with JNetworkplanElements + */ + jNpElem = new JNetworkplanElement[count]; + + int i = 0; + int freeWidth = 0; + + /** + * ******************************************************* + * Paint the middle of the tree with the most elements * + ******************************************************** + */ + /** + * Get the row thats the middle of the networkplan + */ + int middlePos = getMostWidthRow() - 1; + int middlePosElements = tupel[middlePos].size(); + + /** + * Width of the middle + */ + int stomachSize = jNpElemBoundsX * middlePosElements; + + Vector middleElements = tupel[middlePos]; + + Iterator middleElementsIt = middleElements.iterator(); + + int x = 0; + + while (middleElementsIt.hasNext()) { + + int currentElementNumber = ((Integer) middleElementsIt.next()).intValue(); + + /** + * If this element is a long vertical connection line checkIfLine is + * negative + */ + int checkIfLine = currentElementNumber; + + if (currentElementNumber < 0) { + currentElementNumber *= -1; + } + + NetworkplanElement np = npElemente.get(currentElementNumber - 1); + + /** + * This element is not a vertical connection line + */ + if (checkIfLine > 0) { + jNpElem[i] = new JNetworkplanElement(np); + np.setLayoutManager(i); + jNpElem[i].setName(String.valueOf(np.getIndex())); + + if (jNpElem[i].getNp().isCriticalPath()) { + this.add(jNpElem[i], 0); + } else { + this.add(jNpElem[i]); + } + + /** + * Place the element on the JNetworkplan and save the position + */ + jNpElem[i].setBounds(jNPaddingX + x * jNpElemBoundsX, jNPaddingY + middlePos * jNpElemBoundsY, jNpElemWidth, jNpElemHeight); + elementsPosition.put(np.getIndex(), new Point(jNPaddingX + x * jNpElemBoundsX, jNPaddingY + middlePos * jNpElemBoundsY)); + i++; + } + x++; + } + + /** + * **************************************** + * Paint the elements top of the middle * + ***************************************** + */ + int topPos = middlePos - 1; + + while (topPos >= 0 && !onlyOneElement) { + + Vector topElements = tupel[topPos]; + + /** + * Calculate the count of the childs + */ + int childCount = 0; + Iterator topElementsIt = topElements.iterator(); + while (topElementsIt.hasNext()) { + int currentElementNumber = ((Integer) topElementsIt.next()); + + if (currentElementNumber < 0) { + currentElementNumber *= -1; + } + + NetworkplanElement np = npElemente.get(currentElementNumber - 1); + childCount += np.getChild().length; + } + + topElementsIt = topElements.iterator(); + + int y = 0; + int occupied = 0; + + while (topElementsIt.hasNext()) { + + int currentElementNumber = ((Integer) topElementsIt.next()); + + /** + * If this element is a long vertical connection line checkIfLine is + * negative + */ + int checkIfLine = currentElementNumber; + + if (currentElementNumber < 0) { + currentElementNumber *= -1; + } + + NetworkplanElement np = npElemente.get(currentElementNumber - 1); + + child = np.getChild(); + double relFreeSize = ((double) child.length / (double) childCount) * stomachSize; + + /** + * Center the element + */ + freeWidth = (int) relFreeSize / 2 - 215 + occupied; + + occupied = freeWidth * 2; + + /** + * This element is not a vertical connection line + */ + if (checkIfLine > 0) { + jNpElem[i] = new JNetworkplanElement(np); + np.setLayoutManager(i); + jNpElem[i].setName(String.valueOf(np.getIndex())); + + if (jNpElem[i].getNp().isCriticalPath()) { + this.add(jNpElem[i], 0); + } else { + this.add(jNpElem[i]); + } + + /** + * Place the element on the JNetworkplan and save the position + */ + jNpElem[i].setBounds(jNPaddingX + y * jNpElemBoundsX + freeWidth, jNPaddingY + topPos * jNpElemBoundsY, jNpElemWidth, jNpElemHeight); + elementsPosition.put(np.getIndex(), new Point(jNPaddingX + y * jNpElemBoundsX + freeWidth, jNPaddingY + topPos * jNpElemBoundsY)); + i++; + } + y++; + + } + topPos--; + } + + /** + * ************************************************** + * Paint the elements in the bottom of the middle * + *************************************************** + */ + int bottomPos = middlePos + 1; + + while (tupel[bottomPos] != null && !onlyOneElement) { + + int y = 0; + Vector bottomElements = tupel[bottomPos]; + + int occupied = 0; + + Iterator bottomElementsIt = bottomElements.iterator(); + while (bottomElementsIt.hasNext()) { + + int currentElementNumber = ((Integer) bottomElementsIt.next()).intValue(); + + /** + * If this element is a long vertical connection line checkIfLine is + * negative + */ + int checkIfLine = currentElementNumber; + + if (currentElementNumber < 0) { + currentElementNumber *= -1; + } + + NetworkplanElement np = npElemente.get(currentElementNumber - 1); + + /** + * This element is not a vertical connection line + */ + if (checkIfLine > 0) { + + jNpElem[i] = new JNetworkplanElement(np); + np.setLayoutManager(i); + jNpElem[i].setName(String.valueOf(np.getIndex())); + + if (jNpElem[i].getNp().isCriticalPath()) { + this.add(jNpElem[i], 0); + } else { + this.add(jNpElem[i]); + } + + /** + * Place the element on the JNetworkplan and save the position + */ + /** + * Check if child element has only one parent and vice versa. If true + * the element's position is right under the position of his parent. + * This position is get with the getAnchor()-Method. + */ + int parent[] = np.getParent(); + if (parent.length == 1) { + child = npElemente.get(parent[0] - 1).getChild(); + if (child.length == 1) { + int anchorX = (int) jNpElem[npElemente.get(parent[0] - 1).getLayoutManager()].getAnchorPoint(JNetworkplanElement.ANCHOR_BOTTOM_MIDDLE).getX() - jNpElemWidth / 2; + int anchorY = (int) jNpElem[npElemente.get(parent[0] - 1).getLayoutManager()].getAnchorPoint(JNetworkplanElement.ANCHOR_BOTTOM_MIDDLE).getY() + 110; + + jNpElem[i].setBounds(anchorX, anchorY, jNpElemWidth, jNpElemHeight); + elementsPosition.put(np.getIndex(), new Point(anchorX, anchorY)); + } + } else { + Hashtable childWidth = getRelWidthOfChilds(bottomPos); + double freeWidthProzent = ((Double) childWidth.get(np.getIndex())); + freeWidth = (int) ((double) stomachSize / (double) 100 * freeWidthProzent) / 2 - 215 + occupied; + + if (freeWidth < 0) { + freeWidth = 0; + } + + occupied = freeWidth * 2; + + jNpElem[i].setBounds(jNPaddingX + y * jNpElemBoundsX + freeWidth, jNPaddingY + bottomPos * jNpElemBoundsY, jNpElemWidth, jNpElemHeight); + elementsPosition.put(np.getIndex(), new Point(jNPaddingX + y * jNpElemBoundsX + freeWidth, jNPaddingY + bottomPos * jNpElemBoundsY)); + } + i++; + } + y++; + } + bottomPos++; + } + + /** + * Paint the horizontal and vertical connection lines with JSeperators + */ + paintConnectionLines(); + } + + /** + * Calculate the positions of the elements in the matrix position[x][y] + * position is a coordinate system with x and y axis. Each x/y-coordinate can + * contain a number of a network plan element. This is used to get the row of + * the networkplan with the biggest width. + */ + public void calculatePositions() { + + /** + * START-Element is stored in Vector Tupel + */ + tupel[0] = new Vector(); + tupel[0].add(npElemente.get(0).getIndex()); + + /** + * Followers of the START-Element + */ + int child[] = npElemente.get(0).getChild(); + + /** + * All followers of the START-Element are stored in tupel[1] + */ + int y = 0; + tupel[1] = new Vector(); + while (y < child.length) { + tupel[1].add(child[y]); + y++; + } + + int i = 1; + boolean lastElement = false; + + /** + * Check if the Networkplan only exists of one networkplan element + */ + if (child[0] == 0) { + lastElement = true; + } + + while (!lastElement) { + + /** + * Get the followers of the current tupel (row) + */ + int a = 0; + + tupel[i + 1] = new Vector(); + + /** + * Foreach networkplan element of this tupel + */ + while (a < tupel[i].size()) { + + int currentElem = ((Integer) tupel[i].get(a)).intValue(); + + if (currentElem < 0) { + currentElem *= -1; + } + + child = npElemente.get(currentElem - 1).getChild(); + + /** + * Last tupel reached + */ + if (child[0] == 0) { + lastElement = true; + break; + } + + /** + * Foreach child-element + */ + int b = 0; + while (b < child.length) { + + int parent[] = npElemente.get(child[b] - 1).getParent(); + + /** + * Add this element because the parent exists + */ + if (parent.length == 1) { + tupel[i + 1].add(child[b]); + } /** + * The child-element has more than one parents + */ + else { + int c = 0; + boolean parentsExists = true; + while (c < parent.length) { + + /** + * The current tupel (row) does not contain the parents + */ + if (!tupel[i].contains(parent[c]) && !tupel[i].contains(parent[c] * (-1))) { + parentsExists = false; + break; + } + c++; + } + + /** + * Add this child because all parents exist + */ + if (parentsExists) { + + /** + * Only add if its not yet in! + */ + if (!tupel[i + 1].contains(child[b])) { + tupel[i + 1].add(child[b]); + } + + /** + * Add the negative value of the parent again, because some + * parents for this child dont exist + */ + } else { + tupel[i + 1].add(npElemente.get(currentElem - 1).getIndex() * (-1)); + } + } + b++; + } + a++; + } + i++; + } + + /** + * Set the positions + */ + int j = 0; + while (j < i) { + Vector actTupel = tupel[j]; + Iterator actTupelIt = actTupel.iterator(); + int k = 0; + while (actTupelIt.hasNext()) { + int actInt = ((Integer) actTupelIt.next()).intValue(); + if (actInt < 0) { + actInt *= -1; + } + + if (actInt > 0) { + NetworkplanElement actNpElem = npElemente.get(actInt - 1); + position[k][j] = actNpElem.getIndex(); + } + k++; + } + j++; + } + + /** + * START Debug output + */ + // int e = 0; + // while (e < i) { + // + // String string = ""; + // Vector test = (Vector) tupel[e]; + // Iterator testIt = test.iterator(); + // while (testIt.hasNext()) { + // int tempInt = ((Integer) testIt.next()).intValue(); + // int outInt = tempInt; + // if (tempInt < 0) + // tempInt *= -1; + // + // if (tempInt != 0) { + // NetworkplanElement npEle = (NetworkplanElement) npElemente.get(tempInt - 1); + // string = string + " " + (outInt); + // } else { + // string = string + " 0"; + // } + // } + // System.out.println("Tupel[" + e + "]: " + string); + // e++; + // } + /** + * END Debug output + */ + } + + /** + * Display the critical path + */ + public void showCriticalPath() { + ArrayList criticalPath = npCalc.getCriticalPath(); + Iterator criticalPathIt = criticalPath.iterator(); + while (criticalPathIt.hasNext()) { + npElemente.get(((Integer) criticalPathIt.next()).intValue() - 1).setCriticalPath(true); + } + } + + /** + * Get the max Height of this JNetworkplan + * + * @return maxHeightPos + */ + public int getMaxHeightPos() { + return maxHeightPos; + } + + /** + * Get the max Width of this JNetworkplan + * + * @return maxWidthPos + */ + public int getMaxWidthPos() { + return maxWidthPos; + } + + /** + * @return row with the most width + */ + public int getMostWidthRow() { + + int size = 0; + int tupelPos = 0; + + for (int b = 0; b < tupel.length; b++) { + if (tupel[b] != null) { + if (size < tupel[b].size()) { + tupelPos = b; + size = tupel[b].size(); + } + } else { + break; + } + } + return tupelPos + 1; + } + + /** + * Calculates the width that each child-Element has because of its parents + * + * @param tupelNr the row number + * @return childWidth + */ + public Hashtable getRelWidthOfChilds(int tupelNr) { + + Vector childs = tupel[tupelNr]; + Vector parents = new Vector(); + Hashtable childWidth = new Hashtable(); + int countParents; + + if (tupel[tupelNr].size() == 1) { + childWidth.put(tupel[tupelNr].get(0), 100.0); + return childWidth; + } + + int a = 0; + + /** + * Count the number of parents for the child elements + */ + while (a < childs.size()) { + + int currentPos = ((Integer) childs.get(a)).intValue(); + + int tempPos = currentPos; + + if (currentPos < 0) { + currentPos *= -1; + } + + if (tempPos > 0) { + int parent[] = npElemente.get(currentPos - 1).getParent(); + int b = 0; + while (b < parent.length) { + if (!parents.contains(parent[b])) { + parents.add(parent[b]); + } + b++; + } + } else { + if (!parents.contains((tempPos))) { + parents.add(tempPos); + } + } + + a++; + } + + countParents = parents.size(); + + /** + * Get the width each childgroup of a parent + */ + double widthForChildGroup = 100 / countParents; + + int c = 0; + + /** + * Get the width each child of the parent gets + */ + while (c < parents.size()) { + + int currentPos = ((Integer) parents.get(c)).intValue(); + + int tempPos = currentPos; + + if (currentPos < 0) { + currentPos *= -1; + } + + if (tempPos > 0) { + int child[] = npElemente.get(currentPos - 1).getChild(); + + int countChilds = child.length; + + double widthForChild = widthForChildGroup / (double) countChilds; + + int d = 0; + while (d < child.length) { + if (childWidth.containsKey(child[d])) { + double temp = ((Double) childWidth.get(child[d])); + childWidth.put(child[d], widthForChild + temp); + } else { + childWidth.put(child[d], widthForChild); + } + d++; + } + } else { + double widthForChild = widthForChildGroup; + childWidth.put(tempPos * (-1), widthForChild); + } + c++; + } + return childWidth; + } + + /** + * ************************************** + * Mouse Event Listener * + *************************************** + */ + /** + * Save this component if its a JNetworkplanElement for movement + */ + public void mousePressed(MouseEvent evt) { + if (dragging || editPanelOpen) { + return; + } + + int x = evt.getX(); + int y = evt.getY(); + + if (getComponentAt(x, y).getName() != null) { + if (x1 == 0 && y1 == 0) { + x1 = (int) getComponentAt(x, y).getLocation().getX(); + y1 = (int) getComponentAt(x, y).getLocation().getY(); + } + + if (movedElement == null) { + movedElement = (JNetworkplanElement) getComponentAt(x, y); + + /** + * Place this Element top of all + */ + remove(movedElement); + add(movedElement, 0); + } + + dragging = true; + offsetX = x - x1; + offsetY = y - y1; + + movedElement.setCursor(new Cursor(Cursor.MOVE_CURSOR)); + } + } + + /** + * Forget this JNetworkplanElement after Mouse-Release + */ + public void mouseReleased(MouseEvent evt) { + if (movedElement != null) { + + /** + * Save the new position of this element + */ + elementsPosition.put(movedElement.getNp().getIndex(), movedElement.getLocation()); + + movedElement.setCursor(new Cursor(Cursor.HAND_CURSOR)); + movedElement = null; + } + dragging = false; + x1 = 0; + y1 = 0; + } + + /** + * Move the selected JNetworkPlan + */ + public void mouseDragged(MouseEvent evt) { + if (!dragging || evt.getX() < 0 || evt.getY() < 0 || editPanelOpen) { + return; + } + + int x = evt.getX(); + int y = evt.getY(); + x1 = x - offsetX; + y1 = y - offsetY; + + if (getComponentAt(x, y).getName() != null) { + + /** + * Do not move the element out in the negative area + */ + if (x1 < 0) { + x1 = 0; + } + + if (y1 < 0) { + y1 = 0; + } + + /** + * Set horizontal and vertical Scrollbars if needed + */ + if ((x1 + movedElement.getSize().getWidth()) > maxX) { + maxX = x1 + (int) movedElement.getSize().getWidth(); + } + + if ((y1 + movedElement.getSize().getHeight()) > maxY) { + maxY = y1 + (int) movedElement.getSize().getHeight(); + } + + /** + * Set new dimension with padding + */ + Dimension newD = new Dimension(maxX + jNPaddingX, maxY + jNPaddingY); + + scrollRectToVisible(new Rectangle(newD)); + setPreferredSize(newD); + + movedElement.setLocation(x1, y1); + positionConnectionLines(movedElement); + } + } + + /** + * Highlight the JNetworkPlan element that becomes selected + */ + public void mouseMoved(MouseEvent evt) { + int x = evt.getX(); + int y = evt.getY(); + + /** + * Only highlight if no Edit-Panel is opened + */ + if (!editPanelOpen) { + + /** + * Only highlight if Mouselocation is on a JNetworkplanElement + */ + if (getComponentAt(x, y).getName() != null && selectedElement == null) { + selectedElement = (JNetworkplanElement) getComponentAt(x, y); + selectedElement.npElementRectMouseMoved(); + selectedElement.setCursor(new Cursor(Cursor.HAND_CURSOR)); + + /** + * Deselect the element when the user leaves it + */ + } else if (getComponentAt(x, y).getName() == null && selectedElement != null) { + selectedElement.npElementRectMouseExited(); + selectedElement = null; + + /** + * Case when JNetworkplanElements are overlapping + */ + } else if (getComponentAt(x, y).getName() != null && selectedElement != null) { + if (!getComponentAt(x, y).getName().equals(selectedElement.getName())) { + selectedElement.npElementRectMouseExited(); + selectedElement = null; + } + } + } + } + + /** + * When the user clicks on an element, show a JPanel where the user may edit + * the description and the duration + */ + public void mouseClicked(MouseEvent evt) { + int x = evt.getX(); + int y = evt.getY(); + + /** + * Open the JPanel for editing if the user clicked on an networkplan element + * and no other JPanel for editing is opened at that time. + */ + if (getComponentAt(x, y).getName() != null && !editPanelOpen) { + + editPanelOpen = true; + + clickedComponent = (JNetworkplanElement) getComponentAt(x, y); + + jPanelEdit = new JPanel(); + JLabel jLabelDescription = new JLabel(); + JLabel jLabelDuration = new JLabel(); + final JTextField jTextFieldDuration = new JTextField(); + final JTextField jTextFieldDescription = new JTextField(); + JButton jButtonEdit = new JButton(); + JButton jButtonCancel = new JButton(); + + jPanelEdit.setLayout(null); + jPanelEdit.setBorder(new LineBorder(Color.BLACK)); + + jLabelDescription.setHorizontalAlignment(SwingConstants.RIGHT); + jLabelDescription.setText("Beschreibung:"); + jPanelEdit.add(jLabelDescription); + jLabelDescription.setBounds(0, 50, 90, 16); + + jLabelDuration.setHorizontalAlignment(SwingConstants.RIGHT); + jLabelDuration.setText("Dauer:"); + jPanelEdit.add(jLabelDuration); + jLabelDuration.setBounds(10, 20, 80, 20); + + jPanelEdit.add(jTextFieldDuration); + jTextFieldDuration.setBounds(100, 20, 70, 20); + jTextFieldDuration.setBorder(new LineBorder(new Color(0, 0, 0))); + jTextFieldDuration.setText(String.valueOf(clickedComponent.getNp().getDuration())); + + jPanelEdit.add(jTextFieldDescription); + jTextFieldDescription.setBounds(100, 50, 160, 20); + jTextFieldDescription.setBorder(new LineBorder(new Color(0, 0, 0))); + jTextFieldDescription.setText(clickedComponent.getNp().getDescription()); + jTextFieldDescription.moveCaretPosition(0); + + jButtonEdit.setText("Bearbeiten"); + jButtonEdit.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + + /** + * Check if the number is not a string. If its a string reset to old + * number + */ + try { + Double.parseDouble(jTextFieldDuration.getText()); + } catch (Exception e) { + jTextFieldDuration.setText(String.valueOf(clickedComponent.getNp().getDuration())); + } + + /** + * Check if the user made changes. If not, do nothing + */ + if (clickedComponent.getNp().getDuration() == Double.parseDouble(jTextFieldDuration.getText()) && clickedComponent.getNp().getDescription().equals(jTextFieldDescription.getText())) { + editPanelOpen = false; + remove(jPanelEdit); + repaint(); + return; + } + + /** + * Set the changes the user made and repaint the network plan + */ + clickedComponent.getNp().setDuration(Double.parseDouble(jTextFieldDuration.getText())); + clickedComponent.getNp().setDescription(jTextFieldDescription.getText()); + + npElemente.get(clickedComponent.getNp().getIndex() - 1).setDuration(Double.parseDouble(jTextFieldDuration.getText())); + npElemente.get(clickedComponent.getNp().getIndex() - 1).setDescription(jTextFieldDescription.getText()); + + /** + * Remove networkplan + */ + removeAll(); + + /** + * Start stopwatch + */ + long startTime = System.currentTimeMillis(); + + /** + * Make a new calculation (light) + */ + npCalc = new NetworkplanCalculator(npElemente, true); + npElemente = npCalc.getNpElemente(); + resetCriticalPath(); + showCriticalPath(); + + /** + * Set positions of all JNetworkplanElements on this JNetworkplan + */ + positionSavedElements(); + + /** + * Set positions of all connection lines between the + * JNetworkplanElements + */ + positionSavedConnectionLines(); + + /** + * Re-draw the critical path (red lines) + */ + updateCriticalPathLines(); + + /** + * Stop stopwatch + */ + long endTime = System.currentTimeMillis(); + + /** + * Get the time for calculating and showing the networkplan + */ + long calculationTime = endTime - startTime; + + JLabel showCalculationTime = new JLabel("Rendertime: " + (double) calculationTime / 1000 + " sec."); + add(showCalculationTime); + showCalculationTime.setBounds(10, 5, 200, 20); + + remove(jPanelEdit); + editPanelOpen = false; + + /** + * Update the activity in the database + */ + WorkPlace workplace = new WorkPlace(); + workplace.setNr(clickedComponent.getNp().getNumber()); + workplace.setDauer((int) clickedComponent.getNp().getDuration()); + workplace.setBeschreibung(clickedComponent.getNp().getDescription()); + + try { + dao.updateWorkplace(workplace); + } catch (WiSimDAOWriteException e) { + wiSimLogger.log("updateWorkplace", e); + } + } + }); + + jPanelEdit.add(jButtonEdit); + jButtonEdit.setBounds(55, 82, 81, 26); + jButtonEdit.setBorder(new LineBorder(Color.BLACK)); + + jButtonCancel.setText("Cancel"); + + jButtonCancel.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + remove(jPanelEdit); + editPanelOpen = false; + repaint(); + } + }); + + jPanelEdit.add(jButtonCancel); + jButtonCancel.setBounds(145, 82, 81, 26); + jButtonCancel.setBorder(new LineBorder(Color.BLACK)); + + jPanelEdit.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); + + add(jPanelEdit, 0); + + /** + * Center the Edit-Panel over the JNetworkplanElement + */ + int elemXPos = (int) clickedComponent.getLocation().getX() + 10; + int elemYPos = (int) clickedComponent.getLocation().getY() + 35; + + /** + * The Edit-Panel will allways be shown in the visible rect + */ + if (elemXPos < 0) { + elemXPos = 0; + } + + if (elemYPos < 0) { + elemYPos = 0; + } + + jPanelEdit.setBounds(elemXPos, elemYPos, 280, 120); + jPanelEdit.setBackground(java.awt.SystemColor.controlHighlight); + } + } + + public void mouseEntered(MouseEvent evt) { + } + + public void mouseExited(MouseEvent evt) { + } + + /** + * Sets all elements criticalpath-values to FALSE + */ + public void resetCriticalPath() { + int a = 0; + while (a < npElemente.size()) { + npElemente.get(a).setCriticalPath(false); + a++; + } + } + + /** + * Set the positions of each saved JNetworkplanElement + */ + public void positionSavedElements() { + + /** + * Get elements where arrows are disabled + */ + Vector disabledArrowElements = new Vector(); + for (int b = 0; b < jNpElem.length && jNpElem[b] != null; b++) { + if (!jNpElem[b].isDisplayArrow()) { + disabledArrowElements.add(jNpElem[b].getNp().getNumber()); + } + } + + int a = 0; + while (a < npElemente.size()) { + + NetworkplanElement np = npElemente.get(a); + + jNpElem[a] = new JNetworkplanElement(np); + np.setLayoutManager(a); + jNpElem[a].setName(String.valueOf(np.getIndex())); + + /** + * Remove the arrow if it's disabled + */ + if (disabledArrowElements.contains(jNpElem[a].getNp().getNumber())) { + jNpElem[a].setDisplayArrow(false); + } + + this.add(jNpElem[a]); + + Point location = (Point) elementsPosition.get(np.getIndex()); + + jNpElem[a].setBounds((int) location.getX(), (int) location.getY(), jNpElemWidth, jNpElemHeight); + + a++; + } + } + + /** + * Set the positions of all saved connection lines + */ + public void positionSavedConnectionLines() { + Enumeration connectionLines = elementsConLine.elements(); + while (connectionLines.hasMoreElements()) { + add((JSeparator) connectionLines.nextElement()); + } + } + + /** + * Paint the connection lines between the networkplan elements + */ + public void paintConnectionLines() { + + /** + * Paint the horizontal and vertical connection lines with JSeperators + */ + int a = 0; + + int child[] = npElemente.get(0).getChild(); + + JSeparator horizontalCon[] = new JSeparator[jNpElem.length]; + + while (a < jNpElem.length && jNpElem[a] != null) { + + /** + * Vertical small connection lines to the element at top and bottom + */ + int xPosStart = (int) jNpElem[a].getAnchorPoint(JNetworkplanElement.ANCHOR_TOP_MIDDLE).getX(); + + /** + * Top Connection + */ + if (!jNpElem[a].getNp().isStartElem()) { + + int parent[] = jNpElem[a].getNp().getParent(); + + int yPosStart = (int) jNpElem[a].getAnchorPoint(JNetworkplanElement.ANCHOR_TOP_MIDDLE).getY() - 65; + + JSeparator jSeparatorVerticalCon = new JSeparator(); + + /** + * This element is a pseudo activity + */ + if (jNpElem[a].getNp().isPseudoActivity()) { + jSeparatorVerticalCon = new JDottedLine(); + } + + jSeparatorVerticalCon.setOrientation(SwingConstants.VERTICAL); + jSeparatorVerticalCon.setBounds(xPosStart, yPosStart, 1, 65); + + if (jNpElem[a].getNp().isCriticalPath()) { + jSeparatorVerticalCon.setForeground(Color.RED); + } else { + jSeparatorVerticalCon.setForeground(Color.BLACK); + } + + this.add(jSeparatorVerticalCon); + + /** + * Save this line + */ + elementsConLine.put(jNpElem[a].getName() + "top", jSeparatorVerticalCon); + + /** + * Save a possible middle horizontal connection line + */ + horizontalCon[a] = new JSeparator(); + + /** + * This Element is a pseudo Activity + */ + if (jNpElem[a].getNp().isPseudoActivity() || npElemente.get(parent[0] - 1).isPseudoActivity()) { + horizontalCon[a] = new JDottedLine(); + } + + add(horizontalCon[a]); + elementsConLine.put(parent[0] + "middle" + jNpElem[a].getName(), horizontalCon[a]); + } + + /** + * Bottom Connection + */ + if (!jNpElem[a].getNp().isEndElem()) { + int yPosStart = (int) jNpElem[a].getAnchorPoint(JNetworkplanElement.ANCHOR_BOTTOM_MIDDLE).getY(); + + child = jNpElem[a].getNp().getChild(); + + JSeparator jSeparatorVerticalCon = new JSeparator(); + + /** + * This element is a pseudo activity + */ + if (jNpElem[a].getNp().isPseudoActivity()) { + jSeparatorVerticalCon = new JDottedLine(); + } + + jSeparatorVerticalCon.setOrientation(SwingConstants.VERTICAL); + jSeparatorVerticalCon.setBounds(xPosStart, yPosStart, 1, 65); + + if (jNpElem[a].getNp().isCriticalPath()) { + jSeparatorVerticalCon.setForeground(Color.RED); + } else { + jSeparatorVerticalCon.setForeground(Color.BLACK); + } + + this.add(jSeparatorVerticalCon); + + /** + * Save this line + */ + elementsConLine.put(jNpElem[a].getName() + "bottom", jSeparatorVerticalCon); + + /** + * Save a possible middle horizontal connection line + */ + horizontalCon[a] = new JSeparator(); + + /** + * This Element is a pseudo Activity + */ + if (jNpElem[a].getNp().isPseudoActivity() || npElemente.get(child[0] - 1).isPseudoActivity()) { + horizontalCon[a] = new JDottedLine(); + } + + add(horizontalCon[a]); + elementsConLine.put(jNpElem[a].getName() + "middle" + child[0], horizontalCon[a]); + } + a++; + } + + /** + * Update the connection lines + */ + int g = 0; + while (g < jNpElem.length && jNpElem[g] != null) { + movedElement = jNpElem[g]; + positionConnectionLines(movedElement); + g++; + } + movedElement = null; + } + + /** + * This method is called one on startup and then every time the user moves a + * JNetworkplanElement with the mouse. The connected lines to this element + * move in dependence of the movement of the JNetworkplanElement. + * + * @param jNpActElem Current JNetworkplanElement + */ + public void positionConnectionLines(JNetworkplanElement jNpActElem) { + + /** + * The moved JNetworkplanElement is not the End-Element and has a + * connection-line on the bottom + */ + if (elementsConLine.containsKey(jNpActElem.getName() + "bottom")) { + updateVerticalLinesBottom(jNpActElem); + } + + /** + * The moved JNetworkplanElement is not the Start-Element and has a + * connection-line on the top + */ + if (elementsConLine.containsKey(jNpActElem.getName() + "top")) { + updateVerticalLinesTop(jNpActElem); + } + } + + /** + * This element has a vertical connection line on the bottom. Set its + * position! + * + * @param jNpActElem The current JNetworkplanElement + */ + public void updateVerticalLinesBottom(JNetworkplanElement jNpActElem) { + + JSeparator actLineBottom = (JSeparator) elementsConLine.get(jNpActElem.getName() + "bottom"); + + int child[] = jNpActElem.getNp().getChild(); + JNetworkplanElement childJNpElem = jNpElem[npElemente.get(child[0] - 1).getLayoutManager()]; + + /** + * Set the position and size of the connection line + */ + int difHeight = (int) ((JSeparator) elementsConLine.get(childJNpElem.getName() + "top")).getLocation().getY() - (int) jNpActElem.getLocation().getY() - 170; + + /** + * Position the horizontal middle line alaways in the middle of the elements + */ + int childsParents[] = childJNpElem.getNp().getParent(); + if (child.length == 1 && childsParents.length == 1) { + + /** + * YPos of the bottom line of the rect of the parent + */ + int line1YPos = (int) ((JSeparator) elementsConLine.get(jNpActElem.getName() + "bottom")).getLocation().getY(); + + /** + * YPos ofthe top line of the rect of the child + */ + int line2YPos = (int) ((JSeparator) elementsConLine.get(childJNpElem.getName() + "top")).getLocation().getY() + (int) ((JSeparator) elementsConLine.get(childJNpElem.getName() + "top")).getSize().getHeight(); + + /** + * Middle-YPosition of the distance between Parent and Child + */ + difHeight = (line2YPos - line1YPos) / 2; + + /** + * Update child + */ + JSeparator actLineTop = (JSeparator) elementsConLine.get(childJNpElem.getName() + "top"); + + int parent[] = childJNpElem.getNp().getParent(); + JNetworkplanElement parentJNpElem = jNpElem[npElemente.get(parent[0] - 1).getLayoutManager()]; + + /** + * Set the position and size of the connection line + */ + /** + * YPosition of the ending point of the vertical connection line on bottom + * of the parent element + */ + int anchorY = (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getLocation().getY() + (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getSize().getHeight(); + + actLineTop.setLocation((int) childJNpElem.getLocation().getX() + jNpElemWidth / 2, anchorY); + actLineTop.setSize(1, difHeight); + + /** + * Remove the arrow if difHeight is < 15px + */ + if (difHeight < 15) { + childJNpElem.setDisplayArrow(false); + } else { + childJNpElem.setDisplayArrow(true); + } + + /** + * Update the horizontal connection line bottom of the element + */ + updateHorizontalLinesBottom(childJNpElem); + + /** + * Update the horizontal connection line for the elements parents + */ + if (parent[0] != 0) { + for (int u = 0; u < parent.length; u++) { + updateHorizontalLinesBottom(jNpElem[npElemente.get(parent[u] - 1).getLayoutManager()]); + } + } + + /** + * Synchronize the position of the vertical top-line of the child + */ + syncVerticalLinesTop(childJNpElem); + } + + actLineBottom.setLocation((int) jNpActElem.getLocation().getX() + jNpElemWidth / 2, (int) jNpActElem.getLocation().getY() + 170); + actLineBottom.setSize(1, difHeight); + + /** + * Update the horizontal connection line top of the element + */ + updateHorizontalLinesTop(jNpActElem); + + /** + * Update the horizontal connection line for the elements childs + */ + if (child[0] != 0) { + for (int u = 0; u < child.length; u++) { + updateHorizontalLinesTop(jNpElem[npElemente.get(child[u] - 1).getLayoutManager()]); + } + } + } + + /** + * This element has a vertical connection line on the top. Set its position! + * + * @param jNpActElem The current JNetworkplanElement + */ + public void updateVerticalLinesTop(JNetworkplanElement jNpActElem) { + + JSeparator actLineTop = (JSeparator) elementsConLine.get(jNpActElem.getName() + "top"); + + int parent[] = jNpActElem.getNp().getParent(); + JNetworkplanElement parentJNpElem = jNpElem[npElemente.get(parent[0] - 1).getLayoutManager()]; + + /** + * Set the position and size of the connection line + */ + /** + * YPosition of the ending point of the vertical connection line on bottom + * of the parent element + */ + int anchorY = (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getLocation().getY() + (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getSize().getHeight(); + + /** + * Position the horizontal middle line alaways in the middle of the elements + */ + int parentsChilds[] = parentJNpElem.getNp().getChild(); + + if (parentsChilds.length == 1 && parent.length == 1) { + + int line1YPos = (int) ((JSeparator) elementsConLine.get(jNpActElem.getName() + "top")).getLocation().getY() + (int) ((JSeparator) elementsConLine.get(jNpActElem.getName() + "top")).getSize().getHeight(); + int line2YPos = (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getLocation().getY(); + int difY = (line2YPos - line1YPos) / 2; + + anchorY = (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getLocation().getY() - difY; + + /** + * Update parent + */ + JSeparator actLineBottom = (JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom"); + + int child[] = parentJNpElem.getNp().getChild(); + JNetworkplanElement childJNpElem = jNpElem[npElemente.get(child[0] - 1).getLayoutManager()]; + + /** + * Set the position and size of the connection line + */ + int difHeight = (int) ((JSeparator) elementsConLine.get(childJNpElem.getName() + "top")).getLocation().getY() - (int) parentJNpElem.getLocation().getY() - 170; + + actLineBottom.setLocation((int) parentJNpElem.getLocation().getX() + jNpElemWidth / 2, (int) parentJNpElem.getLocation().getY() + 170); + actLineBottom.setSize(1, difHeight); + + /** + * Update the horizontal connection line top of the element + */ + updateHorizontalLinesTop(parentJNpElem); + + /** + * Update the horizontal connection line for the elements childs + */ + if (child[0] != 0) { + for (int u = 0; u < child.length; u++) { + updateHorizontalLinesTop(jNpElem[npElemente.get(child[u] - 1).getLayoutManager()]); + } + } + syncVerticalLinesBottom(parentJNpElem); + } + + int difHeight = (int) jNpActElem.getLocation().getY() - anchorY + 20; + + actLineTop.setLocation((int) jNpActElem.getLocation().getX() + jNpElemWidth / 2, anchorY); + actLineTop.setSize(1, difHeight); + + /** + * Check if to display the arrow + */ + if (parentJNpElem.getNp().getChild().length > 1 || jNpActElem.getNp().getParent().length > 1) { + + /** + * Remove the arrow if difHeight is < 15px + */ + if (difHeight < 15) { + jNpActElem.setDisplayArrow(false); + } else { + jNpActElem.setDisplayArrow(true); + } + } else { + + /** + * Remove the arrow if the two elements are touching each other + */ + if ((int) jNpActElem.getLocation().getY() < ((int) parentJNpElem.getLocation().getY() + 170)) { + jNpActElem.setDisplayArrow(false); + } else { + jNpActElem.setDisplayArrow(true); + } + } + + /** + * Update the horizontal connection line bottom of the element + */ + updateHorizontalLinesBottom(jNpActElem); + + /** + * Update the horizontal connection line for the elements parents + */ + if (parent[0] != 0) { + for (int u = 0; u < parent.length; u++) { + updateHorizontalLinesBottom(jNpElem[npElemente.get(parent[u] - 1).getLayoutManager()]); + } + } + } + + /** + * Update the horizontal connection line top of the element + * + * @param jNpActElem Current JNetworkplanElement + */ + public void updateHorizontalLinesTop(JNetworkplanElement jNpActElem) { + int parent[] = jNpActElem.getNp().getParent(); + + if (parent[0] != 0) { + JNetworkplanElement parentJNpElem = jNpElem[npElemente.get(parent[0] - 1).getLayoutManager()]; + + /** + * The user moved the element on the X-Axis + */ + int difX = (int) jNpActElem.getLocation().getX() - (int) parentJNpElem.getLocation().getX(); + if (difX != 0) { + JSeparator horizontalCon = (JSeparator) elementsConLine.get(parentJNpElem.getName() + "middle" + jNpActElem.getName()); + horizontalCon.setOrientation(SwingConstants.HORIZONTAL); + + if (jNpActElem.getNp().isCriticalPath() && parentJNpElem.getNp().isCriticalPath()) { + horizontalCon.setForeground(Color.RED); + } else { + horizontalCon.setForeground(Color.BLACK); + } + + /** + * YPosition of the ending point of the vertical connection line on + * bottom of the parent element + */ + int anchorY = (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getLocation().getY() + (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getSize().getHeight(); + + /** + * The user moved the element to the right + */ + if (difX > 0) { + + /** + * Set the position and size of the connection line + */ + int xStart = (int) parentJNpElem.getAnchorPoint(JNetworkplanElement.ANCHOR_TOP_MIDDLE).getX(); + int yStart = anchorY; + int xLength = difX; + + horizontalCon.setBounds(xStart, yStart, xLength, 1); + + /** + * The user moved the element to the left + */ + } else if (difX < 0) { + + /** + * Set the position and size of the connection line + */ + int xStart = (int) parentJNpElem.getAnchorPoint(JNetworkplanElement.ANCHOR_TOP_MIDDLE).getX() + difX; + int yStart = anchorY; + int xLength = difX * (-1); + + horizontalCon.setBounds(xStart, yStart, xLength, 1); + } + + /** + * Always display the critical path line in the foreground + */ + if (horizontalCon.getForeground().equals(Color.RED)) { + remove(horizontalCon); + add(horizontalCon, 2); + } + } + } + } + + /** + * Update the horizontal connection line bottom of the element + * + * @param jNpActElem Current JNetworkplanElement + */ + public void updateHorizontalLinesBottom(JNetworkplanElement jNpActElem) { + int child[] = jNpActElem.getNp().getChild(); + + if (child[0] != 0) { + JNetworkplanElement childJNpElem = jNpElem[npElemente.get(child[0] - 1).getLayoutManager()]; + + /** + * The user moved the element on the X-Axis + */ + int difX = (int) jNpActElem.getLocation().getX() - (int) childJNpElem.getLocation().getX(); + if (difX != 0) { + JSeparator horizontalCon = (JSeparator) elementsConLine.get(jNpActElem.getName() + "middle" + childJNpElem.getName()); + horizontalCon.setOrientation(SwingConstants.HORIZONTAL); + + if (jNpActElem.getNp().isCriticalPath() && childJNpElem.getNp().isCriticalPath()) { + horizontalCon.setForeground(Color.RED); + } else { + horizontalCon.setForeground(Color.BLACK); + } + + /** + * The user moved the element to the right + */ + if (difX > 0) { + + /** + * Set the position and size of the connection line + */ + int xStart = (int) childJNpElem.getAnchorPoint(JNetworkplanElement.ANCHOR_BOTTOM_MIDDLE).getX(); + int yStart = (int) ((JSeparator) elementsConLine.get(childJNpElem.getName() + "top")).getLocation().getY(); + int xLength = difX; + + horizontalCon.setBounds(xStart, yStart, xLength, 1); + + /** + * The user moved the element to the left + */ + } else if (difX < 0) { + + /** + * Set the position and size of the connection line + */ + int xStart = (int) childJNpElem.getAnchorPoint(JNetworkplanElement.ANCHOR_BOTTOM_MIDDLE).getX() + difX; + int yStart = (int) ((JSeparator) elementsConLine.get(childJNpElem.getName() + "top")).getLocation().getY(); + int xLength = difX * (-1); + + horizontalCon.setBounds(xStart, yStart, xLength, 1); + } + + /** + * Always display the critical path line in the foreground + */ + if (horizontalCon.getForeground().equals(Color.RED)) { + remove(horizontalCon); + add(horizontalCon, 2); + } + } + } + } + + /** + * Sets the JSeperators of the critical path to Color.RED + */ + public void updateCriticalPathLines() { + Enumeration keys = elementsConLine.keys(); + + /** + * Foreach key + */ + while (keys.hasMoreElements()) { + String key = (String) keys.nextElement(); + + /** + * Get the JSeperator with the key + */ + JSeparator actSeparator = (JSeparator) elementsConLine.get(key); + actSeparator.setForeground(Color.BLACK); + + /** + * This JSeperator is a vertical connection line on top of an element + */ + if (key.matches("^[0-9]*top$")) { + String index = key.replaceAll("top", ""); + + /** + * Check if the element connected to this line is a critical path member + */ + if (npElemente.get(Integer.parseInt(index) - 1).isCriticalPath()) { + actSeparator.setForeground(Color.RED); + } + + /** + * This JSeperator is a vertical connection line on the bottom of an + * element + */ + } else if (key.matches("^[0-9]*bottom$")) { + String index = key.replaceAll("bottom", ""); + + /** + * Check if the element connected to this line is a critical path member + */ + if (npElemente.get(Integer.parseInt(index) - 1).isCriticalPath()) { + actSeparator.setForeground(Color.RED); + } + + /** + * This JSeperator is a horizontal connection line + */ + } else if (key.matches("^[0-9]*middle[0-9]*$")) { + String index[] = key.split("middle"); + + /** + * Check if the elements connected to this line is are critical path + * member + */ + if (npElemente.get(Integer.parseInt(index[0]) - 1).isCriticalPath() && npElemente.get(Integer.parseInt(index[1]) - 1).isCriticalPath()) { + actSeparator.setForeground(Color.RED); + } + } + } + } + + /** + * Sync this elements vertical connection line in the top to the child + * element's line + * + * @param jNpActElem The current JNetworkplanElement + */ + public void syncVerticalLinesBottom(JNetworkplanElement jNpActElem) { + + JSeparator actLineBottom = (JSeparator) elementsConLine.get(jNpActElem.getName() + "bottom"); + + int child[] = jNpActElem.getNp().getChild(); + JNetworkplanElement childJNpElem = jNpElem[npElemente.get(child[0] - 1).getLayoutManager()]; + + /** + * Set the position and size of the connection line + */ + int difHeight = (int) ((JSeparator) elementsConLine.get(childJNpElem.getName() + "top")).getLocation().getY() - (int) jNpActElem.getLocation().getY() - 170; + + actLineBottom.setLocation((int) jNpActElem.getLocation().getX() + jNpElemWidth / 2, (int) jNpActElem.getLocation().getY() + 170); + actLineBottom.setSize(1, difHeight); + } + + /** + * Sync this elements vertical connection line in the top to the parent + * element's line + * + * @param jNpActElem The current JNetworkplanElement + */ + public void syncVerticalLinesTop(JNetworkplanElement jNpActElem) { + + JSeparator actLineTop = (JSeparator) elementsConLine.get(jNpActElem.getName() + "top"); + + int parent[] = jNpActElem.getNp().getParent(); + JNetworkplanElement parentJNpElem = jNpElem[npElemente.get(parent[0] - 1).getLayoutManager()]; + + /** + * Set the position and size of the connection line + */ + /** + * YPosition of the ending point of the vertical connection line on bottom + * of the parent element + */ + int anchorY = (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getLocation().getY() + (int) ((JSeparator) elementsConLine.get(parentJNpElem.getName() + "bottom")).getSize().getHeight(); + + int difHeight = (int) jNpActElem.getLocation().getY() - anchorY + 20; + + actLineTop.setLocation((int) jNpActElem.getLocation().getX() + jNpElemWidth / 2, anchorY); + actLineTop.setSize(1, difHeight); + + /** + * Check if to display the arrow + */ + if (parentJNpElem.getNp().getChild().length > 1 || jNpActElem.getNp().getParent().length > 1) { + + /** + * Remove the arrow if difHeight is < 15px + */ + if (difHeight < 15) { + jNpActElem.setDisplayArrow(false); + } else { + jNpActElem.setDisplayArrow(true); + } + } else { + + /** + * Remove the arrow if the two elements are touching each other + */ + if ((int) jNpActElem.getLocation().getY() < ((int) parentJNpElem.getLocation().getY() + 170)) { + jNpActElem.setDisplayArrow(false); + } else { + jNpActElem.setDisplayArrow(true); + } + } + } +} diff --git a/wisim/src/java/net/sourceforge/wisim/networkplan/NetworkplanCalculator.java b/wisim/src/java/net/sourceforge/wisim/networkplan/NetworkplanCalculator.java index 3f26120..7fafbc3 100644 --- a/wisim/src/java/net/sourceforge/wisim/networkplan/NetworkplanCalculator.java +++ b/wisim/src/java/net/sourceforge/wisim/networkplan/NetworkplanCalculator.java @@ -20,7 +20,6 @@ ** ** ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ - package net.sourceforge.wisim.networkplan; import java.util.ArrayList; @@ -29,345 +28,387 @@ /** * Class for calculating a network plan element. + * * @author Benjamin Pasero * @version 0.7a */ public class NetworkplanCalculator { - private ArrayList npElemente; - private Iterator npElemIt; - - /** - * Calculates a networkplan element - * @param npElemente Vector holding all networkplan elements - * @param lightReCalc TRUE if only Faz / Fez, Saz / Sez and Buffer - * have to be calculated. FALSE if its first calculation - */ - public NetworkplanCalculator(ArrayList npElemente, boolean lightReCalc) { - this.npElemente = npElemente; - npElemIt = npElemente.iterator(); - - /** This is the first calculation */ - if (!lightReCalc) { - - /** Set index in the vector storing the networkplan elements */ - setIndex(); - - if (((NetworkplanElement) npElemente.get(0)).isChildSet()) { - - /** Calculate the parent networkplan elements */ - setParents(); - - } else { - - /** Calculate the child networkplan elements */ - setChilds(); - } - } - - /** Calculation */ - calculateFazFez(); - calculateSazSez(); - calculatePuffer(); - } - - /** - * Determination of the parent network elements - */ - public void setParents() { - npElemIt = npElemente.iterator(); - while (npElemIt.hasNext()) { - NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); - int[] child = npElem.getChild(); - int i = 0; - while (i < child.length && child[i] != 0) { - ((NetworkplanElement) npElemente.get(child[i] - 1)).addIntoParentBasket(new Integer(npElem.getIndex())); - i++; - } - } - - npElemIt = npElemente.iterator(); - while (npElemIt.hasNext()) { - NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); - if (npElem.getParentBasket().size() > 0) { - npElem.getFromParentBasket(); - } else { - npElem.addIntoParentBasket(new Integer(0)); - npElem.getFromParentBasket(); - } - } - } - - /** Forward Calculation */ - public void calculateFazFez() { - npElemIt = npElemente.iterator(); - - while (npElemIt.hasNext()) { - NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); - - if (!npElem.isPseudoActivity()) { - int parent[] = npElem.getParent(); - if (parent[0] == 0) { - npElem.setFaz(0); - npElem.setFez(npElem.getDuration()); - } else { - int i = 0; - double maxFez = 0; - while (i < parent.length) { - NetworkplanElement npElemParent = (NetworkplanElement) npElemente.get(parent[i] - 1); - - if (maxFez < npElemParent.getFez()) - maxFez = npElemParent.getFez(); - - i++; - } - - npElem.setFaz(maxFez); - npElem.setFez(npElem.getFaz() + npElem.getDuration()); - } - } else { - npElem.setFaz(0); - npElem.setFez(npElem.getFaz() + npElem.getDuration()); - } - } - } - - /** Backward Calculation */ - public void calculateSazSez() { - ArrayList npElementeDesc = new ArrayList<>(); - int a = npElemente.size() - 1; - - while (a >= 0) { - npElementeDesc.add(npElemente.get(a)); - a--; - } - - npElemIt = npElementeDesc.iterator(); - ArrayList uncompleted = new ArrayList<>(); - - while (npElemIt.hasNext()) { - - NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); - - int child[] = npElem.getChild(); - - if (child[0] == 0) { - npElem.setSaz(npElem.getFaz()); - npElem.setSez(npElem.getFez()); - } else { - int i = 0; - // double minSaz = ((NetworkplanElement) npElemente.get(child[0] - 1)).getSaz(); - double minSaz = Integer.MAX_VALUE; - - if (minSaz > 0) { - while (i < child.length) { - NetworkplanElement npElemChild = npElemente.get(child[i] - 1); - - if (minSaz > npElemChild.getSaz() && !npElemChild.isPseudoActivity()) - minSaz = npElemChild.getSaz(); - i++; - } - npElem.setSaz(minSaz - npElem.getDuration()); - npElem.setSez(minSaz); - - /** This child was not yet calculated */ - } else { - uncompleted.add(npElem); - } - } - } - - a = 0; - /** Calculate the missing elements */ - while (a < uncompleted.size()) { - NetworkplanElement npElem = (NetworkplanElement) uncompleted.get(a); - - int child[] = npElem.getChild(); - if (child[0] == 0) { - npElem.setSaz(npElem.getFaz()); - npElem.setSez(npElem.getFez()); - } else { - int i = 1; - double minSaz = ((NetworkplanElement) npElemente.get(child[0] - 1)).getSaz(); - - if (minSaz != 0) { - while (i < child.length) { - NetworkplanElement npElemChild = (NetworkplanElement) npElemente.get(child[i] - 1); - if (minSaz > npElemChild.getSaz()) - minSaz = npElemChild.getSaz(); - i++; - } - npElem.setSaz(minSaz - npElem.getDuration()); - npElem.setSez(minSaz); - } - } - a++; - } - } - - /** Calculation of total float and free float */ - public void calculatePuffer() { - - /** total float (SAZ - FAZ) */ - npElemIt = npElemente.iterator(); - while (npElemIt.hasNext()) { - NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); - npElem.setGp(npElem.getSaz() - npElem.getFaz()); - } - - /** free float (FAZ[i+1] - FEZ[i]) **/ - npElemIt = npElemente.iterator(); - while (npElemIt.hasNext()) { - NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); - - int child[] = npElem.getChild(); - if (child[0] != 0) { - int i = 0; - // double minFaz = ((NetworkplanElement) npElemente.get(child[0] - 1)).getFaz(); - double minFaz = Integer.MAX_VALUE; - while (i < child.length) { - NetworkplanElement npElemParent = (NetworkplanElement) npElemente.get(child[i] - 1); - if (minFaz > npElemParent.getFaz() && !npElemParent.isPseudoActivity()) - minFaz = npElemParent.getFaz(); - i++; - } - npElem.setFp(minFaz - npElem.getFez()); - } - } - } - - /** - * Critical path containing network plan elements that have total - * float = 0 and free float = 0 - * @return Vector with network plan elements of the critical path - */ - public ArrayList getCriticalPath() { - ArrayList criticalPath = new ArrayList<>(); - - npElemIt = npElemente.iterator(); - while (npElemIt.hasNext()) { - NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); - if (npElem.getFp() == 0 && npElem.getGp() == 0) - criticalPath.add(npElem.getIndex()); - } - return criticalPath; - } - - /** - * Returns the number of branches in the network plan - * @return Width (Branches) of the network plan - */ - public int getCountedBranches() { - int countedBranches = 1; - npElemIt = npElemente.iterator(); - while (npElemIt.hasNext()) { - NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); - int actWidth = npElem.getChild().length; - - if (actWidth > 1) - countedBranches += actWidth; - } - return countedBranches; - } - - /** - * @return The calculated network plan elements in a Vector - */ - public ArrayList getNpElemente() { - return npElemente; - } - - /** Set Index - each element's index is its position in the vector + 1 */ - public void setIndex() { - - int a = 0; - Hashtable newElemPos = new Hashtable(); - - while (a < npElemente.size()) { - NetworkplanElement np = ((NetworkplanElement) npElemente.get(a)); - np.setIndex(a + 1); - newElemPos.put(new Integer(np.getNumber()), new Integer(np.getIndex())); - a++; - } - - if (((NetworkplanElement) npElemente.get(0)).isChildSet()) { - - /** Reset the child-Numbers */ - a = 0; - while (a < npElemente.size()) { - NetworkplanElement np = (NetworkplanElement) npElemente.get(a); - int child[] = np.getChild(); - - int b = 0; - while (b < child.length && child[b] != 0) { - child[b] = ((Integer) newElemPos.get(new Integer(child[b]))).intValue(); - b++; - } - a++; - } - } else { - - /** Reset the parent-Numbers */ - a = 0; - while (a < npElemente.size()) { - NetworkplanElement np = (NetworkplanElement) npElemente.get(a); - int parent[] = np.getParent(); - - int b = 0; - while (b < parent.length && parent[b] != 0) { - parent[b] = ((Integer) newElemPos.get(new Integer(parent[b]))).intValue(); - b++; - } - a++; - } - } - } - - /** - * Determination of the child network elements - */ - public void setChilds() { - - checkForPseudoActivity(); - - npElemIt = npElemente.iterator(); - while (npElemIt.hasNext()) { - NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); - int[] parent = npElem.getParent(); - int i = 0; - while (i < parent.length && parent[i] != 0) { - ((NetworkplanElement) npElemente.get(parent[i] - 1)).addIntoChildBasket(new Integer(npElem.getIndex())); - i++; - } - } - - npElemIt = npElemente.iterator(); - while (npElemIt.hasNext()) { - NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); - if (npElem.getChildBasket().size() > 0) { - npElem.getFromChildBasket(); - } else { - npElem.addIntoChildBasket(new Integer(0)); - npElem.getFromChildBasket(); - } - } - } - - /** - * Check from second to last element if parent is 0. If so, its - * a pseudo element. - */ - public void checkForPseudoActivity() { - - for (int a = 1; a < npElemente.size(); a++) { - NetworkplanElement np = ((NetworkplanElement) npElemente.get(a)); - int parent[] = np.getParent(); - - /** This Element is a pseudo Activity */ - if (parent[0] == 0) { - np.setParent(new int[] { 1 }); - np.setPseudoActivity(true); - } - } - } -} \ No newline at end of file + private ArrayList npElemente; + private Iterator npElemIt; + + /** + * Calculates a networkplan element + * + * @param npElemente Vector holding all networkplan elements + * @param lightReCalc TRUE if only Faz / Fez, Saz / Sez and Buffer have to be + * calculated. FALSE if its first calculation + */ + public NetworkplanCalculator(ArrayList npElemente, boolean lightReCalc) { + this.npElemente = npElemente; + npElemIt = npElemente.iterator(); + + /** + * This is the first calculation + */ + if (!lightReCalc) { + + /** + * Set index in the vector storing the networkplan elements + */ + setIndex(); + + if (npElemente.get(0).isChildSet()) { + + /** + * Calculate the parent networkplan elements + */ + setParents(); + + } else { + + /** + * Calculate the child networkplan elements + */ + setChilds(); + } + } + + /** + * Calculation + */ + calculateFazFez(); + calculateSazSez(); + calculatePuffer(); + } + + /** + * Determination of the parent network elements + */ + public void setParents() { + npElemIt = npElemente.iterator(); + while (npElemIt.hasNext()) { + NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); + int[] child = npElem.getChild(); + int i = 0; + while (i < child.length && child[i] != 0) { + npElemente.get(child[i] - 1).addIntoParentBasket(npElem.getIndex()); + i++; + } + } + + npElemIt = npElemente.iterator(); + while (npElemIt.hasNext()) { + NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); + if (npElem.getParentBasket().size() > 0) { + npElem.getFromParentBasket(); + } else { + npElem.addIntoParentBasket(0); + npElem.getFromParentBasket(); + } + } + } + + /** + * Forward Calculation + */ + public void calculateFazFez() { + npElemIt = npElemente.iterator(); + + while (npElemIt.hasNext()) { + NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); + + if (!npElem.isPseudoActivity()) { + int parent[] = npElem.getParent(); + if (parent[0] == 0) { + npElem.setFaz(0); + npElem.setFez(npElem.getDuration()); + } else { + int i = 0; + double maxFez = 0; + while (i < parent.length) { + NetworkplanElement npElemParent = npElemente.get(parent[i] - 1); + + if (maxFez < npElemParent.getFez()) { + maxFez = npElemParent.getFez(); + } + + i++; + } + + npElem.setFaz(maxFez); + npElem.setFez(npElem.getFaz() + npElem.getDuration()); + } + } else { + npElem.setFaz(0); + npElem.setFez(npElem.getFaz() + npElem.getDuration()); + } + } + } + + /** + * Backward Calculation + */ + public void calculateSazSez() { + ArrayList npElementeDesc = new ArrayList<>(); + int a = npElemente.size() - 1; + + while (a >= 0) { + npElementeDesc.add(npElemente.get(a)); + a--; + } + + npElemIt = npElementeDesc.iterator(); + ArrayList uncompleted = new ArrayList<>(); + + while (npElemIt.hasNext()) { + + NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); + + int child[] = npElem.getChild(); + + if (child[0] == 0) { + npElem.setSaz(npElem.getFaz()); + npElem.setSez(npElem.getFez()); + } else { + int i = 0; + // double minSaz = ((NetworkplanElement) npElemente.get(child[0] - 1)).getSaz(); + double minSaz = Integer.MAX_VALUE; + + if (minSaz > 0) { + while (i < child.length) { + NetworkplanElement npElemChild = npElemente.get(child[i] - 1); + + if (minSaz > npElemChild.getSaz() && !npElemChild.isPseudoActivity()) { + minSaz = npElemChild.getSaz(); + } + i++; + } + npElem.setSaz(minSaz - npElem.getDuration()); + npElem.setSez(minSaz); + + /** + * This child was not yet calculated + */ + } else { + uncompleted.add(npElem); + } + } + } + + a = 0; + /** + * Calculate the missing elements + */ + while (a < uncompleted.size()) { + NetworkplanElement npElem = uncompleted.get(a); + + int child[] = npElem.getChild(); + if (child[0] == 0) { + npElem.setSaz(npElem.getFaz()); + npElem.setSez(npElem.getFez()); + } else { + int i = 1; + double minSaz = npElemente.get(child[0] - 1).getSaz(); + + if (minSaz != 0) { + while (i < child.length) { + NetworkplanElement npElemChild = npElemente.get(child[i] - 1); + if (minSaz > npElemChild.getSaz()) { + minSaz = npElemChild.getSaz(); + } + i++; + } + npElem.setSaz(minSaz - npElem.getDuration()); + npElem.setSez(minSaz); + } + } + a++; + } + } + + /** + * Calculation of total float and free float + */ + public void calculatePuffer() { + + /** + * total float (SAZ - FAZ) + */ + npElemIt = npElemente.iterator(); + while (npElemIt.hasNext()) { + NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); + npElem.setGp(npElem.getSaz() - npElem.getFaz()); + } + + /** + * free float (FAZ[i+1] - FEZ[i]) * + */ + npElemIt = npElemente.iterator(); + while (npElemIt.hasNext()) { + NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); + + int child[] = npElem.getChild(); + if (child[0] != 0) { + int i = 0; + // double minFaz = ((NetworkplanElement) npElemente.get(child[0] - 1)).getFaz(); + double minFaz = Integer.MAX_VALUE; + while (i < child.length) { + NetworkplanElement npElemParent = npElemente.get(child[i] - 1); + if (minFaz > npElemParent.getFaz() && !npElemParent.isPseudoActivity()) { + minFaz = npElemParent.getFaz(); + } + i++; + } + npElem.setFp(minFaz - npElem.getFez()); + } + } + } + + /** + * Critical path containing network plan elements that have total float = 0 + * and free float = 0 + * + * @return Vector with network plan elements of the critical path + */ + public ArrayList getCriticalPath() { + ArrayList criticalPath = new ArrayList<>(); + + npElemIt = npElemente.iterator(); + while (npElemIt.hasNext()) { + NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); + if (npElem.getFp() == 0 && npElem.getGp() == 0) { + criticalPath.add(npElem.getIndex()); + } + } + return criticalPath; + } + + /** + * Returns the number of branches in the network plan + * + * @return Width (Branches) of the network plan + */ + public int getCountedBranches() { + int countedBranches = 1; + npElemIt = npElemente.iterator(); + while (npElemIt.hasNext()) { + NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); + int actWidth = npElem.getChild().length; + + if (actWidth > 1) { + countedBranches += actWidth; + } + } + return countedBranches; + } + + /** + * @return The calculated network plan elements in a Vector + */ + public ArrayList getNpElemente() { + return npElemente; + } + + /** + * Set Index - each element's index is its position in the vector + 1 + */ + public void setIndex() { + + int a = 0; + Hashtable newElemPos = new Hashtable(); + + while (a < npElemente.size()) { + NetworkplanElement np = npElemente.get(a); + np.setIndex(a + 1); + newElemPos.put(np.getNumber(), np.getIndex()); + a++; + } + + if (npElemente.get(0).isChildSet()) { + + /** + * Reset the child-Numbers + */ + a = 0; + while (a < npElemente.size()) { + NetworkplanElement np = npElemente.get(a); + int child[] = np.getChild(); + + int b = 0; + while (b < child.length && child[b] != 0) { + child[b] = ((Integer) newElemPos.get(child[b])); + b++; + } + a++; + } + } else { + + /** + * Reset the parent-Numbers + */ + a = 0; + while (a < npElemente.size()) { + NetworkplanElement np = npElemente.get(a); + int parent[] = np.getParent(); + + int b = 0; + while (b < parent.length && parent[b] != 0) { + parent[b] = ((Integer) newElemPos.get(parent[b])); + b++; + } + a++; + } + } + } + + /** + * Determination of the child network elements + */ + public void setChilds() { + + checkForPseudoActivity(); + + npElemIt = npElemente.iterator(); + while (npElemIt.hasNext()) { + NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); + int[] parent = npElem.getParent(); + int i = 0; + while (i < parent.length && parent[i] != 0) { + npElemente.get(parent[i] - 1).addIntoChildBasket(npElem.getIndex()); + i++; + } + } + + npElemIt = npElemente.iterator(); + while (npElemIt.hasNext()) { + NetworkplanElement npElem = (NetworkplanElement) npElemIt.next(); + if (npElem.getChildBasket().size() > 0) { + npElem.getFromChildBasket(); + } else { + npElem.addIntoChildBasket(0); + npElem.getFromChildBasket(); + } + } + } + + /** + * Check from second to last element if parent is 0. If so, its a pseudo + * element. + */ + public void checkForPseudoActivity() { + + for (int a = 1; a < npElemente.size(); a++) { + NetworkplanElement np = npElemente.get(a); + int parent[] = np.getParent(); + + /** + * This Element is a pseudo Activity + */ + if (parent[0] == 0) { + np.setParent(new int[]{1}); + np.setPseudoActivity(true); + } + } + } +} diff --git a/wisim/src/java/net/sourceforge/wisim/networkplan/NetworkplanElement.java b/wisim/src/java/net/sourceforge/wisim/networkplan/NetworkplanElement.java index a24bf6a..32b7808 100644 --- a/wisim/src/java/net/sourceforge/wisim/networkplan/NetworkplanElement.java +++ b/wisim/src/java/net/sourceforge/wisim/networkplan/NetworkplanElement.java @@ -20,419 +20,456 @@ ** ** ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ - package net.sourceforge.wisim.networkplan; -import java.util.Collection; +import java.util.ArrayList; import java.util.Iterator; -import java.util.Vector; /** * Class for generating one network plan element + * * @author Benjamin Pasero * @version 0.7a */ public class NetworkplanElement { - private int index; - private int number; - private double duration; - private boolean criticalPath; - private int[] parent; - private int[] child; - - private double faz; - private double fez; - private double saz; - private double sez; - private double gp; - private double fp; - - private String description; - - private Collection parentBasket; - private Collection childBasket; - - private int layoutManager; - - private boolean childSet; - - private boolean pseudoActivity; - - /** - * Class representating one networkplan element. - * The user sets the child elements of the activity. The parent elements are calculated. - * @param number Number of the activity - * @param duration Duration of the activity - * @param child dependant Child(s) of the activity - * @param description Description of the activity - */ - public NetworkplanElement(int number, double duration, int[] child, String description) { - childSet = true; - this.number = number; - this.duration = duration; - this.child = child; - parentBasket = new Vector(); - childBasket = new Vector(); - this.description = description; - criticalPath = false; - pseudoActivity = false; - } - - /** - * Class representating one networkplan element. - * The user sets the parent elements of the activity. The child elements are calculated. - * wants to set the parents and not the childs. - * @param number of the activity - * @param duration of the activity - * @param description of the activity - * @param parent dependant Parent(s) of the activity - */ - public NetworkplanElement(int number, double duration, String description, int[] parent) { - childSet = false; - this.number = number; - this.duration = duration; - childBasket = new Vector(); - this.description = description; - criticalPath = false; - this.parent = parent; - } - - /** - * Get the duration of the network plan element - * @return duration - */ - public double getDuration() { - return duration; - } - - /** - * Set the duration - * @param duration - */ - public void setDuration(double duration) { - this.duration = duration; - } - - /** - * Get the earliest start - * @return faz - */ - public double getFaz() { - return faz; - } - - /** - * Get the earliest finish - * @return fez - */ - public double getFez() { - return fez; - } - - /** - * Get the free buffer - * @return fp - */ - public double getFp() { - return fp; - } - - /** - * Get whole buffer - * @return gp - */ - public double getGp() { - return gp; - } - - /** - * Get the latest start - * @return saz - */ - public double getSaz() { - return saz; - } - - /** - * Get the latest finish - * @return sez - */ - public double getSez() { - return sez; - } - - /** - * Set the earliest start - * @param faz - */ - public void setFaz(double faz) { - this.faz = faz; - } - - /** - * Set the latest start - * @param fez - */ - public void setFez(double fez) { - this.fez = fez; - } - - /** - * Set the free buffer - * @param fp - */ - public void setFp(double fp) { - this.fp = fp; - } - - /** - * Set the whole buffer - * @param gp - */ - public void setGp(double gp) { - this.gp = gp; - } - - /** - * Set the latest finish - * @param saz - */ - public void setSaz(double saz) { - this.saz = saz; - } - - /** - * Set the latest finish - * @param sez - */ - public void setSez(double sez) { - this.sez = sez; - } - - /** - * Get number - * @return index - */ - public int getIndex() { - return index; - } - - /** - * Set the index in the vector of all networkplan elements - * @param index - */ - public void setIndex(int index) { - this.index = index; - } - - /** - * Get array with number of parent elements - * @return parent - */ - public int[] getParent() { - return parent; - } - - /** - * Set parents - * @param parent - */ - public void setParent(int[] parent) { - this.parent = parent; - } - - /** - * Get array with number of child elements - * @return child - */ - public int[] getChild() { - return child; - } - - /** - * Set childs - * @param child - */ - public void setChild(int[] child) { - this.child = child; - } - - /** - * Get a collection holding the parents - * @return parentBasket - */ - public Collection getParentBasket() { - return parentBasket; - } - - /** - * Set the collection holding the parents - * @param parentBasket - */ - public void setParentBasket(Collection parentBasket) { - this.parentBasket = parentBasket; - } - - /** Set the collection holding the childs - * @param childBasket - */ - public void setChildBasket(Collection childBasket) { - this.childBasket = childBasket; - } - - /** - * Add one parent into the basket - * @param parent's index - */ - public void addIntoParentBasket(Integer parent) { - parentBasket.add(parent); - } - - /** Add one child into the basket - * @param child's index - */ - public void addIntoChildBasket(Integer child) { - childBasket.add(child); - } - - /** Set this elements parents */ - public void getFromParentBasket() { - Iterator parentBasketIt = parentBasket.iterator(); - parent = new int[parentBasket.size()]; - int i = 0; - while (parentBasketIt.hasNext()) { - parent[i] = ((Integer) parentBasketIt.next()).intValue(); - i++; - } - } - - /** Set this elements childs */ - public void getFromChildBasket() { - Iterator childBasketIt = childBasket.iterator(); - child = new int[childBasket.size()]; - int i = 0; - while (childBasketIt.hasNext()) { - child[i] = ((Integer) childBasketIt.next()).intValue(); - i++; - } - } - - /** - * Get the description - * @return description - */ - public String getDescription() { - return description; - } - - /** - * Set the description - * @param description - */ - public void setDescription(String description) { - this.description = description; - } - - /** - * @return TRUE if element is the start element of the network plan - */ - public boolean isStartElem() { - if (parent[0] == 0) - return true; - - return false; - } - - /** - * @return TRUE if element is the end element of the network plan - */ - public boolean isEndElem() { - if (child[0] == 0) - return true; - - return false; - } - /** - * @return TRUE if element is member of the critical path - */ - public boolean isCriticalPath() { - return criticalPath; - } - - /** - * Set TRUE if element is member of the critial path - * @param isCriticalPath - */ - public void setCriticalPath(boolean isCriticalPath) { - criticalPath = isCriticalPath; - } - - /** - * Get the number of the networkplan element - * @return number of the element - */ - public int getNumber() { - return number; - } - - /** - * Set the number of the networkplan element - * @param number of the element - */ - public void setNumber(int number) { - this.number = number; - } - - /** - * Get the LayoutManager of this element. The int-Value represents the - * position within the array of the JPanels displaying the networkplan elements - * @return - */ - public int getLayoutManager() { - return layoutManager; - } - - /** - * Set the LayoutManager of this element. The int-Value represents the - * position within the array of the JPanels displaying the networkplan elements - * @param i - */ - public void setLayoutManager(int i) { - layoutManager = i; - } - - /** - * @return TRUE if the user has set the child's in the constructor - */ - public boolean isChildSet() { - return childSet; - } - - /** - * @param TRUE if the user has set the child's in the constructor - */ - public void setChildSet(boolean childSet) { - this.childSet = childSet; - } - - /** - * @return Vector containing the numbers of all childs - */ - public Collection getChildBasket() { - return childBasket; - } - /** - * @return TRUE if this element is a pseudo activity - */ - public boolean isPseudoActivity() { - return pseudoActivity; - } - - /** - * @param pseudoActivity - */ - public void setPseudoActivity(boolean pseudoActivity) { - this.pseudoActivity = pseudoActivity; - } -} \ No newline at end of file + private int index; + private int number; + private double duration; + private boolean criticalPath; + private int[] parent; + private int[] child; + + private double faz; + private double fez; + private double saz; + private double sez; + private double gp; + private double fp; + + private String description; + + private ArrayList parentBasket; + private ArrayList childBasket; + + private int layoutManager; + + private boolean childSet; + + private boolean pseudoActivity; + + /** + * Class representating one networkplan element. The user sets the child + * elements of the activity. The parent elements are calculated. + * + * @param number Number of the activity + * @param duration Duration of the activity + * @param child dependant Child(s) of the activity + * @param description Description of the activity + */ + public NetworkplanElement(int number, double duration, int[] child, String description) { + childSet = true; + this.number = number; + this.duration = duration; + this.child = child; + parentBasket = new ArrayList<>(); + childBasket = new ArrayList<>(); + this.description = description; + criticalPath = false; + pseudoActivity = false; + } + + /** + * Class representating one networkplan element. The user sets the parent + * elements of the activity. The child elements are calculated. wants to set + * the parents and not the childs. + * + * @param number of the activity + * @param duration of the activity + * @param description of the activity + * @param parent dependant Parent(s) of the activity + */ + public NetworkplanElement(int number, double duration, String description, int[] parent) { + childSet = false; + this.number = number; + this.duration = duration; + childBasket = new ArrayList<>(); + this.description = description; + criticalPath = false; + this.parent = parent; + } + + /** + * Get the duration of the network plan element + * + * @return duration + */ + public double getDuration() { + return duration; + } + + /** + * Set the duration + * + * @param duration + */ + public void setDuration(double duration) { + this.duration = duration; + } + + /** + * Get the earliest start + * + * @return faz + */ + public double getFaz() { + return faz; + } + + /** + * Get the earliest finish + * + * @return fez + */ + public double getFez() { + return fez; + } + + /** + * Get the free buffer + * + * @return fp + */ + public double getFp() { + return fp; + } + + /** + * Get whole buffer + * + * @return gp + */ + public double getGp() { + return gp; + } + + /** + * Get the latest start + * + * @return saz + */ + public double getSaz() { + return saz; + } + + /** + * Get the latest finish + * + * @return sez + */ + public double getSez() { + return sez; + } + + /** + * Set the earliest start + * + * @param faz + */ + public void setFaz(double faz) { + this.faz = faz; + } + + /** + * Set the latest start + * + * @param fez + */ + public void setFez(double fez) { + this.fez = fez; + } + + /** + * Set the free buffer + * + * @param fp + */ + public void setFp(double fp) { + this.fp = fp; + } + + /** + * Set the whole buffer + * + * @param gp + */ + public void setGp(double gp) { + this.gp = gp; + } + + /** + * Set the latest finish + * + * @param saz + */ + public void setSaz(double saz) { + this.saz = saz; + } + + /** + * Set the latest finish + * + * @param sez + */ + public void setSez(double sez) { + this.sez = sez; + } + + /** + * Get number + * + * @return index + */ + public int getIndex() { + return index; + } + + /** + * Set the index in the vector of all networkplan elements + * + * @param index + */ + public void setIndex(int index) { + this.index = index; + } + + /** + * Get array with number of parent elements + * + * @return parent + */ + public int[] getParent() { + return parent; + } + + /** + * Set parents + * + * @param parent + */ + public void setParent(int[] parent) { + this.parent = parent; + } + + /** + * Get array with number of child elements + * + * @return child + */ + public int[] getChild() { + return child; + } + + /** + * Set childs + * + * @param child + */ + public void setChild(int[] child) { + this.child = child; + } + + /** + * Get a collection holding the parents + * + * @return parentBasket + */ + public ArrayList getParentBasket() { + return parentBasket; + } + + /** + * Set the collection holding the parents + * + * @param parentBasket + */ + public void setParentBasket(ArrayList parentBasket) { + this.parentBasket = parentBasket; + } + + /** + * Set the collection holding the childs + * + * @param childBasket + */ + public void setChildBasket(ArrayList childBasket) { + this.childBasket = childBasket; + } + + /** + * Add one parent into the basket + * + * @param parent's index + */ + public void addIntoParentBasket(Integer parent) { + parentBasket.add(parent); + } + + /** + * Add one child into the basket + * + * @param child's index + */ + public void addIntoChildBasket(Integer child) { + childBasket.add(child); + } + + /** + * Set this elements parents + */ + public void getFromParentBasket() { + Iterator parentBasketIt = parentBasket.iterator(); + parent = new int[parentBasket.size()]; + int i = 0; + while (parentBasketIt.hasNext()) { + parent[i] = ((Integer) parentBasketIt.next()); + i++; + } + } + + /** + * Set this elements childs + */ + public void getFromChildBasket() { + Iterator childBasketIt = childBasket.iterator(); + child = new int[childBasket.size()]; + int i = 0; + while (childBasketIt.hasNext()) { + child[i] = ((Integer) childBasketIt.next()); + i++; + } + } + + /** + * Get the description + * + * @return description + */ + public String getDescription() { + return description; + } + + /** + * Set the description + * + * @param description + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * @return TRUE if element is the start element of the network plan + */ + public boolean isStartElem() { + return parent[0] == 0; + } + + /** + * @return TRUE if element is the end element of the network plan + */ + public boolean isEndElem() { + return child[0] == 0; + } + + /** + * @return TRUE if element is member of the critical path + */ + public boolean isCriticalPath() { + return criticalPath; + } + + /** + * Set TRUE if element is member of the critial path + * + * @param isCriticalPath + */ + public void setCriticalPath(boolean isCriticalPath) { + criticalPath = isCriticalPath; + } + + /** + * Get the number of the networkplan element + * + * @return number of the element + */ + public int getNumber() { + return number; + } + + /** + * Set the number of the networkplan element + * + * @param number of the element + */ + public void setNumber(int number) { + this.number = number; + } + + /** + * Get the LayoutManager of this element. The int-Value represents the + * position within the array of the JPanels displaying the networkplan + * elements + * + * @return + */ + public int getLayoutManager() { + return layoutManager; + } + + /** + * Set the LayoutManager of this element. The int-Value represents the + * position within the array of the JPanels displaying the networkplan + * elements + * + * @param i + */ + public void setLayoutManager(int i) { + layoutManager = i; + } + + /** + * @return TRUE if the user has set the child's in the constructor + */ + public boolean isChildSet() { + return childSet; + } + + /** + * @param childSet TRUE if the user has set the child's in the constructor + */ + public void setChildSet(boolean childSet) { + this.childSet = childSet; + } + + /** + * @return Vector containing the numbers of all childs + */ + public ArrayList getChildBasket() { + return childBasket; + } + + /** + * @return TRUE if this element is a pseudo activity + */ + public boolean isPseudoActivity() { + return pseudoActivity; + } + + /** + * @param pseudoActivity + */ + public void setPseudoActivity(boolean pseudoActivity) { + this.pseudoActivity = pseudoActivity; + } +} diff --git a/wisim/src/java/net/sourceforge/wisim/networkplan/ShowNetworkplan.java b/wisim/src/java/net/sourceforge/wisim/networkplan/ShowNetworkplan.java index 4df118f..2ef9ad7 100644 --- a/wisim/src/java/net/sourceforge/wisim/networkplan/ShowNetworkplan.java +++ b/wisim/src/java/net/sourceforge/wisim/networkplan/ShowNetworkplan.java @@ -20,7 +20,6 @@ ** ** ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ - package net.sourceforge.wisim.networkplan; import java.awt.Color; @@ -35,7 +34,6 @@ import java.util.ArrayList; import java.util.Hashtable; import java.util.Vector; - import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; @@ -43,286 +41,329 @@ /** * Class for displaying the networkplan in a JFrame + * * @author benjamin.pasero * @version 0.7a */ public class ShowNetworkplan extends JFrame { - /** Vector containing all networkplan elements */ - private ArrayList npElemente; - - /** Extends JPanel and holds all JNetworkplanElements */ - private JNetworkplan netzplanGrafik; - - /** Holds the JNetworkplan and displays scrollbars if necessary */ - private JScrollPane holdAll; - - /** - * Set up the JFrame that holds a JScrollPane with the network plan - */ - public ShowNetworkplan() { - - npElemente = getNetworkPlanElements(); - setTitle("Networkplan editor Ver. 0.7a"); - getContentPane().setLayout(null); - - /** Maximize JFrame to screen-resolution */ - Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); - setBounds(0, 0, screenSize.width, screenSize.height); - - /** Listener for closing the JFrame */ - addWindowListener(new java.awt.event.WindowAdapter() { - public void windowClosing(java.awt.event.WindowEvent evt) { - exitForm(evt); - } - }); - - long renderTime = 0; - try { - - /** Start stopwatch */ - long startTime = System.currentTimeMillis(); - - netzplanGrafik = new JNetworkplan(npElemente); - - /** Get the Panel to use. */ - netzplanGrafik.setLayout(null); - netzplanGrafik.setBackground(Color.WHITE); - netzplanGrafik.setPreferredSize(new Dimension(netzplanGrafik.getMaxWidthPos() * 430, netzplanGrafik.getMaxHeightPos() * 280)); - - /** Stop stopwatch */ - long endTime = System.currentTimeMillis(); - - /** Get the time for calculating and showing the networkplan */ - renderTime = endTime - startTime; - - JLabel showCalculationTime = new JLabel("Rendertime: " + (double) renderTime / 1000 + " sec."); - netzplanGrafik.add(showCalculationTime); - showCalculationTime.setBounds(10, 5, 200, 20); - - } - - /** There was an error while generating and calculating the network plan */ - catch (Exception e) { - String errorMessage = - "Error: The network plan seems not to be correct!" - + "\n\nPlease check your networkplan:" - + "\n\n- Make sure the list of activities is in a correct order" - + "\n- Make sure each element has a child element that exists" - + "\n- Make sure you dont used one number for two elements" - + "\n- Use 0 for the child of the last element" - + "\n- Use 0 for the parent of the first element"; - - JTextArea errorDescription = new JTextArea(errorMessage); - errorDescription.setEditable(false); - errorDescription.setSelectionColor(Color.WHITE); - errorDescription.setForeground(Color.RED); - errorDescription.setBackground(new Color(204, 204, 204)); - errorDescription.setFont(new Font("Dialog", 1, 20)); - setBackground(Color.WHITE); - netzplanGrafik = new JNetworkplan(); - netzplanGrafik.add(errorDescription); - } - - /** JScrollPane holding the network plan */ - holdAll = new JScrollPane(); - holdAll.setBounds(0, 0, screenSize.width - 10, screenSize.height - 67); - holdAll.getViewport().add(netzplanGrafik); - holdAll.getVerticalScrollBar().setUnitIncrement(20); - holdAll.getHorizontalScrollBar().setUnitIncrement(20); - - getContentPane().add(holdAll); - } - - /** Display the JFrame */ - public static void main(String[] args) { - new ShowNetworkplan().show(); - } - - /** - * Gets a filled Vector with the network plan elements - * @return Vector with network plan elements - */ - public ArrayList getNetworkPlanElements() { - - ArrayList filled = new ArrayList<>(); - - /** Selected network plan */ - int show = 10; - - /** Some network plans to choose */ - switch (show) { - case 0 : - filled.add(new NetworkplanElement(1, 20, new int[] { 2, 6, 8 }, "Entwurf, Planung")); - filled.add(new NetworkplanElement(2, 3, new int[] { 3 }, "Erdaushub Fundamente")); - filled.add(new NetworkplanElement(3, 2, new int[] { 4 }, "Ausgießen Fundamente")); - filled.add(new NetworkplanElement(4, 5, new int[] { 5 }, "Verschalung Betonsockel")); - filled.add(new NetworkplanElement(5, 3, new int[] { 9 }, "Betonierung Betonsockel")); - filled.add(new NetworkplanElement(6, 10, new int[] { 7 }, "Bestellung und Auslieferung Betonteile")); - filled.add(new NetworkplanElement(7, 2, new int[] { 9 }, "Aushub Ver- und Entsorgungsleitung")); - filled.add(new NetworkplanElement(8, 5, new int[] { 9 }, "Leitungsverlegung")); - filled.add(new NetworkplanElement(9, 7, new int[] { 10 }, "Montage Lagerhalle")); - filled.add(new NetworkplanElement(10, 4, new int[] { 0 }, "Installationsarbeiten")); - break; - - case 1 : - filled.add(new NetworkplanElement(1, 3, new int[] { 2 }, "Erdaushub Fundamente")); - filled.add(new NetworkplanElement(2, 2, new int[] { 3, 4 }, "Ausgießen Fundamente")); - filled.add(new NetworkplanElement(3, 5, new int[] { 5 }, "Verschalung Betonsockel")); - filled.add(new NetworkplanElement(4, 3, new int[] { 5 }, "Betonierung Betonsockel")); - filled.add(new NetworkplanElement(5, 10, new int[] { 6 }, "Bestellung Betonteile")); - filled.add(new NetworkplanElement(6, 2, new int[] { 0 }, "Aushub Versorgungsleitung")); - break; - - case 2 : - filled.add(new NetworkplanElement(1, 2, new int[] { 2, 3 }, "Ausgießen Fundamente")); - filled.add(new NetworkplanElement(2, 2, new int[] { 4, 5 }, "Ausgießen Fundamente")); - filled.add(new NetworkplanElement(3, 5, new int[] { 6 }, "Verschalung Betonsockel")); - filled.add(new NetworkplanElement(4, 3, new int[] { 6 }, "Betonierung Betonsockel")); - filled.add(new NetworkplanElement(5, 10, new int[] { 6 }, "Bestellung Betonteile")); - filled.add(new NetworkplanElement(6, 2, new int[] { 0 }, "Aushub Versorgungsleitung")); - break; - - case 3 : - filled.add(new NetworkplanElement(1, 20, new int[] { 2, 3 }, "Entwurf, Planung")); - filled.add(new NetworkplanElement(2, 3, new int[] { 4, 5 }, "Erdaushub Fundamente")); - filled.add(new NetworkplanElement(3, 2, new int[] { 6, 7 }, "Ausgießen Fundamente")); - filled.add(new NetworkplanElement(4, 5, new int[] { 8 }, "Verschalung Betonsockel")); - filled.add(new NetworkplanElement(5, 3, new int[] { 8 }, "Betonierung Betonsockel")); - filled.add(new NetworkplanElement(6, 10, new int[] { 9 }, "Bestellung und Auslieferung Betonteile")); - filled.add(new NetworkplanElement(7, 2, new int[] { 9 }, "Aushub Ver- und Entsorgungsleitung")); - filled.add(new NetworkplanElement(8, 5, new int[] { 10 }, "Leitungsverlegung")); - filled.add(new NetworkplanElement(9, 7, new int[] { 10 }, "Montage Lagerhalle")); - filled.add(new NetworkplanElement(10, 4, new int[] { 0 }, "Installationsarbeiten")); - break; - - case 4 : - filled.add(new NetworkplanElement(1, 2, new int[] { 2, 3 }, "Ausgießen Fundamente")); - filled.add(new NetworkplanElement(2, 2, new int[] { 4, 5 }, "Ausgießen Fundamente")); - filled.add(new NetworkplanElement(3, 5, new int[] { 8 }, "erschalung Betonsockel")); - filled.add(new NetworkplanElement(4, 3, new int[] { 8 }, "Betonierung Betonsockel")); - filled.add(new NetworkplanElement(5, 10, new int[] { 6, 7 }, "Bestellung Betonteile")); - filled.add(new NetworkplanElement(6, 3, new int[] { 8 }, "Betonierung Betonsockel")); - filled.add(new NetworkplanElement(7, 10, new int[] { 8 }, "Bestellung Betonteile")); - filled.add(new NetworkplanElement(8, 2, new int[] { 0 }, "Aushub Versorgungsleitung")); - break; - - case 5 : //Testing a wrong networkplan element - filled.add(new NetworkplanElement(0, 2, new int[] { 1 }, "Ausgießen Fundamente")); - filled.add(new NetworkplanElement(1, 2, new int[] { 0 }, "Ausgießen Fundamente")); - break; - - case 6 : - filled.add(new NetworkplanElement(1, 2, new int[] { 2, 3 }, "Ausgießen Fundamente")); - filled.add(new NetworkplanElement(2, 5, new int[] { 4 }, "Ausgießen Fundamente")); - filled.add(new NetworkplanElement(3, 20, new int[] { 4 }, "Ausgießen Fundamente")); - filled.add(new NetworkplanElement(4, 2, new int[] { 0 }, "Ausgießen Fundamente")); - break; - - /** Get the informations from the database */ - case 7 : + /** + * Vector containing all networkplan elements + */ + private ArrayList npElemente; + + /** + * Extends JPanel and holds all JNetworkplanElements + */ + private JNetworkplan netzplanGrafik; + + /** + * Holds the JNetworkplan and displays scrollbars if necessary + */ + private JScrollPane holdAll; + + /** + * Set up the JFrame that holds a JScrollPane with the network plan + */ + public ShowNetworkplan() { + + npElemente = getNetworkPlanElements(); + setTitle("Networkplan editor Ver. 0.7a"); + getContentPane().setLayout(null); + + /** + * Maximize JFrame to screen-resolution + */ + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + setBounds(0, 0, screenSize.width, screenSize.height); + + /** + * Listener for closing the JFrame + */ + addWindowListener(new java.awt.event.WindowAdapter() { + public void windowClosing(java.awt.event.WindowEvent evt) { + exitForm(evt); + } + }); + + long renderTime = 0; + try { + + /** + * Start stopwatch + */ + long startTime = System.currentTimeMillis(); + + netzplanGrafik = new JNetworkplan(npElemente); + + /** + * Get the Panel to use. + */ + netzplanGrafik.setLayout(null); + netzplanGrafik.setBackground(Color.WHITE); + netzplanGrafik.setPreferredSize(new Dimension(netzplanGrafik.getMaxWidthPos() * 430, netzplanGrafik.getMaxHeightPos() * 280)); + + /** + * Stop stopwatch + */ + long endTime = System.currentTimeMillis(); + + /** + * Get the time for calculating and showing the networkplan + */ + renderTime = endTime - startTime; + + JLabel showCalculationTime = new JLabel("Rendertime: " + (double) renderTime / 1000 + " sec."); + netzplanGrafik.add(showCalculationTime); + showCalculationTime.setBounds(10, 5, 200, 20); + + } /** + * There was an error while generating and calculating the network plan + */ + catch (Exception e) { + String errorMessage + = "Error: The network plan seems not to be correct!" + + "\n\nPlease check your networkplan:" + + "\n\n- Make sure the list of activities is in a correct order" + + "\n- Make sure each element has a child element that exists" + + "\n- Make sure you dont used one number for two elements" + + "\n- Use 0 for the child of the last element" + + "\n- Use 0 for the parent of the first element"; + + JTextArea errorDescription = new JTextArea(errorMessage); + errorDescription.setEditable(false); + errorDescription.setSelectionColor(Color.WHITE); + errorDescription.setForeground(Color.RED); + errorDescription.setBackground(new Color(204, 204, 204)); + errorDescription.setFont(new Font("Dialog", 1, 20)); + setBackground(Color.WHITE); + netzplanGrafik = new JNetworkplan(); + netzplanGrafik.add(errorDescription); + } + + /** + * JScrollPane holding the network plan + */ + holdAll = new JScrollPane(); + holdAll.setBounds(0, 0, screenSize.width - 10, screenSize.height - 67); + holdAll.getViewport().add(netzplanGrafik); + holdAll.getVerticalScrollBar().setUnitIncrement(20); + holdAll.getHorizontalScrollBar().setUnitIncrement(20); + + getContentPane().add(holdAll); + } + + /** + * Display the JFrame + */ + public static void main(String[] args) { + new ShowNetworkplan().show(); + } + + /** + * Gets a filled Vector with the network plan elements + * + * @return Vector with network plan elements + */ + public ArrayList getNetworkPlanElements() { + + ArrayList filled = new ArrayList<>(); + + /** + * Selected network plan + */ + int show = 10; + + /** + * Some network plans to choose + */ + switch (show) { + case 0: + filled.add(new NetworkplanElement(1, 20, new int[]{2, 6, 8}, "Entwurf, Planung")); + filled.add(new NetworkplanElement(2, 3, new int[]{3}, "Erdaushub Fundamente")); + filled.add(new NetworkplanElement(3, 2, new int[]{4}, "Ausgießen Fundamente")); + filled.add(new NetworkplanElement(4, 5, new int[]{5}, "Verschalung Betonsockel")); + filled.add(new NetworkplanElement(5, 3, new int[]{9}, "Betonierung Betonsockel")); + filled.add(new NetworkplanElement(6, 10, new int[]{7}, "Bestellung und Auslieferung Betonteile")); + filled.add(new NetworkplanElement(7, 2, new int[]{9}, "Aushub Ver- und Entsorgungsleitung")); + filled.add(new NetworkplanElement(8, 5, new int[]{9}, "Leitungsverlegung")); + filled.add(new NetworkplanElement(9, 7, new int[]{10}, "Montage Lagerhalle")); + filled.add(new NetworkplanElement(10, 4, new int[]{0}, "Installationsarbeiten")); + break; + + case 1: + filled.add(new NetworkplanElement(1, 3, new int[]{2}, "Erdaushub Fundamente")); + filled.add(new NetworkplanElement(2, 2, new int[]{3, 4}, "Ausgießen Fundamente")); + filled.add(new NetworkplanElement(3, 5, new int[]{5}, "Verschalung Betonsockel")); + filled.add(new NetworkplanElement(4, 3, new int[]{5}, "Betonierung Betonsockel")); + filled.add(new NetworkplanElement(5, 10, new int[]{6}, "Bestellung Betonteile")); + filled.add(new NetworkplanElement(6, 2, new int[]{0}, "Aushub Versorgungsleitung")); + break; + + case 2: + filled.add(new NetworkplanElement(1, 2, new int[]{2, 3}, "Ausgießen Fundamente")); + filled.add(new NetworkplanElement(2, 2, new int[]{4, 5}, "Ausgießen Fundamente")); + filled.add(new NetworkplanElement(3, 5, new int[]{6}, "Verschalung Betonsockel")); + filled.add(new NetworkplanElement(4, 3, new int[]{6}, "Betonierung Betonsockel")); + filled.add(new NetworkplanElement(5, 10, new int[]{6}, "Bestellung Betonteile")); + filled.add(new NetworkplanElement(6, 2, new int[]{0}, "Aushub Versorgungsleitung")); + break; + + case 3: + filled.add(new NetworkplanElement(1, 20, new int[]{2, 3}, "Entwurf, Planung")); + filled.add(new NetworkplanElement(2, 3, new int[]{4, 5}, "Erdaushub Fundamente")); + filled.add(new NetworkplanElement(3, 2, new int[]{6, 7}, "Ausgießen Fundamente")); + filled.add(new NetworkplanElement(4, 5, new int[]{8}, "Verschalung Betonsockel")); + filled.add(new NetworkplanElement(5, 3, new int[]{8}, "Betonierung Betonsockel")); + filled.add(new NetworkplanElement(6, 10, new int[]{9}, "Bestellung und Auslieferung Betonteile")); + filled.add(new NetworkplanElement(7, 2, new int[]{9}, "Aushub Ver- und Entsorgungsleitung")); + filled.add(new NetworkplanElement(8, 5, new int[]{10}, "Leitungsverlegung")); + filled.add(new NetworkplanElement(9, 7, new int[]{10}, "Montage Lagerhalle")); + filled.add(new NetworkplanElement(10, 4, new int[]{0}, "Installationsarbeiten")); + break; + + case 4: + filled.add(new NetworkplanElement(1, 2, new int[]{2, 3}, "Ausgießen Fundamente")); + filled.add(new NetworkplanElement(2, 2, new int[]{4, 5}, "Ausgießen Fundamente")); + filled.add(new NetworkplanElement(3, 5, new int[]{8}, "erschalung Betonsockel")); + filled.add(new NetworkplanElement(4, 3, new int[]{8}, "Betonierung Betonsockel")); + filled.add(new NetworkplanElement(5, 10, new int[]{6, 7}, "Bestellung Betonteile")); + filled.add(new NetworkplanElement(6, 3, new int[]{8}, "Betonierung Betonsockel")); + filled.add(new NetworkplanElement(7, 10, new int[]{8}, "Bestellung Betonteile")); + filled.add(new NetworkplanElement(8, 2, new int[]{0}, "Aushub Versorgungsleitung")); + break; + + case 5: //Testing a wrong networkplan element + filled.add(new NetworkplanElement(0, 2, new int[]{1}, "Ausgießen Fundamente")); + filled.add(new NetworkplanElement(1, 2, new int[]{0}, "Ausgießen Fundamente")); + break; + + case 6: + filled.add(new NetworkplanElement(1, 2, new int[]{2, 3}, "Ausgießen Fundamente")); + filled.add(new NetworkplanElement(2, 5, new int[]{4}, "Ausgießen Fundamente")); + filled.add(new NetworkplanElement(3, 20, new int[]{4}, "Ausgießen Fundamente")); + filled.add(new NetworkplanElement(4, 2, new int[]{0}, "Ausgießen Fundamente")); + break; + + /** + * Get the informations from the database + */ + case 7: try { - DriverManager.registerDriver(new org.gjt.mm.mysql.Driver()); - - /** DB Settings */ - String hostname = "localhost"; - String port = "3306"; - String user = "root"; - String password = "root"; - String dbname = "wisim"; - - /** Get a connection */ - Connection conn = DriverManager.getConnection("jdbc:mysql://" + hostname + ":" + port + "/" + dbname, user, password); - conn.setAutoCommit(false); - - /** Select Statement */ - Statement stmt = conn.createStatement(); - String sql = "SELECT ap_Nr, ap_Dauer, ap_Beschreibung, vg_vorgaenger FROM ap, vg WHERE ap_Nr = f_ap_nr"; - - ResultSet rset = stmt.executeQuery(sql); - - Hashtable parentBasket = new Hashtable(); - Vector completed = new Vector(); - - while (rset.next()) { - - NetworkplanElement np = new NetworkplanElement(rset.getInt(1), new Double(String.valueOf(rset.getInt(2))).doubleValue(), rset.getString(3), new int[0]); - - /** This is a new element */ - if (!completed.contains(new Integer(np.getNumber()))) { - completed.add(new Integer(np.getNumber())); - filled.add(np); - Vector parent = new Vector(); - parent.add(new Integer(rset.getInt(4))); - parentBasket.put(new Integer(np.getNumber()), parent); - - /** This is an existing element with more than one child */ - } else { - ((Vector) parentBasket.get(np.getNumber())).add(rset.getInt(4)); - } - } - - int a = 0; - - /** Set each element's childs from the childBasket */ - while (a < filled.size()) { - NetworkplanElement np = (NetworkplanElement) filled.get(a); - Vector parent = (Vector) parentBasket.get(new Integer(np.getNumber())); - - int parents[] = new int[parent.size()]; - - int b = 0; - while (b < parent.size()) { - parents[b] = ((Integer) parent.get(b)).intValue(); - b++; - } - - np.setParent(parents); - a++; - } - } catch (SQLException e) { - e.printStackTrace(); - } - break; - - default : // Example with setting of parent elements instead of childs - filled.add(new NetworkplanElement(1, 2, "Ausgießen Fundamente", new int[] { 0 })); - filled.add(new NetworkplanElement(2, 2, "Ausgießen Fundamente", new int[] { 1 })); - filled.add(new NetworkplanElement(3, 5, "Verschalung Betonsockel", new int[] { 2 })); - filled.add(new NetworkplanElement(4, 3, "Betonierung Betonsockel", new int[] { 3 })); - filled.add(new NetworkplanElement(5, 10, "Bestellung Betonteile", new int[] { 4 })); - filled.add(new NetworkplanElement(6, 3, "Betonierung Betonsockel", new int[] { 5 })); - filled.add(new NetworkplanElement(7, 10, "Bestellung Betonteile", new int[] { 6 })); - filled.add(new NetworkplanElement(8, 2, "Aushub Versorgungsleitung", new int[] { 6 })); - filled.add(new NetworkplanElement(9, 3, "Betonierung Betonsockel", new int[] { 6 })); - filled.add(new NetworkplanElement(10, 10, "Bestellung Betonteile", new int[] { 7, 8 })); - filled.add(new NetworkplanElement(11, 3, "Betonierung Betonsockel", new int[] { 10 })); - filled.add(new NetworkplanElement(12, 10, "Bestellung Betonteile", new int[] { 9, 11 })); - filled.add(new NetworkplanElement(13, 2, "Aushub Versorgungsleitung", new int[] { 12 })); - break; - - case 9 : //More then one start element - filled.add(new NetworkplanElement(1, 2, "Ausgießen Fundamente", new int[] { 0 })); - filled.add(new NetworkplanElement(2, 5, "Ausgießen Fundamente", new int[] { 0 })); - filled.add(new NetworkplanElement(3, 20, "Ausgießen Fundamente", new int[] { 1 })); - filled.add(new NetworkplanElement(4, 2, "Ausgießen Fundamente", new int[] { 2, 3 })); - filled.add(new NetworkplanElement(5, 2, "Ausgießen Fundamente", new int[] { 4 })); - break; - - case 10 : - filled.add(new NetworkplanElement(1, 2, "Blub", new int[] { 0 })); - filled.add(new NetworkplanElement(2, 2, "Blub", new int[] { 1 })); - } - return filled; - } - - /** - * Exit the application - * @param evt - */ - private void exitForm(java.awt.event.WindowEvent evt) { - System.exit(0); - } -} \ No newline at end of file + DriverManager.registerDriver(new org.gjt.mm.mysql.Driver()); + + /** + * DB Settings + */ + String hostname = "localhost"; + String port = "3306"; + String user = "root"; + String password = "root"; + String dbname = "wisim"; + + /** + * Get a connection + */ + Connection conn = DriverManager.getConnection("jdbc:mysql://" + hostname + ":" + port + "/" + dbname, user, password); + conn.setAutoCommit(false); + + /** + * Select Statement + */ + Statement stmt = conn.createStatement(); + String sql = "SELECT ap_Nr, ap_Dauer, ap_Beschreibung, vg_vorgaenger FROM ap, vg WHERE ap_Nr = f_ap_nr"; + + ResultSet rset = stmt.executeQuery(sql); + + Hashtable parentBasket = new Hashtable(); + Vector completed = new Vector(); + + while (rset.next()) { + + NetworkplanElement np = new NetworkplanElement(rset.getInt(1), (double) (rset.getInt(2)), rset.getString(3), new int[0]); + + /** + * This is a new element + */ + if (!completed.contains(np.getNumber())) { + completed.add(np.getNumber()); + filled.add(np); + Vector parent = new Vector(); + parent.add(rset.getInt(4)); + parentBasket.put(np.getNumber(), parent); + + /** + * This is an existing element with more than one child + */ + } else { + ((Vector) parentBasket.get(np.getNumber())).add(rset.getInt(4)); + } + } + + int a = 0; + + /** + * Set each element's childs from the childBasket + */ + while (a < filled.size()) { + NetworkplanElement np = filled.get(a); + Vector parent = (Vector) parentBasket.get(np.getNumber()); + + int parents[] = new int[parent.size()]; + + int b = 0; + while (b < parent.size()) { + parents[b] = ((Integer) parent.get(b)).intValue(); + b++; + } + + np.setParent(parents); + a++; + } + } catch (SQLException e) { + e.printStackTrace(); + } + break; + + default: // Example with setting of parent elements instead of childs + filled.add(new NetworkplanElement(1, 2, "Ausgießen Fundamente", new int[]{0})); + filled.add(new NetworkplanElement(2, 2, "Ausgießen Fundamente", new int[]{1})); + filled.add(new NetworkplanElement(3, 5, "Verschalung Betonsockel", new int[]{2})); + filled.add(new NetworkplanElement(4, 3, "Betonierung Betonsockel", new int[]{3})); + filled.add(new NetworkplanElement(5, 10, "Bestellung Betonteile", new int[]{4})); + filled.add(new NetworkplanElement(6, 3, "Betonierung Betonsockel", new int[]{5})); + filled.add(new NetworkplanElement(7, 10, "Bestellung Betonteile", new int[]{6})); + filled.add(new NetworkplanElement(8, 2, "Aushub Versorgungsleitung", new int[]{6})); + filled.add(new NetworkplanElement(9, 3, "Betonierung Betonsockel", new int[]{6})); + filled.add(new NetworkplanElement(10, 10, "Bestellung Betonteile", new int[]{7, 8})); + filled.add(new NetworkplanElement(11, 3, "Betonierung Betonsockel", new int[]{10})); + filled.add(new NetworkplanElement(12, 10, "Bestellung Betonteile", new int[]{9, 11})); + filled.add(new NetworkplanElement(13, 2, "Aushub Versorgungsleitung", new int[]{12})); + break; + + case 9: //More then one start element + filled.add(new NetworkplanElement(1, 2, "Ausgießen Fundamente", new int[]{0})); + filled.add(new NetworkplanElement(2, 5, "Ausgießen Fundamente", new int[]{0})); + filled.add(new NetworkplanElement(3, 20, "Ausgießen Fundamente", new int[]{1})); + filled.add(new NetworkplanElement(4, 2, "Ausgießen Fundamente", new int[]{2, 3})); + filled.add(new NetworkplanElement(5, 2, "Ausgießen Fundamente", new int[]{4})); + break; + + case 10: + filled.add(new NetworkplanElement(1, 2, "Blub", new int[]{0})); + filled.add(new NetworkplanElement(2, 2, "Blub", new int[]{1})); + } + return filled; + } + + /** + * Exit the application + * + * @param evt + */ + private void exitForm(java.awt.event.WindowEvent evt) { + System.exit(0); + } +} diff --git a/wisim/src/java/net/sourceforge/wisim/simulation/ProductionController.java b/wisim/src/java/net/sourceforge/wisim/simulation/ProductionController.java index ffe7801..3883886 100644 --- a/wisim/src/java/net/sourceforge/wisim/simulation/ProductionController.java +++ b/wisim/src/java/net/sourceforge/wisim/simulation/ProductionController.java @@ -21,624 +21,523 @@ ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ -/* + /* * Created on 09.03.2003 * */ package net.sourceforge.wisim.simulation; +import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; -import java.util.Vector; import java.util.logging.Level; - import net.sourceforge.wisim.controller.WiSimMainController; import net.sourceforge.wisim.dao.WiSimDAO; import net.sourceforge.wisim.dao.WiSimDAOException; import net.sourceforge.wisim.dao.WiSimDAOWriteException; +import net.sourceforge.wisim.model.WarehouseLocation; import net.sourceforge.wisim.model.WiSimLogger; import net.sourceforge.wisim.model.WorkPlace; import net.sourceforge.wisim.model.WorkPlaceStore; -import net.sourceforge.wisim.model.WarehouseLocation; -/** Stellt Funktionen für die Produktion zur Verfügung +/** + * Stellt Funktionen für die Produktion zur Verfügung + * * @author Kay Patzwald */ -public class ProductionController -{ - private static final int HUB = 26; - private WiSimDAO dao; - private WiSimLogger wiSimLogger; +public class ProductionController { + + private static final int HUB = 26; + private final WiSimDAO dao; + private final WiSimLogger wiSimLogger; - /** Creates a new instance of ProductionController + /** + * Creates a new instance of ProductionController + * * @param wiSimMainController WiSimMainController */ - public ProductionController(WiSimMainController wiSimMainController) - { - dao = wiSimMainController.getDAO(); - wiSimLogger = wiSimMainController.getWiSimLogger(); - } + public ProductionController(WiSimMainController wiSimMainController) { + dao = wiSimMainController.getDAO(); + wiSimLogger = wiSimMainController.getWiSimLogger(); + } - /** Simuliert die Lieferung von Einzelteilen + /** + * Simuliert die Lieferung von Einzelteilen + * * @param etNr Einzelteilnummer * @param menge Menge * @return boolean */ - public synchronized boolean einzelteilLieferung(int etNr, int menge) - { - boolean status = false; - try - { - int dbMenge = dao.setEinzelteilLagerBestand(etNr, menge); - notifyAll(); - if (dbMenge == menge) - status = true; - } - catch (WiSimDAOWriteException e) - { - wiSimLogger.log("ProductionController.einzelteilLieferung()", e); - } - return status; - } + public synchronized boolean einzelteilLieferung(int etNr, int menge) { + boolean status = false; + try { + int dbMenge = dao.setEinzelteilLagerBestand(etNr, menge); + notifyAll(); + if (dbMenge == menge) { + status = true; + } + } catch (WiSimDAOWriteException e) { + wiSimLogger.log("ProductionController.einzelteilLieferung()", e); + } + return status; + } - /** Simuliert den Verbrauch von Einzelteilen + /** + * Simuliert den Verbrauch von Einzelteilen + * * @param thread Der aktuelle Thread * @param apLager Arbeitsplatzlager * @param time Aktuelle Zeit * @param anzahl Anzahl der verbrauchten Einzelteile */ - public synchronized void einzelteilVerbrauch( - WorkPlaceStore apLager, - int time, - int anzahl, - ProductionSimulationThread thread) - { - try - { - if (apLager.getBestand() >= (apLager.getBenoetigt() * anzahl)) - { - dao.setEinzelteilArbeitsplatzBestand( - apLager.getArbeitsplatzNr(), - apLager.getEinzelteilNr(), - (apLager.getBenoetigt() * anzahl * -1), - "Einzelteil"); - } - // Bestand im Arbeitslager reicht nicht aus - else - { - Collection lagerplaetze = - dao.getLagerplaetze(apLager.getEinzelteilNr()); + public synchronized void einzelteilVerbrauch( + WorkPlaceStore apLager, + int time, + int anzahl, + ProductionSimulationThread thread) { + try { + if (apLager.getBestand() >= (apLager.getBenoetigt() * anzahl)) { + dao.setEinzelteilArbeitsplatzBestand( + apLager.getArbeitsplatzNr(), + apLager.getEinzelteilNr(), + (apLager.getBenoetigt() * anzahl * -1), + "Einzelteil"); + } // Bestand im Arbeitslager reicht nicht aus + else { + Collection lagerplaetze + = dao.getLagerplaetze(apLager.getEinzelteilNr()); - // Ich gehe in der folgenden Implementation davon aus, - // dass es in dieser Version - // nur einen Lagerplatz pro Einzelteil gibt. + // Ich gehe in der folgenden Implementation davon aus, + // dass es in dieser Version + // nur einen Lagerplatz pro Einzelteil gibt. + Iterator it = lagerplaetze.iterator(); + WarehouseLocation lp = new WarehouseLocation(); + lp = (WarehouseLocation) it.next(); + int realMenge = 0; - Iterator it = lagerplaetze.iterator(); - WarehouseLocation lp = new WarehouseLocation(); - lp = (WarehouseLocation) it.next(); - int realMenge = 0; + while ((realMenge = dao + .setEinzelteilLagerBestand( + apLager.getEinzelteilNr(), + ((apLager.getMaxBestand() - apLager.getBestand()) + * - 1))) + >= 0) { + try { + wait(); + } catch (InterruptedException e) { + wiSimLogger.log( + Level.FINE, + "ProductionController.einzelteilVerbrauch()", + e, + false, + false); + thread.interrupt(); + return; + } + } + // Sleep simuliert die Dauer (10 Zeiteinheiten) des Einzelteile-Holens aus dem Lager - while ((realMenge = dao - .setEinzelteilLagerBestand( - apLager.getEinzelteilNr(), - ((apLager.getMaxBestand() - apLager.getBestand()) * - - 1))) - >= 0) - { - try - { - wait(); - } - catch (InterruptedException e) - { - wiSimLogger.log( - Level.FINE, - "ProductionController.einzelteilVerbrauch()", - e, - false, - false); - thread.interrupt(); - return; - } - } - // Sleep simuliert die Dauer (10 Zeiteinheiten) des Einzelteile-Holens aus dem Lager + try { + Thread.sleep(time * 10); + } catch (InterruptedException e) { + wiSimLogger.log( + Level.FINE, + "ProductionController.einzelteilVerbrauch()", + e, + false, + false); + thread.interrupt(); + return; + } - try - { - Thread.sleep(time * 10); - } - catch (InterruptedException e) - { - wiSimLogger.log( - Level.FINE, - "ProductionController.einzelteilVerbrauch()", - e, - false, - false); - thread.interrupt(); - return; - } + if (lp.getBestand() + >= (apLager.getMaxBestand() - apLager.getBestand())) { + dao.setEinzelteilArbeitsplatzBestand( + apLager.getArbeitsplatzNr(), + apLager.getEinzelteilNr(), + (apLager.getMaxBestand() - apLager.getBestand()), + "Einzelteil"); + } else { + dao.setEinzelteilArbeitsplatzBestand( + apLager.getArbeitsplatzNr(), + apLager.getEinzelteilNr(), + (realMenge * -1), + "Einzelteil"); + } + dao.setEinzelteilArbeitsplatzBestand( + apLager.getArbeitsplatzNr(), + apLager.getEinzelteilNr(), + (apLager.getBenoetigt() * anzahl * -1), + "Einzelteil"); - if (lp.getBestand() - >= (apLager.getMaxBestand() - apLager.getBestand())) - { - dao.setEinzelteilArbeitsplatzBestand( - apLager.getArbeitsplatzNr(), - apLager.getEinzelteilNr(), - (apLager.getMaxBestand() - apLager.getBestand()), - "Einzelteil"); - } - else - { - dao.setEinzelteilArbeitsplatzBestand( - apLager.getArbeitsplatzNr(), - apLager.getEinzelteilNr(), - (realMenge * -1), - "Einzelteil"); - } - dao.setEinzelteilArbeitsplatzBestand( - apLager.getArbeitsplatzNr(), - apLager.getEinzelteilNr(), - (apLager.getBenoetigt() * anzahl * -1), - "Einzelteil"); - - notifyAll(); - } - } - catch (WiSimDAOException e) - { - wiSimLogger.log("ProductionController.einzelteilVerbrauch()", e); - } - catch (WiSimDAOWriteException e) - { - wiSimLogger.log("ProductionController.einzelteilVerbrauch()", e); - } - } + notifyAll(); + } + } catch (WiSimDAOException | WiSimDAOWriteException e) { + wiSimLogger.log("ProductionController.einzelteilVerbrauch()", e); + } + } - /** Holt Hubs von den Vorgänger-Arbeitsplätzen + /** + * Holt Hubs von den Vorgänger-Arbeitsplätzen + * * @param thread Der aktuelle Thread * @param ap WorkPlace */ - public synchronized void holeHubs( - WorkPlace ap, - ProductionSimulationThread thread) - { - Collection apLagerVorgaenger = (Collection) new Vector(); - try - { - for (int i = 0; i < ap.getVorgaenger().length; i++) - { - apLagerVorgaenger.add( - dao.getArbeitsplatzLager( - ap.getVorgaenger()[i], - 26, - "Ausgang")); - } - } - catch (WiSimDAOException e1) - { - wiSimLogger.log("ProductionController.holeHubs()", e1); - } + public synchronized void holeHubs( + WorkPlace ap, + ProductionSimulationThread thread) { + ArrayList apLagerVorgaenger = new ArrayList<>(); + try { + for (int i = 0; i < ap.getVorgaenger().length; i++) { + apLagerVorgaenger.add( + dao.getWorkPlaceStore( + ap.getVorgaenger()[i], + 26, + "Ausgang")); + } + } catch (WiSimDAOException e1) { + wiSimLogger.log("ProductionController.holeHubs()", e1); + } - boolean isLeer = false; - Iterator it = apLagerVorgaenger.iterator(); - while (it.hasNext()) - { - WorkPlaceStore apLager = (WorkPlaceStore) it.next(); - if (apLager.getBestand() == 0) - { - isLeer = true; - } - } + boolean isLeer = false; + Iterator it = apLagerVorgaenger.iterator(); + while (it.hasNext()) { + WorkPlaceStore apLager = (WorkPlaceStore) it.next(); + if (apLager.getBestand() == 0) { + isLeer = true; + } + } - while (isLeer) - { - try - { - // Vorgänger noch nicht fertig - wait(); - } - catch (InterruptedException e) - { - wiSimLogger.log( - Level.FINE, - "ProductionController.holeHubs()", - e, - false, - false); - thread.interrupt(); - return; - } - apLagerVorgaenger = (Collection) new Vector(); - try - { - for (int i = 0; i < ap.getVorgaenger().length; i++) - { - apLagerVorgaenger.add( - dao.getArbeitsplatzLager( - ap.getVorgaenger()[i], - 26, - "Ausgang")); - } - } - catch (WiSimDAOException e1) - { - wiSimLogger.log("ProductionController.holeHubs()", e1); - } + while (isLeer) { + try { + // Vorgänger noch nicht fertig + wait(); + } catch (InterruptedException e) { + wiSimLogger.log( + Level.FINE, + "ProductionController.holeHubs()", + e, + false, + false); + thread.interrupt(); + return; + } + apLagerVorgaenger = new ArrayList<>(); + try { + for (int i = 0; i < ap.getVorgaenger().length; i++) { + apLagerVorgaenger.add( + dao.getWorkPlaceStore( + ap.getVorgaenger()[i], + 26, + "Ausgang")); + } + } catch (WiSimDAOException e1) { + wiSimLogger.log("ProductionController.holeHubs()", e1); + } - isLeer = false; - it = apLagerVorgaenger.iterator(); - while (it.hasNext()) - { - WorkPlaceStore apLager = (WorkPlaceStore) it.next(); - if (apLager.getBestand() == 0) - { - isLeer = true; - } - } - } + isLeer = false; + it = apLagerVorgaenger.iterator(); + while (it.hasNext()) { + WorkPlaceStore apLager = (WorkPlaceStore) it.next(); + if (apLager.getBestand() == 0) { + isLeer = true; + } + } + } - // Vorgänger fertig - it = null; - it = apLagerVorgaenger.iterator(); - WorkPlaceStore apl = (WorkPlaceStore) it.next(); - int minBestand = apl.getBestand(); + // Vorgänger fertig + it = null; + it = apLagerVorgaenger.iterator(); + WorkPlaceStore apl = (WorkPlaceStore) it.next(); + int minBestand = apl.getBestand(); - while (it.hasNext()) - { - apl = (WorkPlaceStore) it.next(); - if (apl.getBestand() < minBestand) - { - minBestand = apl.getBestand(); - } - } - try - { - if (minBestand < 10) - { - dao.setEinzelteilArbeitsplatzBestand( - ap.getNr(), - HUB, - minBestand, - "Eingang"); - for (int i = 0; i < ap.getVorgaenger().length; i++) - { - dao.setEinzelteilArbeitsplatzBestand( - ap.getVorgaenger()[i], - HUB, - (minBestand * -1), - "Ausgang"); - } - notifyAll(); - } - else - { - dao.setEinzelteilArbeitsplatzBestand( - ap.getNr(), - HUB, - 10, - "Eingang"); - for (int i = 0; i < ap.getVorgaenger().length; i++) - { - dao.setEinzelteilArbeitsplatzBestand( - ap.getVorgaenger()[i], - HUB, - -10, - "Ausgang"); - } - notifyAll(); - } - } - catch (WiSimDAOWriteException e) - { - wiSimLogger.log("ProductionController.holeHubs()", e); - } - catch (WiSimDAOException e) - { - wiSimLogger.log("ProductionController.holeHubs()", e); - } - } + while (it.hasNext()) { + apl = (WorkPlaceStore) it.next(); + if (apl.getBestand() < minBestand) { + minBestand = apl.getBestand(); + } + } + try { + if (minBestand < 10) { + dao.setEinzelteilArbeitsplatzBestand( + ap.getNr(), + HUB, + minBestand, + "Eingang"); + for (int i = 0; i < ap.getVorgaenger().length; i++) { + dao.setEinzelteilArbeitsplatzBestand( + ap.getVorgaenger()[i], + HUB, + (minBestand * -1), + "Ausgang"); + } + notifyAll(); + } else { + dao.setEinzelteilArbeitsplatzBestand( + ap.getNr(), + HUB, + 10, + "Eingang"); + for (int i = 0; i < ap.getVorgaenger().length; i++) { + dao.setEinzelteilArbeitsplatzBestand( + ap.getVorgaenger()[i], + HUB, + -10, + "Ausgang"); + } + notifyAll(); + } + } catch (WiSimDAOWriteException | WiSimDAOException e) { + wiSimLogger.log("ProductionController.holeHubs()", e); + } + } - /** Testet, ob das Ausgangslager leer ist. + /** + * Testet, ob das Ausgangslager leer ist. + * * @param thread Der aktuelle Thread * @param ap WorkPlace */ - public synchronized void hubAbgeholt( - WorkPlace ap, - ProductionSimulationThread thread) - { - WorkPlaceStore apLager = null; - try - { - apLager = dao.getArbeitsplatzLager(ap.getNr(), HUB, "Ausgang"); - } - catch (WiSimDAOException e1) - { - wiSimLogger.log("ProductionController.hubAbgeholt()", e1); - } - while (apLager.getBestand() == apLager.getMaxBestand()) - { - // Hub noch nicht abgeholt - try - { - if (ap.getVorgaenger()[0] != 0) - { - this.fuelleEingangslagerAuf(ap); - } - wait(); - } - catch (InterruptedException e) - { - wiSimLogger.log( - Level.FINE, - "ProductionController.hubAbgeholt()", - e, - false, - false); - thread.interrupt(); - return; - } - try - { - apLager = dao.getArbeitsplatzLager(ap.getNr(), HUB, "Ausgang"); - } - catch (WiSimDAOException e2) - { - wiSimLogger.log("ProductionController.hubAbgeholt()", e2); - } - } - // Hub wurde abgeholt - } + public synchronized void hubAbgeholt( + WorkPlace ap, + ProductionSimulationThread thread) { + WorkPlaceStore apLager = null; + try { + apLager = dao.getWorkPlaceStore(ap.getNr(), HUB, "Ausgang"); + } catch (WiSimDAOException e1) { + wiSimLogger.log("ProductionController.hubAbgeholt()", e1); + } + while (apLager.getBestand() == apLager.getMaxBestand()) { + // Hub noch nicht abgeholt + try { + if (ap.getVorgaenger()[0] != 0) { + this.fuelleEingangslagerAuf(ap); + } + wait(); + } catch (InterruptedException e) { + wiSimLogger.log( + Level.FINE, + "ProductionController.hubAbgeholt()", + e, + false, + false); + thread.interrupt(); + return; + } + try { + apLager = dao.getWorkPlaceStore(ap.getNr(), HUB, "Ausgang"); + } catch (WiSimDAOException e2) { + wiSimLogger.log("ProductionController.hubAbgeholt()", e2); + } + } + // Hub wurde abgeholt + } - /** Simuliert, wie fertige Teilhubs in den Ausgang gelegt werden + /** + * Simuliert, wie fertige Teilhubs in den Ausgang gelegt werden + * * @param thread Der aktuelle Thread * @param ap WorkPlace * @param time Die aktuelle Zeit */ - public synchronized void hubFertig( - WorkPlace ap, - int time, - ProductionSimulationThread thread) - { - try - { + public synchronized void hubFertig( + WorkPlace ap, + int time, + ProductionSimulationThread thread) { + try { - WorkPlaceStore aplAusgang = - dao.getArbeitsplatzLager(ap.getNr(), HUB, "Ausgang"); - WorkPlaceStore aplEingang = - dao.getArbeitsplatzLager(ap.getNr(), HUB, "Eingang"); + WorkPlaceStore aplAusgang + = dao.getWorkPlaceStore(ap.getNr(), HUB, "Ausgang"); + WorkPlaceStore aplEingang + = dao.getWorkPlaceStore(ap.getNr(), HUB, "Eingang"); - int kapazitaetAusgang = - aplAusgang.getMaxBestand() - aplAusgang.getBestand(); - int bestandEingang = aplEingang.getBestand(); - int anzArbeiter = ap.getAnzahlArbeiter(); - int anzahlHubs = anzArbeiter; - if (kapazitaetAusgang < anzahlHubs) - { - anzahlHubs = kapazitaetAusgang; - } - int anzahlHubsOhneVorgaenger = anzahlHubs; - if (bestandEingang < anzahlHubs) - anzahlHubs = bestandEingang; + int kapazitaetAusgang + = aplAusgang.getMaxBestand() - aplAusgang.getBestand(); + int bestandEingang = aplEingang.getBestand(); + int anzArbeiter = ap.getAnzahlArbeiter(); + int anzahlHubs = anzArbeiter; + if (kapazitaetAusgang < anzahlHubs) { + anzahlHubs = kapazitaetAusgang; + } + int anzahlHubsOhneVorgaenger = anzahlHubs; + if (bestandEingang < anzahlHubs) { + anzahlHubs = bestandEingang; + } - if (ap.getVorgaenger()[0] != 0) - { - Collection arbeitsplatzLager = null; - try - { - arbeitsplatzLager = - (Collection) dao.getArbeitsplatzLager( - ap.getNr(), - "Einzelteil"); - } - catch (WiSimDAOException e1) - { - wiSimLogger.log("ProductionController.hubFertig()", e1); - } - Iterator it = arbeitsplatzLager.iterator(); - while (it.hasNext()) - { - this.einzelteilVerbrauch( - (WorkPlaceStore) it.next(), - time, - anzahlHubs, - thread); - } + if (ap.getVorgaenger()[0] != 0) { + Collection arbeitsplatzLager = null; + try { + arbeitsplatzLager + = dao.getArbeitsplatzLager( + ap.getNr(), + "Einzelteil"); + } catch (WiSimDAOException e1) { + wiSimLogger.log("ProductionController.hubFertig()", e1); + } + Iterator it = arbeitsplatzLager.iterator(); + while (it.hasNext()) { + this.einzelteilVerbrauch( + (WorkPlaceStore) it.next(), + time, + anzahlHubs, + thread); + } - dao.setEinzelteilArbeitsplatzBestand( - ap.getNr(), - HUB, - (anzahlHubs * -1), - "Eingang"); - dao.setEinzelteilArbeitsplatzBestand( - ap.getNr(), - HUB, - anzahlHubs, - "Ausgang"); - notifyAll(); - } - else - { - Collection arbeitsplatzLager = null; - try - { - arbeitsplatzLager = - (Collection) dao.getArbeitsplatzLager( - ap.getNr(), - "Einzelteil"); - } - catch (WiSimDAOException e1) - { - wiSimLogger.log("ProductionController.hubFertig()", e1); - } - Iterator it = arbeitsplatzLager.iterator(); - while (it.hasNext()) - { - this.einzelteilVerbrauch( - (WorkPlaceStore) it.next(), - time, - anzahlHubsOhneVorgaenger, - thread); - } + dao.setEinzelteilArbeitsplatzBestand( + ap.getNr(), + HUB, + (anzahlHubs * -1), + "Eingang"); + dao.setEinzelteilArbeitsplatzBestand( + ap.getNr(), + HUB, + anzahlHubs, + "Ausgang"); + notifyAll(); + } else { + Collection arbeitsplatzLager = null; + try { + arbeitsplatzLager + = dao.getArbeitsplatzLager( + ap.getNr(), + "Einzelteil"); + } catch (WiSimDAOException e1) { + wiSimLogger.log("ProductionController.hubFertig()", e1); + } + Iterator it = arbeitsplatzLager.iterator(); + while (it.hasNext()) { + this.einzelteilVerbrauch( + (WorkPlaceStore) it.next(), + time, + anzahlHubsOhneVorgaenger, + thread); + } - dao.setEinzelteilArbeitsplatzBestand( - ap.getNr(), - HUB, - anzahlHubsOhneVorgaenger, - "Ausgang"); - notifyAll(); - } - } - catch (WiSimDAOWriteException e) - { - wiSimLogger.log("ProductionController.hubFertig()", e); - } - catch (WiSimDAOException e) - { - wiSimLogger.log("ProductionController.hubFertig()", e); - } - } + dao.setEinzelteilArbeitsplatzBestand( + ap.getNr(), + HUB, + anzahlHubsOhneVorgaenger, + "Ausgang"); + notifyAll(); + } + } catch (WiSimDAOWriteException | WiSimDAOException e) { + wiSimLogger.log("ProductionController.hubFertig()", e); + } + } - /** Simuliert wie fertige Hubs ins Lager gelegt werden - * @param name Name des Thread + /** + * Simuliert wie fertige Hubs ins Lager gelegt werden + * * @param ap WorkPlace */ - public synchronized void hubKomplett(WorkPlace ap) - { - try - { - try - { - WorkPlaceStore apl = - dao.getArbeitsplatzLager(ap.getNr(), HUB, "Ausgang"); + public synchronized void hubKomplett(WorkPlace ap) { + try { + try { + WorkPlaceStore apl + = dao.getWorkPlaceStore(ap.getNr(), HUB, "Ausgang"); - boolean status = - dao.setArtikelLagerBestand(1, apl.getBestand()); - if (status) - { - dao.setEinzelteilArbeitsplatzBestand( - ap.getNr(), - HUB, - (apl.getBestand() * -1), - "Ausgang"); - } - notifyAll(); - } - catch (WiSimDAOException e) - { - wiSimLogger.log("ProductionController.hubKomplett()", e); - } - } - catch (WiSimDAOWriteException e) - { - wiSimLogger.log("ProductionController.hubKomplett()", e); - } - } + boolean status + = dao.setArtikelLagerBestand(1, apl.getBestand()); + if (status) { + dao.setEinzelteilArbeitsplatzBestand( + ap.getNr(), + HUB, + (apl.getBestand() * -1), + "Ausgang"); + } + notifyAll(); + } catch (WiSimDAOException e) { + wiSimLogger.log("ProductionController.hubKomplett()", e); + } + } catch (WiSimDAOWriteException e) { + wiSimLogger.log("ProductionController.hubKomplett()", e); + } + } - /** Füllt das Eingangslager auf, wenn das Ausgangslager voll ist. - * @param name Der Name des Thread + /** + * Füllt das Eingangslager auf, wenn das Ausgangslager voll ist. + * * @param ap WorkPlace - */ - public synchronized void fuelleEingangslagerAuf( - WorkPlace ap) - { - try - { - WorkPlaceStore eingangsLager = - dao.getArbeitsplatzLager(ap.getNr(), HUB, "Eingang"); - if (eingangsLager.getBestand() < eingangsLager.getMaxBestand()) - { - Collection apLagerVorgaenger = (Collection) new Vector(); - for (int i = 0; i < ap.getVorgaenger().length; i++) - { - apLagerVorgaenger.add( - dao.getArbeitsplatzLager( - ap.getVorgaenger()[i], - HUB, - "Ausgang")); - } - boolean isLeer = false; - Iterator it = apLagerVorgaenger.iterator(); - while (it.hasNext()) - { - WorkPlaceStore apLager = (WorkPlaceStore) it.next(); - if (apLager.getBestand() == 0) - { - isLeer = true; - } - } - if (!isLeer) - { - it = null; - it = apLagerVorgaenger.iterator(); - WorkPlaceStore apl = (WorkPlaceStore) it.next(); - int minBestand = apl.getBestand(); + */ + public synchronized void fuelleEingangslagerAuf( + WorkPlace ap) { + try { + WorkPlaceStore eingangsLager + = dao.getWorkPlaceStore(ap.getNr(), HUB, "Eingang"); + if (eingangsLager.getBestand() < eingangsLager.getMaxBestand()) { + ArrayList apLagerVorgaenger = new ArrayList<>(); + for (int i = 0; i < ap.getVorgaenger().length; i++) { + apLagerVorgaenger.add( + dao.getWorkPlaceStore( + ap.getVorgaenger()[i], + HUB, + "Ausgang")); + } + boolean isLeer = false; + Iterator it = apLagerVorgaenger.iterator(); + while (it.hasNext()) { + WorkPlaceStore apLager = (WorkPlaceStore) it.next(); + if (apLager.getBestand() == 0) { + isLeer = true; + } + } + if (!isLeer) { + it = null; + it = apLagerVorgaenger.iterator(); + WorkPlaceStore apl = (WorkPlaceStore) it.next(); + int minBestand = apl.getBestand(); - while (it.hasNext()) - { - apl = (WorkPlaceStore) it.next(); - if (apl.getBestand() < minBestand) - { - minBestand = apl.getBestand(); - } - } - int eingangsBestand = eingangsLager.getBestand(); - int maxEingangsBestand = eingangsLager.getMaxBestand(); - if ((maxEingangsBestand - eingangsBestand) < minBestand) - { - minBestand = maxEingangsBestand - eingangsBestand; - } - try - { - if (minBestand < 10) - { - dao.setEinzelteilArbeitsplatzBestand( - ap.getNr(), - HUB, - minBestand, - "Eingang"); - for (int i = 0; i < ap.getVorgaenger().length; i++) - { - dao.setEinzelteilArbeitsplatzBestand( - ap.getVorgaenger()[i], - HUB, - (minBestand * -1), - "Ausgang"); - } - notifyAll(); - } - else - { - dao.setEinzelteilArbeitsplatzBestand( - ap.getNr(), - HUB, - 10, - "Eingang"); - for (int i = 0; i < ap.getVorgaenger().length; i++) - { - dao.setEinzelteilArbeitsplatzBestand( - ap.getVorgaenger()[i], - HUB, - -10, - "Ausgang"); - } - notifyAll(); - } - } - catch (WiSimDAOWriteException e) - { - wiSimLogger.log( - "ProductionController.fuelleEingangslagerAuf()", - e); - } - } - } - } - catch (WiSimDAOException e) - { - wiSimLogger.log( - "ProductionController.fuelleEingangslagerAuf()", - e); - } - } + while (it.hasNext()) { + apl = (WorkPlaceStore) it.next(); + if (apl.getBestand() < minBestand) { + minBestand = apl.getBestand(); + } + } + int eingangsBestand = eingangsLager.getBestand(); + int maxEingangsBestand = eingangsLager.getMaxBestand(); + if ((maxEingangsBestand - eingangsBestand) < minBestand) { + minBestand = maxEingangsBestand - eingangsBestand; + } + try { + if (minBestand < 10) { + dao.setEinzelteilArbeitsplatzBestand( + ap.getNr(), + HUB, + minBestand, + "Eingang"); + for (int i = 0; i < ap.getVorgaenger().length; i++) { + dao.setEinzelteilArbeitsplatzBestand( + ap.getVorgaenger()[i], + HUB, + (minBestand * -1), + "Ausgang"); + } + notifyAll(); + } else { + dao.setEinzelteilArbeitsplatzBestand( + ap.getNr(), + HUB, + 10, + "Eingang"); + for (int i = 0; i < ap.getVorgaenger().length; i++) { + dao.setEinzelteilArbeitsplatzBestand( + ap.getVorgaenger()[i], + HUB, + -10, + "Ausgang"); + } + notifyAll(); + } + } catch (WiSimDAOWriteException e) { + wiSimLogger.log( + "ProductionController.fuelleEingangslagerAuf()", + e); + } + } + } + } catch (WiSimDAOException e) { + wiSimLogger.log( + "ProductionController.fuelleEingangslagerAuf()", + e); + } + } } diff --git a/wisim/src/java/net/sourceforge/wisim/simulation/ProductionSimulationThread.java b/wisim/src/java/net/sourceforge/wisim/simulation/ProductionSimulationThread.java index 962c01f..2bdbff8 100644 --- a/wisim/src/java/net/sourceforge/wisim/simulation/ProductionSimulationThread.java +++ b/wisim/src/java/net/sourceforge/wisim/simulation/ProductionSimulationThread.java @@ -100,7 +100,7 @@ public void run() try { apLager = - dao.getArbeitsplatzLager(ap.getNr(), HUB, "Eingang"); + dao.getWorkPlaceStore(ap.getNr(), HUB, "Eingang"); } catch (WiSimDAOException e4) { diff --git a/wisimlog.xml.lck b/wisimlog.xml.lck deleted file mode 100644 index e69de29..0000000