1 /* ******************************************************************** **
2 ** Copyright notice **
3 ** **
4 ** (c) 2003 WiSim Development Team **
5 ** http://wisim.sourceforge.net/ **
6 ** **
7 ** All rights reserved **
8 ** **
9 ** This script is part of the WiSim Business Game project. The WiSim **
10 ** project is free software; you can redistribute it and/or modify **
11 ** it under the terms of the GNU General Public License as published by **
12 ** the Free Software Foundation; either version 2 of the License, or **
13 ** (at your option) any later version. **
14 ** **
15 ** The GNU General Public License can be found at **
16 ** http://www.gnu.org/copyleft/gpl.html. **
17 ** A copy is found in the textfile GPL.txt and important notices to the **
18 ** license from the team is found in the textfile LICENSE.txt distributed **
19 ** in these package. **
20 ** **
21 ** This copyright notice MUST APPEAR in all copies of the file! **
22 ** ******************************************************************** */
23
24 /*
25 * JPanelArbeitsplatzlager.java
26 *
27 * Created on 21. M?rz 2003, 21:04
28 */
29
30 package net.sourceforge.wisim.controller;
31
32 import net.sourceforge.wisim.dao;
33 import net.sourceforge.wisim.model;
34 import java.util;
35 import javax.swing.table;
36 import javax.swing;
37
38 /**
39 * Gibt eine Tabellen?bersicht aller Arbeitspl?tze mit den Best?nden der
40 * jeweiligen Einzelteile aus. Es lassen sich die Anzahl der Arbeiter
41 * pro Arbeitsplatz einstellen.
42 * @author benjamin.pasero
43 */
44 public class JPanelArbeitsplatzlager extends javax.swing.JPanel {
45
46 private WiSimDAO dao;
47 private Vector arbeitsplaetze;
48 private Collection arbeitsplatzLager;
49 private int apAnzahl;
50 private int apElemAnzahl;
51 private JLabel label;
52 private JProgressBar jprg;
53 private boolean isBuilt;
54 private boolean isActive;
55 private Vector tempEingangslagerBestand;
56 private Vector tempAusgangslagerBestand;
57
58 //Logger
59 private WiSimLogger wiSimLogger;
60
61 /** Creates new form JPanelArbeitsplatzlager
62 * @param wiSimMainController
63 */
64 public JPanelArbeitsplatzlager(WiSimMainController wiSimMainController) {
65 wiSimLogger = wiSimMainController.getWiSimLogger();
66 initDAO(wiSimMainController);
67 arbeitsplaetze = new Vector();
68 arbeitsplatzLager = new Vector();
69 apAnzahl = 0;
70 apElemAnzahl = 0;
71 label = new JLabel();
72 isBuilt = false;
73 isActive = false;
74 tempEingangslagerBestand = new Vector();
75 tempAusgangslagerBestand = new Vector();
76 initComponents();
77 }
78
79 private void initDAO(WiSimMainController wiSimMainController) {
80 dao = wiSimMainController.getDAO();
81 }
82
83 /** This method is called from within the constructor to
84 * initialize the form.
85 * WARNING: Do NOT modify this code. The content of this method is
86 * always regenerated by the Form Editor.
87 */
88 private void initComponents() {//GEN-BEGIN:initComponents
89 jLabelArbeitsplatzlager = new javax.swing.JLabel();
90 jPanelArbeitsplatzlager = new javax.swing.JPanel();
91 jScrollPaneGesamtliste = new javax.swing.JScrollPane();
92 jTableGesamtliste = new javax.swing.JTable();
93 jPanelArbeitsplaetze = new javax.swing.JPanel();
94 jScrollPaneArbeitsplaetze = new javax.swing.JScrollPane();
95 jTableArbeitsplaetze = new JTable()
96 {
97 public TableCellRenderer getCellRenderer(int row, int column) {
98 TableColumn tableColumn = getColumnModel().getColumn(column);
99 TableCellRenderer renderer = tableColumn.getCellRenderer();
100 if (renderer == null) {
101 Class c = getColumnClass(column);
102 if( c.equals(Object.class) )
103 {
104 Object o = getValueAt(row,column);
105 if( o != null )
106 c = getValueAt(row,column).getClass();
107 }
108 renderer = getDefaultRenderer(c);
109 }
110 return renderer;
111 }
112
113 public TableCellEditor getCellEditor(int row, int column) {
114 TableColumn tableColumn = getColumnModel().getColumn(column);
115 TableCellEditor editor = tableColumn.getCellEditor();
116 if (editor == null) {
117 Class c = getColumnClass(column);
118 if( c.equals(Object.class) )
119 {
120 Object o = getValueAt(row,column);
121 if( o != null )
122 c = getValueAt(row,column).getClass();
123 }
124 editor = getDefaultEditor(c);
125 }
126 return editor;
127 }
128
129 };
130 jTableArbeitsplaetze.setSelectionMode(0);
131 jPanelArbeiter = new javax.swing.JPanel();
132 jButtonOk = new javax.swing.JButton();
133 jSpinnerArbeiter = new javax.swing.JSpinner();
134 jLabelArbeitsplatz = new javax.swing.JLabel();
135 jTextFieldArbeitsplatz = new javax.swing.JTextField();
136 jLabelArbeiter = new javax.swing.JLabel();
137
138 setLayout(null);
139
140 addAncestorListener(new javax.swing.event.AncestorListener() {
141 public void ancestorMoved(javax.swing.event.AncestorEvent evt) {
142 }
143 public void ancestorAdded(javax.swing.event.AncestorEvent evt) {
144 formAncestorAdded(evt);
145 }
146 public void ancestorRemoved(javax.swing.event.AncestorEvent evt) {
147 formAncestorRemoved(evt);
148 }
149 });
150
151 jLabelArbeitsplatzlager.setFont(new java.awt.Font("Dialog", 1, 24));
152 jLabelArbeitsplatzlager.setText("Arbeitsplatzlager");
153 add(jLabelArbeitsplatzlager);
154 jLabelArbeitsplatzlager.setBounds(310, 6, 220, 32);
155
156 jPanelArbeitsplatzlager.setLayout(null);
157
158 jPanelArbeitsplatzlager.setBorder(new javax.swing.border.TitledBorder("Arbeitsplatzlager"));
159 jTableGesamtliste.setModel(new javax.swing.table.DefaultTableModel(
160 new Object [][] {
161 {null, null, null, null},
162 {null, null, null, null},
163 {null, null, null, null},
164 {null, null, null, null}
165 },
166 new String [] {
167 "Artikelname", "aktueller Bestand", "Max. Bestand", "Belegung"
168 }
169 ) {
170 boolean[] canEdit = new boolean [] {
171 false, false, false, false
172 };
173
174 public boolean isCellEditable(int rowIndex, int columnIndex) {
175 return canEdit [columnIndex];
176 }
177 });
178 jTableGesamtliste.addAncestorListener(new javax.swing.event.AncestorListener() {
179 public void ancestorMoved(javax.swing.event.AncestorEvent evt) {
180 }
181 public void ancestorAdded(javax.swing.event.AncestorEvent evt) {
182 jTableGesamtlisteAncestorAdded(evt);
183 }
184 public void ancestorRemoved(javax.swing.event.AncestorEvent evt) {
185 }
186 });
187
188 jScrollPaneGesamtliste.setViewportView(jTableGesamtliste);
189
190 jPanelArbeitsplatzlager.add(jScrollPaneGesamtliste);
191 jScrollPaneGesamtliste.setBounds(10, 20, 550, 84);
192
193 add(jPanelArbeitsplatzlager);
194 jPanelArbeitsplatzlager.setBounds(10, 430, 570, 110);
195
196 jPanelArbeitsplaetze.setLayout(null);
197
198 jPanelArbeitsplaetze.setBorder(new javax.swing.border.TitledBorder("Arbeitspl\u00e4tze"));
199 jScrollPaneArbeitsplaetze.addAncestorListener(new javax.swing.event.AncestorListener() {
200 public void ancestorMoved(javax.swing.event.AncestorEvent evt) {
201 }
202 public void ancestorAdded(javax.swing.event.AncestorEvent evt) {
203 jScrollPaneArbeitsplaetzeAncestorAdded(evt);
204 }
205 public void ancestorRemoved(javax.swing.event.AncestorEvent evt) {
206 }
207 });
208
209 jTableArbeitsplaetze.setModel(new javax.swing.table.DefaultTableModel(
210 new Object [][] {
211
212 },
213 new String [] {
214 "Nr. ", "Beschreibung", "Vorg?nger", "Nachfolger", "Zeit", "Eingangslager", "Ausgangslager"
215 }
216 ) {
217 boolean[] canEdit = new boolean [] {
218 false, false, false, false, false, false, false
219 };
220
221 public boolean isCellEditable(int rowIndex, int columnIndex) {
222 return canEdit [columnIndex];
223 }
224 });
225 jTableArbeitsplaetze.addMouseListener(new java.awt.event.MouseAdapter() {
226 public void mouseClicked(java.awt.event.MouseEvent evt) {
227 jTableArbeitsplaetzeMouseClicked(evt);
228 }
229 });
230
231 jScrollPaneArbeitsplaetze.setViewportView(jTableArbeitsplaetze);
232
233 jPanelArbeitsplaetze.add(jScrollPaneArbeitsplaetze);
234 jScrollPaneArbeitsplaetze.setBounds(10, 20, 750, 372);
235
236 add(jPanelArbeitsplaetze);
237 jPanelArbeitsplaetze.setBounds(10, 30, 770, 400);
238
239 jPanelArbeiter.setLayout(null);
240
241 jPanelArbeiter.setBorder(new javax.swing.border.TitledBorder("Arbeiter"));
242 jPanelArbeiter.addAncestorListener(new javax.swing.event.AncestorListener() {
243 public void ancestorMoved(javax.swing.event.AncestorEvent evt) {
244 }
245 public void ancestorAdded(javax.swing.event.AncestorEvent evt) {
246 jPanelArbeiterAncestorAdded(evt);
247 }
248 public void ancestorRemoved(javax.swing.event.AncestorEvent evt) {
249 }
250 });
251
252 jButtonOk.setText("OK");
253 jButtonOk.addActionListener(new java.awt.event.ActionListener() {
254 public void actionPerformed(java.awt.event.ActionEvent evt) {
255 jButtonOkActionPerformed(evt);
256 }
257 });
258
259 jPanelArbeiter.add(jButtonOk);
260 jButtonOk.setBounds(60, 80, 70, 20);
261
262 jPanelArbeiter.add(jSpinnerArbeiter);
263 jSpinnerArbeiter.setBounds(110, 50, 40, 24);
264
265 jLabelArbeitsplatz.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
266 jLabelArbeitsplatz.setText("Arbeitsplatz");
267 jPanelArbeiter.add(jLabelArbeitsplatz);
268 jLabelArbeitsplatz.setBounds(20, 20, 80, 16);
269
270 jTextFieldArbeitsplatz.setEditable(false);
271 jPanelArbeiter.add(jTextFieldArbeitsplatz);
272 jTextFieldArbeitsplatz.setBounds(110, 20, 40, 20);
273
274 jLabelArbeiter.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
275 jLabelArbeiter.setText("Arbeiter");
276 jPanelArbeiter.add(jLabelArbeiter);
277 jLabelArbeiter.setBounds(40, 50, 60, 16);
278
279 add(jPanelArbeiter);
280 jPanelArbeiter.setBounds(590, 430, 190, 110);
281
282 }//GEN-END:initComponents
283
284 private void formAncestorRemoved(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_formAncestorRemoved
285 setIsActive(false);
286 }//GEN-LAST:event_formAncestorRemoved
287
288 private void formAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_formAncestorAdded
289 setIsActive(true);
290 }//GEN-LAST:event_formAncestorAdded
291
292 private void jPanelArbeiterAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jPanelArbeiterAncestorAdded
293 //Reset des Arbeiter-Panes
294 jTextFieldArbeitsplatz.setText("");
295 jSpinnerArbeiter.setModel(new SpinnerNumberModel(0, 0, 0, 0));
296 }//GEN-LAST:event_jPanelArbeiterAncestorAdded
297
298 private void jButtonOkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOkActionPerformed
299 if (!jTextFieldArbeitsplatz.getText().equals("")) {
300 setArbeiterZahl(Integer.parseInt(jTextFieldArbeitsplatz.getText()), (Integer)jSpinnerArbeiter.getValue());
301 }
302 jTextFieldArbeitsplatz.grabFocus();
303 }//GEN-LAST:event_jButtonOkActionPerformed
304
305 private void jTableGesamtlisteAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jTableGesamtlisteAncestorAdded
306 resetGesamtListe();
307 }//GEN-LAST:event_jTableGesamtlisteAncestorAdded
308
309 private void jTableArbeitsplaetzeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableArbeitsplaetzeMouseClicked
310 getArbeitsplatzLagerElemente();
311 }//GEN-LAST:event_jTableArbeitsplaetzeMouseClicked
312
313 private void jScrollPaneArbeitsplaetzeAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jScrollPaneArbeitsplaetzeAncestorAdded
314 getArbeitsplatzlager();
315 }//GEN-LAST:event_jScrollPaneArbeitsplaetzeAncestorAdded
316
317
318 // Variables declaration - do not modify//GEN-BEGIN:variables
319 private javax.swing.JButton jButtonOk;
320 private javax.swing.JLabel jLabelArbeiter;
321 private javax.swing.JLabel jLabelArbeitsplatz;
322 private javax.swing.JLabel jLabelArbeitsplatzlager;
323 private javax.swing.JPanel jPanelArbeiter;
324 private javax.swing.JPanel jPanelArbeitsplaetze;
325 private javax.swing.JPanel jPanelArbeitsplatzlager;
326 private javax.swing.JScrollPane jScrollPaneArbeitsplaetze;
327 private javax.swing.JScrollPane jScrollPaneGesamtliste;
328 private javax.swing.JSpinner jSpinnerArbeiter;
329 private javax.swing.JTable jTableArbeitsplaetze;
330 private javax.swing.JTable jTableGesamtliste;
331 private javax.swing.JTextField jTextFieldArbeitsplatz;
332 // End of variables declaration//GEN-END:variables
333
334 /** Holt alle Eingangs und Ausgangslager aus der DB. */
335 public void getArbeitsplatzlager() {
336 try {
337 arbeitsplaetze = dao.getArbeitsplaetze();
338 } catch (WiSimDAOException e) {
339 wiSimLogger.log("getArbeitsplatzLager()", e);
340 }
341 apAnzahl = arbeitsplaetze.size();
342
343 setArbeitsplatzTabelle();
344 int i = 0;
345 Iterator ap_it = arbeitsplaetze.iterator();
346 while (ap_it.hasNext()) {
347 Arbeitsplatz ap = (Arbeitsplatz) ap_it.next();
348
349 jTableArbeitsplaetze.setValueAt(String.valueOf(ap.getNr()), i, 0);
350 jTableArbeitsplaetze.setValueAt(ap.getBeschreibung(), i, 1);
351
352 String vorgaenger = "";
353 int[] vorgaengerNr = ap.getVorgaenger();
354 if (vorgaengerNr.length > 0) {
355 vorgaenger = String.valueOf(vorgaengerNr[0]);
356 int x = 1;
357 while (x < vorgaengerNr.length) {
358 vorgaenger = vorgaenger + ", " + vorgaengerNr[x];
359 x++;
360 }
361 }
362
363 String nachfolger = "";
364 int[] nachfolgerNr = ap.getNachfolger();
365 if (nachfolgerNr.length > 0) {
366 nachfolger = String.valueOf(nachfolgerNr[0]);
367 int x = 1;
368 while (x < nachfolgerNr.length) {
369 nachfolger = nachfolger + ", " + nachfolgerNr[x];
370 x++;
371 }
372 }
373
374 if (vorgaenger.equals("0"))
375 jTableArbeitsplaetze.setValueAt("-", i, 2);
376 else
377 jTableArbeitsplaetze.setValueAt(vorgaenger, i, 2);
378
379 if (nachfolger.equals("0"))
380 jTableArbeitsplaetze.setValueAt("-", i, 3);
381 else
382 jTableArbeitsplaetze.setValueAt(nachfolger, i, 3);
383
384 jTableArbeitsplaetze.setValueAt(String.valueOf(ap.getDauer()), i, 4);
385
386 ArbeitsplatzLager apLager = new ArbeitsplatzLager();
387 try {
388 apLager = dao.getArbeitsplatzLager(ap.getNr(), 26, "Eingang");
389 } catch (WiSimDAOException e) {
390 wiSimLogger.log("getArbeitsplatzLager()", e);
391 }
392
393 tempEingangslagerBestand.add(String.valueOf(apLager.getBestand()));
394
395 jprg = new JProgressBar(0, 10);
396 jprg.setValue(apLager.getBestand());
397 jprg.setToolTipText("Bestand: " + apLager.getBestand());
398 if (vorgaenger.equals("0"))
399 jprg.setEnabled(false);
400 jTableArbeitsplaetze.setValueAt(jprg, i, 5);
401
402 try {
403 apLager = dao.getArbeitsplatzLager(ap.getNr(), 26, "Ausgang");
404 } catch (WiSimDAOException e) {
405 wiSimLogger.log("getArbeitsplatzLager()", e);
406 }
407
408 tempAusgangslagerBestand.add(String.valueOf(apLager.getBestand()));
409
410 jprg = new JProgressBar(0, 10);
411 jprg.setValue(apLager.getBestand());
412 jprg.setToolTipText("Bestand: " + apLager.getBestand());
413 if (nachfolger.equals("0"))
414 jprg.setEnabled(false);
415 jTableArbeitsplaetze.setValueAt(jprg, i, 6);
416
417 i++;
418 }
419 }
420
421 /** Zeigt die Elemente eines Arbeitsplatzlagers an. */
422 public void getArbeitsplatzLagerElemente() {
423 Arbeitsplatz ap = (Arbeitsplatz) arbeitsplaetze.get(jTableArbeitsplaetze.getSelectedRow());
424
425 //Arbeiter-Pane
426 jTextFieldArbeitsplatz.setText(String.valueOf(ap.getNr()));
427 jSpinnerArbeiter.setModel(new SpinnerNumberModel(ap.getAnzahlArbeiter(), 0, 10, 1));
428
429 try {
430 arbeitsplatzLager = dao.getArbeitsplatzLager(ap.getNr(), "Einzelteil");
431 } catch (WiSimDAOException e) {
432 wiSimLogger.log("getArbeitsplatzLagerElemente()", e);
433 }
434 apElemAnzahl = arbeitsplatzLager.size();
435
436 if (apElemAnzahl > 0) {
437 buildArbeitsplatzLagerElementeTabelle();
438 } else {
439 resetGesamtListe();
440 }
441 }
442
443 /** Baut die Arbeitsplatz-Tabelle */
444 public void buildArbeitsplatzLagerElementeTabelle() {
445 setArbeitsplatzLagerElementeTabelle();
446 int i = 0;
447 Iterator arbeitsplatzLager_it = arbeitsplatzLager.iterator();
448 while (arbeitsplatzLager_it.hasNext()) {
449 ArbeitsplatzLager apLager = (ArbeitsplatzLager) arbeitsplatzLager_it.next();
450
451 Einzelteil et = new Einzelteil();
452 try {
453 et = dao.getEinzelteil(apLager.getEinzelteilNr());
454 } catch (WiSimDAOException e) {
455 wiSimLogger.log("buildArbeitsplatzLagerElementeTabelle()", e);
456 }
457
458 jTableGesamtliste.setValueAt(et.getName(), i, 0);
459 jTableGesamtliste.setValueAt(String.valueOf(apLager.getBestand()), i, 1);
460 jTableGesamtliste.setValueAt(String.valueOf(apLager.getMaxBestand()), i, 2);
461
462 IconGenerater iconGen = new IconGenerater();
463
464 double actBestand = apLager.getBestand();
465 double actMaxBestand = apLager.getMaxBestand();
466
467 double rects = (double)(actBestand/actMaxBestand)*5;
468 int filledrectsCount = (int) Math.round(rects);
469
470 if (apLager.getBestand() < (apLager.getMaxBestand()/4)) {
471 jTableGesamtliste.setValueAt(iconGen.generateIcon(2, filledrectsCount), i, 3);
472 } else if ((apLager.getBestand() < (apLager.getMaxBestand()/2))) {
473 jTableGesamtliste.setValueAt(iconGen.generateIcon(1, filledrectsCount), i, 3);
474 } else {
475 jTableGesamtliste.setValueAt(iconGen.generateIcon(0, filledrectsCount), i, 3);
476 }
477 i++;
478 }
479 }
480
481 /** Erstellt die ArbeitsplatzTabelle. */
482 public void setArbeitsplatzTabelle() {
483 //DefaultTableModel mit Variablen Zeilen, 4 TableHeads und nicht editierbaren Zellen
484 Object[][] tableInit = new Object[apAnzahl][7];
485 DefaultTableModel defTable = new DefaultTableModel(
486 tableInit,
487 new String [] {
488 "Nr. ", "Beschreibung", "Vorg?nger", "Nachfolger", "Zeit", "Eingangslager", "Ausgangslager"
489 }
490 ) {
491 boolean[] canEdit = new boolean [] {
492 false, false, false, false, false, false, false
493 };
494 public boolean isCellEditable(int rowIndex, int columnIndex) {
495 return canEdit [columnIndex];
496 }
497 public Class getColumnClass(int c) {
498 return getValueAt(0, c).getClass();
499 }
500 };
501 jTableArbeitsplaetze.setModel(defTable);
502 jTableArbeitsplaetze.setFocusable(false);
503 jTableArbeitsplaetze.getTableHeader().setReorderingAllowed(false);
504
505 javax.swing.table.TableColumn column = null;
506
507 //Spaltenbreiten der Tabelle werden gesetzt
508 for (int i = 0; i < 7; i++) {
509 column = jTableArbeitsplaetze.getColumnModel().getColumn(i);
510 switch (i) {
511 //Nr
512 case 0:
513 column.setPreferredWidth(30);
514 break;
515 //Beschreibung
516 case 1:
517 column.setPreferredWidth(300);
518 break;
519 //Vorg?nger
520 case 2:
521 column.setPreferredWidth(80);
522 break;
523 //Nachfolger
524 case 3:
525 column.setPreferredWidth(80);
526 break;
527 //Zeit
528 case 4:
529 column.setPreferredWidth(40);
530 break;
531 //Eingangslager
532 case 5:
533 column.setPreferredWidth(110);
534 break;
535 //Ausgangslager
536 case 6:
537 column.setPreferredWidth(110);
538 break;
539 }
540 }
541 jTableArbeitsplaetze.setDefaultRenderer( JComponent.class, new JComponentCellRenderer() );
542 jTableArbeitsplaetze.setDefaultEditor( JComponent.class, new JComponentCellEditor() );
543 }
544
545 /** Erstellt die ArbeitsplatzLagerElementeTabelle. */
546 public void setArbeitsplatzLagerElementeTabelle() {
547 //DefaultTableModel mit Variablen Zeilen, 4 TableHeads und nicht editierbaren Zellen
548 Object[][] tableInit = new Object[4][4];
549 DefaultTableModel defTable = new DefaultTableModel(
550 tableInit,
551 new String [] {
552 "Artikelname", "aktueller Bestand", "Max. Bestand", "Belegung"
553 }
554 ) {
555 boolean[] canEdit = new boolean [] {
556 false, false, false, false
557 };
558 public boolean isCellEditable(int rowIndex, int columnIndex) {
559 return canEdit [columnIndex];
560 }
561 public Class getColumnClass(int c) {
562 return getValueAt(0, c).getClass();
563 }
564 };
565 jTableGesamtliste.setModel(defTable);
566 jTableGesamtliste.setEnabled(false);
567 jTableGesamtliste.getTableHeader().setReorderingAllowed(false);
568 }
569
570 /** Refreshed beide Tabellen */
571 public void refreshArbeitsplatzLagerElementeTabelle() {
572
573 //Refresh Tabelle Arbeitsplaetze
574 try {
575 arbeitsplaetze = dao.getArbeitsplaetze();
576 } catch (WiSimDAOException e) {
577 wiSimLogger.log("refreshArbeitsplatzLagerElementeTabelle()", e);
578 }
579
580 int i = 0;
581 Iterator ap_it = arbeitsplaetze.iterator();
582 while (ap_it.hasNext()) {
583 Arbeitsplatz ap = (Arbeitsplatz) ap_it.next();
584
585 ArbeitsplatzLager apLager = new ArbeitsplatzLager();
586 try {
587 apLager = dao.getArbeitsplatzLager(ap.getNr(), 26, "Eingang");
588 } catch (WiSimDAOException e) {
589 wiSimLogger.log("refreshArbeitsplatzLagerElementeTabelle()", e);
590 }
591
592 //Zelle wird nur refreshed wenn sich der Bestand ge?ndert hat!
593 if (!((String)tempEingangslagerBestand.get(i)).equals(String.valueOf(apLager.getBestand()))) {
594 tempEingangslagerBestand.setElementAt(String.valueOf(apLager.getBestand()), i);
595 jprg = new JProgressBar(0, 10);
596 jprg.setValue(apLager.getBestand());
597 jprg.setToolTipText("Bestand: " + apLager.getBestand());
598 jTableArbeitsplaetze.setValueAt(jprg, i, 5);
599 }
600
601 try {
602 apLager = dao.getArbeitsplatzLager(ap.getNr(), 26, "Ausgang");
603 } catch (WiSimDAOException e) {
604 wiSimLogger.log("refreshArbeitsplatzLagerElementeTabelle()", e);
605 }
606
607 //Zelle wird nur refreshed wenn sich der Bestand ge?ndert hat!
608 if (!((String)tempAusgangslagerBestand.get(i)).equals(String.valueOf(apLager.getBestand()))) {
609 tempAusgangslagerBestand.setElementAt(String.valueOf(apLager.getBestand()), i);
610 jprg = new JProgressBar(0, 10);
611 jprg.setValue(apLager.getBestand());
612 jprg.setToolTipText("Bestand: " + apLager.getBestand());
613 jTableArbeitsplaetze.setValueAt(jprg, i, 6);
614 }
615 i++;
616 }
617
618 //Refresh Tabelle ArbeitsplatzLager
619 if (jTableArbeitsplaetze.getSelectedRow() >= 0) {
620 Arbeitsplatz ap = (Arbeitsplatz) arbeitsplaetze.get(jTableArbeitsplaetze.getSelectedRow());
621 try {
622 arbeitsplatzLager = dao.getArbeitsplatzLager(ap.getNr(), "Einzelteil");
623 } catch (WiSimDAOException e) {
624 wiSimLogger.log("refreshArbeitsplatzLagerElementeTabelle()", e);
625 }
626 apElemAnzahl = arbeitsplatzLager.size();
627 i = 0;
628 if (apElemAnzahl > 0) {
629 Iterator arbeitsplatzLager_it = arbeitsplatzLager.iterator();
630 while (arbeitsplatzLager_it.hasNext()) {
631 ArbeitsplatzLager apLager = (ArbeitsplatzLager) arbeitsplatzLager_it.next();
632
633 //Zelle wird nur aktualisiert wenn sich der Bestand ge?ndert hat.
634 if (jTableGesamtliste.getValueAt(i, 1) != null && !jTableGesamtliste.getValueAt(i, 1).equals("")) {
635 if (apLager.getBestand() != Integer.parseInt((String) jTableGesamtliste.getValueAt(i, 1))) {
636 Einzelteil et = new Einzelteil();
637 try {
638 et = dao.getEinzelteil(apLager.getEinzelteilNr());
639 } catch (WiSimDAOException e) {
640 wiSimLogger.log("refreshArbeitsplatzLagerElementeTabelle()", e);
641 }
642
643 jTableGesamtliste.setValueAt(String.valueOf(apLager.getBestand()), i, 1);
644
645 IconGenerater iconGen = new IconGenerater();
646
647 double actBestand = apLager.getBestand();
648 double actMaxBestand = apLager.getMaxBestand();
649
650 double rects = (double)(actBestand/actMaxBestand)*5;
651 int filledrectsCount = (int) Math.round(rects);
652
653 if (apLager.getBestand() < (apLager.getMaxBestand()/4)) {
654 jTableGesamtliste.setValueAt(iconGen.generateIcon(2, filledrectsCount), i, 3);
655 } else if ((apLager.getBestand() < (apLager.getMaxBestand()/2))) {
656 jTableGesamtliste.setValueAt(iconGen.generateIcon(1, filledrectsCount), i, 3);
657 } else {
658 jTableGesamtliste.setValueAt(iconGen.generateIcon(0, filledrectsCount), i, 3);
659 }
660 }
661 }
662 i++;
663 }
664 } else {
665 resetGesamtListe();
666 }
667 }
668 }
669
670 /** L?scht die GesamtListe unterhalb der Arbeitsplatztabelle. */
671 public void resetGesamtListe() {
672 int i = jTableGesamtliste.getRowCount()-1;
673 while (i >= 0) {
674 jTableGesamtliste.setValueAt("", 3-i, 0);
675 jTableGesamtliste.setValueAt("", 3-i, 1);
676 jTableGesamtliste.setValueAt("", 3-i, 2);
677 jTableGesamtliste.setValueAt("", 3-i, 3);
678 i--;
679 }
680 }
681
682 /** Setzt die Zahl an Arbeiter an diesem Arbeitsplatz
683 * @param apNr Arbeitsplatz Nr
684 * @param anzahl Anzahl der Mitarbeiter
685 */
686 public void setArbeiterZahl(int apNr, Integer anzahl) {
687 try {
688 dao.setArbeiterZahl(apNr, anzahl.intValue());
689 } catch (WiSimDAOWriteException e) {
690 wiSimLogger.log("setArbeiterZahl()", e);
691 }
692
693 //Aktualisierung der arbeitsplaetze-Collection
694 try {
695 arbeitsplaetze = dao.getArbeitsplaetze();
696 } catch (WiSimDAOException e) {
697 wiSimLogger.log("setArbeiterZahl()", e);
698 }
699 }
700
701 /** Setzt die Variable isBuilt
702 * @param isBuilt
703 */
704 public void setIsBuilt(boolean isBuilt) {
705 this.isBuilt = isBuilt;
706 }
707
708 /** Wurde das Pane schon einmal aufgebaut, so ist "isBuilt" = TRUE.
709 * Wichtig ist diese Variable f?r die Simulation: Wurde das Pane
710 * schon einmal aufgebaut, so m?ssen die Simulationsthread das Pane
711 * nicht noch einmal initialisieren!
712 * @return boolean isBuilt
713 */
714 public boolean getIsBuilt() {
715 return isBuilt;
716 }
717
718 /** Setzt die Variable isActive auf TRUE oder FALSE
719 * @param isActive
720 */
721 public void setIsActive(boolean isActive) {
722 this.isActive = isActive;
723 }
724
725 /** Befindet sich der Benutzer auf diesem Pane, so ist "isActive" = TRUE.
726 * Verl?sst der Benutzer das Pane, so ist "isActive" = FALSE.
727 * Wichtig ist diese Variable f?r die Simulation: Es wird nur das Pane
728 * aktualisiert, auf dem sich der Benutzer gerade befindet!
729 * @return boolean isActive
730 */
731 public boolean getIsActive() {
732 return isActive;
733 }
734 }