diff --git a/wisim/src/java/net/sourceforge/wisim/controller/IconNodeRenderer.java b/wisim/src/java/net/sourceforge/wisim/controller/IconNodeRenderer.java index 8145798..caee2ce 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/IconNodeRenderer.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/IconNodeRenderer.java @@ -1,8 +1,8 @@ /* ******************************************************************** ** ** Copyright notice ** ** ** -** (c) 2003 WiSim Development Team ** -** https://github.com/kpatzwald/WiSim ** +** (c) 2003 WiSim Development Team ** +** https://github.com/kpatzwald/WiSim ** ** ** ** All rights reserved ** ** ** @@ -47,6 +47,7 @@ public class IconNodeRenderer extends DefaultTreeCellRenderer { * @param hasFocus * @return WiSimComponent */ + @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelModifyCustomer.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelModifyCustomer.java index 9edbe5e..3472a2a 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelModifyCustomer.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelModifyCustomer.java @@ -70,7 +70,7 @@ private void initDAO(WiSimMainController wiSimMainController) { * 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 void initComponents() {//GEN-BEGIN:initComponents jPanelNeuerKunde3 = new javax.swing.JPanel(); jLabelNeuerKunde3 = new javax.swing.JLabel(); jLabelVorname3 = new javax.swing.JLabel(); @@ -429,38 +429,38 @@ public void valueChanged(javax.swing.event.ListSelectionEvent evt) { add(jTabbedPaneKundeBearbeitenNotizen); jTabbedPaneKundeBearbeitenNotizen.setBounds(490, 210, 280, 130); - } //GEN-END:initComponents + }//GEN-END:initComponents - private void jTextFieldKundeBearbeitenPLZFocusGained(java.awt.event.FocusEvent evt) { //GEN-FIRST:event_jTextFieldKundeBearbeitenPLZFocusGained + private void jTextFieldKundeBearbeitenPLZFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldKundeBearbeitenPLZFocusGained setCurrentPLZ(); - } //GEN-LAST:event_jTextFieldKundeBearbeitenPLZFocusGained + }//GEN-LAST:event_jTextFieldKundeBearbeitenPLZFocusGained - private void jTextFieldKundeBearbeitenEMailFocusGained(java.awt.event.FocusEvent evt) { //GEN-FIRST:event_jTextFieldKundeBearbeitenEMailFocusGained + private void jTextFieldKundeBearbeitenEMailFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldKundeBearbeitenEMailFocusGained setCurrentEmail(); - } //GEN-LAST:event_jTextFieldKundeBearbeitenEMailFocusGained + }//GEN-LAST:event_jTextFieldKundeBearbeitenEMailFocusGained - private void jButtonKundeLoeschenActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jButtonKundeLoeschenActionPerformed + private void jButtonKundeLoeschenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonKundeLoeschenActionPerformed int auswahl = getSelectedCustomerID(); if (auswahl != 0) { deleteCostumer(getSelectedCustomerID()); } else { JOptionPane.showMessageDialog(this, "Sie müssen erst einen Kunden auswählen.", "Fehler beim Löschen eines Kunden", JOptionPane.ERROR_MESSAGE); } - } //GEN-LAST:event_jButtonKundeLoeschenActionPerformed + }//GEN-LAST:event_jButtonKundeLoeschenActionPerformed - private void jTextFieldKundeBearbeitenEMailFocusLost(java.awt.event.FocusEvent evt) { //GEN-FIRST:event_jTextFieldKundeBearbeitenEMailFocusLost + private void jTextFieldKundeBearbeitenEMailFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldKundeBearbeitenEMailFocusLost validateEmail(); - } //GEN-LAST:event_jTextFieldKundeBearbeitenEMailFocusLost + }//GEN-LAST:event_jTextFieldKundeBearbeitenEMailFocusLost - private void jTextFieldKundeBearbeitenPLZFocusLost(java.awt.event.FocusEvent evt) { //GEN-FIRST:event_jTextFieldKundeBearbeitenPLZFocusLost + private void jTextFieldKundeBearbeitenPLZFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldKundeBearbeitenPLZFocusLost validatePLZ(); - } //GEN-LAST:event_jTextFieldKundeBearbeitenPLZFocusLost + }//GEN-LAST:event_jTextFieldKundeBearbeitenPLZFocusLost - private void jButtonKundeBearbeitenActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jButtonKundeBearbeitenActionPerformed + private void jButtonKundeBearbeitenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonKundeBearbeitenActionPerformed validateMandatoryFields(); - } //GEN-LAST:event_jButtonKundeBearbeitenActionPerformed + }//GEN-LAST:event_jButtonKundeBearbeitenActionPerformed - private void jButtonNotizEntfernenActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jButtonNotizEntfernenActionPerformed + private void jButtonNotizEntfernenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonNotizEntfernenActionPerformed if (jListTextFieldKundeBearbeitenVerlauf.isShowing()) { if (!jListTextFieldKundeBearbeitenVerlauf.isSelectionEmpty()) { deleteMemo(jListTextFieldKundeBearbeitenVerlauf.getAnchorSelectionIndex()); @@ -470,26 +470,26 @@ private void jButtonNotizEntfernenActionPerformed(java.awt.event.ActionEvent evt } else { JOptionPane.showMessageDialog(this, "Sie müssen in Verlauf wechseln um eine Bemerkung zu löschen.", "Hinweis", JOptionPane.INFORMATION_MESSAGE); } - } //GEN-LAST:event_jButtonNotizEntfernenActionPerformed + }//GEN-LAST:event_jButtonNotizEntfernenActionPerformed - private void jButtonNotizHinzufuegenActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jButtonNotizHinzufuegenActionPerformed + private void jButtonNotizHinzufuegenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonNotizHinzufuegenActionPerformed jTextAreaKundeBearbeitenBemerkung.removeAll(); newMemo(); - } //GEN-LAST:event_jButtonNotizHinzufuegenActionPerformed + }//GEN-LAST:event_jButtonNotizHinzufuegenActionPerformed - private void jListTextFieldKundeBearbeitenVerlaufValueChanged(javax.swing.event.ListSelectionEvent evt) { //GEN-FIRST:event_jListTextFieldKundeBearbeitenVerlaufValueChanged + private void jListTextFieldKundeBearbeitenVerlaufValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_jListTextFieldKundeBearbeitenVerlaufValueChanged if (!jListTextFieldKundeBearbeitenVerlauf.isSelectionEmpty()) { showMemo(jListTextFieldKundeBearbeitenVerlauf.getMaxSelectionIndex()); } - } //GEN-LAST:event_jListTextFieldKundeBearbeitenVerlaufValueChanged + }//GEN-LAST:event_jListTextFieldKundeBearbeitenVerlaufValueChanged - private void jComboBoxKundenBearbeitenActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jComboBoxKundenBearbeitenActionPerformed + private void jComboBoxKundenBearbeitenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBoxKundenBearbeitenActionPerformed loadCustomer(getSelectedCustomerID()); - } //GEN-LAST:event_jComboBoxKundenBearbeitenActionPerformed + }//GEN-LAST:event_jComboBoxKundenBearbeitenActionPerformed - private void jComboBoxKundenBearbeitenAncestorAdded(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_jComboBoxKundenBearbeitenAncestorAdded + private void jComboBoxKundenBearbeitenAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jComboBoxKundenBearbeitenAncestorAdded loadCustomers(); - } //GEN-LAST:event_jComboBoxKundenBearbeitenAncestorAdded + }//GEN-LAST:event_jComboBoxKundenBearbeitenAncestorAdded /** Löscht die Eingabemasken * @@ -847,7 +847,7 @@ private void validateMandatoryFields() { if (auswahl == 0) { JOptionPane.showMessageDialog(this, "Sie müssen erst einen Kunden auswählen.", "Fehler beim Speichern eines Kunden", JOptionPane.ERROR_MESSAGE); } else { - Vector check = new Vector(); + ArrayList check = new ArrayList<>(); if (jTextFieldKundeBearbeitenFirma.getText().equals("")) check.add("Firma"); if (jTextFieldKundeBearbeitenNachname.getText().equals("")) diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelNetworkplan.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelNetworkplan.java index 7120bf0..ed966a4 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelNetworkplan.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelNetworkplan.java @@ -26,7 +26,7 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.Font; -import java.util.Vector; +import java.util.ArrayList; import javax.swing.JLabel; import javax.swing.JScrollPane; @@ -36,6 +36,7 @@ import net.sourceforge.wisim.dao.WiSimDAOException; import net.sourceforge.wisim.model.*; import net.sourceforge.wisim.networkplan.JNetworkplan; +import net.sourceforge.wisim.networkplan.NetworkplanElement; /** * [DoItBen] Kommentar Klasse JPanelNetworkplan @@ -44,7 +45,7 @@ public class JPanelNetworkplan extends javax.swing.JPanel { /** Vector containing all networkplan elements */ - private Vector npElemente; + private ArrayList npElemente; /** Extends JPanel and holds all JNetworkplanElements */ private JNetworkplan netzplanGrafik; diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelSimulationAnalysis.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelSimulationAnalysis.java index c6bc1e2..cb33793 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelSimulationAnalysis.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelSimulationAnalysis.java @@ -29,11 +29,13 @@ 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; @@ -68,8 +70,8 @@ public class JPanelSimulationAnalysis extends javax.swing.JPanel implements Refr private WiSimDAO dao; private Date actDate; private int hubBestand; - private Vector artikelLagerElemente; - private Hashtable stueckliste; + private ArrayList artikelLagerElemente; + private HashMap stueckliste; private Collection vertraege; private GregorianCalendar actDateGC; private GregorianCalendar lieferDateGC; @@ -129,8 +131,8 @@ public JPanelSimulationAnalysis(WiSimMainController wiSimMainController) { actDay = 0; actDate = new Date(new GregorianCalendar(2003, 8, 1, 0, 0).getTimeInMillis()); hubBestand = 0; - artikelLagerElemente = new Vector(); - stueckliste = new Hashtable(); + artikelLagerElemente = new ArrayList<>(); + stueckliste = new HashMap<>(); vertraege = new Vector(); actDateGC = new GregorianCalendar(); @@ -171,7 +173,7 @@ private void initDAO(WiSimMainController wiSimMainController) { * 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 void initComponents() {//GEN-BEGIN:initComponents jLabelSimulation = new javax.swing.JLabel(); jTabbedPaneSimulationsverlauf = new javax.swing.JTabbedPane(); jScrollPaneTreeHolderEinkauf = new javax.swing.JScrollPane(); @@ -222,15 +224,15 @@ public void ancestorRemoved(javax.swing.event.AncestorEvent evt) { add(jTabbedPaneSimulationsverlauf); jTabbedPaneSimulationsverlauf.setBounds(20, 50, 750, 460); - } //GEN-END:initComponents + }//GEN-END:initComponents - private void formAncestorRemoved(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_formAncestorRemoved + private void formAncestorRemoved(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_formAncestorRemoved wiSimMainController.removeActivPanel(this); - } //GEN-LAST:event_formAncestorRemoved + }//GEN-LAST:event_formAncestorRemoved - private void formAncestorAdded(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_formAncestorAdded + private void formAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_formAncestorAdded wiSimMainController.addActivPanel(this); - } //GEN-LAST:event_formAncestorAdded + }//GEN-LAST:event_formAncestorAdded // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel jLabelSimulation; @@ -343,7 +345,7 @@ public void refreshJTreeProduktion() { dateNode = new IconNode(actDateGC.get(5) + "." + (actDateGC.get(2) + 1) + "." + actDateGC.get(1)); dateNode.setIcon(rightIcon); - Vector artikelLagerElemente = new Vector(); + ArrayList artikelLagerElemente = new ArrayList<>(); int hubBestandAktuell = 0; try { @@ -367,9 +369,10 @@ public void refreshJTreeProduktion() { //Neues Nodes im JTree if (hubBestandDifferenz > 0) { - Enumeration keys = stueckliste.keys(); - while (keys.hasMoreElements()) { - String key = (String) keys.nextElement(); + for (String key:stueckliste.keySet()) { + //Enumeration keys = stueckliste.keys(); + //while (keys.hasMoreElements()) { + // String key = (String) keys.nextElement(); WiSimComponent et = new WiSimComponent(); try { diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewOrders.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewOrders.java index 331d182..6d1680b 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewOrders.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelViewOrders.java @@ -43,7 +43,7 @@ public class JPanelViewOrders extends javax.swing.JPanel implements Refreshable { private WiSimDAO dao; - private Vector etatListe; + private ArrayList etatListe; private Collection etatPos; private int etatAnzahl; private int etatPosAnzahl; @@ -69,7 +69,7 @@ public JPanelViewOrders(WiSimMainController wiSimMainController) { this.wiSimMainController = wiSimMainController; wiSimLogger = wiSimMainController.getWiSimLogger(); initDAO(wiSimMainController); - etatListe = new Vector(); + etatListe = new ArrayList<>(); etatPos = new Vector(); etatAnzahl = 0; etatPosAnzahl = 0; @@ -95,7 +95,7 @@ private void initDAO(WiSimMainController wiSimMainController) { * 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 void initComponents() {//GEN-BEGIN:initComponents jLabelEtatEinsehen = new javax.swing.JLabel(); jScrollPaneEtatListe = new javax.swing.JScrollPane(); jTableEtatListe = new javax.swing.JTable(); @@ -392,24 +392,24 @@ public void mouseClicked(java.awt.event.MouseEvent evt) { add(jPanelLegende); jPanelLegende.setBounds(10, 450, 270, 80); - } //GEN-END:initComponents + }//GEN-END:initComponents - private void formAncestorRemoved(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_formAncestorRemoved + private void formAncestorRemoved(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_formAncestorRemoved wiSimMainController.removeActivPanel(this); - } //GEN-LAST:event_formAncestorRemoved + }//GEN-LAST:event_formAncestorRemoved - private void formAncestorAdded(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_formAncestorAdded + private void formAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_formAncestorAdded wiSimMainController.addActivPanel(this); - } //GEN-LAST:event_formAncestorAdded + }//GEN-LAST:event_formAncestorAdded - private void jTableEtatListeMouseClicked(java.awt.event.MouseEvent evt) { //GEN-FIRST:event_jTableEtatListeMouseClicked + private void jTableEtatListeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableEtatListeMouseClicked getEtatInfo(); - } //GEN-LAST:event_jTableEtatListeMouseClicked + }//GEN-LAST:event_jTableEtatListeMouseClicked - private void jTableEtatListeAncestorAdded(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_jTableEtatListeAncestorAdded + private void jTableEtatListeAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jTableEtatListeAncestorAdded getEtatListe(); showLegende(); - } //GEN-LAST:event_jTableEtatListeAncestorAdded + }//GEN-LAST:event_jTableEtatListeAncestorAdded // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel jLabelAbz; diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelWarehouse.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelWarehouse.java index 79e6df8..5b6fc48 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelWarehouse.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelWarehouse.java @@ -21,74 +21,81 @@ ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ -/* + /* * JPanelLager.java * * Created on 10. Februar 2003, 20:58 */ - package net.sourceforge.wisim.controller; -import java.util.*; import net.sourceforge.wisim.model.*; import net.sourceforge.wisim.dao.*; import javax.swing.table.DefaultTableModel; import java.awt.*; import java.awt.image.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; import javax.swing.*; -/** Gibt eine �bersicht des Lager aus. Best�nde und Kapazit�ten werden ebenfalls - * ausgegeben. Jeder WarehouseLocation kann einzelnd eingesehen werden. +/** + * Gibt eine �bersicht des Lager aus. Best�nde und Kapazit�ten werden + * ebenfalls ausgegeben. Jeder WarehouseLocation kann einzelnd eingesehen + * werden. + * * @author Benjamin Pasero */ public class JPanelWarehouse extends javax.swing.JPanel implements Refreshable { - private WiSimDAO dao; - private Collection lagerplaetze; - private Vector einzelteileListe; - private Collection artikelListe; - private int etAnzahl; - private Vector 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; - - //Logger - private WiSimLogger wiSimLogger; - - /** Creates new form JPanelLager - * @param wiSimMainController - */ - public JPanelWarehouse(WiSimMainController wiSimMainController) { - this.wiSimMainController = wiSimMainController; - wiSimLogger = wiSimMainController.getWiSimLogger(); - initDAO(wiSimMainController); - lagerplaetze = new Vector(); - einzelteileListe = new Vector(); - artikelListe = new Vector(); - etElems = new Vector(); - etAnzahl = 0; - actLgPlatz = ""; - isBuilt = false; - 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 + + private WiSimDAO dao; + private Collection lagerplaetze; + private ArrayList einzelteileListe; + private ArrayList artikelListe; + private int etAnzahl; + private 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; + + //Logger + private WiSimLogger wiSimLogger; + + /** + * Creates new form JPanelLager + * + * @param wiSimMainController + */ + public JPanelWarehouse(WiSimMainController wiSimMainController) { + this.wiSimMainController = wiSimMainController; + wiSimLogger = wiSimMainController.getWiSimLogger(); + initDAO(wiSimMainController); + lagerplaetze = new ArrayList<>(); + einzelteileListe = new ArrayList<>(); + artikelListe = new ArrayList<>(); + etElems = new ArrayList<>(); + etAnzahl = 0; + actLgPlatz = ""; + isBuilt = false; + 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 jLabelUeberschriftLager = new javax.swing.JLabel(); jPanelGesamtliste = new javax.swing.JPanel(); jScrollPaneGesamtliste = new javax.swing.JScrollPane(); @@ -297,33 +304,33 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { add(jPanelLegende); jPanelLegende.setBounds(10, 350, 770, 70); - } //GEN-END:initComponents + }//GEN-END:initComponents - private void formAncestorRemoved(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_formAncestorRemoved - wiSimMainController.removeActivPanel(this); - } //GEN-LAST:event_formAncestorRemoved + 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 - buildLegend(); - setIsBuilt(true); - wiSimMainController.addActivPanel(this); - } //GEN-LAST:event_formAncestorAdded + private void formAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_formAncestorAdded + buildLegend(); + setIsBuilt(true); + wiSimMainController.addActivPanel(this); + }//GEN-LAST:event_formAncestorAdded - private void jComboBoxArtikelImLagerActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jComboBoxArtikelImLagerActionPerformed - getArticle(); - } //GEN-LAST:event_jComboBoxArtikelImLagerActionPerformed + private void jComboBoxArtikelImLagerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBoxArtikelImLagerActionPerformed + getArticle(); + }//GEN-LAST:event_jComboBoxArtikelImLagerActionPerformed - private void jComboBoxLagerplatzActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jComboBoxLagerplatzActionPerformed - getArticleData(); - } //GEN-LAST:event_jComboBoxLagerplatzActionPerformed + private void jComboBoxLagerplatzActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBoxLagerplatzActionPerformed + getArticleData(); + }//GEN-LAST:event_jComboBoxLagerplatzActionPerformed - private void jTableGesamtlisteAncestorAdded(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_jTableGesamtlisteAncestorAdded - buildMainTable(); - } //GEN-LAST:event_jTableGesamtlisteAncestorAdded + private void jTableGesamtlisteAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jTableGesamtlisteAncestorAdded + buildMainTable(); + }//GEN-LAST:event_jTableGesamtlisteAncestorAdded - private void jComboBoxLagerplatzAncestorAdded(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_jComboBoxLagerplatzAncestorAdded - getStoragePlaces(); - } //GEN-LAST:event_jComboBoxLagerplatzAncestorAdded + private void jComboBoxLagerplatzAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jComboBoxLagerplatzAncestorAdded + getStoragePlaces(); + }//GEN-LAST:event_jComboBoxLagerplatzAncestorAdded // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JComboBox jComboBoxArtikelImLager; @@ -354,512 +361,534 @@ private void jComboBoxLagerplatzAncestorAdded(javax.swing.event.AncestorEvent ev private javax.swing.JTextField jTextFieldMindestbestand; // End of variables declaration//GEN-END:variables - /** Erstellt die Einzelteilauftrags-Positionen Tabelle. */ - private void setMainTable() { - //DefaultTableModel mit Variablen Zeilen, 3 TableHeads und nicht editierbaren Zellen - Object[][] tableInit = new Object[etAnzahl][6]; - DefaultTableModel defTable = new DefaultTableModel(tableInit, new String[] { "Artikelname", "aktueller Bestand", "Min. Bestand", "Max. Bestand", "Lagerpl�tze", "Belegung" }) { - boolean[] canEdit = new boolean[] { 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(); - } - }; - jTableGesamtliste.setModel(defTable); - jTableGesamtliste.setFocusable(false); - jTableGesamtliste.setSelectionMode(0); - jTableGesamtliste.getTableHeader().setReorderingAllowed(false); - - javax.swing.table.TableColumn column = null; - - //Spaltenbreiten der Tabelle werden gesetzt - for (int i = 0; i < 6; i++) { - column = jTableGesamtliste.getColumnModel().getColumn(i); - switch (i) { - //Artikelname - case 0 : - column.setPreferredWidth(150); - break; - //aktueller Bestand - case 1 : - column.setPreferredWidth(60); - break; - //Min. Bestand - case 2 : - column.setPreferredWidth(50); - break; - //Max. Bestand - case 3 : - column.setPreferredWidth(50); - break; - //Lagerpl�tze - case 4 : - column.setPreferredWidth(100); - break; - //Belegung - case 5 : - column.setPreferredWidth(40); - break; - } - } - } - - /** Baut die Gesamtliste der Lager�bersicht auf */ - public void buildMainTable() { - try { - einzelteileListe = dao.getEinzelteilLagerElement(); - artikelListe = dao.getArtikelLagerElement(); - } catch (WiSimDAOException e) { - wiSimLogger.log("buildGesamtListeTabelle()", e); - } - etAnzahl = einzelteileListe.size() + artikelListe.size(); - setMainTable(); - int i = 0; - - Iterator art_it = artikelListe.iterator(); - while (art_it.hasNext()) { - ComponentWarehouseItem artikel = (ComponentWarehouseItem) art_it.next(); - jTableGesamtliste.setValueAt(artikel.getEinzelteilName(), i, 0); - jTableGesamtliste.setValueAt(String.valueOf(artikel.getBestand()), i, 1); - jTableGesamtliste.setValueAt(String.valueOf(artikel.getMinBestand()), i, 2); - jTableGesamtliste.setValueAt(String.valueOf(artikel.getMaxBestand()), i, 3); - - Iterator lgPlaetze_it = artikel.getLagerplaetze().iterator(); - String lagerplaetze = ""; - while (lgPlaetze_it.hasNext()) { - String nextLagerplatz = (String) lgPlaetze_it.next(); - if (!lgPlaetze_it.hasNext()) { - lagerplaetze = lagerplaetze + nextLagerplatz; - } else { - lagerplaetze = lagerplaetze + nextLagerplatz + ", "; - } - } - jTableGesamtliste.setValueAt(lagerplaetze, i, 4); - - IconGenerater iconGen = new IconGenerater(); - - double actBestand = artikel.getBestand(); - double actMaxBestand = artikel.getMaxBestand(); - - double rects = (double) (actBestand / actMaxBestand) * 5; - int filledrectsCount = (int) Math.round(rects); - - if (artikel.getBestand() < artikel.getMinBestand()) { - jTableGesamtliste.setValueAt(iconGen.generateIcon(2, filledrectsCount), i, 5); - } else if ((artikel.getBestand() - artikel.getMinBestand() / 2) < artikel.getMinBestand()) { - jTableGesamtliste.setValueAt(iconGen.generateIcon(1, filledrectsCount), i, 5); - } else { - jTableGesamtliste.setValueAt(iconGen.generateIcon(0, filledrectsCount), i, 5); - } - i++; - } - - Iterator et_it = einzelteileListe.iterator(); - while (et_it.hasNext()) { - ComponentWarehouseItem einzelteil = (ComponentWarehouseItem) et_it.next(); - jTableGesamtliste.setValueAt(einzelteil.getEinzelteilName(), i, 0); - jTableGesamtliste.setValueAt(String.valueOf(einzelteil.getBestand()), i, 1); - jTableGesamtliste.setValueAt(String.valueOf(einzelteil.getMinBestand()), i, 2); - jTableGesamtliste.setValueAt(String.valueOf(einzelteil.getMaxBestand()), i, 3); - - Iterator lgPlaetze_it = einzelteil.getLagerplaetze().iterator(); - String lagerplaetze = ""; - while (lgPlaetze_it.hasNext()) { - String nextLagerplatz = (String) lgPlaetze_it.next(); - if (!lgPlaetze_it.hasNext()) { - lagerplaetze = lagerplaetze + nextLagerplatz; - } else { - lagerplaetze = lagerplaetze + nextLagerplatz + ", "; - } - } - jTableGesamtliste.setValueAt(lagerplaetze, i, 4); - - IconGenerater iconGen = new IconGenerater(); - - double actBestand = einzelteil.getBestand(); - double actMaxBestand = einzelteil.getMaxBestand(); - - double rects = (double) (actBestand / actMaxBestand) * 5; - int filledrectsCount = (int) Math.round(rects); - - if (einzelteil.getBestand() < einzelteil.getMinBestand()) { - jTableGesamtliste.setValueAt(iconGen.generateIcon(2, filledrectsCount), i, 5); - } else if ((einzelteil.getBestand() - einzelteil.getMinBestand() / 2) < einzelteil.getMinBestand()) { - jTableGesamtliste.setValueAt(iconGen.generateIcon(1, filledrectsCount), i, 5); - } else { - jTableGesamtliste.setValueAt(iconGen.generateIcon(0, filledrectsCount), i, 5); - } - i++; - } - } - - /** Zeigt die Legende an */ - private void buildLegend() { - //Legende - //Gr�n - Image imageIconGreen = new BufferedImage(70, 30, 2); - Graphics g = imageIconGreen.getGraphics(); - 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.fillRect(46, 11, 9, 9); - g.fillRect(58, 11, 9, 9); - - ImageIcon ic = new ImageIcon(imageIconGreen); - jLabelGruen.setIcon(ic); - jLabelGruen.setToolTipText("Der Bestand dieses Einzelteils ist ausreichend!"); - - //Orange - Image imageIconOrange = new BufferedImage(70, 30, 2); - g = imageIconOrange.getGraphics(); - 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.fillRect(46, 11, 9, 9); - g.fillRect(58, 11, 9, 9); - ic = new ImageIcon(imageIconOrange); - jLabelOrange.setIcon(ic); - jLabelOrange.setToolTipText("Der Bestand dieses Einzelteils hat den Mindestbestand bald unterschritten!"); - - //Rot - Image imageIconRed = new BufferedImage(70, 30, 2); - g = imageIconRed.getGraphics(); - 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.fillRect(46, 11, 9, 9); - g.fillRect(58, 11, 9, 9); - ic = new ImageIcon(imageIconRed); - jLabelRot.setIcon(ic); - jLabelRot.setToolTipText("Der Bestand dieses Einzelteils hat den Mindestbestand unterschritten!"); - - //Kapazit�ten ausreichend - Image imageIconKapazAusreichend = new BufferedImage(70, 30, 2); - g = imageIconKapazAusreichend.getGraphics(); - g.setColor(Color.black); - g.fillRect(10, 11, 10, 10); - - g.drawRect(22, 11, 9, 9); - g.drawRect(34, 11, 9, 9); - g.drawRect(46, 11, 9, 9); - g.drawRect(58, 11, 9, 9); - g.setColor(blackDither); - g.fillRect(22, 11, 9, 9); - g.fillRect(34, 11, 9, 9); - g.fillRect(46, 11, 9, 9); - g.fillRect(58, 11, 9, 9); - ic = new ImageIcon(imageIconKapazAusreichend); - jLabelKapazAusreichend.setIcon(ic); - jLabelKapazAusreichend.setToolTipText("Es gibt ausreichend Lagerplatz f�r dieses Einzelteil!"); - - //Kapazit�ten bald ersch�pft - Image imageIconKapazBaldErschoepft = new BufferedImage(70, 30, 2); - g = imageIconKapazBaldErschoepft.getGraphics(); - g.setColor(Color.black); - g.fillRect(10, 11, 10, 10); - g.fillRect(22, 11, 10, 10); - g.fillRect(34, 11, 10, 10); - g.fillRect(46, 11, 10, 10); - - g.drawRect(58, 11, 9, 9); - g.setColor(blackDither); - g.fillRect(58, 11, 9, 9); - ic = new ImageIcon(imageIconKapazBaldErschoepft); - jLabelKapazBaldErschoepft.setIcon(ic); - jLabelKapazBaldErschoepft.setToolTipText("Es gibt kaum noch Lagerplatz f�r dieses Einzelteil!"); - - //Kapazit�ten ersch�pft - Image imageIconKapazErschoepft = new BufferedImage(70, 30, 2); - g = imageIconKapazErschoepft.getGraphics(); - g.setColor(Color.black); - g.fillRect(10, 11, 10, 10); - g.fillRect(22, 11, 10, 10); - g.fillRect(34, 11, 10, 10); - g.fillRect(46, 11, 10, 10); - g.fillRect(58, 11, 10, 10); - ic = new ImageIcon(imageIconKapazErschoepft); - jLabelKapazErschoepft.setIcon(ic); - jLabelKapazErschoepft.setToolTipText("Es gibt keinen Lagerplatz mehr f�r dieses Einzelteil!"); - } - - /** Zeigt die Article an die in dem selektierten WarehouseLocation liegen */ - private void getArticle() { - if (jComboBoxArtikelImLager.getSelectedItem() != null) { - if (!jComboBoxArtikelImLager.getSelectedItem().toString().equals("leer")) { - ComponentWarehouseItem selectedElem = (ComponentWarehouseItem) 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())); - jTextFieldFrei.setText(String.valueOf(selectedElem.getMaxBestand() - selectedElem.getBestand())); - } else { - jTextFieldMindestbestand.setText(""); - jTextFieldBestand.setText(""); - jTextFieldBelegung.setText("0"); - jTextFieldFrei.setText(""); - } - } else { - jTextFieldMindestbestand.setText(""); - jTextFieldBestand.setText(""); - jTextFieldBelegung.setText("0"); - jTextFieldFrei.setText(""); - } - } - - /** Zeigt Infos zu dem Article auf dem selektierten WarehouseLocation an */ - private void getArticleData() { - - /** [DoItBen] Change action! */ - if (jComboBoxLagerplatz.getSelectedItem() != null) { - if (!jComboBoxLagerplatz.getSelectedItem().toString().equals("Select:") && !jComboBoxLagerplatz.getSelectedItem().toString().equals(actLgPlatz)) { - jComboBoxArtikelImLager.removeAllItems(); - etElems.removeAllElements(); - - actLgPlatz = jComboBoxLagerplatz.getSelectedItem().toString(); - Collection etElemsCol = new Vector(); - Collection artElemsCol = new Vector(); - try { - etElemsCol = dao.getEinzelteilLagerElement(jComboBoxLagerplatz.getSelectedItem().toString()); - artElemsCol = dao.getArtikelLagerElement(jComboBoxLagerplatz.getSelectedItem().toString()); - } catch (WiSimDAOException e) { - wiSimLogger.log("getArtikelImLagerplatzInfo()", e); - } - - Iterator artElems_it = artElemsCol.iterator(); - Iterator etElems_it = etElemsCol.iterator(); - int i = 0; - - while (artElems_it.hasNext()) { - ComponentWarehouseItem etElem = (ComponentWarehouseItem) artElems_it.next(); - Article art = new Article(); - try { - art = dao.getArtikel(etElem.getId()); - } catch (WiSimDAOException e) { - wiSimLogger.log("getArtikelImLagerplatzInfo()", e); - } - - etElem.setEinzelteilName(art.getName()); - etElem.setMinBestand(art.getMindestbestand()); - etElems.add(etElem); - - jComboBoxArtikelImLager.insertItemAt(art.getName(), i); - i++; - } - - while (etElems_it.hasNext()) { - ComponentWarehouseItem etElem = (ComponentWarehouseItem) etElems_it.next(); - WiSimComponent et = new WiSimComponent(); - try { - et = dao.getEinzelteil(etElem.getId()); - } catch (WiSimDAOException e) { - wiSimLogger.log("getArtikelImLagerplatzInfo()", e); - } - - etElem.setEinzelteilName(et.getName()); - etElem.setMinBestand(et.getMindestbestand()); - etElems.add(etElem); - - jComboBoxArtikelImLager.insertItemAt(et.getName(), i); - i++; - } - if (jComboBoxArtikelImLager.getItemCount() == 0) { - jComboBoxArtikelImLager.insertItemAt("leer", 0); - } - jComboBoxArtikelImLager.setSelectedIndex(0); - } - - if (jComboBoxLagerplatz.getSelectedItem().toString().equals("Select:")) { - actLgPlatz = jComboBoxLagerplatz.getSelectedItem().toString(); - jComboBoxArtikelImLager.removeAllItems(); - etElems.removeAllElements(); - jTextFieldMindestbestand.setText(""); - jTextFieldBestand.setText(""); - jTextFieldBelegung.setText(""); - jTextFieldFrei.setText(""); - jComboBoxArtikelImLager.setSelectedIndex(-1); - } - } - } - - /** Gibt alle Lagerplaetze aus der DB aus */ - private void getStoragePlaces() { - jComboBoxLagerplatz.removeAllItems(); - jComboBoxLagerplatz.addItem("Select:"); - try { - lagerplaetze = dao.getLagerplaetze(); - } catch (WiSimDAOException e) { - wiSimLogger.log("getLagerplaetze()", e); - } - - Iterator lgPlatz_it = lagerplaetze.iterator(); - while (lgPlatz_it.hasNext()) { - WarehouseLocation lgplatz = (WarehouseLocation) lgPlatz_it.next(); - jComboBoxLagerplatz.addItem(lgplatz.getStellplatzNr()); - } - } - - /** Aktualisiert die Gesamtliste */ - private void refreshMainTable() { - - //Update der Lagerplatz-Detailansicht - if (!jComboBoxLagerplatz.getSelectedItem().equals("Select:") && !jComboBoxArtikelImLager.getSelectedItem().equals("leer")) { - etElems.removeAllElements(); - - Collection etElemsCol = new Vector(); - Collection artElemsCol = new Vector(); - try { - etElemsCol = dao.getEinzelteilLagerElement(jComboBoxLagerplatz.getSelectedItem().toString()); - artElemsCol = dao.getArtikelLagerElement(jComboBoxLagerplatz.getSelectedItem().toString()); - } catch (WiSimDAOException e) { - wiSimLogger.log("refreshLagerGesamtliste()", e); - } - - Iterator artElems_it = artElemsCol.iterator(); - Iterator etElems_it = etElemsCol.iterator(); - int i = 0; - - while (artElems_it.hasNext()) { - ComponentWarehouseItem etElem = (ComponentWarehouseItem) artElems_it.next(); - Article art = new Article(); - try { - art = dao.getArtikel(etElem.getId()); - } catch (WiSimDAOException e) { - wiSimLogger.log("refreshLagerGesamtliste()", e); - } - - etElem.setEinzelteilName(art.getName()); - etElem.setMinBestand(art.getMindestbestand()); - etElems.add(etElem); - - i++; - } - - while (etElems_it.hasNext()) { - ComponentWarehouseItem etElem = (ComponentWarehouseItem) etElems_it.next(); - WiSimComponent et = new WiSimComponent(); - try { - et = dao.getEinzelteil(etElem.getId()); - } catch (WiSimDAOException e) { - wiSimLogger.log("refreshLagerGesamtliste()", e); - } - - etElem.setEinzelteilName(et.getName()); - etElem.setMinBestand(et.getMindestbestand()); - etElems.add(etElem); - } - - ComponentWarehouseItem selectedElem = (ComponentWarehouseItem) etElems.get(jComboBoxArtikelImLager.getSelectedIndex()); - - //Aktualisiere nur wenn sich der Bestand ge�ndert hat! - if (selectedElem.getBestand() != Integer.parseInt(jTextFieldBestand.getText())) { - jTextFieldMindestbestand.setText(String.valueOf(selectedElem.getMinBestand())); - jTextFieldBestand.setText(String.valueOf(selectedElem.getBestand())); - jTextFieldBelegung.setText(String.valueOf(selectedElem.getBestand() * 100 / selectedElem.getMaxBestand())); - jTextFieldFrei.setText(String.valueOf(selectedElem.getMaxBestand() - selectedElem.getBestand())); - } - } - - //Update der Gesamtliste - try { - einzelteileListe = dao.getEinzelteilLagerElement(); - artikelListe = 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); - - IconGenerater iconGen = new IconGenerater(); - - double actBestand = artikel.getBestand(); - double actMaxBestand = artikel.getMaxBestand(); - - double rects = (double) (actBestand / actMaxBestand) * 5; - int filledrectsCount = (int) Math.round(rects); - - if (artikel.getBestand() < artikel.getMinBestand()) { - jTableGesamtliste.setValueAt(iconGen.generateIcon(2, filledrectsCount), i, 5); - } else if ((artikel.getBestand() - artikel.getMinBestand() / 2) < artikel.getMinBestand()) { - jTableGesamtliste.setValueAt(iconGen.generateIcon(1, filledrectsCount), i, 5); - } else { - jTableGesamtliste.setValueAt(iconGen.generateIcon(0, filledrectsCount), i, 5); - } - } - i++; - } - - Iterator et_it = einzelteileListe.iterator(); - while (et_it.hasNext()) { - ComponentWarehouseItem einzelteil = (ComponentWarehouseItem) et_it.next(); - - if (einzelteil.getBestand() != Integer.parseInt((String) jTableGesamtliste.getValueAt(i, 1))) { - jTableGesamtliste.setValueAt(String.valueOf(einzelteil.getBestand()), i, 1); - - IconGenerater iconGen = new IconGenerater(); - - double actBestand = einzelteil.getBestand(); - double actMaxBestand = einzelteil.getMaxBestand(); - - double rects = (double) (actBestand / actMaxBestand) * 5; - int filledrectsCount = (int) Math.round(rects); - - if (einzelteil.getBestand() < einzelteil.getMinBestand()) { - jTableGesamtliste.setValueAt(iconGen.generateIcon(2, filledrectsCount), i, 5); - } else if ((einzelteil.getBestand() - einzelteil.getMinBestand() / 2) < einzelteil.getMinBestand()) { - jTableGesamtliste.setValueAt(iconGen.generateIcon(1, filledrectsCount), i, 5); - } else { - jTableGesamtliste.setValueAt(iconGen.generateIcon(0, filledrectsCount), i, 5); - } - } - 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 isBuilt - */ - public boolean getIsBuilt() { - return isBuilt; - } - - /* (non-Javadoc) + /** + * Erstellt die Einzelteilauftrags-Positionen Tabelle. + */ + private void setMainTable() { + //DefaultTableModel mit Variablen Zeilen, 3 TableHeads und nicht editierbaren Zellen + Object[][] tableInit = new Object[etAnzahl][6]; + DefaultTableModel defTable = new DefaultTableModel(tableInit, new String[]{"Artikelname", "aktueller Bestand", "Min. Bestand", "Max. Bestand", "Lagerpl�tze", "Belegung"}) { + boolean[] canEdit = new boolean[]{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(); + } + }; + jTableGesamtliste.setModel(defTable); + jTableGesamtliste.setFocusable(false); + jTableGesamtliste.setSelectionMode(0); + jTableGesamtliste.getTableHeader().setReorderingAllowed(false); + + javax.swing.table.TableColumn column = null; + + //Spaltenbreiten der Tabelle werden gesetzt + for (int i = 0; i < 6; i++) { + column = jTableGesamtliste.getColumnModel().getColumn(i); + switch (i) { + //Artikelname + case 0: + column.setPreferredWidth(150); + break; + //aktueller Bestand + case 1: + column.setPreferredWidth(60); + break; + //Min. Bestand + case 2: + column.setPreferredWidth(50); + break; + //Max. Bestand + case 3: + column.setPreferredWidth(50); + break; + //Lagerpl�tze + case 4: + column.setPreferredWidth(100); + break; + //Belegung + case 5: + column.setPreferredWidth(40); + break; + } + } + } + + /** + * Baut die Gesamtliste der Lager�bersicht auf + */ + public void buildMainTable() { + try { + einzelteileListe = dao.getEinzelteilLagerElement(); + artikelListe = dao.getArtikelLagerElement(); + } catch (WiSimDAOException e) { + wiSimLogger.log("buildGesamtListeTabelle()", e); + } + etAnzahl = einzelteileListe.size() + artikelListe.size(); + setMainTable(); + int i = 0; + + Iterator art_it = artikelListe.iterator(); + while (art_it.hasNext()) { + ComponentWarehouseItem artikel = (ComponentWarehouseItem) art_it.next(); + jTableGesamtliste.setValueAt(artikel.getEinzelteilName(), i, 0); + jTableGesamtliste.setValueAt(String.valueOf(artikel.getBestand()), i, 1); + jTableGesamtliste.setValueAt(String.valueOf(artikel.getMinBestand()), i, 2); + jTableGesamtliste.setValueAt(String.valueOf(artikel.getMaxBestand()), i, 3); + + Iterator lgPlaetze_it = artikel.getLagerplaetze().iterator(); + String lagerplaetze = ""; + while (lgPlaetze_it.hasNext()) { + String nextLagerplatz = (String) lgPlaetze_it.next(); + if (!lgPlaetze_it.hasNext()) { + lagerplaetze = lagerplaetze + nextLagerplatz; + } else { + lagerplaetze = lagerplaetze + nextLagerplatz + ", "; + } + } + jTableGesamtliste.setValueAt(lagerplaetze, i, 4); + + IconGenerater iconGen = new IconGenerater(); + + double actBestand = artikel.getBestand(); + double actMaxBestand = artikel.getMaxBestand(); + + double rects = (double) (actBestand / actMaxBestand) * 5; + int filledrectsCount = (int) Math.round(rects); + + if (artikel.getBestand() < artikel.getMinBestand()) { + jTableGesamtliste.setValueAt(iconGen.generateIcon(2, filledrectsCount), i, 5); + } else if ((artikel.getBestand() - artikel.getMinBestand() / 2) < artikel.getMinBestand()) { + jTableGesamtliste.setValueAt(iconGen.generateIcon(1, filledrectsCount), i, 5); + } else { + jTableGesamtliste.setValueAt(iconGen.generateIcon(0, filledrectsCount), i, 5); + } + i++; + } + + Iterator et_it = einzelteileListe.iterator(); + while (et_it.hasNext()) { + ComponentWarehouseItem einzelteil = (ComponentWarehouseItem) et_it.next(); + jTableGesamtliste.setValueAt(einzelteil.getEinzelteilName(), i, 0); + jTableGesamtliste.setValueAt(String.valueOf(einzelteil.getBestand()), i, 1); + jTableGesamtliste.setValueAt(String.valueOf(einzelteil.getMinBestand()), i, 2); + jTableGesamtliste.setValueAt(String.valueOf(einzelteil.getMaxBestand()), i, 3); + + Iterator lgPlaetze_it = einzelteil.getLagerplaetze().iterator(); + String lagerplaetze = ""; + while (lgPlaetze_it.hasNext()) { + String nextLagerplatz = (String) lgPlaetze_it.next(); + if (!lgPlaetze_it.hasNext()) { + lagerplaetze = lagerplaetze + nextLagerplatz; + } else { + lagerplaetze = lagerplaetze + nextLagerplatz + ", "; + } + } + jTableGesamtliste.setValueAt(lagerplaetze, i, 4); + + IconGenerater iconGen = new IconGenerater(); + + double actBestand = einzelteil.getBestand(); + double actMaxBestand = einzelteil.getMaxBestand(); + + double rects = (double) (actBestand / actMaxBestand) * 5; + int filledrectsCount = (int) Math.round(rects); + + if (einzelteil.getBestand() < einzelteil.getMinBestand()) { + jTableGesamtliste.setValueAt(iconGen.generateIcon(2, filledrectsCount), i, 5); + } else if ((einzelteil.getBestand() - einzelteil.getMinBestand() / 2) < einzelteil.getMinBestand()) { + jTableGesamtliste.setValueAt(iconGen.generateIcon(1, filledrectsCount), i, 5); + } else { + jTableGesamtliste.setValueAt(iconGen.generateIcon(0, filledrectsCount), i, 5); + } + i++; + } + } + + /** + * Zeigt die Legende an + */ + private void buildLegend() { + //Legende + //Gr�n + Image imageIconGreen = new BufferedImage(70, 30, 2); + Graphics g = imageIconGreen.getGraphics(); + 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.fillRect(46, 11, 9, 9); + g.fillRect(58, 11, 9, 9); + + ImageIcon ic = new ImageIcon(imageIconGreen); + jLabelGruen.setIcon(ic); + jLabelGruen.setToolTipText("Der Bestand dieses Einzelteils ist ausreichend!"); + + //Orange + Image imageIconOrange = new BufferedImage(70, 30, 2); + g = imageIconOrange.getGraphics(); + 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.fillRect(46, 11, 9, 9); + g.fillRect(58, 11, 9, 9); + ic = new ImageIcon(imageIconOrange); + jLabelOrange.setIcon(ic); + jLabelOrange.setToolTipText("Der Bestand dieses Einzelteils hat den Mindestbestand bald unterschritten!"); + + //Rot + Image imageIconRed = new BufferedImage(70, 30, 2); + g = imageIconRed.getGraphics(); + 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.fillRect(46, 11, 9, 9); + g.fillRect(58, 11, 9, 9); + ic = new ImageIcon(imageIconRed); + jLabelRot.setIcon(ic); + jLabelRot.setToolTipText("Der Bestand dieses Einzelteils hat den Mindestbestand unterschritten!"); + + //Kapazit�ten ausreichend + Image imageIconKapazAusreichend = new BufferedImage(70, 30, 2); + g = imageIconKapazAusreichend.getGraphics(); + g.setColor(Color.black); + g.fillRect(10, 11, 10, 10); + + g.drawRect(22, 11, 9, 9); + g.drawRect(34, 11, 9, 9); + g.drawRect(46, 11, 9, 9); + g.drawRect(58, 11, 9, 9); + g.setColor(blackDither); + g.fillRect(22, 11, 9, 9); + g.fillRect(34, 11, 9, 9); + g.fillRect(46, 11, 9, 9); + g.fillRect(58, 11, 9, 9); + ic = new ImageIcon(imageIconKapazAusreichend); + jLabelKapazAusreichend.setIcon(ic); + jLabelKapazAusreichend.setToolTipText("Es gibt ausreichend Lagerplatz f�r dieses Einzelteil!"); + + //Kapazit�ten bald ersch�pft + Image imageIconKapazBaldErschoepft = new BufferedImage(70, 30, 2); + g = imageIconKapazBaldErschoepft.getGraphics(); + g.setColor(Color.black); + g.fillRect(10, 11, 10, 10); + g.fillRect(22, 11, 10, 10); + g.fillRect(34, 11, 10, 10); + g.fillRect(46, 11, 10, 10); + + g.drawRect(58, 11, 9, 9); + g.setColor(blackDither); + g.fillRect(58, 11, 9, 9); + ic = new ImageIcon(imageIconKapazBaldErschoepft); + jLabelKapazBaldErschoepft.setIcon(ic); + jLabelKapazBaldErschoepft.setToolTipText("Es gibt kaum noch Lagerplatz f�r dieses Einzelteil!"); + + //Kapazit�ten ersch�pft + Image imageIconKapazErschoepft = new BufferedImage(70, 30, 2); + g = imageIconKapazErschoepft.getGraphics(); + g.setColor(Color.black); + g.fillRect(10, 11, 10, 10); + g.fillRect(22, 11, 10, 10); + g.fillRect(34, 11, 10, 10); + g.fillRect(46, 11, 10, 10); + g.fillRect(58, 11, 10, 10); + ic = new ImageIcon(imageIconKapazErschoepft); + jLabelKapazErschoepft.setIcon(ic); + jLabelKapazErschoepft.setToolTipText("Es gibt keinen Lagerplatz mehr f�r dieses Einzelteil!"); + } + + /** + * Zeigt die Article an die in dem selektierten WarehouseLocation liegen + */ + private void getArticle() { + if (jComboBoxArtikelImLager.getSelectedItem() != null) { + if (!jComboBoxArtikelImLager.getSelectedItem().toString().equals("leer")) { + ComponentWarehouseItem selectedElem = (ComponentWarehouseItem) 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())); + jTextFieldFrei.setText(String.valueOf(selectedElem.getMaxBestand() - selectedElem.getBestand())); + } else { + jTextFieldMindestbestand.setText(""); + jTextFieldBestand.setText(""); + jTextFieldBelegung.setText("0"); + jTextFieldFrei.setText(""); + } + } else { + jTextFieldMindestbestand.setText(""); + jTextFieldBestand.setText(""); + jTextFieldBelegung.setText("0"); + jTextFieldFrei.setText(""); + } + } + + /** + * Zeigt Infos zu dem Article auf dem selektierten WarehouseLocation an + */ + private void getArticleData() { + + /** + * [DoItBen] Change action! + */ + if (jComboBoxLagerplatz.getSelectedItem() != null) { + if (!jComboBoxLagerplatz.getSelectedItem().toString().equals("Select:") && !jComboBoxLagerplatz.getSelectedItem().toString().equals(actLgPlatz)) { + jComboBoxArtikelImLager.removeAllItems(); + etElems.removeAll(etElems); + + actLgPlatz = jComboBoxLagerplatz.getSelectedItem().toString(); + ArrayList etElemsCol = new ArrayList<>(); + ArrayList artElemsCol = new ArrayList<>(); + try { + etElemsCol = dao.getEinzelteilLagerElement(jComboBoxLagerplatz.getSelectedItem().toString()); + artElemsCol = dao.getArtikelLagerElement(jComboBoxLagerplatz.getSelectedItem().toString()); + } catch (WiSimDAOException e) { + wiSimLogger.log("getArtikelImLagerplatzInfo()", e); + } + + Iterator artElems_it = artElemsCol.iterator(); + Iterator etElems_it = etElemsCol.iterator(); + int i = 0; + + while (artElems_it.hasNext()) { + ComponentWarehouseItem etElem = (ComponentWarehouseItem) artElems_it.next(); + Article art = new Article(); + try { + art = dao.getArtikel(etElem.getId()); + } catch (WiSimDAOException e) { + wiSimLogger.log("getArtikelImLagerplatzInfo()", e); + } + + etElem.setEinzelteilName(art.getName()); + etElem.setMinBestand(art.getMindestbestand()); + etElems.add(etElem); + + jComboBoxArtikelImLager.insertItemAt(art.getName(), i); + i++; + } + + while (etElems_it.hasNext()) { + ComponentWarehouseItem etElem = (ComponentWarehouseItem) etElems_it.next(); + WiSimComponent et = new WiSimComponent(); + try { + et = dao.getEinzelteil(etElem.getId()); + } catch (WiSimDAOException e) { + wiSimLogger.log("getArtikelImLagerplatzInfo()", e); + } + + etElem.setEinzelteilName(et.getName()); + etElem.setMinBestand(et.getMindestbestand()); + etElems.add(etElem); + + jComboBoxArtikelImLager.insertItemAt(et.getName(), i); + i++; + } + if (jComboBoxArtikelImLager.getItemCount() == 0) { + jComboBoxArtikelImLager.insertItemAt("leer", 0); + } + jComboBoxArtikelImLager.setSelectedIndex(0); + } + + if (jComboBoxLagerplatz.getSelectedItem().toString().equals("Select:")) { + actLgPlatz = jComboBoxLagerplatz.getSelectedItem().toString(); + jComboBoxArtikelImLager.removeAllItems(); + etElems.removeAll(etElems); + jTextFieldMindestbestand.setText(""); + jTextFieldBestand.setText(""); + jTextFieldBelegung.setText(""); + jTextFieldFrei.setText(""); + jComboBoxArtikelImLager.setSelectedIndex(-1); + } + } + } + + /** + * Gibt alle Lagerplaetze aus der DB aus + */ + private void getStoragePlaces() { + jComboBoxLagerplatz.removeAllItems(); + jComboBoxLagerplatz.addItem("Select:"); + try { + lagerplaetze = dao.getLagerplaetze(); + } catch (WiSimDAOException e) { + wiSimLogger.log("getLagerplaetze()", e); + } + + Iterator lgPlatz_it = lagerplaetze.iterator(); + while (lgPlatz_it.hasNext()) { + WarehouseLocation lgplatz = (WarehouseLocation) lgPlatz_it.next(); + jComboBoxLagerplatz.addItem(lgplatz.getStellplatzNr()); + } + } + + /** + * Aktualisiert die Gesamtliste + */ + private void refreshMainTable() { + + //Update der Lagerplatz-Detailansicht + if (!jComboBoxLagerplatz.getSelectedItem().equals("Select:") && !jComboBoxArtikelImLager.getSelectedItem().equals("leer")) { + etElems.removeAll(etElems); + + ArrayList etElemsCol = new ArrayList<>(); + ArrayList artElemsCol = new ArrayList<>(); + try { + etElemsCol = dao.getEinzelteilLagerElement(jComboBoxLagerplatz.getSelectedItem().toString()); + artElemsCol = dao.getArtikelLagerElement(jComboBoxLagerplatz.getSelectedItem().toString()); + } catch (WiSimDAOException e) { + wiSimLogger.log("refreshLagerGesamtliste()", e); + } + + Iterator artElems_it = artElemsCol.iterator(); + Iterator etElems_it = etElemsCol.iterator(); + int i = 0; + + while (artElems_it.hasNext()) { + ComponentWarehouseItem etElem = (ComponentWarehouseItem) artElems_it.next(); + Article art = new Article(); + try { + art = dao.getArtikel(etElem.getId()); + } catch (WiSimDAOException e) { + wiSimLogger.log("refreshLagerGesamtliste()", e); + } + + etElem.setEinzelteilName(art.getName()); + etElem.setMinBestand(art.getMindestbestand()); + etElems.add(etElem); + + i++; + } + + while (etElems_it.hasNext()) { + ComponentWarehouseItem etElem = (ComponentWarehouseItem) etElems_it.next(); + WiSimComponent et = new WiSimComponent(); + try { + et = dao.getEinzelteil(etElem.getId()); + } catch (WiSimDAOException e) { + wiSimLogger.log("refreshLagerGesamtliste()", e); + } + + etElem.setEinzelteilName(et.getName()); + etElem.setMinBestand(et.getMindestbestand()); + etElems.add(etElem); + } + + ComponentWarehouseItem selectedElem = (ComponentWarehouseItem) etElems.get(jComboBoxArtikelImLager.getSelectedIndex()); + + //Aktualisiere nur wenn sich der Bestand ge�ndert hat! + if (selectedElem.getBestand() != Integer.parseInt(jTextFieldBestand.getText())) { + jTextFieldMindestbestand.setText(String.valueOf(selectedElem.getMinBestand())); + jTextFieldBestand.setText(String.valueOf(selectedElem.getBestand())); + jTextFieldBelegung.setText(String.valueOf(selectedElem.getBestand() * 100 / selectedElem.getMaxBestand())); + jTextFieldFrei.setText(String.valueOf(selectedElem.getMaxBestand() - selectedElem.getBestand())); + } + } + + //Update der Gesamtliste + try { + einzelteileListe = dao.getEinzelteilLagerElement(); + artikelListe = 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); + + IconGenerater iconGen = new IconGenerater(); + + double actBestand = artikel.getBestand(); + double actMaxBestand = artikel.getMaxBestand(); + + double rects = (double) (actBestand / actMaxBestand) * 5; + int filledrectsCount = (int) Math.round(rects); + + if (artikel.getBestand() < artikel.getMinBestand()) { + jTableGesamtliste.setValueAt(iconGen.generateIcon(2, filledrectsCount), i, 5); + } else if ((artikel.getBestand() - artikel.getMinBestand() / 2) < artikel.getMinBestand()) { + jTableGesamtliste.setValueAt(iconGen.generateIcon(1, filledrectsCount), i, 5); + } else { + jTableGesamtliste.setValueAt(iconGen.generateIcon(0, filledrectsCount), i, 5); + } + } + i++; + } + + Iterator et_it = einzelteileListe.iterator(); + while (et_it.hasNext()) { + ComponentWarehouseItem einzelteil = (ComponentWarehouseItem) et_it.next(); + + if (einzelteil.getBestand() != Integer.parseInt((String) jTableGesamtliste.getValueAt(i, 1))) { + jTableGesamtliste.setValueAt(String.valueOf(einzelteil.getBestand()), i, 1); + + IconGenerater iconGen = new IconGenerater(); + + double actBestand = einzelteil.getBestand(); + double actMaxBestand = einzelteil.getMaxBestand(); + + double rects = (double) (actBestand / actMaxBestand) * 5; + int filledrectsCount = (int) Math.round(rects); + + if (einzelteil.getBestand() < einzelteil.getMinBestand()) { + jTableGesamtliste.setValueAt(iconGen.generateIcon(2, filledrectsCount), i, 5); + } else if ((einzelteil.getBestand() - einzelteil.getMinBestand() / 2) < einzelteil.getMinBestand()) { + jTableGesamtliste.setValueAt(iconGen.generateIcon(1, filledrectsCount), i, 5); + } else { + jTableGesamtliste.setValueAt(iconGen.generateIcon(0, filledrectsCount), i, 5); + } + } + 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 isBuilt + */ + public boolean getIsBuilt() { + return isBuilt; + } + + /* (non-Javadoc) * @see net.sourceforge.wisim.model.SimulationPane#refresh() - */ - public void refresh() { - refreshMainTable(); - } -} \ No newline at end of file + */ + public void refresh() { + refreshMainTable(); + } +} diff --git a/wisim/src/java/net/sourceforge/wisim/controller/JPanelWorkPlaceStore.java b/wisim/src/java/net/sourceforge/wisim/controller/JPanelWorkPlaceStore.java index 894dc65..e106878 100644 --- a/wisim/src/java/net/sourceforge/wisim/controller/JPanelWorkPlaceStore.java +++ b/wisim/src/java/net/sourceforge/wisim/controller/JPanelWorkPlaceStore.java @@ -44,7 +44,7 @@ public class JPanelWorkPlaceStore extends javax.swing.JPanel implements Refreshable { private WiSimDAO dao; - private Vector arbeitsplaetze; + private ArrayList arbeitsplaetze; private Collection arbeitsplatzLager; private int apAnzahl; private int apElemAnzahl; @@ -64,7 +64,7 @@ public JPanelWorkPlaceStore(WiSimMainController wiSimMainController) { this.wiSimMainController = wiSimMainController; wiSimLogger = wiSimMainController.getWiSimLogger(); initDAO(wiSimMainController); - arbeitsplaetze = new Vector(); + arbeitsplaetze = new ArrayList<>(); arbeitsplatzLager = new Vector(); apAnzahl = 0; apElemAnzahl = 0; @@ -83,7 +83,7 @@ private void initDAO(WiSimMainController wiSimMainController) { * 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 void initComponents() {//GEN-BEGIN:initComponents jLabelArbeitsplatzlager = new javax.swing.JLabel(); jPanelArbeitsplatzlager = new javax.swing.JPanel(); jScrollPaneGesamtliste = new javax.swing.JScrollPane(); @@ -258,41 +258,41 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { add(jPanelArbeiter); jPanelArbeiter.setBounds(590, 430, 190, 110); - } //GEN-END:initComponents + }//GEN-END:initComponents - private void formAncestorRemoved(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_formAncestorRemoved + private void formAncestorRemoved(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_formAncestorRemoved wiSimMainController.removeActivPanel(this); - } //GEN-LAST:event_formAncestorRemoved + }//GEN-LAST:event_formAncestorRemoved - private void formAncestorAdded(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_formAncestorAdded + private void formAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_formAncestorAdded setIsBuilt(true); wiSimMainController.addActivPanel(this); - } //GEN-LAST:event_formAncestorAdded + }//GEN-LAST:event_formAncestorAdded - private void jPanelArbeiterAncestorAdded(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_jPanelArbeiterAncestorAdded + 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)); - } //GEN-LAST:event_jPanelArbeiterAncestorAdded + }//GEN-LAST:event_jPanelArbeiterAncestorAdded - private void jButtonOkActionPerformed(java.awt.event.ActionEvent evt) { //GEN-FIRST:event_jButtonOkActionPerformed + 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(); - } //GEN-LAST:event_jButtonOkActionPerformed + }//GEN-LAST:event_jButtonOkActionPerformed - private void jTableGesamtlisteAncestorAdded(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_jTableGesamtlisteAncestorAdded + private void jTableGesamtlisteAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jTableGesamtlisteAncestorAdded resetMainTable(); - } //GEN-LAST:event_jTableGesamtlisteAncestorAdded + }//GEN-LAST:event_jTableGesamtlisteAncestorAdded - private void jTableArbeitsplaetzeMouseClicked(java.awt.event.MouseEvent evt) { //GEN-FIRST:event_jTableArbeitsplaetzeMouseClicked + private void jTableArbeitsplaetzeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableArbeitsplaetzeMouseClicked getWorkPlaceStorageElements(); - } //GEN-LAST:event_jTableArbeitsplaetzeMouseClicked + }//GEN-LAST:event_jTableArbeitsplaetzeMouseClicked - private void jScrollPaneArbeitsplaetzeAncestorAdded(javax.swing.event.AncestorEvent evt) { //GEN-FIRST:event_jScrollPaneArbeitsplaetzeAncestorAdded + private void jScrollPaneArbeitsplaetzeAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jScrollPaneArbeitsplaetzeAncestorAdded getWorkPlaceStorage(); - } //GEN-LAST:event_jScrollPaneArbeitsplaetzeAncestorAdded + }//GEN-LAST:event_jScrollPaneArbeitsplaetzeAncestorAdded // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton jButtonOk; diff --git a/wisim/src/java/net/sourceforge/wisim/dao/WiSimDAO.java b/wisim/src/java/net/sourceforge/wisim/dao/WiSimDAO.java index 647b835..299369b 100644 --- a/wisim/src/java/net/sourceforge/wisim/dao/WiSimDAO.java +++ b/wisim/src/java/net/sourceforge/wisim/dao/WiSimDAO.java @@ -1,8 +1,8 @@ /* ******************************************************************** ** ** Copyright notice ** ** ** -** (c) 2003 WiSim Development Team ** -** https://github.com/kpatzwald/WiSim ** +** (c) 2003 WiSim Development Team ** +** https://github.com/kpatzwald/WiSim ** ** ** ** All rights reserved ** ** ** @@ -29,14 +29,16 @@ */ package net.sourceforge.wisim.dao; +import java.util.ArrayList; import java.util.Collection; -import java.util.Hashtable; -import java.util.Vector; +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.ComponentContractItem; +import net.sourceforge.wisim.model.ComponentWarehouseItem; import net.sourceforge.wisim.model.Contract; import net.sourceforge.wisim.model.ContractAccount; import net.sourceforge.wisim.model.Customer; @@ -44,9 +46,11 @@ import net.sourceforge.wisim.model.OrderItem; import net.sourceforge.wisim.model.Supplier; import net.sourceforge.wisim.model.SupplyList; +import net.sourceforge.wisim.model.WarehouseLocation; import net.sourceforge.wisim.model.WiSimComponent; import net.sourceforge.wisim.model.WorkPlace; import net.sourceforge.wisim.model.WorkPlaceStore; +import net.sourceforge.wisim.networkplan.NetworkplanElement; /** Interface for accessing persitent data, saved in a sql database. * @@ -66,7 +70,7 @@ public interface WiSimDAO { * @return a Collection object containing all customers * @throws WiSimDAOException if a database problem occurs or the connection was never initialized */ - public Collection getKunden() throws WiSimDAOException; + public Collection getKunden() throws WiSimDAOException; /** Gibt eine ContractAccount eines Auftrages zurück. * @param atrNr Auftragrechnungs Nummer @@ -79,7 +83,7 @@ public interface WiSimDAO { * @return Collection von ContractAccount * @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 * @return Object Customer @@ -141,7 +145,7 @@ public interface WiSimDAO { * @param KdNr Kunden Nummer * @throws WiSimDAOException if a database problem occurs or the connection was never initialized */ - public Collection getNotizen(int KdNr) throws WiSimDAOException; + public Collection getNotizen(int KdNr) throws WiSimDAOException; /** Laden einer Memo * @return Object Memo @@ -176,7 +180,7 @@ public interface WiSimDAO { * @throws WiSimDAOException Fehler beim Abfragen der DB * @return Collection mit Objekten vom Typ Supplier */ - public Collection getLieferanten() throws WiSimDAOException; + public Collection getLieferanten() throws WiSimDAOException; /** Markiert einen Lieferanten als geloescht bzw sichtbar * @throws com.pixelpark.wisim.dao.WiSimDAOException if a database problem occurs or the connection was never initialized @@ -191,7 +195,7 @@ public interface WiSimDAO { * @return Collection * @throws WiSimDAOException ToDo */ - public Collection getEinzelteile() throws WiSimDAOException; + public Collection getEinzelteile() throws WiSimDAOException; /** Holt ein WiSimComponent aus der Datenbank * @return WiSimComponent @@ -228,7 +232,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 Collection getLieferliste(int lieferantenID) throws WiSimDAOException; /** Diese Funktion verringert den Bestand eines Einzelteils an einem * bestimmten WorkPlace um die Anzahl der benötigten Teil pro Arbeitszeit. @@ -268,7 +272,7 @@ public interface WiSimDAO { * @throws WiSimDAOException Wenn ein Fehler beim Zugriff auf die DB auftritt. * @return Liste mit Einzelteilen */ - public Collection getArbeitsplatzLager(int arbeitsplatzNr) throws WiSimDAOException; + public Collection getArbeitsplatzLager(int arbeitsplatzNr) throws WiSimDAOException; /** Erstellt einen neuen Einzelteileauftrag * @param einzelteilauftrag Der ComponentContract. @@ -298,7 +302,7 @@ public interface WiSimDAO { * @return Collection * @throws WiSimDAOException ToDo */ - public Collection getAlleArtikel() throws WiSimDAOException; + public Collection
getAlleArtikel() throws WiSimDAOException; /** Holt ein Article aus der Datenbank * @return Article @@ -323,23 +327,23 @@ public interface WiSimDAO { /** Gibt eine Liste aller Einzelteilaufträge zurück. * @throws WiSimDAOException if a database problem occurs or the connection was never initialized - * @return Vector mit allen Einzelteilaufträgen + * @return ArrayList mit allen Einzelteilaufträgen */ - public Vector getEinzelteilauftraege() throws WiSimDAOException; + public ArrayList getEinzelteilauftraege() throws WiSimDAOException; /** Gibt alle Positionen eines Einzelteilauftrages zurück. * @param etatNr Einzelteilauftrags Nummer * @throws WiSimDAOException if a database problem occurs or the connection was never initialized * @return Collection mit allen Einzelteilauftragspositionen */ - public Collection getEinzelteilAuftragsPositionen(int etatNr) throws WiSimDAOException; + public Collection getEinzelteilAuftragsPositionen(int etatNr) throws WiSimDAOException; /** Gibt alle Positionen eines Auftrages zurück. * @param atNr Auftrags Nummer * @throws WiSimDAOException if a database problem occurs or the connection 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. @@ -353,7 +357,7 @@ public interface WiSimDAO { * @throws WiSimDAOException if a database problem occurs or the connection was never initialized * @return Collection aller Lagerplätze */ - public Collection getLagerplaetze() throws WiSimDAOException; + public Collection getLagerplaetze() throws WiSimDAOException; /** Gibt eine Liste aller Einzelteile die sich im Lager befinden zurück. * Jeder Eintrag hat neben den Informationen WiSimComponent-Name auch die Zahlen für @@ -363,7 +367,7 @@ public interface WiSimDAO { * @throws WiSimDAOException if a database problem occurs or the connection was never initialized * @return Vector mit allen Einzelteilen die sich im Lager befinden. */ - public Vector getEinzelteilLagerElement() throws WiSimDAOException; + public ArrayList getEinzelteilLagerElement() throws WiSimDAOException; /** Gibt eine Liste aller Einzelteile die sich auf dem angegebenen WarehouseLocation befinden zurück. * Jeder Eintrag hat neben den Informationen WiSimComponent-Name auch die Zahlen für @@ -372,14 +376,14 @@ public interface WiSimDAO { * @throws WiSimDAOException if a database problem occurs or the connection was never initialized * @return Collection mit allen Einzelteilen des Lagerplatzes */ - public Collection getEinzelteilLagerElement(String lagerplatz) throws WiSimDAOException; + public ArrayList getEinzelteilLagerElement(String lagerplatz) throws WiSimDAOException; /** Liefert alle Lagerplätze zurück, die einen bestimmten Article enthalten * @return Collection mit den Lagerplätzen wo das WiSimComponent liegt. * @param etNr WiSimComponent Nummer * @throws WiSimDAOException if a database problem occurs or the connection was never initialized */ - public Collection getLagerplaetze(int etNr) throws WiSimDAOException; + public Collection getLagerplaetze(int etNr) throws WiSimDAOException; /** Gibt eine Liste aller Article die sich im Lager befinden zurück. * Jeder Eintrag hat neben den Informationen Article-Name auch die Zahlen für @@ -389,7 +393,7 @@ public interface WiSimDAO { * @throws WiSimDAOException if a database problem occurs or the connection was never initialized * @return Vector mit allen Artikeln die im Lager sind. */ - public Vector getArtikelLagerElement() throws WiSimDAOException; + public ArrayList getArtikelLagerElement() throws WiSimDAOException; /** Gibt eine Liste aller Article die sich auf dem angegebenen WarehouseLocation befinden zurück. * Jeder Eintrag hat neben den Informationen Article-Name auch die Zahlen für @@ -398,7 +402,7 @@ public interface WiSimDAO { * @throws WiSimDAOException if a database problem occurs or the connection was never initialized * @return Collection mit allen Artikeln die auf dem WarehouseLocation liegen */ - public Collection getArtikelLagerElement(String lagerplatz) throws WiSimDAOException; + public ArrayList getArtikelLagerElement(String lagerplatz) throws WiSimDAOException; /** Erhöht / Erniedrigt den Bestand eines Einzelteils im Lager. * @param etNr WiSimComponent Nummer @@ -433,7 +437,7 @@ public interface WiSimDAO { * @throws WiSimDAOException if an error occurs * @return Vector mit allen Arbeitsplaetzen */ - public Vector getArbeitsplaetze() throws WiSimDAOException; + public ArrayList getArbeitsplaetze() throws WiSimDAOException; /** * @param arbeitsplatzNr @@ -450,27 +454,27 @@ public interface WiSimDAO { * @return Collection * @throws WiSimDAOException */ - public Collection getArbeitsplatzLager(int arbeitsplatzNr, String lagerTyp) throws WiSimDAOException; + public Collection getArbeitsplatzLager(int arbeitsplatzNr, String lagerTyp) throws WiSimDAOException; /** Gibt Stueckliste für einen bestimmten Article zurück. Der Key der Hashtable ist * die WiSimComponent-Nummer, der Value ist die erforderliche Menge um 1 Stück von * diesem Article zu produzieren. * @param artNr Article Nummer * @throws WiSimDAOException if an database error occurs - * @return Hashtable (Stückliste) + * @return HashMap (Stückliste) */ - public Hashtable getStueckliste(int artNr) throws WiSimDAOException; + public HashMap getStueckliste(int artNr) throws WiSimDAOException; /** Holt alle Verträge aus der Datenbank * @return Collection * @throws WiSimDAOException */ - public Collection getVertraege() throws WiSimDAOException; + public Collection getVertraege() throws WiSimDAOException; /** Holt einen Contract aus der Datenbank * @return Contract * @throws WiSimDAOException - * @param int id + * @param id The id of the contract */ public Contract getVertrag(int id) throws WiSimDAOException; @@ -530,7 +534,7 @@ public interface WiSimDAO { * @return Collection aller Vorgaenge (NetzplanElemente) * @throws WiSimDAOException If an error occurs */ - public Vector getNetworkplanElements() throws WiSimDAOException; + public ArrayList getNetworkplanElements() throws WiSimDAOException; /** * Update a workplace @@ -552,5 +556,5 @@ public interface WiSimDAO { */ public void simulationReset() throws WiSimDAOException; - public Hashtable getEtCapacity() throws WiSimDAOException; + public HashMap> getEtCapacity() throws WiSimDAOException; } \ No newline at end of file diff --git a/wisim/src/java/net/sourceforge/wisim/dao/WiSimDAOImpl.java b/wisim/src/java/net/sourceforge/wisim/dao/WiSimDAOImpl.java index 37807ca..5824b4d 100644 --- a/wisim/src/java/net/sourceforge/wisim/dao/WiSimDAOImpl.java +++ b/wisim/src/java/net/sourceforge/wisim/dao/WiSimDAOImpl.java @@ -1,8 +1,9 @@ /* ******************************************************************** ** ** Copyright notice ** ** ** -** (c) 2003 WiSim Development Team ** -** https://github.com/kpatzwald/WiSim ** +** (c) 2003 WiSim Development Team ** +** ** +** https://github.com/kpatzwald/WiSim ** ** ** ** All rights reserved ** ** ** @@ -21,12 +22,11 @@ ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ -/* + /* * WiSimDAOImpl.java * * Created on 09. February 2003, 11:56 */ - package net.sourceforge.wisim.dao; import java.io.DataInputStream; @@ -41,17 +41,18 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.util.ArrayList; import java.util.Base64; import java.util.Base64.Encoder; import java.util.Collection; -import java.util.Hashtable; +import java.util.HashMap; import java.util.Iterator; -import java.util.Vector; import java.util.logging.Logger; import java.util.regex.Pattern; import javax.swing.JOptionPane; import javax.swing.UIManager; +import javax.swing.UnsupportedLookAndFeelException; import net.sourceforge.wisim.model.Article; import net.sourceforge.wisim.model.City; @@ -72,2673 +73,2925 @@ import net.sourceforge.wisim.model.WorkPlaceStore; import net.sourceforge.wisim.networkplan.NetworkplanElement; -/** Implements the interface CWiSimDAO to work with an mySQL database. +/** + * Implements the interface CWiSimDAO to work with an mySQL + * database. * * @author Kay Patzwald */ public class WiSimDAOImpl implements WiSimDAO, WiSimAuthentificationDAO { - /** Authentification-Informations - * - */ - private String hostName; - private String port; - private String dbName; //durch die Applikation vorgegeben - private String user; - private String password; - - /** a java.util.Logger for all logging in this package... - */ - private static Logger logger = Logger.getLogger("com.pixelpark.wisim.controller"); - - /** Database-connection for the DAO-Object - */ - private Connection conn; - - /** Initializing the Database-connetcion with Database-Driver, - * user and password... - * @throws com.pixelpark.wisim.dao.WiSimDAOException if a database problem occurs - */ - protected void initialize() throws WiSimDAOException { - - //PLAF wird f�r die JOptionPanes gesetzt - com.incors.plaf.kunststoff.KunststoffLookAndFeel plaf = new com.incors.plaf.kunststoff.KunststoffLookAndFeel(); - - try { - UIManager.setLookAndFeel(plaf); - } catch (Exception e) { - } - - hostName = ""; - port = ""; - dbName = "wisim"; //durch die Applikation vorgegeben - user = ""; - password = ""; - - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.initialize() Action: start"); - // Serverlog - try { - // Load the MySQl JDBC driver - DriverManager.registerDriver(new org.gjt.mm.mysql.Driver()); - - //Datei mit DB Infos wird eingelesen - String result = ""; - try { - FileInputStream file = new FileInputStream("config.dat"); - DataInputStream in = new DataInputStream(file); - - Base64.Decoder decoder = Base64.getDecoder(); - byte[] b = decoder.decode(in.readAllBytes()); - in.close(); - result = new String(b); - } - - //Die Datei ist noch nicht vorhanden und wird angelegt mit den Defaultwerten - catch (IOException e) { - try { - String defaultValues = "localhost\n3306\nroot"; - Encoder encoder = Base64.getEncoder(); - defaultValues = encoder.encodeToString(defaultValues.getBytes()); - File file = new File("config.dat"); - FileWriter fw = new FileWriter(file); - fw.write(defaultValues); - fw.close(); - result = "localhost\n3306\nroot"; - } catch (IOException ioE) { - } - } - - Pattern p = Pattern.compile("\n"); - String[] daten = p.split(result); - - //Manipulation verhindern - if (daten.length < 3 || daten.length > 4) { - result = "localhost\n3306\nroot"; - daten = p.split(result); - } - - //Variablen bekommen die Werte aus der "config.dat" - hostName = daten[0].trim(); - - port = daten[1].trim(); - - user = daten[2].trim(); - - //Wurde kein Passwort gesetzt, so ist dieses ein Leerstring - if (daten.length < 4) - password = ""; - else - password = daten[3].trim(); - - // Connect to the database - // You must put a database name after the @ sign in the connection URL. - // You can use either the fully specified SQL*net syntax or a short cut - // syntax as ::. - - //Zun�chst wird �berpr�ft ob eine Datenbank mit dem Namen "wisim" vorhanden ist - conn = DriverManager.getConnection("jdbc:mysql://" + hostName + ":" + port + "/?useUnicode=true&characterEncoding=utf-8", user, password); - conn.setAutoCommit(false); - - boolean wisimExists = false; - - try { - // Create a Statement - Statement stmt = conn.createStatement(); - String sql = "SHOW DATABASES"; - ResultSet rset = stmt.executeQuery(sql); - - while (rset.next()) { - if (rset.getString("Database").equals("wisim")) { - wisimExists = true; - break; - } - } - - } catch (SQLException sqlE) { - } - - //Die Datenbank muss aufgesetzt werden - if (!wisimExists) { - - int x = JOptionPane.showConfirmDialog(null, "Die Datenbank \"wisim\" wurde nicht gefunden!\n" + "Soll diese angelegt werden?", "Datenbank anlegen", JOptionPane.YES_NO_OPTION); - if (x == 0) { - // Create a Statement - Statement stmt = conn.createStatement(); - String sql = "CREATE DATABASE wisim"; - stmt.execute(sql); - - URL url = getClass().getResource("/sql/complete.sql"); - - try { - InputStream in = url.openStream(); - DataInputStream data = new DataInputStream(in); - - byte buffer[] = new byte[in.available()]; - data.readFully(buffer); - in.close(); - - result = new String(buffer, 0, buffer.length); - p = Pattern.compile("\n"); - - String[] anweisungen = p.split(result); - int n = 0; - for (int i = 0; i < anweisungen.length; i++) { - if (anweisungen[i].startsWith("#") || anweisungen[i].toCharArray().length == 1) { - anweisungen[i] = null; - n++; - } - } - - String[] queries = new String[anweisungen.length - n]; - int j = 0; - for (int i = 0; i < anweisungen.length; i++) { - if (anweisungen[i] != null) { - queries[j] = anweisungen[i]; - j++; - } - } - - int i = 0; - int m = 1; - while (i < queries.length) { - if (queries[i].startsWith(" ")) { - queries[i - m] = queries[i - m].concat(queries[i]); - m++; - queries[i] = null; - } else if (queries[i].startsWith(")")) { - queries[i - m] = queries[i - m].concat(queries[i]); - queries[i] = null; - } else - m = 1; - i++; - } - - int a = 0; - for (int b = 0; b < queries.length; b++) { - if (queries[b] == null) { - a++; - } - } - - String[] queriesFinal = new String[queries.length - a]; - int c = 0; - for (int d = 0; d < queries.length; d++) { - if (queries[d] != null) { - queriesFinal[c] = queries[d]; - c++; - } - } - - for (int z = 0; z < queriesFinal.length; z++) { - char ersetzen[] = queriesFinal[z].toCharArray(); - for (int e = 0; e < ersetzen.length; e++) { - if (ersetzen[e] == ';' || ersetzen[e] == '\n') { - ersetzen[e] = ' '; - } - } - queriesFinal[z] = String.valueOf(ersetzen); - } - - try { - // Load the MySQl JDBC driver - DriverManager.registerDriver(new org.gjt.mm.mysql.Driver()); - - // Connect to the database - // You must put a database name after the @ sign in the connection URL. - // You can use either the fully specified SQL*net syntax or a short cut - // syntax as ::. - conn = DriverManager.getConnection("jdbc:mysql://" + hostName + ":" + port + "/" + dbName + "?useUnicode=true&characterEncoding=utf-8", user, password); - conn.setAutoCommit(false); - - try { - - stmt = conn.createStatement(); - for (int k = 0; k < queriesFinal.length; k++) { - stmt.executeUpdate(queriesFinal[k]); - } - - } catch (SQLException e) { - - } - } catch (SQLException sqlE) { - - } - - } catch (Exception e) { - - } - JOptionPane.showMessageDialog(null, "Die Datenbank wurde erfolgreich aufgesetzt!"); - } else { - JOptionPane.showMessageDialog(null, "Ohne Datenbank l�uft diese Applikation nicht!", "Fehler", JOptionPane.ERROR_MESSAGE); - System.exit(1); - } - } - - conn = DriverManager.getConnection("jdbc:mysql://" + hostName + ":" + port + "/" + dbName + "?useUnicode=true&characterEncoding=utf-8", user, password); - conn.setAutoCommit(false); - } - - //Bei der Verbindung tritt ein Problem auf und der Benutzer wird gebeten die - //DB-Einstellungen zu �berpr�fen (mit JOptionPanes) - catch (SQLException sqlE) { - JOptionPane.showMessageDialog(null, "MySQL meldet:\n" + sqlE.getMessage(), "Fehler beim Verbinden mit Datenbank", JOptionPane.ERROR_MESSAGE); - - String nachricht = "Verbindung zu der Datenbank konnte nicht hergestellt werden!\n" + "Bitte �berpr�fen Sie die vorhandenen Zugangsdaten.\n" + "(Zum Beenden bitte auf \"Abbrechen\" klicken)\n\n"; - - //IP muss evtl. ge�ndert werden - hostName = JOptionPane.showInputDialog(nachricht + "Schritt 1) IP �berpr�fen: ", hostName); - if (hostName == null) { - System.exit(1); - } - if (hostName.equals("")) { - hostName = "localhost"; - } - - //Port muss evtl. ge�ndert werden - port = JOptionPane.showInputDialog(nachricht + "Schritt 2) Port �berpr�fen (Standard: 3306): ", port); - if (port == null) { - System.exit(1); - } - if (port.equals("")) { - port = "3306"; - } - - //Username muss evtl. ge�ndert werden - user = JOptionPane.showInputDialog(nachricht + "Schritt 3) Benutzername �berpr�fen: ", user); - if (user == null) { - System.exit(1); - } - if (user.equals("")) { - user = "root"; - } - - //PW muss evtl. ge�ndert werden - password = JOptionPane.showInputDialog(nachricht + "Schritt 4) Passwort �berpr�fen (wird nicht angezeigt!): "); - if (password == null) { - System.exit(1); - } - - //Die Daten werden wieder in die "config.dat" geschrieben - - String values = hostName + "\n" + port + "\n" + user + "\n" + password; - byte[] b = values.getBytes(); - Encoder encoder = Base64.getEncoder(); - values = encoder.encodeToString(b); - - try { - File file = new File("config.dat"); - FileWriter fw = new FileWriter(file); - fw.write(values); - fw.close(); - } catch (IOException e) { - } - - //Es wird erneut eine Verbindung aufgebaut - initialize(); - } - } - - /** method to create a new customer - * @param kunde Objekt: kunde - * @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 KundenNr - */ - public int neuerKunde(Customer kunde) throws WiSimDAOException, WiSimDAOWriteException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); - String sql = ""; - int key = -1; - try { - try { - //Update der Tabelle: Ort - Statement stmt = conn.createStatement(); - - // Create a Statement - //Statement stmt = conn.createStatement(); - // update statement for record in table contract - // Neuer Kunde wird angelegt - 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() - + "\", \"" - + kunde.getVorname() - + "\", \"" - + kunde.getFirma() - + "\", \"" - + kunde.getStrasse() - + "\", \"" - + kunde.getPlzId() - + "\", \"" - + kunde.getTelefon() - + "\", \"" - + kunde.getFax() - + "\", \"" - + kunde.getEmail() - + "\", \"" - + kunde.getKundentyp() - + "\") "; - - stmt.executeUpdate(sql); - - ResultSet lastKey = stmt.getGeneratedKeys(); - while (lastKey.next()) { - key = lastKey.getInt(1); - } - } catch (SQLException sqlE) { - conn.rollback(); - throw new WiSimDAOWriteException(sqlE.getMessage()); - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return key; - } - - /** Holt alle Kunden aus der Datenbank - * @return Collection - * @throws WiSimDAOException Fehler beim Abfragen der DB - */ - public Collection getKunden() throws WiSimDAOException { - String sql = "SELECT * FROM kd WHERE kd_deleted = 'FALSE'"; - Collection kunden = (Collection) new Vector(); - try { - // Create a Statement - Statement stmt = conn.createStatement(); - ResultSet rset = stmt.executeQuery(sql); - City ort = new City(); - - 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 - ort = getOrt(rset.getInt("f_ort_Nr")); - kundendaten.setPlz(ort.getPlz()); - kundendaten.setOrt(ort.getName()); - kunden.add(kundendaten); - } - - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return kunden; - } - - /** gibt alle Auftragsrechnungen aus - * @return Collection von ContractAccount - * @throws WiSimDAOException if a database problem occurs or the connection was never initialized - */ - public Collection getAuftragsrechnungen() throws WiSimDAOException { - String sql = "SELECT * FROM atr"; - Collection atrechnungen = (Collection) new Vector(); - try { - // Create a Statement - Statement stmt = conn.createStatement(); - ResultSet rset = stmt.executeQuery(sql); - - while (rset.next()) { - ContractAccount atr = new ContractAccount(); - atr.setNr(rset.getInt("atr_Nr")); - atr.setBetrag(rset.getDouble("atr_Betrag")); - atr.setAuftragNr(rset.getInt("f_at_Nr")); - atr.setMwSt(rset.getFloat("f_mwst_Satz")); - atr.setzEingang(rset.getBoolean("atr_zleingang")); - - atrechnungen.add(atr); - } - - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return atrechnungen; - } - - /** Holt einen Kunden aus der Datenbank - * @return Object Customer - * @param kdNr Kundennummer - * @throws WiSimDAOException Fehler beim Abfragen der DB - */ - public Customer getKunde(int kdNr) throws WiSimDAOException { - String sql = "SELECT * FROM kd WHERE kd_Nr = " + kdNr + ""; - try { - // Create a Statement - Statement stmt = conn.createStatement(); - ResultSet rset = stmt.executeQuery(sql); - City ort = new City(); - Customer kundendaten = 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; - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return null; - } - - /** Aendert Kundendaten - * @param kunde the object, containing the changed data of a customer - * @throws com.pixelpark.wisim.dao.WiSimDAOException if a database problem occurs or the connection was never initialized - * @throws com.pixelpark.wisim.dao.WiSimDAOWriteException if there was a db constaint violation - * @return Boolean - */ - public int aendereKunden(Customer kunde) throws WiSimDAOException, WiSimDAOWriteException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); - - City ort = getOrt(kunde.getPlzId()); - int plz = kunde.getPlzId(); - - if (ort == null) { - ort = new City(kunde.getPlzId(), kunde.getPlz(), kunde.getOrt()); - plz = this.neuerOrt(ort); - } - - String sql = ""; - int key = -1; - try { - try { - - Statement stmt = conn.createStatement(); - sql = - "UPDATE kd SET " - + "kd_Name = '" - + kunde.getNachname() - + "', " - + "kd_Vorname = '" - + kunde.getVorname() - + "', " - + "kd_Firma = '" - + kunde.getFirma() - + "', " - + "kd_Strasse = '" - + kunde.getStrasse() - + "', " - + "f_ort_Nr = '" - + plz - + "', " - + "kd_Telefon = '" - + kunde.getTelefon() - + "', " - + "kd_Fax = '" - + kunde.getFax() - + "', " - + "kd_Email = '" - + kunde.getEmail() - + "', " - + "kd_Typ = '" - + kunde.getKundentyp() - + "', " - + "kd_Anspruch ='" - + kunde.getAnspruch() - + "', " - + "kd_Zahlungsmoral ='" - + kunde.getZahlungsmoral() - + "' " - + "WHERE kd_Nr = " - + kunde.getId() - + ""; - - stmt.executeUpdate(sql); - ResultSet lastKey = stmt.getGeneratedKeys(); - while (lastKey.next()) { - key = lastKey.getInt(1); - } - } catch (SQLException sqlE) { - conn.rollback(); - throw new WiSimDAOWriteException(sqlE.getMessage()); - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return key; - } - - /** Diese Funktion speichert einen neuen Lieferanten in der Datenbank. Wenn der - * angegebene City noch nicht vorhanden ist, wird er angelegt. - * @return int Lieferantennummer des neuen Supplier oder 0 wenn ein Fehler aufgetreten ist. - * @param lieferant Supplier - * @throws com.pixelpark.wisim.dao.WiSimDAOException if a database problem occurs or the connection was never initialized - * @throws com.pixelpark.wisim.dao.WiSimDAOWriteException if there was a db constaint violation - */ - public int neuerLieferant(Supplier lieferant) throws WiSimDAOException, WiSimDAOWriteException { - /* F�gt den Ort des neuen Lieferanten in die DB ein, wenn dieser noch + + /** + * Authentification-Informations + * + */ + private String hostName; + private String port; + private String dbName; //durch die Applikation vorgegeben + private String user; + private String password; + + /** + * a java.util.Logger for all logging in this package... + */ + private static final Logger logger = Logger.getLogger("com.pixelpark.wisim.controller"); + + /** + * Database-connection for the DAO-Object + */ + private Connection conn; + + /** + * Initializing the Database-connetcion with Database-Driver, user and + * password... + * + * @throws net.sourceforge.wisim.dao.WiSimDAOException + */ + protected void initialize() throws WiSimDAOException { + + //PLAF wird f�r die JOptionPanes gesetzt + com.incors.plaf.kunststoff.KunststoffLookAndFeel plaf = new com.incors.plaf.kunststoff.KunststoffLookAndFeel(); + + try { + UIManager.setLookAndFeel(plaf); + } catch (UnsupportedLookAndFeelException e) { + //TODO Fehler loggen + } + + hostName = ""; + port = ""; + dbName = "wisim"; //durch die Applikation vorgegeben + user = ""; + password = ""; + + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.initialize() Action: start"); + // Serverlog + try { + // Load the MySQl JDBC driver + DriverManager.registerDriver(new org.gjt.mm.mysql.Driver()); + + //Datei mit DB Infos wird eingelesen + String result = ""; + try { + FileInputStream file = new FileInputStream("config.dat"); + DataInputStream in = new DataInputStream(file); + + Base64.Decoder decoder = Base64.getDecoder(); + byte[] b = decoder.decode(in.readAllBytes()); + in.close(); + result = new String(b); + } //Die Datei ist noch nicht vorhanden und wird angelegt mit den Defaultwerten + catch (IOException e) { + try { + String defaultValues = "localhost\n3306\nroot"; + Encoder encoder = Base64.getEncoder(); + defaultValues = encoder.encodeToString(defaultValues.getBytes()); + File file = new File("config.dat"); + FileWriter fw = new FileWriter(file); + fw.write(defaultValues); + fw.close(); + result = "localhost\n3306\nroot"; + } catch (IOException ioE) { + } + } + + Pattern p = Pattern.compile("\n"); + String[] daten = p.split(result); + + //Manipulation verhindern + if (daten.length < 3 || daten.length > 4) { + result = "localhost\n3306\nroot"; + daten = p.split(result); + } + + //Variablen bekommen die Werte aus der "config.dat" + hostName = daten[0].trim(); + + port = daten[1].trim(); + + user = daten[2].trim(); + + //Wurde kein Passwort gesetzt, so ist dieses ein Leerstring + if (daten.length < 4) { + password = ""; + } else { + password = daten[3].trim(); + } + + // Connect to the database + // You must put a database name after the @ sign in the connection URL. + // You can use either the fully specified SQL*net syntax or a short cut + // syntax as ::. + //Zun�chst wird �berpr�ft ob eine Datenbank mit dem Namen "wisim" vorhanden ist + conn = DriverManager.getConnection("jdbc:mysql://" + hostName + ":" + port + "/?useUnicode=true&characterEncoding=utf-8", user, password); + conn.setAutoCommit(false); + + boolean wisimExists = false; + + try { + // Create a Statement + Statement stmt = conn.createStatement(); + String sql = "SHOW DATABASES"; + ResultSet rset = stmt.executeQuery(sql); + + while (rset.next()) { + if (rset.getString("Database").equals("wisim")) { + wisimExists = true; + break; + } + } + + } catch (SQLException sqlE) { + } + + //Die Datenbank muss aufgesetzt werden + if (!wisimExists) { + + int x = JOptionPane.showConfirmDialog(null, "Die Datenbank \"wisim\" wurde nicht gefunden!\n" + "Soll diese angelegt werden?", "Datenbank anlegen", JOptionPane.YES_NO_OPTION); + if (x == 0) { + // Create a Statement + Statement stmt = conn.createStatement(); + String sql = "CREATE DATABASE wisim"; + stmt.execute(sql); + + URL url = getClass().getResource("/sql/complete.sql"); + + try { + InputStream in = url.openStream(); + DataInputStream data = new DataInputStream(in); + + byte buffer[] = new byte[in.available()]; + data.readFully(buffer); + in.close(); + + result = new String(buffer, 0, buffer.length); + p = Pattern.compile("\n"); + + String[] anweisungen = p.split(result); + int n = 0; + for (int i = 0; i < anweisungen.length; i++) { + if (anweisungen[i].startsWith("#") || anweisungen[i].toCharArray().length == 1) { + anweisungen[i] = null; + n++; + } + } + + String[] queries = new String[anweisungen.length - n]; + int j = 0; + for (String anweisungen1 : anweisungen) { + if (anweisungen1 != null) { + queries[j] = anweisungen1; + j++; + } + } + + int i = 0; + int m = 1; + while (i < queries.length) { + if (queries[i].startsWith(" ")) { + queries[i - m] = queries[i - m].concat(queries[i]); + m++; + queries[i] = null; + } else if (queries[i].startsWith(")")) { + queries[i - m] = queries[i - m].concat(queries[i]); + queries[i] = null; + } else { + m = 1; + } + i++; + } + + int a = 0; + for (String querie : queries) { + if (querie == null) { + a++; + } + } + + String[] queriesFinal = new String[queries.length - a]; + int c = 0; + for (String querie : queries) { + if (querie != null) { + queriesFinal[c] = querie; + c++; + } + } + + for (int z = 0; z < queriesFinal.length; z++) { + char ersetzen[] = queriesFinal[z].toCharArray(); + for (int e = 0; e < ersetzen.length; e++) { + if (ersetzen[e] == ';' || ersetzen[e] == '\n') { + ersetzen[e] = ' '; + } + } + queriesFinal[z] = String.valueOf(ersetzen); + } + + try { + // Load the MySQl JDBC driver + DriverManager.registerDriver(new org.gjt.mm.mysql.Driver()); + + // Connect to the database + // You must put a database name after the @ sign in the connection URL. + // You can use either the fully specified SQL*net syntax or a short cut + // syntax as ::. + conn = DriverManager.getConnection("jdbc:mysql://" + hostName + ":" + port + "/" + dbName + "?useUnicode=true&characterEncoding=utf-8", user, password); + conn.setAutoCommit(false); + + try { + + stmt = conn.createStatement(); + for (String queriesFinal1 : queriesFinal) { + stmt.executeUpdate(queriesFinal1); + } + + } catch (SQLException e) { + + } + } catch (SQLException sqlE) { + + } + + } catch (IOException e) { + + } + JOptionPane.showMessageDialog(null, "Die Datenbank wurde erfolgreich aufgesetzt!"); + } else { + JOptionPane.showMessageDialog(null, "Ohne Datenbank läuft diese Applikation nicht!", "Fehler", JOptionPane.ERROR_MESSAGE); + System.exit(1); + } + } + + conn = DriverManager.getConnection("jdbc:mysql://" + hostName + ":" + port + "/" + dbName + "?useUnicode=true&characterEncoding=utf-8", user, password); + conn.setAutoCommit(false); + } //Bei der Verbindung tritt ein Problem auf und der Benutzer wird gebeten die + //DB-Einstellungen zu �berpr�fen (mit JOptionPanes) + catch (SQLException sqlE) { + JOptionPane.showMessageDialog(null, "MySQL meldet:\n" + sqlE.getMessage(), "Fehler beim Verbinden mit Datenbank", JOptionPane.ERROR_MESSAGE); + + String nachricht = "Verbindung zu der Datenbank konnte nicht hergestellt werden!\n" + "Bitte überprüfen Sie die vorhandenen Zugangsdaten.\n" + "(Zum Beenden bitte auf \"Abbrechen\" klicken)\n\n"; + + //IP muss evtl. ge�ndert werden + hostName = JOptionPane.showInputDialog(nachricht + "Schritt 1) IP überprüfen: ", hostName); + if (hostName == null) { + System.exit(1); + } + if (hostName.equals("")) { + hostName = "localhost"; + } + + //Port muss evtl. ge�ndert werden + port = JOptionPane.showInputDialog(nachricht + "Schritt 2) Port überprüfen (Standard: 3306): ", port); + if (port == null) { + System.exit(1); + } + if (port.equals("")) { + port = "3306"; + } + + //Username muss evtl. ge�ndert werden + user = JOptionPane.showInputDialog(nachricht + "Schritt 3) Benutzername überprüfen: ", user); + if (user == null) { + System.exit(1); + } + if (user.equals("")) { + user = "root"; + } + + //PW muss evtl. ge�ndert werden + password = JOptionPane.showInputDialog(nachricht + "Schritt 4) Passwort überprüfen (wird nicht angezeigt!): "); + if (password == null) { + System.exit(1); + } + + //Die Daten werden wieder in die "config.dat" geschrieben + String values = hostName + "\n" + port + "\n" + user + "\n" + password; + byte[] b = values.getBytes(); + Encoder encoder = Base64.getEncoder(); + values = encoder.encodeToString(b); + + try { + File file = new File("config.dat"); + FileWriter fw = new FileWriter(file); + fw.write(values); + fw.close(); + } catch (IOException e) { + } + + //Es wird erneut eine Verbindung aufgebaut + initialize(); + } + } + + /** + * method to create a new customer + * + * @param kunde Objekt: kunde + * @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 KundenNr + */ + @Override + public int neuerKunde(Customer kunde) throws WiSimDAOException, WiSimDAOWriteException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); + String sql; + int key = -1; + try { + try { + //Update der Tabelle: Ort + Statement stmt = conn.createStatement(); + + // Create a Statement + //Statement stmt = conn.createStatement(); + // update statement for record in table contract + // Neuer Kunde wird angelegt + 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() + + "\", \"" + + kunde.getVorname() + + "\", \"" + + kunde.getFirma() + + "\", \"" + + kunde.getStrasse() + + "\", \"" + + kunde.getPlzId() + + "\", \"" + + kunde.getTelefon() + + "\", \"" + + kunde.getFax() + + "\", \"" + + kunde.getEmail() + + "\", \"" + + kunde.getKundentyp() + + "\") "; + + stmt.executeUpdate(sql); + + ResultSet lastKey = stmt.getGeneratedKeys(); + while (lastKey.next()) { + key = lastKey.getInt(1); + } + } catch (SQLException sqlE) { + conn.rollback(); + throw new WiSimDAOWriteException(sqlE.getMessage()); + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return key; + } + + /** + * Holt alle Kunden aus der Datenbank + * + * @return Collection + * @throws WiSimDAOException Fehler beim Abfragen der DB + */ + @Override + public Collection getKunden() throws WiSimDAOException { + String sql = "SELECT * FROM kd WHERE kd_deleted = 'FALSE'"; + Collection kunden = (Collection) new ArrayList(); + try { + // Create a Statement + Statement stmt = conn.createStatement(); + ResultSet rset = stmt.executeQuery(sql); + 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 + ort = getOrt(rset.getInt("f_ort_Nr")); + kundendaten.setPlz(ort.getPlz()); + kundendaten.setOrt(ort.getName()); + kunden.add(kundendaten); + } + + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return kunden; + } + + /** + * gibt alle Auftragsrechnungen aus + * + * @return Collection<ContractAccount> + * @throws WiSimDAOException if a database problem occurs or the connection + * was never initialized + */ + @Override + public Collection getAuftragsrechnungen() throws WiSimDAOException { + String sql = "SELECT * FROM atr"; + Collection atrechnungen = new ArrayList<>(); + try { + // Create a Statement + Statement stmt = conn.createStatement(); + ResultSet rset = stmt.executeQuery(sql); + + while (rset.next()) { + ContractAccount atr = new ContractAccount(); + atr.setNr(rset.getInt("atr_Nr")); + atr.setBetrag(rset.getDouble("atr_Betrag")); + atr.setAuftragNr(rset.getInt("f_at_Nr")); + atr.setMwSt(rset.getFloat("f_mwst_Satz")); + atr.setzEingang(rset.getBoolean("atr_zleingang")); + + atrechnungen.add(atr); + } + + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return atrechnungen; + } + + /** + * Holt einen Kunden aus der Datenbank + * + * @return Object Customer + * @param kdNr Kundennummer + * @throws WiSimDAOException Fehler beim Abfragen der DB + */ + @Override + public Customer getKunde(int kdNr) throws WiSimDAOException { + String sql = "SELECT * FROM kd WHERE kd_Nr = " + kdNr + ""; + try { + // Create a Statement + Statement stmt = conn.createStatement(); + ResultSet rset = stmt.executeQuery(sql); + City ort; + Customer kundendaten = 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; + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return null; + } + + /** + * Aendert Kundendaten + * + * @param kunde the object, containing the changed data of a customer + * @return Boolean + * @throws net.sourceforge.wisim.dao.WiSimDAOException Fehler beim Abfragen der DB + * @throws net.sourceforge.wisim.dao.WiSimDAOWriteException + */ + @Override + public int aendereKunden(Customer kunde) throws WiSimDAOException, WiSimDAOWriteException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); + + City ort = getOrt(kunde.getPlzId()); + int plz = kunde.getPlzId(); + + if (ort == null) { + ort = new City(kunde.getPlzId(), kunde.getPlz(), kunde.getOrt()); + plz = this.neuerOrt(ort); + } + + String sql; + int key = -1; + try { + try { + + Statement stmt = conn.createStatement(); + sql = "UPDATE kd SET " + + "kd_Name = '" + + kunde.getNachname() + + "', " + + "kd_Vorname = '" + + kunde.getVorname() + + "', " + + "kd_Firma = '" + + kunde.getFirma() + + "', " + + "kd_Strasse = '" + + kunde.getStrasse() + + "', " + + "f_ort_Nr = '" + + plz + + "', " + + "kd_Telefon = '" + + kunde.getTelefon() + + "', " + + "kd_Fax = '" + + kunde.getFax() + + "', " + + "kd_Email = '" + + kunde.getEmail() + + "', " + + "kd_Typ = '" + + kunde.getKundentyp() + + "', " + + "kd_Anspruch ='" + + kunde.getAnspruch() + + "', " + + "kd_Zahlungsmoral ='" + + kunde.getZahlungsmoral() + + "' " + + "WHERE kd_Nr = " + + kunde.getId() + + ""; + + stmt.executeUpdate(sql); + ResultSet lastKey = stmt.getGeneratedKeys(); + while (lastKey.next()) { + key = lastKey.getInt(1); + } + } catch (SQLException sqlE) { + conn.rollback(); + throw new WiSimDAOWriteException(sqlE.getMessage()); + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return key; + } + + /** + * * Diese Funktion speichert einen neuen Lieferanten in der Datenbank.Wenn + * der angegebene City noch nicht vorhanden ist, wird er angelegt. + * + * @return int Lieferantennummer des neuen Supplier oder 0 wenn ein Fehler + * aufgetreten ist. + * @param lieferant Supplier + * @throws net.sourceforge.wisim.dao.WiSimDAOException Fehler beim Abfragen der DB + */ + @Override + public int neuerLieferant(Supplier lieferant) throws WiSimDAOException, WiSimDAOWriteException { + /* F�gt den Ort des neuen Lieferanten in die DB ein, wenn dieser noch * nicht in der DB vorhanden ist - */ - City ort = getOrt(lieferant.getPlzId()); - int plz = lieferant.getPlzId(); - - if (ort == null) { - ort = new City(lieferant.getPlzId(), lieferant.getPlz(), lieferant.getOrt()); - plz = this.neuerOrt(ort); - } - - String sql = - "INSERT INTO lt (lt_Name, lt_Vorname, lt_Strasse, lt_Firma" - + ", lt_Email, lt_Telefon, lt_Fax, lt_deleted, f_ort_Nr, lt_Qualitaet" - + ", lt_Zuverlaessigkeit) VALUES ('" - + lieferant.getNachname() - + "', '" - + lieferant.getVorname() - + "', '" - + lieferant.getStrasse() - + "', '" - + lieferant.getFirma() - + "', '" - + lieferant.getEmail() - + "', '" - + lieferant.getTelefon() - + "', '" - + lieferant.getFax() - + "', 'FALSE', " - + plz - + ", '" - + lieferant.getLieferqualitaet() - + "', '" - + lieferant.getZuverlaessigkeit() - + "')"; - - try { - Statement stmt = conn.createStatement(); - stmt.executeUpdate(sql); - - ResultSet lastKey = stmt.getGeneratedKeys(); - while (lastKey.next()) { - return lastKey.getInt(1); - } - //conn.commit(); //Wird in MySQL 3.x nicht unterst�tzt - } catch (SQLException e) { - //conn.rollback(); //Wird in MySQL 3.x nicht unterst�tzt - throw new WiSimDAOWriteException(e.getMessage()); - } - - return -1; - } - - /** Liest einen Lieferanten aus der DB aus - * @return com.pixelpark.wisim.model.Supplier oder null wenn kein Supplier mit der �bergebenen Nummer existiert. - * @param lieferantenId LieferantNr - * @throws com.pixelpark.wisim.dao.WiSimDAOException if a database problem occurs or the connection was never initialized - */ - public Supplier getLieferant(int lieferantenId) throws WiSimDAOException { - /* F�gt den Ort des neuen Lieferanten in die DB ein, wenn dieser noch + */ + City ort = getOrt(lieferant.getPlzId()); + int plz = lieferant.getPlzId(); + + if (ort == null) { + ort = new City(lieferant.getPlzId(), lieferant.getPlz(), lieferant.getOrt()); + plz = this.neuerOrt(ort); + } + + String sql + = "INSERT INTO lt (lt_Name, lt_Vorname, lt_Strasse, lt_Firma" + + ", lt_Email, lt_Telefon, lt_Fax, lt_deleted, f_ort_Nr, lt_Qualitaet" + + ", lt_Zuverlaessigkeit) VALUES ('" + + lieferant.getNachname() + + "', '" + + lieferant.getVorname() + + "', '" + + lieferant.getStrasse() + + "', '" + + lieferant.getFirma() + + "', '" + + lieferant.getEmail() + + "', '" + + lieferant.getTelefon() + + "', '" + + lieferant.getFax() + + "', 'FALSE', " + + plz + + ", '" + + lieferant.getLieferqualitaet() + + "', '" + + lieferant.getZuverlaessigkeit() + + "')"; + + try { + Statement stmt = conn.createStatement(); + stmt.executeUpdate(sql); + + ResultSet lastKey = stmt.getGeneratedKeys(); + while (lastKey.next()) { + return lastKey.getInt(1); + } + //conn.commit(); //Wird in MySQL 3.x nicht unterst�tzt + } catch (SQLException e) { + //conn.rollback(); //Wird in MySQL 3.x nicht unterst�tzt + throw new WiSimDAOWriteException(e.getMessage()); + } + + return -1; + } + + /** + * Liest einen Lieferanten aus der DB aus + * + * @return com.pixelpark.wisim.model.Supplier oder null wenn kein Supplier mit + * der �bergebenen Nummer existiert. + * @param lieferantenId LieferantNr + * @throws net.sourceforge.wisim.dao.WiSimDAOException Fehler beim Abfragen der DB + */ + @Override + public Supplier getLieferant(int lieferantenId) throws WiSimDAOException { + /* F�gt den Ort des neuen Lieferanten in die DB ein, wenn dieser noch * nicht in der DB vorhanden ist - */ - Supplier lieferant = null; - String sql = "SELECT lt_Nr, lt_Name, lt_Vorname, lt_Strasse, lt_Firma," + " lt_Email, lt_Telefon, lt_Fax, lt_deleted, f_ort_Nr, lt_Qualitaet," + "lt_Zuverlaessigkeit FROM lt WHERE lt_Nr = " + lieferantenId; - - try { - Statement stmt = conn.createStatement(); - ResultSet res = stmt.executeQuery(sql); - - while (res.next()) { - lieferant = new Supplier(); - lieferant.setId(res.getInt(1)); - lieferant.setNachname(res.getString(2)); - lieferant.setVorname(res.getString(3)); - lieferant.setStrasse(res.getString(4)); - lieferant.setFirma(res.getString(5)); - lieferant.setEmail(res.getString(6)); - lieferant.setTelefon(res.getString(7)); - lieferant.setFax(res.getString(8)); - lieferant.setPlzId(res.getInt(10)); - lieferant.setLieferqualitaet(res.getString(11)); - lieferant.setZuverlaessigkeit(res.getString(12)); - } - - sql = "SELECT ort_Name from ort where ort_Nr = " + lieferant.getPlzId(); - - res = stmt.executeQuery(sql); - - while (res.next()) { - lieferant.setOrt(res.getString(1)); - return lieferant; - } - //conn.commit(); //Wird in MySQL 3.x nicht unterst�tzt - } catch (SQLException e) { - //conn.rollback(); //Wird in MySQL 3.x nicht unterst�tzt - throw new WiSimDAOException(e.getMessage()); - } - - return null; - } - - /** Aendert Lieferantendaten - * @param lieferant beinhaltet die geaenderten Daten des Lieferanten - * @throws com.pixelpark.wisim.dao.WiSimDAOException if a database problem occurs or the connection was never initialized - * @throws com.pixelpark.wisim.dao.WiSimDAOWriteException if there was a db constaint violation - * @return Boolean - */ - public int aendereLieferant(Supplier lieferant) throws WiSimDAOException, WiSimDAOWriteException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); - - City ort = getOrt(lieferant.getPlzId()); - int plz = lieferant.getPlzId(); - - if (ort == null) { - ort = new City(lieferant.getPlzId(), lieferant.getPlz(), lieferant.getOrt()); - plz = this.neuerOrt(ort); - } - - String sql = ""; - int key = -1; - try { - try { - - Statement stmt = conn.createStatement(); - sql = - "UPDATE lt SET " - + "lt_Name = '" - + lieferant.getNachname() - + "', " - + "lt_Vorname = '" - + lieferant.getVorname() - + "', " - + "lt_Firma = '" - + lieferant.getFirma() - + "', " - + "lt_Strasse = '" - + lieferant.getStrasse() - + "', " - + "f_ort_Nr = '" - + plz - + "', " - + "lt_Telefon = '" - + lieferant.getTelefon() - + "', " - + "lt_Fax = '" - + lieferant.getFax() - + "', " - + "lt_Email = '" - + lieferant.getEmail() - + "', " - + "lt_Qualitaet = '" - + lieferant.getLieferqualitaet() - + "', " - + "lt_Zuverlaessigkeit = '" - + lieferant.getZuverlaessigkeit() - + "' " - + "WHERE lt_Nr = " - + lieferant.getId() - + ""; - stmt.executeUpdate(sql); - ResultSet lastKey = stmt.getGeneratedKeys(); - while (lastKey.next()) { - key = lastKey.getInt(1); - } - } catch (SQLException sqlE) { - conn.rollback(); - throw new WiSimDAOWriteException(sqlE.getMessage()); - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - if (key == lieferant.getId()) - return key; - return -1; - } - - /** Aendert ContractAccount - * @return Boolean - * @param Nr Auftragsrechnungsnummer - * @param status Status der Rechnung - * @throws com.pixelpark.wisim.dao.WiSimDAOException if a database problem occurs or the connection was never initialized - * @throws com.pixelpark.wisim.dao.WiSimDAOWriteException if there was a db constaint violation - */ - public int aendereAuftragsrechnung(int Nr, boolean status) throws WiSimDAOException, WiSimDAOWriteException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); - - String sql = ""; - int key = -1; - try { - try { - Statement stmt = conn.createStatement(); - sql = "UPDATE atr SET " + "atr_zleingang = '" + status + "' " + "WHERE atr_Nr = " + Nr + ""; - stmt.executeUpdate(sql); - ResultSet lastKey = stmt.getGeneratedKeys(); - while (lastKey.next()) { - key = lastKey.getInt(1); - } - } catch (SQLException sqlE) { - conn.rollback(); - throw new WiSimDAOWriteException(sqlE.getMessage()); - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return key; - } - - /** Markiert einen Lieferanten als geloescht bzw sichtbar - * @return int - * @param status Status des Lieferanten - * @param LtNr the object, containing the changed data of a Supplier - * @throws com.pixelpark.wisim.dao.WiSimDAOException if a database problem occurs or the connection was never initialized - * @throws com.pixelpark.wisim.dao.WiSimDAOWriteException if there was a db constaint violation - */ - public int setLieferantLoeschStatus(int LtNr, boolean status) throws WiSimDAOException, WiSimDAOWriteException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.setLieferantLoeschStatus Action: start"); - - String sql = ""; - int key = -1; - try { - try { - Statement stmt = conn.createStatement(); - sql = "UPDATE lt SET " + "lt_deleted ='" + status + "' " + "WHERE lt_Nr = " + LtNr + ""; - - stmt.executeUpdate(sql); - ResultSet lastKey = stmt.getGeneratedKeys(); - while (lastKey.next()) { - key = lastKey.getInt(1); - } - } catch (SQLException sqlE) { - conn.rollback(); - throw new WiSimDAOWriteException(sqlE.getMessage()); - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return key; - } - - /** Gibt eine Collection aller Notizen zur�ck - * @return Collection mit allen Notizen - * @param KdNr Kundennummer - * @throws WiSimDAOException if a database problem occurs or the connection was never initialized - */ - public Collection getNotizen(int KdNr) throws WiSimDAOException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getNotizen() Action: start"); - String sql = ""; - Vector notizen = (Vector) new Vector(); - try { - // Create a Statement - Statement stmt = conn.createStatement(); - sql = "SELECT * FROM note WHERE f_kd_Nr = " + KdNr + ""; - ResultSet rset = stmt.executeQuery(sql); - Memo kundennotiz; - while (rset.next()) { - kundennotiz = new Memo(); - kundennotiz.setId(rset.getInt(1)); - kundennotiz.setText(rset.getString(2)); - kundennotiz.setDate(rset.getDate(3)); - kundennotiz.setKundenNr(rset.getInt(4)); - notizen.add(kundennotiz); - } - - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return notizen; - } - - /** Laden einer Memo - * @return Object Memo - * @param noteNr Notiznummer - * @throws WiSimDAOException if a database problem occurs or the connection was never initialized - */ - public Memo getNotiz(int noteNr) throws WiSimDAOException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); - //Erzeugen eines neuen NotizObjektes - String sql = ""; - try { - Statement stmt = conn.createStatement(); - sql = "SELECT * FROM note WHERE note_Nr = '" + noteNr + "'"; - ResultSet rset = stmt.executeQuery(sql); - //Es existieren keine Notizen fuer diesen Kunden - Memo kundennotiz = new Memo(); - while (rset.next()) { - kundennotiz.setId(rset.getInt(1)); - kundennotiz.setText(rset.getString(2)); - kundennotiz.setDate(rset.getDate(3)); - kundennotiz.setKundenNr(rset.getInt(4)); - } - return kundennotiz; - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - } - - /** Loeschen einer Memo - * @return int - * @param noteNr Notiznummer - * @throws WiSimDAOWriteException Wenn ein Fehler w�hrend des Schreibens in die DB auftritt - */ - public int delNotiz(int noteNr) throws WiSimDAOWriteException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); - String sql = ""; - try { - Statement stmt = conn.createStatement(); - sql = "DELETE FROM note WHERE note_Nr = '" + noteNr + "'"; - int res = stmt.executeUpdate(sql); - return res; - } catch (SQLException sqlE) { - throw new WiSimDAOWriteException(sqlE.getMessage()); - } - } - - /** Erstellung einer neuen Memo - * @param notiz Objekt: Memo - * @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 - */ - public void neueNotiz(Memo notiz) throws WiSimDAOException, WiSimDAOWriteException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); - String sql = ""; - try { - try { - //Update der Tabelle: Ort - Statement stmt = conn.createStatement(); - sql = "insert into note (note_Nr, note_txt, note_Date, f_kd_Nr) values (" + notiz.getId() + ", \"" + notiz.getText() + "\", \"" + notiz.getDate() + "\", " + notiz.getKundenNr() + ") "; - - stmt.executeUpdate(sql); - conn.commit(); - } catch (SQLException sqlE) { - conn.rollback(); - throw new WiSimDAOWriteException(sqlE.getMessage()); - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - } - - /** Gibt das Objekt City zur�ck das zu der Postleitzahl geh�rt - * @return City der zu der PLZ geh�rt - * @param Nr Id des Ortes - * @throws WiSimDAOException ToDo - */ - public City getOrt(int Nr) throws WiSimDAOException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); - String sql = ""; - - try { - //Update der Tabelle: Ort - Statement stmt = conn.createStatement(); - sql = "select ort_Nr, ort_PLZ, ort_Name from ort where ort_Nr = " + Nr + ""; - ResultSet rset = stmt.executeQuery(sql); - - //Der Ort ist noch nicht in der Tabelle - - while (rset.next()) { - City ort = new City(); - ort.setNr(rset.getInt(1)); - ort.setPlz(rset.getString(2)); - ort.setName(rset.getString(3)); - return ort; - } - // conn.commit(); //Wird in MySQL 3.x nicht unterst�tzt - return null; - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - } - - /** Erstellt einen neuen City in der DB - * @return Die ID des neuen Ortes - * @param ort City - * @throws WiSimDAOException ToDo - */ - public int neuerOrt(City ort) throws WiSimDAOException { - // Serverlog - String sql = ""; - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); - int plzId = -1; - try { - Statement stmt = conn.createStatement(); - sql = "select ort_Nr, ort_PLZ, ort_Name from ort where ort_PLZ = " + ort.getPlz() + " AND ort_Name = '" + ort.getName() + "'"; - java.sql.ResultSet checkPlz = stmt.executeQuery(sql); - - //Der Ort ist noch nicht in der Tabelle und wird eingef�gt - if (!checkPlz.next()) { - sql = "insert into ort (ort_PLZ, ort_Name) values (" + ort.getPlz() + ", '" + ort.getName() + "')"; - stmt.executeUpdate(sql); - - ResultSet lastKey = stmt.getGeneratedKeys(); - while (lastKey.next()) { - return lastKey.getInt(1); - } - } else { - return checkPlz.getInt(1); - } - - // conn.commit(); //Wird in MySQL 3.x nicht unterst�tzt - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return plzId; - } - - /** Collection mit allen Lieferanten - * @throws WiSimDAOException Fehler beim Abfragen der DB - * @return Collection mit Objekten vom Typ Supplier - */ - public Collection getLieferanten() throws WiSimDAOException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getLieferanten() Action: start"); - String sql = ""; - Collection lieferanten = new Vector(); - try { - Statement stmt = conn.createStatement(); - sql = "select * from lt WHERE lt_deleted = 'FALSE'"; - java.sql.ResultSet resLieferanten = stmt.executeQuery(sql); - - while (resLieferanten.next()) { - - City ort = getOrt(resLieferanten.getInt("f_ort_Nr")); - - Supplier lieferant = - new Supplier( - resLieferanten.getInt("lt_Nr"), - resLieferanten.getString("lt_Firma"), - resLieferanten.getString("lt_Name"), - resLieferanten.getString("lt_Vorname"), - resLieferanten.getString("lt_Telefon"), - resLieferanten.getString("lt_Fax"), - resLieferanten.getString("lt_Strasse"), - ort.getName(), - ort.getPlz(), - ort.getNr(), - resLieferanten.getString("lt_Email"), - resLieferanten.getString("lt_Zuverlaessigkeit"), - resLieferanten.getString("lt_Qualitaet")); - lieferanten.add(lieferant); - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return lieferanten; - } - - /** Holt alle Einzelteile aus der Datenbank - * @return Collection - * @throws WiSimDAOException Fehler beim Abfragen der DB - */ - public Collection getEinzelteile() throws WiSimDAOException { - String sql = "SELECT * FROM et"; - - Collection einzelteile = (Collection) new Vector(); - 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); - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return einzelteile; - } - - /** Holt ein WiSimComponent aus der Datenbank - * @return WiSimComponent - * @param id EinzelteilNr - * @throws WiSimDAOException Fehler beim Abfragen der DB - */ - public WiSimComponent getEinzelteil(int id) throws WiSimDAOException { - String sql = "SELECT * FROM et WHERE et_Nr = " + id; - - WiSimComponent einzelteil = 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)); - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return einzelteil; - } - - /** Erstellt eine SupplyList - * @param liste SupplyList - * @throws WiSimDAOWriteException Fehler beim Schreiben in die DB - * @throws WiSimDAOException Fehler beim Lesen von der DB - */ - public void setLieferliste(SupplyList liste) throws WiSimDAOException, WiSimDAOWriteException { - String sql = "INSERT INTO rel_lt_et (f_et_Nr, f_lt_Nr, rel_lt_et_Stueckpreis, rel_lt_et_Mindestbestellmenge)" + "VALUES ( " + liste.getEinzelteilID() + ", " + liste.getLieferantenID() + ", " + liste.getPreis() + ", " + liste.getMindestBestellMenge() + ");"; - - try { - // Create a Statement - Statement stmt = conn.createStatement(); - stmt.executeUpdate(sql); - - } catch (SQLException sqlE) { - throw new WiSimDAOWriteException(sqlE.getMessage()); - } - } - - /** Holt einen Lieferlisten-Eintrag aus der Datenbank - * @return SupplyList - * @param lieferantenID ID des Lieferanten - * @param einzelteilID ID des Einzelteils - * @throws WiSimDAOException Fehler beim Lesen von der DB - */ - public SupplyList getLieferliste(int lieferantenID, int einzelteilID) throws WiSimDAOException { - String sql = "SELECT * FROM rel_lt_et WHERE f_et_Nr = " + einzelteilID + " AND f_lt_Nr = " + lieferantenID; - - SupplyList lieferliste = null; - try { - // Create a Statement - Statement stmt = conn.createStatement(); - 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)); - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return lieferliste; - } - - /** Collection mit allen Lieferlisten des Lieferanten - * @param lieferantenID LieferantNr - * @throws WiSimDAOException Fehler beim Ablesen aus der DB - * @return Collection mit Objekten vom Typ SupplyList - */ - public Collection getLieferliste(int lieferantenID) throws WiSimDAOException { - Collection lieferlisten = new Vector(); - String sql = ""; - - SupplyList lieferliste = null; - try { - // Create a Statement - Statement stmt = conn.createStatement(); - sql = "select * from rel_lt_et WHERE f_lt_Nr = " + lieferantenID; - 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)); - - lieferlisten.add(lieferliste); - } - - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return lieferlisten; - } - - /* (non-Javadoc) + */ + Supplier lieferant = null; + String sql = "SELECT lt_Nr, lt_Name, lt_Vorname, lt_Strasse, lt_Firma," + " lt_Email, lt_Telefon, lt_Fax, lt_deleted, f_ort_Nr, lt_Qualitaet," + "lt_Zuverlaessigkeit FROM lt WHERE lt_Nr = " + lieferantenId; + + try { + Statement stmt = conn.createStatement(); + ResultSet res = stmt.executeQuery(sql); + + while (res.next()) { + lieferant = new Supplier(); + lieferant.setId(res.getInt(1)); + lieferant.setNachname(res.getString(2)); + lieferant.setVorname(res.getString(3)); + lieferant.setStrasse(res.getString(4)); + lieferant.setFirma(res.getString(5)); + lieferant.setEmail(res.getString(6)); + lieferant.setTelefon(res.getString(7)); + lieferant.setFax(res.getString(8)); + lieferant.setPlzId(res.getInt(10)); + lieferant.setLieferqualitaet(res.getString(11)); + lieferant.setZuverlaessigkeit(res.getString(12)); + } + + sql = "SELECT ort_Name from ort where ort_Nr = " + lieferant.getPlzId(); + + res = stmt.executeQuery(sql); + + while (res.next()) { + lieferant.setOrt(res.getString(1)); + return lieferant; + } + //conn.commit(); //Wird in MySQL 3.x nicht unterst�tzt + } catch (SQLException e) { + //conn.rollback(); //Wird in MySQL 3.x nicht unterst�tzt + throw new WiSimDAOException(e.getMessage()); + } + + return null; + } + + /** + * Aendert Lieferantendaten + * + * @param lieferant beinhaltet die geaenderten Daten des Lieferanten + * @return Boolean + * @throws net.sourceforge.wisim.dao.WiSimDAOException Fehler beim Abfragen der DB + * @throws net.sourceforge.wisim.dao.WiSimDAOWriteException Fehler beim Schreiben in die DB + */ + @Override + public int aendereLieferant(Supplier lieferant) throws WiSimDAOException, WiSimDAOWriteException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); + + City ort = getOrt(lieferant.getPlzId()); + int plz = lieferant.getPlzId(); + + if (ort == null) { + ort = new City(lieferant.getPlzId(), lieferant.getPlz(), lieferant.getOrt()); + plz = this.neuerOrt(ort); + } + + String sql; + int key = -1; + try { + try { + + Statement stmt = conn.createStatement(); + sql + = "UPDATE lt SET " + + "lt_Name = '" + + lieferant.getNachname() + + "', " + + "lt_Vorname = '" + + lieferant.getVorname() + + "', " + + "lt_Firma = '" + + lieferant.getFirma() + + "', " + + "lt_Strasse = '" + + lieferant.getStrasse() + + "', " + + "f_ort_Nr = '" + + plz + + "', " + + "lt_Telefon = '" + + lieferant.getTelefon() + + "', " + + "lt_Fax = '" + + lieferant.getFax() + + "', " + + "lt_Email = '" + + lieferant.getEmail() + + "', " + + "lt_Qualitaet = '" + + lieferant.getLieferqualitaet() + + "', " + + "lt_Zuverlaessigkeit = '" + + lieferant.getZuverlaessigkeit() + + "' " + + "WHERE lt_Nr = " + + lieferant.getId() + + ""; + stmt.executeUpdate(sql); + ResultSet lastKey = stmt.getGeneratedKeys(); + while (lastKey.next()) { + key = lastKey.getInt(1); + } + } catch (SQLException sqlE) { + conn.rollback(); + throw new WiSimDAOWriteException(sqlE.getMessage()); + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + if (key == lieferant.getId()) { + return key; + } + return -1; + } + + /** + * Aendert ContractAccount + * + * @return Boolean + * @param Nr Auftragsrechnungsnummer + * @param status Status der Rechnung + * @throws net.sourceforge.wisim.dao.WiSimDAOException Fehler beim Abfragen der DB + */ + @Override + public int aendereAuftragsrechnung(int Nr, boolean status) throws WiSimDAOException, WiSimDAOWriteException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); + + String sql; + int key = -1; + try { + try { + Statement stmt = conn.createStatement(); + sql = "UPDATE atr SET " + "atr_zleingang = '" + status + "' " + "WHERE atr_Nr = " + Nr + ""; + stmt.executeUpdate(sql); + ResultSet lastKey = stmt.getGeneratedKeys(); + while (lastKey.next()) { + key = lastKey.getInt(1); + } + } catch (SQLException sqlE) { + conn.rollback(); + throw new WiSimDAOWriteException(sqlE.getMessage()); + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return key; + } + + /** + * Markiert einen Lieferanten als geloescht bzw sichtbar + * + * @return int + * @param status Status des Lieferanten + * @param LtNr the object, containing the changed data of a Supplier + * @throws net.sourceforge.wisim.dao.WiSimDAOException Fehler beim Abfragen der DB + * @throws net.sourceforge.wisim.dao.WiSimDAOWriteException Fehler beim Schreiben in die DB + */ + @Override + public int setLieferantLoeschStatus(int LtNr, boolean status) throws WiSimDAOException, WiSimDAOWriteException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.setLieferantLoeschStatus Action: start"); + + String sql; + int key = -1; + try { + try { + Statement stmt = conn.createStatement(); + sql = "UPDATE lt SET " + "lt_deleted ='" + status + "' " + "WHERE lt_Nr = " + LtNr + ""; + + stmt.executeUpdate(sql); + ResultSet lastKey = stmt.getGeneratedKeys(); + while (lastKey.next()) { + key = lastKey.getInt(1); + } + } catch (SQLException sqlE) { + conn.rollback(); + throw new WiSimDAOWriteException(sqlE.getMessage()); + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return key; + } + + /** + * Gibt eine Collection aller Notizen zur�ck + * + * @return Collection mit allen Notizen + * @param KdNr Kundennummer + * @throws WiSimDAOException if a database problem occurs or the connection + * was never initialized + */ + @Override + public Collection getNotizen(int KdNr) throws WiSimDAOException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getNotizen() Action: start"); + String sql; + ArrayList notizen = new ArrayList<>(); + try { + // Create a Statement + Statement stmt = conn.createStatement(); + sql = "SELECT * FROM note WHERE f_kd_Nr = " + KdNr + ""; + ResultSet rset = stmt.executeQuery(sql); + Memo kundennotiz; + while (rset.next()) { + kundennotiz = new Memo(); + kundennotiz.setId(rset.getInt(1)); + kundennotiz.setText(rset.getString(2)); + kundennotiz.setDate(rset.getDate(3)); + kundennotiz.setKundenNr(rset.getInt(4)); + notizen.add(kundennotiz); + } + + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return notizen; + } + + /** + * Laden einer Memo + * + * @return Object Memo + * @param noteNr Notiznummer + * @throws WiSimDAOException if a database problem occurs or the connection + * was never initialized + */ + @Override + public Memo getNotiz(int noteNr) throws WiSimDAOException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); + //Erzeugen eines neuen NotizObjektes + String sql; + try { + Statement stmt = conn.createStatement(); + sql = "SELECT * FROM note WHERE note_Nr = '" + noteNr + "'"; + ResultSet rset = stmt.executeQuery(sql); + //Es existieren keine Notizen fuer diesen Kunden + Memo kundennotiz = new Memo(); + while (rset.next()) { + kundennotiz.setId(rset.getInt(1)); + kundennotiz.setText(rset.getString(2)); + kundennotiz.setDate(rset.getDate(3)); + kundennotiz.setKundenNr(rset.getInt(4)); + } + return kundennotiz; + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + } + + /** + * Loeschen einer Memo + * + * @return int + * @param noteNr Notiznummer + * @throws WiSimDAOWriteException Wenn ein Fehler während des Schreibens in + * die DB auftritt + */ + @Override + public int delNotiz(int noteNr) throws WiSimDAOWriteException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); + String sql; + try { + Statement stmt = conn.createStatement(); + sql = "DELETE FROM note WHERE note_Nr = '" + noteNr + "'"; + int res = stmt.executeUpdate(sql); + return res; + } catch (SQLException sqlE) { + throw new WiSimDAOWriteException(sqlE.getMessage()); + } + } + + /** + * Erstellung einer neuen Memo + * + * @param notiz Objekt: Memo + * @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 + */ + @Override + public void neueNotiz(Memo notiz) throws WiSimDAOException, WiSimDAOWriteException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); + String sql; + try { + try { + //Update der Tabelle: Ort + Statement stmt = conn.createStatement(); + sql = "insert into note (note_Nr, note_txt, note_Date, f_kd_Nr) values (" + notiz.getId() + ", \"" + notiz.getText() + "\", \"" + notiz.getDate() + "\", " + notiz.getKundenNr() + ") "; + + stmt.executeUpdate(sql); + conn.commit(); + } catch (SQLException sqlE) { + conn.rollback(); + throw new WiSimDAOWriteException(sqlE.getMessage()); + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + } + + /** + * Gibt das Objekt City zurück das zu der Postleitzahl gehört + * + * @return City der zu der PLZ gehört + * @param Nr Id des Ortes + * @throws net.sourceforge.wisim.dao.WiSimDAOException Fehler beim Abfragen der DB + */ + @Override + public City getOrt(int Nr) throws WiSimDAOException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); + String sql; + + try { + //Update der Tabelle: Ort + Statement stmt = conn.createStatement(); + sql = "select ort_Nr, ort_PLZ, ort_Name from ort where ort_Nr = " + Nr + ""; + ResultSet rset = stmt.executeQuery(sql); + + //Der Ort ist noch nicht in der Tabelle + while (rset.next()) { + City ort = new City(); + ort.setNr(rset.getInt(1)); + ort.setPlz(rset.getString(2)); + ort.setName(rset.getString(3)); + return ort; + } + // conn.commit(); //Wird in MySQL 3.x nicht unterst�tzt + return null; + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + } + + /** + * Erstellt einen neuen City in der DB + * + * @return Die ID des neuen Ortes + * @param ort City + * @throws WiSimDAOException ToDo + */ + @Override + public int neuerOrt(City ort) throws WiSimDAOException { + // Serverlog + String sql; + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); + int plzId = -1; + try { + Statement stmt = conn.createStatement(); + sql = "select ort_Nr, ort_PLZ, ort_Name from ort where ort_PLZ = " + ort.getPlz() + " AND ort_Name = '" + ort.getName() + "'"; + java.sql.ResultSet checkPlz = stmt.executeQuery(sql); + + //Der Ort ist noch nicht in der Tabelle und wird eingef�gt + if (!checkPlz.next()) { + sql = "insert into ort (ort_PLZ, ort_Name) values (" + ort.getPlz() + ", '" + ort.getName() + "')"; + stmt.executeUpdate(sql); + + ResultSet lastKey = stmt.getGeneratedKeys(); + while (lastKey.next()) { + return lastKey.getInt(1); + } + } else { + return checkPlz.getInt(1); + } + + // conn.commit(); //Wird in MySQL 3.x nicht unterst�tzt + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return plzId; + } + + /** + * Collection mit allen Lieferanten + * + * @throws WiSimDAOException Fehler beim Abfragen der DB + * @return Collection mit Objekten vom Typ Supplier + */ + @Override + public Collection getLieferanten() throws WiSimDAOException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getLieferanten() Action: start"); + String sql; + Collection lieferanten = new ArrayList<>(); + try { + Statement stmt = conn.createStatement(); + sql = "select * from lt WHERE lt_deleted = 'FALSE'"; + java.sql.ResultSet resLieferanten = stmt.executeQuery(sql); + + while (resLieferanten.next()) { + + City ort = getOrt(resLieferanten.getInt("f_ort_Nr")); + + Supplier lieferant + = new Supplier( + resLieferanten.getInt("lt_Nr"), + resLieferanten.getString("lt_Firma"), + resLieferanten.getString("lt_Name"), + resLieferanten.getString("lt_Vorname"), + resLieferanten.getString("lt_Telefon"), + resLieferanten.getString("lt_Fax"), + resLieferanten.getString("lt_Strasse"), + ort.getName(), + ort.getPlz(), + ort.getNr(), + resLieferanten.getString("lt_Email"), + resLieferanten.getString("lt_Zuverlaessigkeit"), + resLieferanten.getString("lt_Qualitaet")); + lieferanten.add(lieferant); + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return lieferanten; + } + + /** + * Holt alle Einzelteile aus der Datenbank + * + * @return Collection + * @throws WiSimDAOException Fehler beim Abfragen der DB + */ + @Override + public Collection getEinzelteile() throws WiSimDAOException { + String sql = "SELECT * FROM et"; + + Collection einzelteile = 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); + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return einzelteile; + } + + /** + * Holt ein WiSimComponent aus der Datenbank + * + * @return WiSimComponent + * @param id EinzelteilNr + * @throws WiSimDAOException Fehler beim Abfragen der DB + */ + @Override + public WiSimComponent getEinzelteil(int id) throws WiSimDAOException { + String sql = "SELECT * FROM et WHERE et_Nr = " + id; + + WiSimComponent einzelteil = 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)); + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return einzelteil; + } + + /** + * Erstellt eine SupplyList + * + * @param liste SupplyList + * @throws WiSimDAOWriteException Fehler beim Schreiben in die DB + * @throws WiSimDAOException Fehler beim Lesen von der DB + */ + @Override + public void setLieferliste(SupplyList liste) throws WiSimDAOException, WiSimDAOWriteException { + String sql = "INSERT INTO rel_lt_et (f_et_Nr, f_lt_Nr, rel_lt_et_Stueckpreis, rel_lt_et_Mindestbestellmenge)" + "VALUES ( " + liste.getEinzelteilID() + ", " + liste.getLieferantenID() + ", " + liste.getPreis() + ", " + liste.getMindestBestellMenge() + ");"; + + try { + // Create a Statement + Statement stmt = conn.createStatement(); + stmt.executeUpdate(sql); + + } catch (SQLException sqlE) { + throw new WiSimDAOWriteException(sqlE.getMessage()); + } + } + + /** + * Holt einen Lieferlisten-Eintrag aus der Datenbank + * + * @return SupplyList + * @param lieferantenID ID des Lieferanten + * @param einzelteilID ID des Einzelteils + * @throws WiSimDAOException Fehler beim Lesen von der DB + */ + @Override + public SupplyList getLieferliste(int lieferantenID, int einzelteilID) throws WiSimDAOException { + String sql = "SELECT * FROM rel_lt_et WHERE f_et_Nr = " + einzelteilID + " AND f_lt_Nr = " + lieferantenID; + + SupplyList lieferliste = null; + try { + // Create a Statement + Statement stmt = conn.createStatement(); + 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)); + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return lieferliste; + } + + /** + * Collection mit allen Lieferlisten des Lieferanten + * + * @param lieferantenID LieferantNr + * @throws WiSimDAOException Fehler beim Ablesen aus der DB + * @return Collection mit Objekten vom Typ SupplyList + */ + @Override + public Collection getLieferliste(int lieferantenID) throws WiSimDAOException { + Collection lieferlisten = new ArrayList<>(); + String sql; + + SupplyList lieferliste; + try { + // Create a Statement + Statement stmt = conn.createStatement(); + sql = "select * from rel_lt_et WHERE f_lt_Nr = " + lieferantenID; + 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)); + + lieferlisten.add(lieferliste); + } + + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return lieferlisten; + } + + /* (non-Javadoc) * @see com.pixelpark.wisim.dao.WiSimDAO#setEinzelteilArbeitsplatzBestand(int, int, java.lang.String) - */ - /** �ndert den Bestand an Einzelteilen an einem WorkPlace - * @param arbeitsplatzNr Arbeitsplatznummer - * @param einzelteilNr Einzelteilnummer - * @param lagerTyp Typ des Lagers - * @throws WiSimDAOException Fehler beim Lesen von der DB - * @throws WiSimDAOWriteException Fehler beim Schreiben in die DB - * @return boolean - */ - public synchronized boolean setEinzelteilArbeitsplatzBestand(int arbeitsplatzNr, int einzelteilNr, String lagerTyp) throws WiSimDAOException, WiSimDAOWriteException { - String sql = "SELECT rel_et_ap_Benoetigt FROM rel_et_ap WHERE f_ap_Nr = " + arbeitsplatzNr + " AND f_et_Nr = " + einzelteilNr + " AND rel_et_ap_Lagertyp = 'Einzelteil'"; - - ResultSet res; - Statement stmt; - try { - stmt = conn.createStatement(); - res = stmt.executeQuery(sql); - } catch (SQLException e) { - throw new WiSimDAOException(e.getMessage()); - } - - int anzahl = 0; - - try { - while (res.next()) { - anzahl = res.getInt(1); - } - - } catch (SQLException e) { - throw new WiSimDAOException(e.getMessage()); - } - - sql = "SELECT rel_et_ap_Bestand, rel_et_ap_MaxBestand FROM rel_et_ap WHERE f_et_Nr = " + einzelteilNr + " AND f_ap_Nr = " + arbeitsplatzNr + " AND rel_et_ap_Lagertyp = 'Einzelteil'"; - - int bestand; - try { - ResultSet rset = stmt.executeQuery(sql); - bestand = -1; - - while (rset.next()) { - bestand = rset.getInt(1); - } - } catch (SQLException e1) { - throw new WiSimDAOException(e1.getMessage()); - } - - if ((bestand - anzahl) < 0) { - return false; - } - - sql = "UPDATE rel_et_ap SET rel_et_ap_Bestand = rel_et_ap_Bestand - " + anzahl + " WHERE f_et_Nr = " + einzelteilNr + " AND f_ap_Nr = " + arbeitsplatzNr + " AND rel_et_ap_Lagertyp = 'Einzelteil'"; - - try { - stmt.executeUpdate(sql); - - return true; - - } catch (SQLException sqlE) { - throw new WiSimDAOWriteException(sqlE.getMessage()); - } - } - - /* (non-Javadoc) + */ + /** + * �ndert den Bestand an Einzelteilen an einem WorkPlace + * + * @param arbeitsplatzNr Arbeitsplatznummer + * @param einzelteilNr Einzelteilnummer + * @param lagerTyp Typ des Lagers + * @throws WiSimDAOException Fehler beim Lesen von der DB + * @throws WiSimDAOWriteException Fehler beim Schreiben in die DB + * @return boolean + */ + @Override + public synchronized boolean setEinzelteilArbeitsplatzBestand(int arbeitsplatzNr, int einzelteilNr, String lagerTyp) throws WiSimDAOException, WiSimDAOWriteException { + String sql = "SELECT rel_et_ap_Benoetigt FROM rel_et_ap WHERE f_ap_Nr = " + arbeitsplatzNr + " AND f_et_Nr = " + einzelteilNr + " AND rel_et_ap_Lagertyp = 'Einzelteil'"; + + ResultSet res; + Statement stmt; + try { + stmt = conn.createStatement(); + res = stmt.executeQuery(sql); + } catch (SQLException e) { + throw new WiSimDAOException(e.getMessage()); + } + + int anzahl = 0; + + try { + while (res.next()) { + anzahl = res.getInt(1); + } + + } catch (SQLException e) { + throw new WiSimDAOException(e.getMessage()); + } + + sql = "SELECT rel_et_ap_Bestand, rel_et_ap_MaxBestand FROM rel_et_ap WHERE f_et_Nr = " + einzelteilNr + " AND f_ap_Nr = " + arbeitsplatzNr + " AND rel_et_ap_Lagertyp = 'Einzelteil'"; + + int bestand; + try { + ResultSet rset = stmt.executeQuery(sql); + bestand = -1; + + while (rset.next()) { + bestand = rset.getInt(1); + } + } catch (SQLException e1) { + throw new WiSimDAOException(e1.getMessage()); + } + + if ((bestand - anzahl) < 0) { + return false; + } + + sql = "UPDATE rel_et_ap SET rel_et_ap_Bestand = rel_et_ap_Bestand - " + anzahl + " WHERE f_et_Nr = " + einzelteilNr + " AND f_ap_Nr = " + arbeitsplatzNr + " AND rel_et_ap_Lagertyp = 'Einzelteil'"; + + try { + stmt.executeUpdate(sql); + + return true; + + } catch (SQLException sqlE) { + throw new WiSimDAOWriteException(sqlE.getMessage()); + } + } + + /* (non-Javadoc) * @see com.pixelpark.wisim.dao.WiSimDAO#setEinzelteilArbeitsplatzBestand(int, int, int, java.lang.String) - */ - /** �ndert den Bestand an Einzelteilen an einem WorkPlace - * @param arbeitsplatzNr Arbeitsplatznummer - * @param einzelteilNr Einzelteilnummer - * @param anzahl Anzahl der Einzelteile - * @param lagerTyp Typ des Lagers - * @throws WiSimDAOWriteException Fehler beim Schreiben in die DB - * @throws WiSimDAOException Fehler beim Lesen von der DB - * @return int - */ - public synchronized int setEinzelteilArbeitsplatzBestand(int arbeitsplatzNr, int einzelteilNr, int anzahl, String lagerTyp) throws WiSimDAOWriteException, WiSimDAOException { - String sql = "SELECT rel_et_ap_Bestand, rel_et_ap_MaxBestand FROM rel_et_ap" + " WHERE f_ap_Nr = " + arbeitsplatzNr + " AND f_et_Nr = " + einzelteilNr + " AND rel_et_ap_Lagertyp = '" + lagerTyp + "';"; - - Statement stmt; - int bestand = -1; - int maxBestand = -1; - try { - stmt = conn.createStatement(); - ResultSet res = stmt.executeQuery(sql); - while (res.next()) { - bestand = res.getInt(1); - maxBestand = res.getInt(2); - } - } catch (SQLException e1) { - throw new WiSimDAOException(e1.getMessage()); - } - - if ((bestand + anzahl) < 0) { - anzahl = bestand * -1; - } - - if ((bestand + anzahl) > maxBestand) { - anzahl = maxBestand - bestand; - } - - sql = "UPDATE rel_et_ap SET rel_et_ap_Bestand = (rel_et_ap_Bestand + " + anzahl + ") WHERE f_ap_Nr = " + arbeitsplatzNr + " AND f_et_Nr = " + einzelteilNr + " AND rel_et_ap_Lagertyp = '" + lagerTyp + "';"; - - try { - stmt.executeUpdate(sql); - } catch (SQLException e) { - throw new WiSimDAOWriteException(e.getMessage()); - } - return anzahl; - } - - /** Liefert die Dauer eines Arbeitsschrittes an einem bestimmten WorkPlace - * @param arbeitsplatzNr Nr. des Arbeitsplatzes, f�r dem die Dauer zur�ckgegeben werden soll. - * @throws WiSimDAOException Wenn ein Fehler beim Zugriff auf die DB auftritt. - * @return Dauer des Prozesses - */ - public synchronized WorkPlace getArbeitsplatz(int arbeitsplatzNr) throws WiSimDAOException { - String sql = "SELECT * FROM ap WHERE ap_Nr = " + arbeitsplatzNr + ";"; - - try { - Statement stmt = conn.createStatement(); - ResultSet res = stmt.executeQuery(sql); - while (res.next()) { - WorkPlace arbeitsplatz = new WorkPlace(res.getInt(1), res.getString(2), res.getInt(3), res.getInt(4)); - - sql = "SELECT nf_nachfolger FROM nf WHERE f_ap_nr = " + arbeitsplatz.getNr(); - ResultSet res2 = stmt.executeQuery(sql); - int rows = 0; - while (res2.next()) { - rows++; - } - res2.beforeFirst(); - int[] nf = new int[rows]; - int i = 0; - while (res2.next()) { - nf[i] = res2.getInt(1); - i++; - } - arbeitsplatz.setNachfolger(nf); - - sql = "SELECT vg_vorgaenger FROM vg WHERE f_ap_nr = " + arbeitsplatz.getNr(); - res2 = stmt.executeQuery(sql); - rows = 0; - while (res2.next()) { - rows++; - } - res2.beforeFirst(); - int[] vg = new int[rows]; - i = 0; - while (res2.next()) { - vg[i] = res2.getInt(1); - i++; - } - arbeitsplatz.setVorgaenger(vg); - return arbeitsplatz; - } - } catch (SQLException e) { - throw new WiSimDAOException(e.getMessage()); - } - return null; - } - - /** Liefert alle Einzelteile an einem WorkPlace zur�ck. - * @param arbeitsplatzNr Nummer des WorkPlace - * @throws WiSimDAOException Wenn ein Fehler beim Zugriff auf die DB auftritt. - * @return Liste mit Einzelteilen - */ - public synchronized Collection getArbeitsplatzLager(int arbeitsplatzNr) throws WiSimDAOException { - String sql = "SELECT * FROM rel_et_ap WHERE f_ap_Nr = " + arbeitsplatzNr + " ;"; - Collection arbeitsplatzLager = (Collection) new Vector(); - - try { - Statement stmt = conn.createStatement(); - ResultSet res = stmt.executeQuery(sql); - while (res.next()) { - WorkPlaceStore apl = new WorkPlaceStore(res.getInt(1), res.getInt(2), res.getString(3), res.getInt(4), res.getInt(5), res.getInt(6)); - arbeitsplatzLager.add(apl); - } - } catch (SQLException e) { - - System.err.println(e.getMessage()); - } - - return arbeitsplatzLager; - } - - /** Erstellt einen neuen Einzelteileauftrag - * @return EinzelteilauftragsNrID des Einzelteilauftrags - * @param etat ComponentContract - * @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 - */ - public int setEinzelteilauftrag(ComponentContract etat) throws WiSimDAOException, WiSimDAOWriteException { - String sql = - "INSERT INTO etat (etat_Lieferrabatt, etat_Skontofrist, etat_Lieferdatum, etat_Datum, etat_Skonto, f_lt_Nr, f_etatr_Nr)" - + "VALUES ( " - + etat.getLieferrabatt() - + ", " - + etat.getSkontofrist() - + ", '" - + etat.getLieferdatum() - + "', '" - + etat.getAuftragsdatum() - + "', " - + etat.getSkonto() - + ", " - + etat.getLieferantNr() - + ", " - + "0" - + ");"; - - int etatNr = -1; - - try { - // Create a Statement - Statement stmt = conn.createStatement(); - - //Einzelteilauftrag wird geschrieben - stmt.executeUpdate(sql); - ResultSet lastKey = stmt.getGeneratedKeys(); - while (lastKey.next()) { - etatNr = lastKey.getInt(1); - } - - /*Key wird in f_etatr_Nr eingesetzt, da zwischen etat und etatr eine 1:1 Beziehung - besteht. Das bedeutet jeder neuer Einzelteilauftrag f�hrt zu einer neuen Einzel- + */ + /** + * �ndert den Bestand an Einzelteilen an einem WorkPlace + * + * @param arbeitsplatzNr Arbeitsplatznummer + * @param einzelteilNr Einzelteilnummer + * @param anzahl Anzahl der Einzelteile + * @param lagerTyp Typ des Lagers + * @throws WiSimDAOWriteException Fehler beim Schreiben in die DB + * @throws WiSimDAOException Fehler beim Lesen von der DB + * @return int + */ + @Override + public synchronized int setEinzelteilArbeitsplatzBestand(int arbeitsplatzNr, int einzelteilNr, int anzahl, String lagerTyp) throws WiSimDAOWriteException, WiSimDAOException { + String sql = "SELECT rel_et_ap_Bestand, rel_et_ap_MaxBestand FROM rel_et_ap" + " WHERE f_ap_Nr = " + arbeitsplatzNr + " AND f_et_Nr = " + einzelteilNr + " AND rel_et_ap_Lagertyp = '" + lagerTyp + "';"; + + Statement stmt; + int bestand = -1; + int maxBestand = -1; + try { + stmt = conn.createStatement(); + ResultSet res = stmt.executeQuery(sql); + while (res.next()) { + bestand = res.getInt(1); + maxBestand = res.getInt(2); + } + } catch (SQLException e1) { + throw new WiSimDAOException(e1.getMessage()); + } + + if ((bestand + anzahl) < 0) { + anzahl = bestand * -1; + } + + if ((bestand + anzahl) > maxBestand) { + anzahl = maxBestand - bestand; + } + + sql = "UPDATE rel_et_ap SET rel_et_ap_Bestand = (rel_et_ap_Bestand + " + anzahl + ") WHERE f_ap_Nr = " + arbeitsplatzNr + " AND f_et_Nr = " + einzelteilNr + " AND rel_et_ap_Lagertyp = '" + lagerTyp + "';"; + + try { + stmt.executeUpdate(sql); + } catch (SQLException e) { + throw new WiSimDAOWriteException(e.getMessage()); + } + return anzahl; + } + + /** + * Liefert die Dauer eines Arbeitsschrittes an einem bestimmten WorkPlace + * + * @param arbeitsplatzNr Nr. des Arbeitsplatzes, für dem die Dauer + * zurückgegeben werden soll. + * @throws WiSimDAOException Wenn ein Fehler beim Zugriff auf die DB auftritt. + * @return Dauer des Prozesses + */ + @Override + public synchronized WorkPlace getArbeitsplatz(int arbeitsplatzNr) throws WiSimDAOException { + String sql = "SELECT * FROM ap WHERE ap_Nr = " + arbeitsplatzNr + ";"; + + try { + Statement stmt = conn.createStatement(); + ResultSet res = stmt.executeQuery(sql); + while (res.next()) { + WorkPlace arbeitsplatz = new WorkPlace(res.getInt(1), res.getString(2), res.getInt(3), res.getInt(4)); + + sql = "SELECT nf_nachfolger FROM nf WHERE f_ap_nr = " + arbeitsplatz.getNr(); + ResultSet res2 = stmt.executeQuery(sql); + int rows = 0; + while (res2.next()) { + rows++; + } + res2.beforeFirst(); + int[] nf = new int[rows]; + int i = 0; + while (res2.next()) { + nf[i] = res2.getInt(1); + i++; + } + arbeitsplatz.setNachfolger(nf); + + sql = "SELECT vg_vorgaenger FROM vg WHERE f_ap_nr = " + arbeitsplatz.getNr(); + res2 = stmt.executeQuery(sql); + rows = 0; + while (res2.next()) { + rows++; + } + res2.beforeFirst(); + int[] vg = new int[rows]; + i = 0; + while (res2.next()) { + vg[i] = res2.getInt(1); + i++; + } + arbeitsplatz.setVorgaenger(vg); + return arbeitsplatz; + } + } catch (SQLException e) { + throw new WiSimDAOException(e.getMessage()); + } + return null; + } + + /** + * Liefert alle Einzelteile an einem WorkPlace zur�ck. + * + * @param arbeitsplatzNr Nummer des WorkPlace + * @throws WiSimDAOException Wenn ein Fehler beim Zugriff auf die DB auftritt. + * @return Liste mit Einzelteilen + */ + @Override + public synchronized Collection getArbeitsplatzLager(int arbeitsplatzNr) throws WiSimDAOException { + String sql = "SELECT * FROM rel_et_ap WHERE f_ap_Nr = " + arbeitsplatzNr + " ;"; + Collection arbeitsplatzLager = new ArrayList<>(); + + try { + Statement stmt = conn.createStatement(); + ResultSet res = stmt.executeQuery(sql); + while (res.next()) { + WorkPlaceStore apl = new WorkPlaceStore(res.getInt(1), res.getInt(2), res.getString(3), res.getInt(4), res.getInt(5), res.getInt(6)); + arbeitsplatzLager.add(apl); + } + } catch (SQLException e) { + + System.err.println(e.getMessage()); + } + + return arbeitsplatzLager; + } + + /** + * Erstellt einen neuen Einzelteileauftrag + * + * @return EinzelteilauftragsNrID des Einzelteilauftrags + * @param etat ComponentContract + * @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 + */ + @Override + public int setEinzelteilauftrag(ComponentContract etat) throws WiSimDAOException, WiSimDAOWriteException { + String sql + = "INSERT INTO etat (etat_Lieferrabatt, etat_Skontofrist, etat_Lieferdatum, etat_Datum, etat_Skonto, f_lt_Nr, f_etatr_Nr)" + + "VALUES ( " + + etat.getLieferrabatt() + + ", " + + etat.getSkontofrist() + + ", '" + + etat.getLieferdatum() + + "', '" + + etat.getAuftragsdatum() + + "', " + + etat.getSkonto() + + ", " + + etat.getLieferantNr() + + ", " + + "0" + + ");"; + + int etatNr = -1; + + try { + // Create a Statement + Statement stmt = conn.createStatement(); + + //Einzelteilauftrag wird geschrieben + stmt.executeUpdate(sql); + ResultSet lastKey = stmt.getGeneratedKeys(); + while (lastKey.next()) { + etatNr = lastKey.getInt(1); + } + + /*Key wird in f_etatr_Nr eingesetzt, da zwischen etat und etatr eine 1:1 Beziehung + besteht. Das bedeutet jeder neuer Einzelteilauftrag f�hrt zu einer neuen Einzel- teilAuftragsRechnung mit der selben ID. - */ - sql = "update etat set f_etatr_Nr = " + etatNr + " where etat_Nr = " + etatNr; - stmt.executeUpdate(sql); - - //EinzelteilAuftragsPositionen werden geschrieben - Iterator etatPos_it = etat.getEinzelteilauftragPositionen().iterator(); - while (etatPos_it.hasNext()) { - ComponentContractItem etatPos = (ComponentContractItem) etatPos_it.next(); - sql = "Insert into rel_etat_et (f_et_Nr, f_etat_Nr, rel_etat_et_Bestellmenge, rel_etat_et_Stueckpreis) values (" + etatPos.getEtNr() + ", " + etatNr + ", " + etatPos.getBestellmenge() + ", " + etatPos.getPreis() + ")"; - - stmt.executeUpdate(sql); - } - } catch (SQLException sqlE) { - throw new WiSimDAOWriteException(sqlE.getMessage()); - } - return etatNr; - } - - /** Erstellt eine neue EinzelteilAuftragsRechnung - * @return EinzelteilauftragsrechnungsNr - * @param etatr Einzelteilauftrags nummer - * @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 - */ - public int setEinzelteilauftragsrechnung(ComponentContractAccount 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 { - // Create a Statement - Statement stmt = conn.createStatement(); - stmt.executeUpdate(sql); - ResultSet lastKey = stmt.getGeneratedKeys(); - while (lastKey.next()) { - return lastKey.getInt(1); - } - - } catch (SQLException sqlE) { - throw new WiSimDAOWriteException(sqlE.getMessage()); - } - return -1; - } - - /** Erstellt eine neue AuftragsRechnung - * @return AuftragsrechnungsNr - * @param atr Auftrags nummer - * @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 - */ - public int setAuftragsrechnung(ContractAccount atr) throws WiSimDAOException, WiSimDAOWriteException { - - String dbZlEingang = null; - - if (atr.getzEingang() == false) { - dbZlEingang = "'FALSE'"; - } else { - dbZlEingang = "'TRUE'"; - } - - String sql = "insert into atr (atr_Nr, atr_Betrag, f_at_Nr, f_mwst_Satz, atr_zleingang) " + "VALUES ( " + atr.getNr() + ", " + atr.getBetrag() + ", " + atr.getAuftragNr() + ", " + atr.getMwSt() + ", " + dbZlEingang + ");"; - - try { - // Create a Statement - Statement stmt = conn.createStatement(); - stmt.executeUpdate(sql); - ResultSet lastKey = stmt.getGeneratedKeys(); - while (lastKey.next()) { - return lastKey.getInt(1); - } - - } catch (SQLException sqlE) { - throw new WiSimDAOWriteException(sqlE.getMessage()); - } - return -1; - } - - /** Gibt den MwSt-Satz aus der Datenbank zur�ck. - * @throws WiSimDAOException if a database problem occurs or the connection was never initialized - * @return Mehrwertsteuer-Satz - */ - public float getMwSt() throws WiSimDAOException { - String sql = "Select mwst_satz from mwst"; - try { - // Create a Statement - Statement stmt = conn.createStatement(); - ResultSet rset = stmt.executeQuery(sql); - - while (rset.next()) { - return rset.getFloat(1); - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return -1; - } - - /** Holt alle Einzelteile aus der Datenbank - * @return Collection - * @throws WiSimDAOException Fehler beim Lesen von der DB - */ - public Collection getAlleArtikel() throws WiSimDAOException { - String sql = "SELECT * FROM art"; - - Collection alleartikel = (Collection) new Vector(); - try { - // Create a Statement - Statement stmt = conn.createStatement(); - ResultSet rset = stmt.executeQuery(sql); - - while (rset.next()) { - Article artikel = new Article(); - artikel.setNr(rset.getInt(1)); - artikel.setName(rset.getString(2)); - artikel.setStueckpreis(rset.getFloat(3)); - artikel.setMindestbestand(rset.getInt(4)); - alleartikel.add(artikel); - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return alleartikel; - } - - /** Holt ein Article aus der Datenbank - * @return Article - * @param id ID des Artikels - * @throws WiSimDAOException Fehler beim Lesen von der DB - */ - public Article getArtikel(int id) throws WiSimDAOException { - String sql = "SELECT * FROM art WHERE art_Nr = " + id; - - Article artikel = new Article(); - try { - // Create a Statement - Statement stmt = conn.createStatement(); - ResultSet rset = stmt.executeQuery(sql); - - while (rset.next()) { - artikel.setNr(rset.getInt(1)); - artikel.setName(rset.getString(2)); - artikel.setStueckpreis(rset.getFloat(3)); - artikel.setMindestbestand(rset.getInt(4)); - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return artikel; - } - - /** Holt alle Vertr�ge aus der Datenbank - * @return Collection - * @throws WiSimDAOException Fehler beim Lesen von der DB - */ - public Collection getVertraege() throws WiSimDAOException { - String sql = "SELECT * FROM at"; - - Collection vertraege = (Collection) new Vector(); - 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); - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return vertraege; - } - - /** Holt einen Contract aus der Datenbank - * @return Contract - * @param id ID des Vertrages - * @throws WiSimDAOException Fehler beim Lesen von der DB - */ - public Contract getVertrag(int id) throws WiSimDAOException { - String sql = "SELECT * FROM at WHERE at_Nr = " + id; - - Contract vertrag = new Contract(); - try { - // Create a Statement - Statement stmt = conn.createStatement(); - ResultSet rset = stmt.executeQuery(sql); - - while (rset.next()) { - vertrag.setVertragsId(rset.getInt(1)); - vertrag.setLieferdatum(rset.getDate(2)); - vertrag.setSkonto(rset.getDouble(3)); - vertrag.setSkontofrist(rset.getLong(4)); - vertrag.setRabatt(rset.getDouble(5)); - vertrag.setVertragsdatum(rset.getDate(6)); - vertrag.setKundenId(rset.getInt(7)); - vertrag.setAuftragsrechnungsId(rset.getInt(8)); - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return vertrag; - } - - /** Legt einen neuen Contract an - * @param vertrag Contract - * @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 int - */ - public int setNeuenVertrag(Contract vertrag) throws WiSimDAOException, WiSimDAOWriteException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); - String sql = ""; - int key = -1; - try { - try { - //Update der Tabelle: Ort - Statement stmt = conn.createStatement(); - - // Create a Statement - //Statement stmt = conn.createStatement(); - // update statement for record in table contract - // Neuer Vertrag wird angelegt - sql = - "insert into at " - + "(at_Lieferdatum, at_Skonto, at_Skontofrist, at_Rabatt, at_Datum, f_kd_Nr, f_atr_Nr) values (\"" - + vertrag.getLieferdatum() - + "\", \"" - + vertrag.getSkonto() - + "\", \"" - + vertrag.getSkontofrist() - + "\", \"" - + vertrag.getRabatt() - + "\", \"" - + vertrag.getVertragsdatum() - + "\", \"" - + vertrag.getKundenId() - + "\", \"" - + vertrag.getAuftragsrechnungsId() - + "\") "; - - stmt.executeUpdate(sql); - - ResultSet lastKey = stmt.getGeneratedKeys(); - while (lastKey.next()) { - key = lastKey.getInt(1); - } - } catch (SQLException sqlE) { - conn.rollback(); - throw new WiSimDAOWriteException(sqlE.getMessage()); - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return key; - } - - /** Gibt eine Liste aller Einzelteilauftr�ge zur�ck. - * @throws WiSimDAOException if a database problem occurs or the connection was never initialized - * @return Vector mit allen Einzelteilauftr�gen - */ - public Vector getEinzelteilauftraege() throws WiSimDAOException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); - String sql = ""; - Vector etatListe = new Vector(); - try { - sql = "SELECT etat_Nr, etat_Lieferrabatt, etat_Skontofrist, etat_Lieferdatum, etat_Datum, etat_Skonto, " + "f_lt_Nr, f_etatr_Nr FROM etat ORDER BY etat_Datum DESC"; - Statement stmt = conn.createStatement(); - ResultSet rset = stmt.executeQuery(sql); - while (rset.next()) { - ComponentContract etat = new ComponentContract(); - etat.setNr(rset.getInt(1)); - etat.setLieferrabatt(rset.getFloat(2)); - etat.setSkontofrist(rset.getInt(3)); - etat.setLieferdatum(rset.getDate(4)); - etat.setAuftragsdatum(rset.getDate(5)); - etat.setSkonto(rset.getFloat(6)); - etat.setLieferantNr(rset.getInt(7)); - etat.setEinzelteilAuftragsRechnungNr(rset.getInt(8)); - etatListe.add(etat); - } - - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return etatListe; - } - - /** Gibt alle Positionen eines Einzelteilauftrages zur�ck. - * @param etatNr Einzelteilauftrags Nummer - * @throws WiSimDAOException if a database problem occurs or the connection was never initialized - * @return Collection mit allen Einzelteilauftragspositionen - */ - public Collection getEinzelteilAuftragsPositionen(int etatNr) throws WiSimDAOException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); - String sql = ""; - Collection etatPositionen = new Vector(); - 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(); - ResultSet rset = stmt.executeQuery(sql); - - while (rset.next()) { - ComponentContractItem etatPos = new ComponentContractItem(); - etatPos.setEtNr(rset.getInt(1)); - etatPos.setEtatNr(rset.getInt(2)); - etatPos.setBestellmenge(rset.getInt(3)); - etatPos.setPreis(rset.getDouble(4)); - etatPositionen.add(etatPos); - } - - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return etatPositionen; - } - - /** Gibt alle Positionen eines Auftrages zur�ck. - * @param atNr Auftrags Nummer - * @throws WiSimDAOException if a database problem occurs or the connection was never initialized - * @return Collection mit allen Auftragspositionen - */ - public Collection getAuftragsPositionen(int atNr) throws WiSimDAOException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); - String sql = ""; - Collection atPositionen = new Vector(); - 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(); - atPos.setArtNr(rset.getInt(1)); - atPos.setAtNr(rset.getInt(2)); - atPos.setBestellmenge(rset.getLong(3)); - - atPositionen.add(atPos); - } - - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return atPositionen; - } - - /** Gibt eine Position eines Auftrages zur�ck. - * @param atNr Auftrags Nummer - * @throws WiSimDAOException if a database problem occurs or the connection was never initialized - * @return Auftragsposition - */ - public OrderItem getAuftragsPosition(int atNr) throws WiSimDAOException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getVertrag Action: start"); - String sql = ""; - OrderItem atp = new OrderItem(); - 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()) { - atp.setArtNr(rset.getInt(1)); - atp.setAtNr(rset.getInt(2)); - atp.setBestellmenge(rset.getLong(3)); - } - - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return atp; - } - - /** Gibt eine ContractAccount eines Auftrages zur�ck. - * @param atrNr Auftragrechnungs Nummer - * @throws WiSimDAOException if a database problem occurs or the connection was never initialized - * @return ContractAccount - */ - public ContractAccount getAuftragsrechnung(int atrNr) throws WiSimDAOException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getVertrag Action: start"); - String sql = ""; - ContractAccount atr = new ContractAccount(); - 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(); - ResultSet rset = stmt.executeQuery(sql); - - while (rset.next()) { - atr.setNr(rset.getInt(1)); - atr.setBetrag(rset.getDouble(2)); - atr.setAuftragNr(rset.getInt(3)); - atr.setMwSt(rset.getFloat(4)); - atr.setzEingang(rset.getBoolean(5)); - } - - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return atr; - } - - /** Gibt die ComponentContractAccount 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. - */ - public ComponentContractAccount getEinzelteilauftragsrechnung(int etatrNr) throws WiSimDAOException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); - String sql = ""; - ComponentContractAccount etatr = new ComponentContractAccount(); - try { - sql = "SELECT etatr_Betrag, f_mwst_Satz FROM etatr WHERE etatr_Nr = " + etatrNr; - Statement stmt = conn.createStatement(); - ResultSet rset = stmt.executeQuery(sql); - - while (rset.next()) { - etatr.setBetrag(rset.getFloat(1)); - etatr.setMwSt(rset.getFloat(2)); - } - - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return etatr; - } - - /** Markiert einen Kunden als geloescht bzw sichtbar - * @return int - * @param KdNr Kundennummer - * @param status L�schstatus - * @throws com.pixelpark.wisim.dao.WiSimDAOException if a database problem occurs or the connection was never initialized - * @throws com.pixelpark.wisim.dao.WiSimDAOWriteException if there was a db constaint violation - */ - public int setKundenLoeschStatus(int KdNr, boolean status) throws WiSimDAOException, WiSimDAOWriteException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); - - String sql = ""; - int key = -1; - try { - try { - Statement stmt = conn.createStatement(); - sql = "UPDATE kd SET " + "kd_deleted ='" + status + "' " + "WHERE kd_Nr = " + KdNr + ""; - - stmt.executeUpdate(sql); - ResultSet lastKey = stmt.getGeneratedKeys(); - while (lastKey.next()) { - key = lastKey.getInt(1); - } - } catch (SQLException sqlE) { - conn.rollback(); - throw new WiSimDAOWriteException(sqlE.getMessage()); - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return key; - } - - /** L�scht einen Lieferlisten-Eintrag aus der Datenbank - * @return int - * @param ltId Lieferanten-ID - * @param etNr Einzelteilnummer - * @throws WiSimDAOWriteException Fehler beim Schreiben in die DB - */ - public int loescheLieferliste(int ltId, int etNr) throws WiSimDAOWriteException { - String sql = ""; - try { - Statement stmt = conn.createStatement(); - sql = "DELETE FROM rel_lt_et WHERE f_et_Nr = '" + etNr + "' AND f_lt_Nr = '" + ltId + "'"; - int res = stmt.executeUpdate(sql); - return res; - } catch (SQLException sqlE) { - throw new WiSimDAOWriteException(sqlE.getMessage()); - } - } - - /** Gibt alle Lagerpl�tz des Lagers aus - * @throws WiSimDAOException if a database problem occurs or the connection was never initialized - * @return Collection aller Lagerpl�tze - */ - public Collection getLagerplaetze() throws WiSimDAOException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); - String sql = ""; - Collection lagerplaetze = new Vector(); - try { - sql = "SELECT lg_StellplatzNr FROM lg"; - Statement stmt = conn.createStatement(); - ResultSet rset = stmt.executeQuery(sql); - - while (rset.next()) { - WarehouseLocation lgplatz = new WarehouseLocation(rset.getString(1)); - lagerplaetze.add(lgplatz); - } - - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return lagerplaetze; - } - - /** Liefert alle Lagerpl�tze zur�ck, die einen bestimmten Article enthalten - * @return Collection mit den Lagerpl�tzen wo das WiSimComponent liegt. - * @param etNr WiSimComponent Nummer - * @throws WiSimDAOException if a database problem occurs or the connection was never initialized - */ - public Collection getLagerplaetze(int etNr) throws WiSimDAOException { - String sql = "SELECT * FROM rel_et_lg WHERE f_et_Nr=" + etNr; - - Collection lager; - try { - Statement stmt = conn.createStatement(); - ResultSet res = stmt.executeQuery(sql); - lager = (Collection) new Vector(); - while (res.next()) { - WarehouseLocation lgp = new WarehouseLocation(); - lgp.setStellplatzNr(res.getString(1)); - lgp.setEinzelteilNr(etNr); - lgp.setBestand(res.getInt(3)); - lgp.setMaxBestand(res.getInt(4)); - lager.add(lgp); - } - } catch (SQLException e) { - throw new WiSimDAOException(e.getMessage()); - } - return lager; - } - - /** Gibt eine Liste aller Einzelteile die sich im Lager befinden zur�ck. - * Jeder Eintrag hat neben den Informationen WiSimComponent-Name auch die Zahlen f�r - * Bestand, Mindestbestand und MaxBestand. - * Jedes WiSimComponent kommt nur einmal vor. Befindt sich ein WiSimComponent auf mehrern - * Lagerpl�tzen, so werden die Best�nde entsprechend summiert. - * @throws WiSimDAOException if a database problem occurs or the connection was never initialized - * @return Vector mit allen Einzelteilen die sich im Lager befinden. - */ - public Vector getEinzelteilLagerElement() throws WiSimDAOException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); - String sql = ""; - Vector einzelteillagerelemente = new Vector(); - try { - sql = "SELECT f_et_Nr, SUM(rel_et_lg_Bestand) AS Bestand, SUM(rel_et_lg_MaxBestand) AS MaxBestand FROM rel_et_lg GROUP BY f_et_Nr"; - Statement stmt = conn.createStatement(); - ResultSet rset = stmt.executeQuery(sql); - int i = 0; - while (rset.next()) { - WiSimComponent et = getEinzelteil(rset.getInt(1)); - ComponentWarehouseItem etElem = new ComponentWarehouseItem(); - etElem.setEinzelteilName(et.getName()); - etElem.setId(et.getNr()); - etElem.setBestand(rset.getInt(2)); - etElem.setMaxBestand(rset.getInt(3)); - etElem.setMinBestand(et.getMindestbestand()); - einzelteillagerelemente.add(i, etElem); - i++; - } - - int a = einzelteillagerelemente.size() - 1; - while (a >= 0) { - ComponentWarehouseItem etElem = (ComponentWarehouseItem) einzelteillagerelemente.get(a); - Collection lagerplaetze = new Vector(); - sql = "SELECT f_lg_StellplatzNr FROM rel_et_lg WHERE f_et_Nr = " + etElem.getId(); - stmt = conn.createStatement(); - rset = stmt.executeQuery(sql); - while (rset.next()) { - lagerplaetze.add(rset.getString(1)); - } - etElem.setLagerplaetze(lagerplaetze); - einzelteillagerelemente.set(a, etElem); - a--; - } - - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return einzelteillagerelemente; - } - - /** Gibt eine Liste aller Einzelteile die sich auf dem angegebenen WarehouseLocation befinden zur�ck. - * Jeder Eintrag hat neben den Informationen WiSimComponent-Name auch die Zahlen f�r - * Bestand, Mindestbestand und MaxBestand. - * @param lagerplatz Der WarehouseLocation - * @throws WiSimDAOException if a database problem occurs or the connection was never initialized - * @return Collection mit allen Einzelteilen des Lagerplatzes - */ - public Collection getEinzelteilLagerElement(String lagerplatz) throws WiSimDAOException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); - String sql = ""; - Collection einzelteillagerelemente = new Vector(); - - try { - sql = "SELECT f_et_Nr, rel_et_lg_Bestand, rel_et_lg_MaxBestand FROM rel_et_lg WHERE f_lg_StellplatzNr = '" + lagerplatz + "'"; - Statement stmt = conn.createStatement(); - ResultSet rset = stmt.executeQuery(sql); - while (rset.next()) { - ComponentWarehouseItem etElem = new ComponentWarehouseItem(); - etElem.setId(rset.getInt(1)); - etElem.setBestand(rset.getInt(2)); - etElem.setMaxBestand(rset.getInt(3)); - einzelteillagerelemente.add(etElem); - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return einzelteillagerelemente; - } - - /** Gibt eine Liste aller Article die sich im Lager befinden zur�ck. - * Jeder Eintrag hat neben den Informationen Article-Name auch die Zahlen f�r - * Bestand, Mindestbestand und MaxBestand. - * Jeder Article kommt nur einmal vor. Befindt sich ein Article auf mehrern - * Lagerpl�tzen, so werden die Best�nde entsprechend summiert. - * @throws WiSimDAOException if a database problem occurs or the connection was never initialized - * @return Vector mit allen Artikeln die im Lager sind. - */ - public Vector getArtikelLagerElement() throws WiSimDAOException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getArtikelLagerElement Action: start"); - String sql = ""; - Vector artikellagerelemente = new Vector(); - try { - sql = "SELECT f_art_Nr, SUM(rel_art_lg_Bestand) AS Bestand, SUM(rel_art_lg_MaxBestand) AS MaxBestand FROM rel_art_lg GROUP BY f_art_Nr"; - Statement stmt = conn.createStatement(); - ResultSet rset = stmt.executeQuery(sql); - int i = 0; - while (rset.next()) { - Article art = getArtikel(rset.getInt(1)); - ComponentWarehouseItem etElem = new ComponentWarehouseItem(); - etElem.setEinzelteilName(art.getName()); - etElem.setId(art.getNr()); - etElem.setBestand(rset.getInt(2)); - etElem.setMaxBestand(rset.getInt(3)); - etElem.setMinBestand(art.getMindestbestand()); - artikellagerelemente.add(i, etElem); - i++; - } - - int a = artikellagerelemente.size() - 1; - while (a >= 0) { - ComponentWarehouseItem etElem = (ComponentWarehouseItem) artikellagerelemente.get(a); - Collection lagerplaetze = new Vector(); - sql = "SELECT f_lg_StellplatzNr FROM rel_art_lg WHERE f_art_Nr = " + etElem.getId(); - stmt = conn.createStatement(); - rset = stmt.executeQuery(sql); - while (rset.next()) { - lagerplaetze.add(rset.getString(1)); - } - etElem.setLagerplaetze(lagerplaetze); - artikellagerelemente.set(a, etElem); - a--; - } - - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return artikellagerelemente; - } - - /** Gibt eine Liste aller Article die sich auf dem angegebenen WarehouseLocation befinden zur�ck. - * Jeder Eintrag hat neben den Informationen Article-Name auch die Zahlen f�r - * Bestand, Mindestbestand und MaxBestand. - * @param lagerplatz Der WarehouseLocation - * @throws WiSimDAOException if a database problem occurs or the connection was never initialized - * @return Collection mit allen Artikeln die auf dem WarehouseLocation liegen - */ - public Collection getArtikelLagerElement(String lagerplatz) throws WiSimDAOException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); - String sql = ""; - Collection artikellagerelemente = new Vector(); - - try { - sql = "SELECT f_art_Nr, rel_art_lg_Bestand, rel_art_lg_MaxBestand FROM rel_art_lg WHERE f_lg_StellplatzNr = '" + lagerplatz + "'"; - Statement stmt = conn.createStatement(); - ResultSet rset = stmt.executeQuery(sql); - while (rset.next()) { - ComponentWarehouseItem etElem = new ComponentWarehouseItem(); - etElem.setId(rset.getInt(1)); - etElem.setBestand(rset.getInt(2)); - etElem.setMaxBestand(rset.getInt(3)); - artikellagerelemente.add(etElem); - } - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return artikellagerelemente; - } - - /** Erh�ht / Erniedrigt den Bestand eines Einzelteils im Lager. - * @param etNr WiSimComponent Nummer - * @param menge neue Menge = aktuelleMenge + menge - * Das hei�t, wenn eine negative Menge angegeben wird, so erniedrigt man den Bestand. - * @throws WiSimDAOWriteException if a database problem occurs or the connection was never initialized - * @return int Anzahl der tats�chlich in die DB eingetragenen Einzelteile - */ - public int setEinzelteilLagerBestand(int etNr, int menge) throws WiSimDAOWriteException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); - String sql = ""; - - try { - sql = "SELECT rel_et_lg_Bestand, rel_et_lg_MaxBestand FROM rel_et_lg WHERE f_et_Nr = " + etNr; - Statement stmt = conn.createStatement(); - ResultSet rset = stmt.executeQuery(sql); - int bestand = -1; - int maxBestand = -1; - - while (rset.next()) { - bestand = rset.getInt(1); - maxBestand = rset.getInt(2); - } - - if ((bestand + menge) < 0) { - if (bestand > 0) { - menge = bestand * -1; - } else - return 0; - } - - if ((bestand + menge) > maxBestand) { - menge = maxBestand - bestand; - } - - sql = "UPDATE rel_et_lg SET rel_et_lg_Bestand = rel_et_lg_Bestand + " + menge + " WHERE f_et_Nr = " + etNr; - - stmt = conn.createStatement(); - stmt.executeUpdate(sql); - - return menge; - - } catch (SQLException sqlE) { - throw new WiSimDAOWriteException(sqlE.getMessage()); - } - } /** Erh�ht / Erniedrigt den Bestand eines Artikels im Lager. - * @param artNr Article Nummer - * @param menge neue Menge = aktuelleMenge + menge - * Das hei�t, wenn eine negative Menge angegeben wird, so erniedrigt man den Bestand. - * @throws WiSimDAOWriteException if a database problem occurs or the connection was never initialized - * @return True: Bestand wurde erh�ht / erniedrigt. - * False: - * Bei Erh�hung: Gelieferte Menege �bertrifft den Maximal Bestand. Der neue Bestand - * ist jetzt der Maximal Bestand, der Rest der Lieferung wird ignoriert. - * Bei Erniedrigung: - * Der Bestand dieses Artikels ist schon auf 0. - */ - public synchronized boolean setArtikelLagerBestand(int artNr, int menge) throws WiSimDAOWriteException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); - String sql = ""; - - try { - sql = "SELECT rel_art_lg_Bestand, rel_art_lg_MaxBestand FROM rel_art_lg WHERE f_art_Nr = " + artNr; - Statement stmt = conn.createStatement(); - ResultSet rset = stmt.executeQuery(sql); - int bestand = -1; - int maxBestand = -1; - boolean status = false; - - while (rset.next()) { - bestand = rset.getInt(1); - maxBestand = rset.getInt(2); - } - - if ((bestand + menge) < 0) { - return false; - } - - if ((bestand + menge) > maxBestand) { - status = false; - menge = maxBestand - bestand; - } else { - status = true; - } - - sql = "UPDATE rel_art_lg SET rel_art_lg_Bestand = rel_art_lg_Bestand + " + menge + " WHERE f_art_Nr = " + artNr; - stmt = conn.createStatement(); - stmt.executeUpdate(sql); - return status; - - } catch (SQLException sqlE) { - throw new WiSimDAOWriteException(sqlE.getMessage()); - } - } - - /** Liefert eine Liste aller Arbeitsplaetze. - * @throws WiSimDAOException if an error occurs - * @return Vector mit allen Arbeitsplaetzen - */ - public synchronized Vector getArbeitsplaetze() throws WiSimDAOException { - String sql = "SELECT * FROM ap"; - Vector arbeitsplaetze = new Vector(); - try { - Statement stmt = conn.createStatement(); - ResultSet res = stmt.executeQuery(sql); - WorkPlace arbeitsplatz = null; - while (res.next()) { - arbeitsplatz = new WorkPlace(res.getInt(1), res.getString(2), res.getInt(3), res.getInt(4)); - arbeitsplaetze.add(arbeitsplatz); - } - - Iterator it = arbeitsplaetze.iterator(); - arbeitsplaetze = new Vector(); - while (it.hasNext()) { - WorkPlace ap = (WorkPlace) it.next(); - sql = "SELECT nf_nachfolger FROM nf WHERE f_ap_nr = " + ap.getNr(); - ResultSet res2 = stmt.executeQuery(sql); - - int rows = 0; - while (res2.next()) { - rows++; - } - res2.beforeFirst(); - - int[] nf = new int[rows]; - int i = 0; - while (res2.next()) { - nf[i] = res2.getInt(1); - i++; - } - ap.setNachfolger(nf); - - sql = "SELECT vg_vorgaenger FROM vg WHERE f_ap_nr = " + ap.getNr(); - res2 = stmt.executeQuery(sql); - rows = 0; - while (res2.next()) { - rows++; - } - res2.beforeFirst(); - int[] vg = new int[rows]; - i = 0; - while (res2.next()) { - vg[i] = res2.getInt(1); - i++; - } - ap.setVorgaenger(vg); - arbeitsplaetze.add(ap); - } - } catch (SQLException e) { - throw new WiSimDAOException(e.getMessage()); - } - return arbeitsplaetze; - } - - /** Holt ein Arbeitsplatzlager aus der DB - * @param arbeitsplatzNr Arbeitsplatznummer - * @param lagerTyp Lagertyp - * @throws WiSimDAOException Fehler beim Lesen aus der DB - * @return Collection - */ - public synchronized Collection 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 = (Collection) new Vector(); - - try { - Statement stmt = conn.createStatement(); - ResultSet res = stmt.executeQuery(sql); - while (res.next()) { - WorkPlaceStore apl = new WorkPlaceStore(); - apl = new WorkPlaceStore(res.getInt(1), res.getInt(2), res.getString(3), res.getInt(4), res.getInt(5), res.getInt(6)); - apLager.add(apl); - } - } catch (SQLException e) { - throw new WiSimDAOException(e.getMessage()); - //FIXME ab und zu kommt es zu einem Datenbankfehler (fehlende Tabelle rel_et_ap), h�ngt wahrscheinlich mit den Threads zusammen, die w�hrend des Resets noch auf die DB zugreifen - } - - return apLager; - } - - /** Holt ein Arbeitsplatzlager aus der DB - * @param arbeitsplatzNr Arbeitsplatznummer - * @param einzelteilNr Einzelteilnummer - * @param typ Lagertyp - * @throws WiSimDAOException Fehler beim Lesen aus der DB - * @return Arbeitsplatzlager - */ - public synchronized WorkPlaceStore getArbeitsplatzLager(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(); - - 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)); - } - } catch (SQLException e) { - System.err.println(e.getMessage()); - } - return apLager; - } - - /** Gibt Stueckliste f�r einen bestimmten Article zur�ck. Der Key der Hashtable ist - * die WiSimComponent-Nummer, der Value ist die erforderliche Menge um 1 St�ck von - * diesem Article zu produzieren. - * @param artNr Article Nummer - * @throws WiSimDAOException if an database error occurs - * @return Hashtable (St�ckliste) - */ - public Hashtable getStueckliste(int artNr) throws WiSimDAOException { - Hashtable stueckliste = new Hashtable(); - 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))); - } - } catch (SQLException e) { - throw new WiSimDAOException(e.getMessage()); - } - return stueckliste; - } - - /** Gibt die Auftragsposition zur�ck die zu dem entsprechenden - * Auftrag geh�rt. - * @param atNr Auftrags Nummer - * @param artNr Article Nummer - * @throws WiSimDAOException if a database problem occurs or the connection was never initialized - * @return Die Auftragsposition. - */ - public OrderItem getAuftragsPosition(int atNr, int artNr) throws WiSimDAOException { - // Serverlog - logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getAuftrag Action: start"); - String sql = ""; - OrderItem atp = new OrderItem(); - 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; - 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)); - } - - } catch (SQLException sqlE) { - throw new WiSimDAOException(sqlE.getMessage()); - } - return atp; - } - - /** Gibt die Bestellmenge eines bestimmten Artikels in einem Contract zur�ck. - * @param atNr Auftrags Nr. - * @param artNr Article Nr. - * @throws WiSimDAOException if an database error occurs - * @return Bestellmenge - */ - public int getVertragsPositionMenge(int atNr, int artNr) throws WiSimDAOException { - int menge = 0; - try { - String sql = "SELECT 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()) { - menge = rset.getInt(1); - } - } catch (SQLException e) { - throw new WiSimDAOException(e.getMessage()); - } - return menge; - } - - /** Setzt die Position eines bestimmten Auftrags in einem Contract. - * @return int - * @param atp Auftragspositions - * @throws WiSimDAOWriteException Fehler beim Schreiben in die DB - */ - public int setAuftragsPosition(OrderItem 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 { - // Create a Statement - Statement stmt = conn.createStatement(); - stmt.executeUpdate(sql); - - } catch (SQLException e) { - throw new WiSimDAOWriteException(e.getMessage()); - } - return -1; - } - - /** Setzt die Zahl der Arbeiter f�r einen WorkPlace - * @param apNr WorkPlace Nummer - * @param anzahl Anzahl der Mitarbeiter - * @throws WiSimDAOWriteException If an error occurs - */ - public void setArbeiterZahl(int apNr, int anzahl) throws WiSimDAOWriteException { - try { - String sql = "UPDATE ap SET ap_AnzArbeiter = " + anzahl + " WHERE ap_Nr = " + apNr; - Statement stmt = conn.createStatement(); - stmt.executeUpdate(sql); - } catch (SQLException e) { - throw new WiSimDAOWriteException(e.getMessage()); - } - } - - /** Gibt die Anzahl der Arbeitspl�tze im Lager zur�ck - * @throws WiSimDAOException Fehler beim Lesen aus der DB - * @return int - */ - public int getAnzahlArbeitsplaetze() throws WiSimDAOException { - String sql = "SELECT MAX(ap_nr) FROM ap"; - int anzahl = -1; - try { - Statement stmt = conn.createStatement(); - ResultSet res = stmt.executeQuery(sql); - - while (res.next()) { - anzahl = res.getInt(1); - } - } catch (SQLException e) { - throw new WiSimDAOException(e.getMessage()); - } - return anzahl; - } - - /** - * Holt eine Liste mit NetzplanElementen aus der DB - * @return Collection aller Vorgaenge (NetzplanElemente) - * @throws WiSimDAOException If an error occurs - */ - public Vector getNetworkplanElements() throws WiSimDAOException { - Vector networkplanElements = new Vector(); - - try { - /** 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())); - networkplanElements.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(new Integer(np.getNumber()))).add(new Integer(rset.getInt(4))); - } - } - - int a = 0; - - /** Set each element's childs from the childBasket */ - while (a < networkplanElements.size()) { - NetworkplanElement np = (NetworkplanElement) networkplanElements.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) { - throw new WiSimDAOException(e.getMessage()); - } - return networkplanElements; - } - - /** - * Update a workplace - * @param workplace - * @throws WiSimDAOWriteException If an error occurs - */ - public void updateWorkplace(WorkPlace workplace) throws WiSimDAOWriteException { - String sql = "UPDATE ap SET ap_Beschreibung = '" + workplace.getBeschreibung() + "', ap_Dauer = '" + workplace.getDauer() + "' WHERE ap_Nr = " + workplace.getNr(); - - try { - // Create a Statement - Statement stmt = conn.createStatement(); - stmt.executeUpdate(sql); - - } catch (SQLException e) { - throw new WiSimDAOWriteException(e.getMessage()); - } - } - - /** Resets the DB - * - * @throws WiSimDAOException If an error occurs - */ - public void dbReset() throws WiSimDAOException { - String[] queriesFinal = parseSQLFile("/sql/complete.sql"); - - try { - - Statement stmt = conn.createStatement(); - for (int k = 0; k < queriesFinal.length; k++) { - stmt.executeUpdate(queriesFinal[k]); - } - - } catch (SQLException e) { - throw new WiSimDAOException(e.getMessage()); - } - - } - - /** Resets the DB - * - * @throws WiSimDAOException If an error occurs - */ - public void simulationReset() throws WiSimDAOException { - String[] queriesFinal = parseSQLFile("/sql/simulation.sql"); - - try { - - Statement stmt = conn.createStatement(); - for (int k = 0; k < queriesFinal.length; k++) { - stmt.executeUpdate(queriesFinal[k]); - } - - } catch (SQLException e) { - throw new WiSimDAOException(e.getMessage()); - } - - } - - private String[] parseSQLFile(String file) throws WiSimDAOException { - String result; - Pattern p; - URL url = getClass().getResource(file); - - byte buffer[] = null; - try { - InputStream in = url.openStream(); - DataInputStream data = new DataInputStream(in); - - buffer = new byte[in.available()]; - data.readFully(buffer); - in.close(); - } catch (IOException e) { - throw new WiSimDAOException(e.getMessage()); - } - - result = new String(buffer, 0, buffer.length); - p = Pattern.compile("\n"); - - String[] anweisungen = p.split(result); - int n = 0; - for (int i = 0; i < anweisungen.length; i++) { - if (anweisungen[i].startsWith("#") || anweisungen[i].toCharArray().length == 1) { - anweisungen[i] = null; - n++; - } - } - - String[] queries = new String[anweisungen.length - n]; - int j = 0; - for (int i = 0; i < anweisungen.length; i++) { - if (anweisungen[i] != null) { - queries[j] = anweisungen[i]; - j++; - } - } - - int i = 0; - int m = 1; - while (i < queries.length) { - if (queries[i].startsWith(" ")) { - queries[i - m] = queries[i - m].concat(queries[i]); - m++; - queries[i] = null; - } else if (queries[i].startsWith(")")) { - queries[i - m] = queries[i - m].concat(queries[i]); - queries[i] = null; - } else - m = 1; - i++; - } - - int a = 0; - for (int b = 0; b < queries.length; b++) { - if (queries[b] == null) { - a++; - } - } - - String[] queriesFinal = new String[queries.length - a]; - int c = 0; - for (int d = 0; d < queries.length; d++) { - if (queries[d] != null) { - queriesFinal[c] = queries[d]; - c++; - } - } - - for (int z = 0; z < queriesFinal.length; z++) { - char ersetzen[] = queriesFinal[z].toCharArray(); - for (int e = 0; e < ersetzen.length; e++) { - if (ersetzen[e] == ';' || ersetzen[e] == '\n') { - ersetzen[e] = ' '; - } - } - queriesFinal[z] = String.valueOf(ersetzen); - } - return queriesFinal; - } - - /** - * @return - */ - public String getDbName() { - return dbName; - } - - /** - * @return - */ - public String getHostName() { - return hostName; - } - - /** - * @return - */ - public String getPassword() { - return password; - } - - /** - * @return - */ - public String getPort() { - return port; - } - - /** - * @return - */ - public String getUser() { - return user; - } - - public void updateDBSettings(String hostname, String port, String user, String password) { - - String values = hostname + "\n" + port + "\n" + user + "\n" + password; - byte[] b = values.getBytes(); - Encoder encoder = Base64.getEncoder(); - values = encoder.encodeToString(b); - - try { - File file = new File("config.dat"); - FileWriter fw = new FileWriter(file); - fw.write(values); - fw.close(); - } catch (IOException e) { - //KTodo - } - } - - public Hashtable getEtCapacity() throws WiSimDAOException { - Hashtable etCapacity = new Hashtable(); - String sql = "SELECT et_name , et_Mindestbestand, rel_et_lg_bestand FROM rel_et_lg, et WHERE f_et_nr = et_nr;"; - - try { - Statement stmt = conn.createStatement(); - ResultSet res = stmt.executeQuery(sql); - - while (res.next()) { - etCapacity.put(res.getString(1), new int[] { res.getInt(2), res.getInt(3)}); - } - } catch (SQLException e) { - throw new WiSimDAOException(e.getMessage()); - } - return etCapacity; - } -} \ No newline at end of file + */ + sql = "update etat set f_etatr_Nr = " + etatNr + " where etat_Nr = " + etatNr; + stmt.executeUpdate(sql); + + //EinzelteilAuftragsPositionen werden geschrieben + Iterator etatPos_it = etat.getEinzelteilauftragPositionen().iterator(); + while (etatPos_it.hasNext()) { + ComponentContractItem etatPos = (ComponentContractItem) etatPos_it.next(); + sql = "Insert into rel_etat_et (f_et_Nr, f_etat_Nr, rel_etat_et_Bestellmenge, rel_etat_et_Stueckpreis) values (" + etatPos.getEtNr() + ", " + etatNr + ", " + etatPos.getBestellmenge() + ", " + etatPos.getPreis() + ")"; + + stmt.executeUpdate(sql); + } + } catch (SQLException sqlE) { + throw new WiSimDAOWriteException(sqlE.getMessage()); + } + return etatNr; + } + + /** + * Erstellt eine neue EinzelteilAuftragsRechnung + * + * @return EinzelteilauftragsrechnungsNr + * @param etatr Einzelteilauftrags nummer + * @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 + */ + @Override + public int setEinzelteilauftragsrechnung(ComponentContractAccount 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 { + // Create a Statement + Statement stmt = conn.createStatement(); + stmt.executeUpdate(sql); + ResultSet lastKey = stmt.getGeneratedKeys(); + while (lastKey.next()) { + return lastKey.getInt(1); + } + + } catch (SQLException sqlE) { + throw new WiSimDAOWriteException(sqlE.getMessage()); + } + return -1; + } + + /** + * Erstellt eine neue AuftragsRechnung + * + * @return AuftragsrechnungsNr + * @param atr Auftrags nummer + * @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 + */ + @Override + public int setAuftragsrechnung(ContractAccount atr) throws WiSimDAOException, WiSimDAOWriteException { + + String dbZlEingang; + + if (atr.getzEingang() == false) { + dbZlEingang = "'FALSE'"; + } else { + dbZlEingang = "'TRUE'"; + } + + String sql = "insert into atr (atr_Nr, atr_Betrag, f_at_Nr, f_mwst_Satz, atr_zleingang) " + "VALUES ( " + atr.getNr() + ", " + atr.getBetrag() + ", " + atr.getAuftragNr() + ", " + atr.getMwSt() + ", " + dbZlEingang + ");"; + + try { + // Create a Statement + Statement stmt = conn.createStatement(); + stmt.executeUpdate(sql); + ResultSet lastKey = stmt.getGeneratedKeys(); + while (lastKey.next()) { + return lastKey.getInt(1); + } + + } catch (SQLException sqlE) { + throw new WiSimDAOWriteException(sqlE.getMessage()); + } + return -1; + } + + /** + * Gibt den MwSt-Satz aus der Datenbank zur�ck. + * + * @throws WiSimDAOException if a database problem occurs or the connection + * was never initialized + * @return Mehrwertsteuer-Satz + */ + @Override + public float getMwSt() throws WiSimDAOException { + String sql = "Select mwst_satz from mwst"; + try { + // Create a Statement + Statement stmt = conn.createStatement(); + ResultSet rset = stmt.executeQuery(sql); + + while (rset.next()) { + return rset.getFloat(1); + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return -1; + } + + /** + * Holt alle Einzelteile aus der Datenbank + * + * @return Collection + * @throws WiSimDAOException Fehler beim Lesen von der DB + */ + @Override + public Collection
getAlleArtikel() throws WiSimDAOException { + String sql = "SELECT * FROM art"; + + Collection
alleartikel = new ArrayList<>(); + try { + // Create a Statement + Statement stmt = conn.createStatement(); + ResultSet rset = stmt.executeQuery(sql); + + while (rset.next()) { + Article artikel = new Article(); + artikel.setNr(rset.getInt(1)); + artikel.setName(rset.getString(2)); + artikel.setStueckpreis(rset.getFloat(3)); + artikel.setMindestbestand(rset.getInt(4)); + alleartikel.add(artikel); + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return alleartikel; + } + + /** + * Holt ein Article aus der Datenbank + * + * @return Article + * @param id ID des Artikels + * @throws WiSimDAOException Fehler beim Lesen von der DB + */ + @Override + public Article getArtikel(int id) throws WiSimDAOException { + String sql = "SELECT * FROM art WHERE art_Nr = " + id; + + Article artikel = new Article(); + try { + // Create a Statement + Statement stmt = conn.createStatement(); + ResultSet rset = stmt.executeQuery(sql); + + while (rset.next()) { + artikel.setNr(rset.getInt(1)); + artikel.setName(rset.getString(2)); + artikel.setStueckpreis(rset.getFloat(3)); + artikel.setMindestbestand(rset.getInt(4)); + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return artikel; + } + + /** + * Holt alle Vertr�ge aus der Datenbank + * + * @return Collection + * @throws WiSimDAOException Fehler beim Lesen von der DB + */ + @Override + public Collection getVertraege() throws WiSimDAOException { + String sql = "SELECT * FROM at"; + + Collection vertraege = 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); + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return vertraege; + } + + /** + * Holt einen Contract aus der Datenbank + * + * @return Contract + * @param id ID des Vertrages + * @throws WiSimDAOException Fehler beim Lesen von der DB + */ + @Override + public Contract getVertrag(int id) throws WiSimDAOException { + String sql = "SELECT * FROM at WHERE at_Nr = " + id; + + Contract vertrag = new Contract(); + try { + // Create a Statement + Statement stmt = conn.createStatement(); + ResultSet rset = stmt.executeQuery(sql); + + while (rset.next()) { + vertrag.setVertragsId(rset.getInt(1)); + vertrag.setLieferdatum(rset.getDate(2)); + vertrag.setSkonto(rset.getDouble(3)); + vertrag.setSkontofrist(rset.getLong(4)); + vertrag.setRabatt(rset.getDouble(5)); + vertrag.setVertragsdatum(rset.getDate(6)); + vertrag.setKundenId(rset.getInt(7)); + vertrag.setAuftragsrechnungsId(rset.getInt(8)); + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return vertrag; + } + + /** + * Legt einen neuen Contract an + * + * @param vertrag Contract + * @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 int + */ + @Override + public int setNeuenVertrag(Contract vertrag) throws WiSimDAOException, WiSimDAOWriteException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); + String sql; + int key = -1; + try { + try { + //Update der Tabelle: Ort + Statement stmt = conn.createStatement(); + + // Create a Statement + //Statement stmt = conn.createStatement(); + // update statement for record in table contract + // Neuer Vertrag wird angelegt + sql + = "insert into at " + + "(at_Lieferdatum, at_Skonto, at_Skontofrist, at_Rabatt, at_Datum, f_kd_Nr, f_atr_Nr) values (\"" + + vertrag.getLieferdatum() + + "\", \"" + + vertrag.getSkonto() + + "\", \"" + + vertrag.getSkontofrist() + + "\", \"" + + vertrag.getRabatt() + + "\", \"" + + vertrag.getVertragsdatum() + + "\", \"" + + vertrag.getKundenId() + + "\", \"" + + vertrag.getAuftragsrechnungsId() + + "\") "; + + stmt.executeUpdate(sql); + + ResultSet lastKey = stmt.getGeneratedKeys(); + while (lastKey.next()) { + key = lastKey.getInt(1); + } + } catch (SQLException sqlE) { + conn.rollback(); + throw new WiSimDAOWriteException(sqlE.getMessage()); + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return key; + } + + /** + * Gibt eine Liste aller Einzelteilauftr�ge zur�ck. + * + * @throws WiSimDAOException if a database problem occurs or the connection + * was never initialized + * @return Vector mit allen Einzelteilauftr�gen + */ + @Override + public ArrayList getEinzelteilauftraege() throws WiSimDAOException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); + String sql; + ArrayList etatListe = new ArrayList<>(); + try { + sql = "SELECT etat_Nr, etat_Lieferrabatt, etat_Skontofrist, etat_Lieferdatum, etat_Datum, etat_Skonto, " + "f_lt_Nr, f_etatr_Nr FROM etat ORDER BY etat_Datum DESC"; + Statement stmt = conn.createStatement(); + ResultSet rset = stmt.executeQuery(sql); + while (rset.next()) { + ComponentContract etat = new ComponentContract(); + etat.setNr(rset.getInt(1)); + etat.setLieferrabatt(rset.getFloat(2)); + etat.setSkontofrist(rset.getInt(3)); + etat.setLieferdatum(rset.getDate(4)); + etat.setAuftragsdatum(rset.getDate(5)); + etat.setSkonto(rset.getFloat(6)); + etat.setLieferantNr(rset.getInt(7)); + etat.setEinzelteilAuftragsRechnungNr(rset.getInt(8)); + etatListe.add(etat); + } + + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return etatListe; + } + + /** + * Gibt alle Positionen eines Einzelteilauftrages zur�ck. + * + * @param etatNr Einzelteilauftrags Nummer + * @throws WiSimDAOException if a database problem occurs or the connection + * was never initialized + * @return Collection mit allen Einzelteilauftragspositionen + */ + @Override + public Collection getEinzelteilAuftragsPositionen(int etatNr) throws WiSimDAOException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); + String sql; + Collection 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(); + ResultSet rset = stmt.executeQuery(sql); + + while (rset.next()) { + ComponentContractItem etatPos = new ComponentContractItem(); + etatPos.setEtNr(rset.getInt(1)); + etatPos.setEtatNr(rset.getInt(2)); + etatPos.setBestellmenge(rset.getInt(3)); + etatPos.setPreis(rset.getDouble(4)); + etatPositionen.add(etatPos); + } + + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return etatPositionen; + } + + /** + * Gibt alle Positionen eines Auftrages zur�ck. + * + * @param atNr Auftrags Nummer + * @throws WiSimDAOException if a database problem occurs or the connection + * was never initialized + * @return Collection mit allen Auftragspositionen + */ + @Override + public Collection getAuftragsPositionen(int atNr) throws WiSimDAOException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); + String sql; + 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(); + atPos.setArtNr(rset.getInt(1)); + atPos.setAtNr(rset.getInt(2)); + atPos.setBestellmenge(rset.getLong(3)); + + atPositionen.add(atPos); + } + + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return atPositionen; + } + + /** + * Gibt eine Position eines Auftrages zur�ck. + * + * @param atNr Auftrags Nummer + * @throws WiSimDAOException if a database problem occurs or the connection + * was never initialized + * @return Auftragsposition + */ + @Override + public OrderItem getAuftragsPosition(int atNr) throws WiSimDAOException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getVertrag Action: start"); + String sql; + OrderItem atp = new OrderItem(); + 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()) { + atp.setArtNr(rset.getInt(1)); + atp.setAtNr(rset.getInt(2)); + atp.setBestellmenge(rset.getLong(3)); + } + + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return atp; + } + + /** + * Gibt eine ContractAccount eines Auftrages zur�ck. + * + * @param atrNr Auftragrechnungs Nummer + * @throws WiSimDAOException if a database problem occurs or the connection + * was never initialized + * @return ContractAccount + */ + @Override + public ContractAccount getAuftragsrechnung(int atrNr) throws WiSimDAOException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getVertrag Action: start"); + String sql; + ContractAccount atr = new ContractAccount(); + 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(); + ResultSet rset = stmt.executeQuery(sql); + + while (rset.next()) { + atr.setNr(rset.getInt(1)); + atr.setBetrag(rset.getDouble(2)); + atr.setAuftragNr(rset.getInt(3)); + atr.setMwSt(rset.getFloat(4)); + atr.setzEingang(rset.getBoolean(5)); + } + + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return atr; + } + + /** + * Gibt die ComponentContractAccount 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. + */ + @Override + public ComponentContractAccount getEinzelteilauftragsrechnung(int etatrNr) throws WiSimDAOException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); + String sql; + ComponentContractAccount etatr = new ComponentContractAccount(); + try { + sql = "SELECT etatr_Betrag, f_mwst_Satz FROM etatr WHERE etatr_Nr = " + etatrNr; + Statement stmt = conn.createStatement(); + ResultSet rset = stmt.executeQuery(sql); + + while (rset.next()) { + etatr.setBetrag(rset.getFloat(1)); + etatr.setMwSt(rset.getFloat(2)); + } + + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return etatr; + } + + /** + * Markiert einen Kunden als geloescht bzw sichtbar + * + * @return int + * @param KdNr Kundennummer + * @param status Löschstatus + * @throws net.sourceforge.wisim.dao.WiSimDAOException Fehler beim Abfragen der DB + * @throws net.sourceforge.wisim.dao.WiSimDAOWriteException Fehler beim Schreiben in die DB + */ + @Override + public int setKundenLoeschStatus(int KdNr, boolean status) throws WiSimDAOException, WiSimDAOWriteException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.createContract(Contract) Action: start"); + + String sql; + int key = -1; + try { + try { + Statement stmt = conn.createStatement(); + sql = "UPDATE kd SET " + "kd_deleted ='" + status + "' " + "WHERE kd_Nr = " + KdNr + ""; + + stmt.executeUpdate(sql); + ResultSet lastKey = stmt.getGeneratedKeys(); + while (lastKey.next()) { + key = lastKey.getInt(1); + } + } catch (SQLException sqlE) { + conn.rollback(); + throw new WiSimDAOWriteException(sqlE.getMessage()); + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return key; + } + + /** + * L�scht einen Lieferlisten-Eintrag aus der Datenbank + * + * @return int + * @param ltId Lieferanten-ID + * @param etNr Einzelteilnummer + * @throws WiSimDAOWriteException Fehler beim Schreiben in die DB + */ + @Override + public int loescheLieferliste(int ltId, int etNr) throws WiSimDAOWriteException { + String sql; + try { + Statement stmt = conn.createStatement(); + sql = "DELETE FROM rel_lt_et WHERE f_et_Nr = '" + etNr + "' AND f_lt_Nr = '" + ltId + "'"; + int res = stmt.executeUpdate(sql); + return res; + } catch (SQLException sqlE) { + throw new WiSimDAOWriteException(sqlE.getMessage()); + } + } + + /** + * Gibt alle Lagerplätz des Lagers aus + * + * @throws WiSimDAOException if a database problem occurs or the connection + * was never initialized + * @return Collection aller Lagerplätze + */ + @Override + public Collection getLagerplaetze() throws WiSimDAOException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); + String sql; + Collection lagerplaetze = new ArrayList<>(); + try { + sql = "SELECT lg_StellplatzNr FROM lg"; + Statement stmt = conn.createStatement(); + ResultSet rset = stmt.executeQuery(sql); + + while (rset.next()) { + WarehouseLocation lgplatz = new WarehouseLocation(rset.getString(1)); + lagerplaetze.add(lgplatz); + } + + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return lagerplaetze; + } + + /** + * Liefert alle Lagerplätze zurück, die einen bestimmten Artikel enthalten + * + * @return Collection mit den Lagerplätzen wo das WiSimComponent liegt. + * @param etNr WiSimComponent Nummer + * @throws WiSimDAOException if a database problem occurs or the connection + * was never initialized + */ + @Override + public Collection getLagerplaetze(int etNr) throws WiSimDAOException { + String sql = "SELECT * FROM rel_et_lg WHERE f_et_Nr=" + etNr; + + Collection lager; + try { + Statement stmt = conn.createStatement(); + ResultSet res = stmt.executeQuery(sql); + lager = new ArrayList<>(); + while (res.next()) { + WarehouseLocation lgp = new WarehouseLocation(); + lgp.setStellplatzNr(res.getString(1)); + lgp.setEinzelteilNr(etNr); + lgp.setBestand(res.getInt(3)); + lgp.setMaxBestand(res.getInt(4)); + lager.add(lgp); + } + } catch (SQLException e) { + throw new WiSimDAOException(e.getMessage()); + } + return lager; + } + + /** + * Gibt eine Liste aller Einzelteile die sich im Lager befinden zurück. Jeder + * Eintrag hat neben den Informationen WiSimComponent-Name auch die Zahlen für + * Bestand, Mindestbestand und MaxBestand. Jedes WiSimComponent kommt nur + * einmal vor. Befindt sich ein WiSimComponent auf mehrern Lagerplätzen, so + * werden die Bestände entsprechend summiert. + * + * @throws WiSimDAOException if a database problem occurs or the connection + * was never initialized + * @return Vector mit allen Einzelteilen die sich im Lager befinden. + */ + @Override + public ArrayList getEinzelteilLagerElement() throws WiSimDAOException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); + String sql; + ArrayList einzelteillagerelemente = new ArrayList<>(); + try { + sql = "SELECT f_et_Nr, SUM(rel_et_lg_Bestand) AS Bestand, SUM(rel_et_lg_MaxBestand) AS MaxBestand FROM rel_et_lg GROUP BY f_et_Nr"; + Statement stmt = conn.createStatement(); + ResultSet rset = stmt.executeQuery(sql); + int i = 0; + while (rset.next()) { + WiSimComponent et = getEinzelteil(rset.getInt(1)); + ComponentWarehouseItem etElem = new ComponentWarehouseItem(); + etElem.setEinzelteilName(et.getName()); + etElem.setId(et.getNr()); + etElem.setBestand(rset.getInt(2)); + etElem.setMaxBestand(rset.getInt(3)); + etElem.setMinBestand(et.getMindestbestand()); + einzelteillagerelemente.add(i, etElem); + i++; + } + + int a = einzelteillagerelemente.size() - 1; + while (a >= 0) { + ComponentWarehouseItem etElem = einzelteillagerelemente.get(a); + Collection lagerplaetze = new ArrayList<>(); + sql = "SELECT f_lg_StellplatzNr FROM rel_et_lg WHERE f_et_Nr = " + etElem.getId(); + stmt = conn.createStatement(); + rset = stmt.executeQuery(sql); + while (rset.next()) { + lagerplaetze.add(rset.getString(1)); + } + etElem.setLagerplaetze(lagerplaetze); + einzelteillagerelemente.set(a, etElem); + a--; + } + + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return einzelteillagerelemente; + } + + /** + * Gibt eine Liste aller Einzelteile die sich auf dem angegebenen + * WarehouseLocation befinden zur�ck. Jeder Eintrag hat neben den + * Informationen WiSimComponent-Name auch die Zahlen f�r Bestand, + * Mindestbestand und MaxBestand. + * + * @param lagerplatz Der WarehouseLocation + * @throws WiSimDAOException if a database problem occurs or the connection + * was never initialized + * @return Collection mit allen Einzelteilen des Lagerplatzes + */ + @Override + public ArrayList getEinzelteilLagerElement(String lagerplatz) throws WiSimDAOException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); + String sql; + ArrayList einzelteillagerelemente = new ArrayList<>(); + + try { + sql = "SELECT f_et_Nr, rel_et_lg_Bestand, rel_et_lg_MaxBestand FROM rel_et_lg WHERE f_lg_StellplatzNr = '" + lagerplatz + "'"; + Statement stmt = conn.createStatement(); + ResultSet rset = stmt.executeQuery(sql); + while (rset.next()) { + ComponentWarehouseItem etElem = new ComponentWarehouseItem(); + etElem.setId(rset.getInt(1)); + etElem.setBestand(rset.getInt(2)); + etElem.setMaxBestand(rset.getInt(3)); + einzelteillagerelemente.add(etElem); + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return einzelteillagerelemente; + } + + /** + * Gibt eine Liste aller Article die sich im Lager befinden zurück. Jeder + * Eintrag hat neben den Informationen Article-Name auch die Zahlen für + * Bestand, Mindestbestand und MaxBestand. Jeder Artikel kommt nur einmal vor. + * Befindet sich ein Artikel auf mehreren Lagerplätzen, so werden die Bestände + * entsprechend summiert. + * + * @throws WiSimDAOException if a database problem occurs or the connection + * was never initialized + * @return ArrayList mit allen Artikeln die im Lager sind. + */ + @Override + public ArrayList getArtikelLagerElement() throws WiSimDAOException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getArtikelLagerElement Action: start"); + String sql; + ArrayList artikellagerelemente = new ArrayList<>(); + try { + sql = "SELECT f_art_Nr, SUM(rel_art_lg_Bestand) AS Bestand, SUM(rel_art_lg_MaxBestand) AS MaxBestand FROM rel_art_lg GROUP BY f_art_Nr"; + Statement stmt = conn.createStatement(); + ResultSet rset = stmt.executeQuery(sql); + int i = 0; + while (rset.next()) { + Article art = getArtikel(rset.getInt(1)); + ComponentWarehouseItem etElem = new ComponentWarehouseItem(); + etElem.setEinzelteilName(art.getName()); + etElem.setId(art.getNr()); + etElem.setBestand(rset.getInt(2)); + etElem.setMaxBestand(rset.getInt(3)); + etElem.setMinBestand(art.getMindestbestand()); + artikellagerelemente.add(i, etElem); + i++; + } + + int a = artikellagerelemente.size() - 1; + while (a >= 0) { + ComponentWarehouseItem etElem = artikellagerelemente.get(a); + Collection 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); + while (rset.next()) { + lagerplaetze.add(rset.getString(1)); + } + etElem.setLagerplaetze(lagerplaetze); + artikellagerelemente.set(a, etElem); + a--; + } + + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return artikellagerelemente; + } + + /** + * Gibt eine Liste aller Article die sich auf dem angegebenen + * WarehouseLocation befinden zur�ck. Jeder Eintrag hat neben den + * Informationen Article-Name auch die Zahlen für Bestand, Mindestbestand und + * MaxBestand. + * + * @param lagerplatz Der WarehouseLocation + * @throws WiSimDAOException if a database problem occurs or the connection + * was never initialized + * @return ArrayList mit allen Artikeln die auf dem WarehouseLocation liegen + */ + @Override + public ArrayList getArtikelLagerElement(String lagerplatz) throws WiSimDAOException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); + String sql; + ArrayList artikellagerelemente = new ArrayList<>(); + + try { + sql = "SELECT f_art_Nr, rel_art_lg_Bestand, rel_art_lg_MaxBestand FROM rel_art_lg WHERE f_lg_StellplatzNr = '" + lagerplatz + "'"; + Statement stmt = conn.createStatement(); + ResultSet rset = stmt.executeQuery(sql); + while (rset.next()) { + ComponentWarehouseItem etElem = new ComponentWarehouseItem(); + etElem.setId(rset.getInt(1)); + etElem.setBestand(rset.getInt(2)); + etElem.setMaxBestand(rset.getInt(3)); + artikellagerelemente.add(etElem); + } + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return artikellagerelemente; + } + + /** + * Erhöht/verringert den Bestand eines Einzelteils im Lager. + * + * @param etNr WiSimComponent Nummer + * @param menge neue Menge = aktuelleMenge + menge Das heißt, wenn eine + * negative Menge angegeben wird, so erniedrigt man den Bestand. + * @throws WiSimDAOWriteException if a database problem occurs or the + * connection was never initialized + * @return int Anzahl der tatsächlich in die DB eingetragenen Einzelteile + */ + @Override + public int setEinzelteilLagerBestand(int etNr, int menge) throws WiSimDAOWriteException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); + String sql; + + try { + sql = "SELECT rel_et_lg_Bestand, rel_et_lg_MaxBestand FROM rel_et_lg WHERE f_et_Nr = " + etNr; + Statement stmt = conn.createStatement(); + ResultSet rset = stmt.executeQuery(sql); + int bestand = -1; + int maxBestand = -1; + + while (rset.next()) { + bestand = rset.getInt(1); + maxBestand = rset.getInt(2); + } + + if ((bestand + menge) < 0) { + if (bestand > 0) { + menge = bestand * -1; + } else { + return 0; + } + } + + if ((bestand + menge) > maxBestand) { + menge = maxBestand - bestand; + } + + sql = "UPDATE rel_et_lg SET rel_et_lg_Bestand = rel_et_lg_Bestand + " + menge + " WHERE f_et_Nr = " + etNr; + + stmt = conn.createStatement(); + stmt.executeUpdate(sql); + + return menge; + + } catch (SQLException sqlE) { + throw new WiSimDAOWriteException(sqlE.getMessage()); + } + } + + /** + * Erhöht/verringert den Bestand eines Artikels im Lager. + * + * @param artNr Article Nummer + * @param menge neue Menge = aktuelleMenge + menge Das heißt, wenn eine + * negative Menge angegeben wird, so verringert man den Bestand. + * @throws WiSimDAOWriteException if a database problem occurs or the + * connection was never initialized + * @return True: Bestand wurde erhöht/verringert. False: Bei Erhöhung: + * Gelieferte Menege übertrifft den Maximalbestand. Der neue Bestand ist jetzt + * der Maximalbestand, der Rest der Lieferung wird ignoriert. Bei + * Erniedrigung: Der Bestand dieses Artikels ist schon auf 0. + */ + @Override + public synchronized boolean setArtikelLagerBestand(int artNr, int menge) throws WiSimDAOWriteException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getEtat Action: start"); + String sql; + + try { + sql = "SELECT rel_art_lg_Bestand, rel_art_lg_MaxBestand FROM rel_art_lg WHERE f_art_Nr = " + artNr; + Statement stmt = conn.createStatement(); + ResultSet rset = stmt.executeQuery(sql); + int bestand = -1; + int maxBestand = -1; + boolean status; + + while (rset.next()) { + bestand = rset.getInt(1); + maxBestand = rset.getInt(2); + } + + if ((bestand + menge) < 0) { + return false; + } + + if ((bestand + menge) > maxBestand) { + status = false; + menge = maxBestand - bestand; + } else { + status = true; + } + + sql = "UPDATE rel_art_lg SET rel_art_lg_Bestand = rel_art_lg_Bestand + " + menge + " WHERE f_art_Nr = " + artNr; + stmt = conn.createStatement(); + stmt.executeUpdate(sql); + return status; + + } catch (SQLException sqlE) { + throw new WiSimDAOWriteException(sqlE.getMessage()); + } + } + + /** + * Liefert eine Liste aller Arbeitsplaetze. + * + * @throws WiSimDAOException if an error occurs + * @return Vector mit allen Arbeitsplaetzen + */ + @Override + public synchronized ArrayList getArbeitsplaetze() throws WiSimDAOException { + String sql = "SELECT * FROM ap"; + ArrayList arbeitsplaetze = new ArrayList<>(); + try { + Statement stmt = conn.createStatement(); + ResultSet res = stmt.executeQuery(sql); + WorkPlace arbeitsplatz; + while (res.next()) { + arbeitsplatz = new WorkPlace(res.getInt(1), res.getString(2), res.getInt(3), res.getInt(4)); + arbeitsplaetze.add(arbeitsplatz); + } + + Iterator it = arbeitsplaetze.iterator(); + arbeitsplaetze = new ArrayList<>(); + while (it.hasNext()) { + WorkPlace ap = it.next(); + sql = "SELECT nf_nachfolger FROM nf WHERE f_ap_nr = " + ap.getNr(); + ResultSet res2 = stmt.executeQuery(sql); + + int rows = 0; + while (res2.next()) { + rows++; + } + res2.beforeFirst(); + + int[] nf = new int[rows]; + int i = 0; + while (res2.next()) { + nf[i] = res2.getInt(1); + i++; + } + ap.setNachfolger(nf); + + sql = "SELECT vg_vorgaenger FROM vg WHERE f_ap_nr = " + ap.getNr(); + res2 = stmt.executeQuery(sql); + rows = 0; + while (res2.next()) { + rows++; + } + res2.beforeFirst(); + int[] vg = new int[rows]; + i = 0; + while (res2.next()) { + vg[i] = res2.getInt(1); + i++; + } + ap.setVorgaenger(vg); + arbeitsplaetze.add(ap); + } + } catch (SQLException e) { + throw new WiSimDAOException(e.getMessage()); + } + return arbeitsplaetze; + } + + /** + * Holt ein Arbeitsplatzlager aus der DB + * + * @param arbeitsplatzNr Arbeitsplatznummer + * @param lagerTyp Lagertyp + * @throws WiSimDAOException Fehler beim Lesen aus der DB + * @return Collection + */ + @Override + public synchronized Collection 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<>(); + + try { + Statement stmt = conn.createStatement(); + ResultSet res = stmt.executeQuery(sql); + while (res.next()) { + + WorkPlaceStore apl = new WorkPlaceStore(res.getInt(1), res.getInt(2), res.getString(3), res.getInt(4), res.getInt(5), res.getInt(6)); + apLager.add(apl); + } + } catch (SQLException e) { + throw new WiSimDAOException(e.getMessage()); + //FIXME ab und zu kommt es zu einem Datenbankfehler (fehlende Tabelle rel_et_ap), h�ngt wahrscheinlich mit den Threads zusammen, die w�hrend des Resets noch auf die DB zugreifen + } + + return apLager; + } + + /** + * Holt ein Arbeitsplatzlager aus der DB + * + * @param arbeitsplatzNr Arbeitsplatznummer + * @param einzelteilNr Einzelteilnummer + * @param typ Lagertyp + * @throws WiSimDAOException Fehler beim Lesen aus der DB + * @return Arbeitsplatzlager + */ + @Override + public synchronized WorkPlaceStore getArbeitsplatzLager(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(); + + 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)); + } + } catch (SQLException e) { + System.err.println(e.getMessage()); + } + return apLager; + } + + /** + * Gibt Stueckliste 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 + * @throws WiSimDAOException if an database error occurs + * @return HashMap (Stückliste) + */ + @Override + public HashMap getStueckliste(int artNr) throws WiSimDAOException { + HashMap stueckliste = 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))); + } + } catch (SQLException e) { + throw new WiSimDAOException(e.getMessage()); + } + return stueckliste; + } + + /** + * Gibt die Auftragsposition zur�ck die zu dem entsprechenden Auftrag + * geh�rt. + * + * @param atNr Auftrags Nummer + * @param artNr Article Nummer + * @throws WiSimDAOException if a database problem occurs or the connection + * was never initialized + * @return Die Auftragsposition. + */ + @Override + public OrderItem getAuftragsPosition(int atNr, int artNr) throws WiSimDAOException { + // Serverlog + logger.finest("com.pixelpark.wisim.dao.WiSimDAOImpl.getAuftrag Action: start"); + String sql; + OrderItem atp = new OrderItem(); + 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; + 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)); + } + + } catch (SQLException sqlE) { + throw new WiSimDAOException(sqlE.getMessage()); + } + return atp; + } + + /** + * Gibt die Bestellmenge eines bestimmten Artikels in einem Contract zur�ck. + * + * @param atNr Auftrags Nr. + * @param artNr Article Nr. + * @throws WiSimDAOException if an database error occurs + * @return Bestellmenge + */ + @Override + public int getVertragsPositionMenge(int atNr, int artNr) throws WiSimDAOException { + int menge = 0; + try { + String sql = "SELECT 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()) { + menge = rset.getInt(1); + } + } catch (SQLException e) { + throw new WiSimDAOException(e.getMessage()); + } + return menge; + } + + /** + * Setzt die Position eines bestimmten Auftrags in einem Contract. + * + * @return int + * @param atp Auftragspositions + * @throws WiSimDAOWriteException Fehler beim Schreiben in die DB + */ + @Override + public int setAuftragsPosition(OrderItem 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 { + // Create a Statement + Statement stmt = conn.createStatement(); + stmt.executeUpdate(sql); + + } catch (SQLException e) { + throw new WiSimDAOWriteException(e.getMessage()); + } + return -1; + } + + /** + * Setzt die Zahl der Arbeiter f�r einen WorkPlace + * + * @param apNr WorkPlace Nummer + * @param anzahl Anzahl der Mitarbeiter + * @throws WiSimDAOWriteException If an error occurs + */ + @Override + public void setArbeiterZahl(int apNr, int anzahl) throws WiSimDAOWriteException { + try { + String sql = "UPDATE ap SET ap_AnzArbeiter = " + anzahl + " WHERE ap_Nr = " + apNr; + Statement stmt = conn.createStatement(); + stmt.executeUpdate(sql); + } catch (SQLException e) { + throw new WiSimDAOWriteException(e.getMessage()); + } + } + + /** + * Gibt die Anzahl der Arbeitspl�tze im Lager zur�ck + * + * @throws WiSimDAOException Fehler beim Lesen aus der DB + * @return int + */ + @Override + public int getAnzahlArbeitsplaetze() throws WiSimDAOException { + String sql = "SELECT MAX(ap_nr) FROM ap"; + int anzahl = -1; + try { + Statement stmt = conn.createStatement(); + ResultSet res = stmt.executeQuery(sql); + + while (res.next()) { + anzahl = res.getInt(1); + } + } catch (SQLException e) { + throw new WiSimDAOException(e.getMessage()); + } + return anzahl; + } + + /** + * Holt eine Liste mit NetzplanElementen aus der DB + * + * @return Collection aller Vorgaenge (NetzplanElemente) + * @throws WiSimDAOException If an error occurs + */ + @Override + public ArrayList getNetworkplanElements() throws WiSimDAOException { + ArrayList networkplanElements = new ArrayList<>(); + + try { + /** + * 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); + + HashMap> parentBasket = new HashMap<>(); + ArrayList completed = new ArrayList<>(); + + 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()); + networkplanElements.add(np); + ArrayList parent = new ArrayList<>(); + parent.add(rset.getInt(4)); + parentBasket.put(np.getNumber(), parent); + + /** + * This is an existing element with more than one child + */ + } else { + (parentBasket.get(np.getNumber())).add(rset.getInt(4)); + } + } + + int a = 0; + + /** + * Set each element's childs from the childBasket + */ + while (a < networkplanElements.size()) { + NetworkplanElement np = networkplanElements.get(a); + ArrayList parent = parentBasket.get(np.getNumber()); + + int parents[] = new int[parent.size()]; + + int b = 0; + while (b < parent.size()) { + parents[b] = parent.get(b); + b++; + } + + np.setParent(parents); + a++; + } + } catch (SQLException e) { + throw new WiSimDAOException(e.getMessage()); + } + return networkplanElements; + } + + /** + * Update a workplace + * + * @param workplace + * @throws WiSimDAOWriteException If an error occurs + */ + @Override + public void updateWorkplace(WorkPlace workplace) throws WiSimDAOWriteException { + String sql = "UPDATE ap SET ap_Beschreibung = '" + workplace.getBeschreibung() + "', ap_Dauer = '" + workplace.getDauer() + "' WHERE ap_Nr = " + workplace.getNr(); + + try { + // Create a Statement + Statement stmt = conn.createStatement(); + stmt.executeUpdate(sql); + + } catch (SQLException e) { + throw new WiSimDAOWriteException(e.getMessage()); + } + } + + /** + * Resets the DB + * + * @throws WiSimDAOException If an error occurs + */ + @Override + public void dbReset() throws WiSimDAOException { + String[] queriesFinal = parseSQLFile("/sql/complete.sql"); + + try { + + Statement stmt = conn.createStatement(); + for (String queriesFinal1 : queriesFinal) { + stmt.executeUpdate(queriesFinal1); + } + + } catch (SQLException e) { + throw new WiSimDAOException(e.getMessage()); + } + + } + + /** + * Resets the DB + * + * @throws WiSimDAOException If an error occurs + */ + @Override + public void simulationReset() throws WiSimDAOException { + String[] queriesFinal = parseSQLFile("/sql/simulation.sql"); + + try { + + Statement stmt = conn.createStatement(); + for (String queriesFinal1 : queriesFinal) { + stmt.executeUpdate(queriesFinal1); + } + + } catch (SQLException e) { + throw new WiSimDAOException(e.getMessage()); + } + + } + + private String[] parseSQLFile(String file) throws WiSimDAOException { + String result; + Pattern p; + URL url = getClass().getResource(file); + + byte buffer[]; + try { + InputStream in = url.openStream(); + DataInputStream data = new DataInputStream(in); + + buffer = new byte[in.available()]; + data.readFully(buffer); + in.close(); + } catch (IOException e) { + throw new WiSimDAOException(e.getMessage()); + } + + result = new String(buffer, 0, buffer.length); + p = Pattern.compile("\n"); + + String[] anweisungen = p.split(result); + int n = 0; + for (int i = 0; i < anweisungen.length; i++) { + if (anweisungen[i].startsWith("#") || anweisungen[i].toCharArray().length == 1) { + anweisungen[i] = null; + n++; + } + } + + String[] queries = new String[anweisungen.length - n]; + int j = 0; + for (String anweisungen1 : anweisungen) { + if (anweisungen1 != null) { + queries[j] = anweisungen1; + j++; + } + } + + int i = 0; + int m = 1; + while (i < queries.length) { + if (queries[i].startsWith(" ")) { + queries[i - m] = queries[i - m].concat(queries[i]); + m++; + queries[i] = null; + } else if (queries[i].startsWith(")")) { + queries[i - m] = queries[i - m].concat(queries[i]); + queries[i] = null; + } else { + m = 1; + } + i++; + } + + int a = 0; + for (String querie : queries) { + if (querie == null) { + a++; + } + } + + String[] queriesFinal = new String[queries.length - a]; + int c = 0; + for (String querie : queries) { + if (querie != null) { + queriesFinal[c] = querie; + c++; + } + } + + for (int z = 0; z < queriesFinal.length; z++) { + char ersetzen[] = queriesFinal[z].toCharArray(); + for (int e = 0; e < ersetzen.length; e++) { + if (ersetzen[e] == ';' || ersetzen[e] == '\n') { + ersetzen[e] = ' '; + } + } + queriesFinal[z] = String.valueOf(ersetzen); + } + return queriesFinal; + } + + /** + * @return + */ + @Override + public String getDbName() { + return dbName; + } + + /** + * @return + */ + @Override + public String getHostName() { + return hostName; + } + + /** + * @return + */ + @Override + public String getPassword() { + return password; + } + + /** + * @return + */ + @Override + public String getPort() { + return port; + } + + /** + * @return + */ + @Override + public String getUser() { + return user; + } + + @Override + public void updateDBSettings(String hostname, String port, String user, String password) { + + String values = hostname + "\n" + port + "\n" + user + "\n" + password; + byte[] b = values.getBytes(); + Encoder encoder = Base64.getEncoder(); + values = encoder.encodeToString(b); + + try { + File file = new File("config.dat"); + FileWriter fw = new FileWriter(file); + fw.write(values); + fw.close(); + } catch (IOException e) { + //Todo + } + } + + /** TODO + * + * @return + * @throws WiSimDAOException + */ + @Override + public HashMap> getEtCapacity() throws WiSimDAOException { + HashMap> etCapacity = new HashMap<>(); + String sql = "SELECT et_name , et_Mindestbestand, rel_et_lg_bestand FROM rel_et_lg, et WHERE f_et_nr = et_nr;"; + + try { + Statement stmt = conn.createStatement(); + ResultSet res = stmt.executeQuery(sql); + + while (res.next()) { + ArrayList bestand = new ArrayList<>(); + bestand.add(res.getInt(2)); + bestand.add(res.getInt(3)); + etCapacity.put(res.getString(1), bestand); + } + } catch (SQLException e) { + throw new WiSimDAOException(e.getMessage()); + } + return etCapacity; + } +} diff --git a/wisim/src/java/net/sourceforge/wisim/model/ComponentWarehouseItem.java b/wisim/src/java/net/sourceforge/wisim/model/ComponentWarehouseItem.java index bb0ad9f..aec0f45 100644 --- a/wisim/src/java/net/sourceforge/wisim/model/ComponentWarehouseItem.java +++ b/wisim/src/java/net/sourceforge/wisim/model/ComponentWarehouseItem.java @@ -1,8 +1,8 @@ /* ******************************************************************** ** ** Copyright notice ** ** ** -** (c) 2003 WiSim Development Team ** -** https://github.com/kpatzwald/WiSim ** +** (c) 2003 WiSim Development Team ** +** https://github.com/kpatzwald/WiSim ** ** ** ** All rights reserved ** ** ** @@ -20,140 +20,157 @@ ** ** ** This copyright notice MUST APPEAR in all copies of the file! ** ** ******************************************************************** */ - /** * @author benjamin.pasero * - * + * */ package net.sourceforge.wisim.model; + import java.util.*; -/** Die Summe der Einzelteile eines bestimmten Typs (Name, Einzelteile Nr, Bestand, - * Mindestbestand, Maximalbestand und eine Liste mit Lagerplätzen wo sich dieses - * WiSimComponent befindet. + +/** + * Die Summe der Einzelteile eines bestimmten Typs (Name, Einzelteile Nr, + * Bestand, Mindestbestand, Maximalbestand und eine Liste mit Lagerplätzen wo + * sich dieses WiSimComponent befindet. + * * @author benjamin.pasero */ public class ComponentWarehouseItem { - - private String einzelteilName; - private int id; - private int minBestand; - private int maxBestand; - private int bestand; - private Collection lagerplaetze; - - /** Erstellt eine neue Instanz ComponentWarehouseItem. - * Es kann sich um einen Article oder WiSimComponent im Lager handeln. - * @param einzelteilName Der Name des Einzelteils oder Article - * @param id Nummer des Artikels oder Einzelteiles - * @param minBestand Mindestbestand - * @param maxBestand Maximalbestand - * @param bestand aktueller Bestand - * @param lagerplaetze Lagerplätze an denen der Article oder das WiSimComponent lagert - */ - public ComponentWarehouseItem (String einzelteilName, int id, int minBestand, int maxBestand, int bestand, Collection lagerplaetze) { - this.einzelteilName = einzelteilName; - this.id = id; - this.minBestand = minBestand; - this.maxBestand = maxBestand; - this.bestand = bestand; - this.lagerplaetze = lagerplaetze; - } - - /** Erzeugt ein neues ComponentWarehouseItem */ - public ComponentWarehouseItem () { - } - - /** - * Returns the bestand. - * @return int - */ - public int getBestand() { - return bestand; - } - - /** Gibt die Id zurück - * @return id - */ - public int getId() { - return id; - } - - /** - * Returns the einzelteilName. - * @return String - */ - public String getEinzelteilName() { - return einzelteilName; - } - - /** - * Returns the maxBestand. - * @return int - */ - public int getMaxBestand() { - return maxBestand; - } - - /** - * Returns the minBestand. - * @return int - */ - public int getMinBestand() { - return minBestand; - } - - /** - * @return Anzahl der Lagerplätze - */ - public Collection getLagerplaetze() { - return lagerplaetze; - } - - /** - * Sets the bestand. - * @param bestand The bestand to set - */ - public void setBestand(int bestand) { - this.bestand = bestand; - } - - /** - * Sets the einzelteilName. - * @param einzelteilName The einzelteilName to set - */ - public void setEinzelteilName(String einzelteilName) { - this.einzelteilName = einzelteilName; - } - - /** - * Sets the maxBestand. - * @param maxBestand The maxBestand to set - */ - public void setMaxBestand(int maxBestand) { - this.maxBestand = maxBestand; - } - - /** - * Sets the minBestand. - * @param minBestand The minBestand to set - */ - public void setMinBestand(int minBestand) { - this.minBestand = minBestand; - } - - /** - * @param lagerplaetze - */ - public void setLagerplaetze(Collection lagerplaetze) { - this.lagerplaetze = lagerplaetze; - } - - /** - * @param id - */ - public void setId(int id) { - this.id = id; - } -} + private String einzelteilName; + private int id; + private int minBestand; + private int maxBestand; + private int bestand; + private Collection lagerplaetze; + + /** + * Erstellt eine neue Instanz ComponentWarehouseItem. Es kann sich um einen + * Article oder WiSimComponent im Lager handeln. + * + * @param einzelteilName Der Name des Einzelteils oder Article + * @param id Nummer des Artikels oder Einzelteiles + * @param minBestand Mindestbestand + * @param maxBestand Maximalbestand + * @param bestand aktueller Bestand + * @param lagerplaetze Lagerplätze an denen der Article oder das + * WiSimComponent lagert + */ + public ComponentWarehouseItem(String einzelteilName, int id, int minBestand, int maxBestand, int bestand, Collection lagerplaetze) { + this.einzelteilName = einzelteilName; + this.id = id; + this.minBestand = minBestand; + this.maxBestand = maxBestand; + this.bestand = bestand; + this.lagerplaetze = lagerplaetze; + } + + /** + * Erzeugt ein neues ComponentWarehouseItem + */ + public ComponentWarehouseItem() { + } + + /** + * Returns the bestand. + * + * @return int + */ + public int getBestand() { + return bestand; + } + + /** + * Gibt die Id zurück + * + * @return id + */ + public int getId() { + return id; + } + + /** + * Returns the einzelteilName. + * + * @return String + */ + public String getEinzelteilName() { + return einzelteilName; + } + + /** + * Returns the maxBestand. + * + * @return int + */ + public int getMaxBestand() { + return maxBestand; + } + + /** + * Returns the minBestand. + * + * @return int + */ + public int getMinBestand() { + return minBestand; + } + + /** + * @return Anzahl der Lagerplätze + */ + public Collection getLagerplaetze() { + return lagerplaetze; + } + + /** + * Sets the bestand. + * + * @param bestand The bestand to set + */ + public void setBestand(int bestand) { + this.bestand = bestand; + } + + /** + * Sets the einzelteilName. + * + * @param einzelteilName The einzelteilName to set + */ + public void setEinzelteilName(String einzelteilName) { + this.einzelteilName = einzelteilName; + } + + /** + * Sets the maxBestand. + * + * @param maxBestand The maxBestand to set + */ + public void setMaxBestand(int maxBestand) { + this.maxBestand = maxBestand; + } + + /** + * Sets the minBestand. + * + * @param minBestand The minBestand to set + */ + public void setMinBestand(int minBestand) { + this.minBestand = minBestand; + } + + /** + * @param lagerplaetze + */ + public void setLagerplaetze(Collection lagerplaetze) { + this.lagerplaetze = lagerplaetze; + } + + /** + * @param id + */ + public void setId(int id) { + this.id = id; + } +} diff --git a/wisim/src/java/net/sourceforge/wisim/model/WarehouseLocation.java b/wisim/src/java/net/sourceforge/wisim/model/WarehouseLocation.java index 958d488..9dd6ce2 100644 --- a/wisim/src/java/net/sourceforge/wisim/model/WarehouseLocation.java +++ b/wisim/src/java/net/sourceforge/wisim/model/WarehouseLocation.java @@ -2,7 +2,7 @@ ** Copyright notice ** ** ** ** (c) 2003 WiSim Development Team ** -** https://github.com/kpatzwald/WiSim ** +** https://github.com/kpatzwald/WiSim ** ** ** ** All rights reserved ** ** ** diff --git a/wisim/src/java/net/sourceforge/wisim/model/WorkPlace.java b/wisim/src/java/net/sourceforge/wisim/model/WorkPlace.java index 665eddb..5727f32 100644 --- a/wisim/src/java/net/sourceforge/wisim/model/WorkPlace.java +++ b/wisim/src/java/net/sourceforge/wisim/model/WorkPlace.java @@ -1,8 +1,8 @@ /* ******************************************************************** ** ** Copyright notice ** ** ** -** (c) 2003 WiSim Development Team ** -** https://github.com/kpatzwald/WiSim ** +** (c) 2003 WiSim Development Team ** +** https://github.com/kpatzwald/WiSim ** ** ** ** All rights reserved ** ** ** diff --git a/wisim/src/java/net/sourceforge/wisim/networkplan/JNetworkplan.java b/wisim/src/java/net/sourceforge/wisim/networkplan/JNetworkplan.java index 457d181..f6c7087 100644 --- a/wisim/src/java/net/sourceforge/wisim/networkplan/JNetworkplan.java +++ b/wisim/src/java/net/sourceforge/wisim/networkplan/JNetworkplan.java @@ -31,6 +31,7 @@ import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; +import java.util.ArrayList; import java.util.Enumeration; import java.util.Hashtable; import java.util.Iterator; @@ -62,7 +63,7 @@ public class JNetworkplan extends JPanel implements MouseListener, MouseMotionLi // Logger private WiSimLogger wiSimLogger; - private Vector npElemente; + private ArrayList npElemente; private NetworkplanCalculator npCalc; private int[][] position; private Vector tupel[]; @@ -112,7 +113,7 @@ public class JNetworkplan extends JPanel implements MouseListener, MouseMotionLi * Add each networkplan element on this JPanel. * @param npElemente Vector with all networkplan elements */ - public JNetworkplan(WiSimMainController wiSimMainController, Vector npElemente) { + public JNetworkplan(WiSimMainController wiSimMainController, ArrayList npElemente) { wiSimLogger = wiSimMainController.getWiSimLogger(); initDAO(wiSimMainController); @@ -184,7 +185,7 @@ public JNetworkplan(WiSimMainController wiSimMainController, Vector npElemente) * Add each networkplan element on this JPanel. * @param npElemente Vector with all networkplan elements */ - public JNetworkplan(Vector npElemente) { + public JNetworkplan(ArrayList npElemente) { /** Initializing */ x1 = 0; @@ -638,10 +639,10 @@ public void calculatePositions() { /** Display the critical path */ public void showCriticalPath() { - Vector criticalPath = npCalc.getCriticalPath(); + ArrayList criticalPath = npCalc.getCriticalPath(); Iterator criticalPathIt = criticalPath.iterator(); while (criticalPathIt.hasNext()) { - ((NetworkplanElement) npElemente.get(((Integer) criticalPathIt.next()).intValue() - 1)).setCriticalPath(true); + npElemente.get(((Integer) criticalPathIt.next()).intValue() - 1).setCriticalPath(true); } } diff --git a/wisim/src/java/net/sourceforge/wisim/networkplan/NetworkplanCalculator.java b/wisim/src/java/net/sourceforge/wisim/networkplan/NetworkplanCalculator.java index 6b67805..9dedd7f 100644 --- a/wisim/src/java/net/sourceforge/wisim/networkplan/NetworkplanCalculator.java +++ b/wisim/src/java/net/sourceforge/wisim/networkplan/NetworkplanCalculator.java @@ -23,9 +23,9 @@ package net.sourceforge.wisim.networkplan; +import java.util.ArrayList; import java.util.Hashtable; import java.util.Iterator; -import java.util.Vector; /** * Class for calculating a network plan element. @@ -34,7 +34,7 @@ */ public class NetworkplanCalculator { - private Vector npElemente; + private ArrayList npElemente; private Iterator npElemIt; /** @@ -43,7 +43,7 @@ public class NetworkplanCalculator { * @param lightReCalc TRUE if only Faz / Fez, Saz / Sez and Buffer * have to be calculated. FALSE if its first calculation */ - public NetworkplanCalculator(Vector npElemente, boolean lightReCalc) { + public NetworkplanCalculator(ArrayList npElemente, boolean lightReCalc) { this.npElemente = npElemente; npElemIt = npElemente.iterator(); @@ -134,7 +134,7 @@ public void calculateFazFez() { /** Backward Calculation */ public void calculateSazSez() { - Vector npElementeDesc = new Vector(); + ArrayList npElementeDesc = new ArrayList<>(); int a = npElemente.size() - 1; while (a >= 0) { @@ -143,7 +143,7 @@ public void calculateSazSez() { } npElemIt = npElementeDesc.iterator(); - Vector uncompleted = new Vector(); + ArrayList uncompleted = new ArrayList<>(); while (npElemIt.hasNext()) { @@ -161,7 +161,7 @@ public void calculateSazSez() { if (minSaz > 0) { while (i < child.length) { - NetworkplanElement npElemChild = (NetworkplanElement) npElemente.get(child[i] - 1); + NetworkplanElement npElemChild = npElemente.get(child[i] - 1); if (minSaz > npElemChild.getSaz() && !npElemChild.isPseudoActivity()) minSaz = npElemChild.getSaz(); @@ -241,14 +241,14 @@ public void calculatePuffer() { * float = 0 and free float = 0 * @return Vector with network plan elements of the critical path */ - public Vector getCriticalPath() { - Vector criticalPath = new Vector(); + 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(new Integer(npElem.getIndex())); + criticalPath.add(npElem.getIndex()); } return criticalPath; } @@ -273,7 +273,7 @@ public int getCountedBranches() { /** * @return The calculated network plan elements in a Vector */ - public Vector getNpElemente() { + public ArrayList getNpElemente() { return npElemente; } diff --git a/wisim/src/java/net/sourceforge/wisim/networkplan/ShowNetworkplan.java b/wisim/src/java/net/sourceforge/wisim/networkplan/ShowNetworkplan.java index ed3cc4f..2795c71 100644 --- a/wisim/src/java/net/sourceforge/wisim/networkplan/ShowNetworkplan.java +++ b/wisim/src/java/net/sourceforge/wisim/networkplan/ShowNetworkplan.java @@ -32,6 +32,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.util.ArrayList; import java.util.Hashtable; import java.util.Vector; @@ -48,7 +49,7 @@ public class ShowNetworkplan extends JFrame { /** Vector containing all networkplan elements */ - private Vector npElemente; + private ArrayList npElemente; /** Extends JPanel and holds all JNetworkplanElements */ private JNetworkplan netzplanGrafik; @@ -142,9 +143,9 @@ public static void main(String[] args) { * Gets a filled Vector with the network plan elements * @return Vector with network plan elements */ - public Vector getNetworkPlanElements() { + public ArrayList getNetworkPlanElements() { - Vector filled = new Vector(); + ArrayList filled = new ArrayList<>(); /** Selected network plan */ int show = 10; @@ -259,7 +260,7 @@ public Vector getNetworkPlanElements() { /** This is an existing element with more than one child */ } else { - ((Vector) parentBasket.get(new Integer(np.getNumber()))).add(new Integer(rset.getInt(4))); + ((Vector) parentBasket.get(np.getNumber())).add(rset.getInt(4)); } } diff --git a/wisim/src/java/net/sourceforge/wisim/simulation/UpdateTrafficLight.java b/wisim/src/java/net/sourceforge/wisim/simulation/UpdateTrafficLight.java index 29cce33..c4a8835 100644 --- a/wisim/src/java/net/sourceforge/wisim/simulation/UpdateTrafficLight.java +++ b/wisim/src/java/net/sourceforge/wisim/simulation/UpdateTrafficLight.java @@ -23,7 +23,9 @@ package net.sourceforge.wisim.simulation; +import java.util.ArrayList; import java.util.Enumeration; +import java.util.HashMap; import java.util.Hashtable; import java.util.Vector; @@ -42,13 +44,13 @@ public class UpdateTrafficLight extends Thread { private WiSimMainController wiSimMainController; private WiSimDAO dao; - private Hashtable etCapacity; + private HashMap> etCapacity; private WiSimLogger wiSimLogger; public UpdateTrafficLight(WiSimMainController wiSimMainController) { this.wiSimMainController = wiSimMainController; initDAO(wiSimMainController); - etCapacity = new Hashtable(); + etCapacity = new HashMap<>(); wiSimLogger = wiSimMainController.getWiSimLogger(); } @@ -69,14 +71,14 @@ public void run() { wiSimLogger.log("UpdateTrafficLight.run()", e); } - Vector yellowStatus = new Vector(); - Vector redStatus = new Vector(); + ArrayList yellowStatus = new ArrayList<>(); + ArrayList redStatus = new ArrayList<>(); - Enumeration ets = etCapacity.keys(); - while (ets.hasMoreElements()) { - String et = (String) ets.nextElement(); - int minBestand = ((int[]) etCapacity.get(et))[0]; - int bestand = ((int[]) etCapacity.get(et))[1]; + for (String et : etCapacity.keySet()) { + //while (ets.hasMoreElements()) { + //String et = (String) ets.nextElement(); + int minBestand = etCapacity.get(et).get(0); + int bestand = etCapacity.get(et).get(1); /** Check red status */ if (bestand < minBestand)