3 import hauptFenster
.Reha
;
5 import java
.awt
.BorderLayout
;
7 import java
.awt
.Component
;
8 import java
.awt
.Cursor
;
9 import java
.awt
.Dimension
;
10 import java
.awt
.FlowLayout
;
11 import java
.awt
.GridBagConstraints
;
12 import java
.awt
.GridBagLayout
;
13 import java
.awt
.GridLayout
;
14 import java
.awt
.LinearGradientPaint
;
15 import java
.awt
.event
.ActionEvent
;
16 import java
.awt
.event
.ActionListener
;
17 import java
.awt
.event
.FocusEvent
;
18 import java
.awt
.event
.FocusListener
;
19 import java
.awt
.event
.KeyEvent
;
20 import java
.awt
.event
.KeyListener
;
21 import java
.awt
.event
.MouseAdapter
;
22 import java
.awt
.event
.MouseEvent
;
23 import java
.awt
.event
.WindowEvent
;
24 import java
.awt
.event
.WindowListener
;
25 import java
.awt
.geom
.Point2D
;
26 import java
.beans
.PropertyChangeEvent
;
27 import java
.beans
.PropertyChangeListener
;
28 import java
.io
.BufferedWriter
;
30 import java
.io
.FileOutputStream
;
31 import java
.io
.FileWriter
;
32 import java
.io
.IOException
;
33 import java
.io
.OutputStreamWriter
;
34 import java
.lang
.reflect
.Array
;
35 import java
.sql
.ResultSet
;
36 import java
.sql
.SQLException
;
37 import java
.sql
.Statement
;
38 import java
.text
.ParseException
;
39 import java
.util
.ArrayList
;
40 import java
.util
.Arrays
;
41 import java
.util
.Collections
;
42 import java
.util
.Comparator
;
43 import java
.util
.HashMap
;
44 import java
.util
.List
;
45 import java
.util
.Observable
;
46 import java
.util
.Observer
;
47 import java
.util
.Vector
;
49 import javax
.swing
.AbstractCellEditor
;
50 import javax
.swing
.BorderFactory
;
51 import javax
.swing
.Box
;
52 import javax
.swing
.DefaultCellEditor
;
53 import javax
.swing
.Icon
;
54 import javax
.swing
.ImageIcon
;
55 import javax
.swing
.JButton
;
56 import javax
.swing
.JCheckBox
;
57 import javax
.swing
.JComponent
;
58 import javax
.swing
.JFormattedTextField
;
59 import javax
.swing
.JLabel
;
60 import javax
.swing
.JMenuItem
;
61 import javax
.swing
.JOptionPane
;
62 import javax
.swing
.JPanel
;
63 import javax
.swing
.JPopupMenu
;
64 import javax
.swing
.JProgressBar
;
65 import javax
.swing
.JScrollPane
;
66 import javax
.swing
.JTable
;
67 import javax
.swing
.JTextField
;
68 import javax
.swing
.SwingConstants
;
69 import javax
.swing
.SwingUtilities
;
72 import javax
.swing
.JFormattedTextField
.AbstractFormatterFactory
;
73 import javax
.swing
.event
.TableModelEvent
;
74 import javax
.swing
.event
.TableModelListener
;
75 import javax
.swing
.table
.AbstractTableModel
;
76 import javax
.swing
.table
.DefaultTableCellRenderer
;
77 import javax
.swing
.table
.DefaultTableModel
;
78 import javax
.swing
.table
.TableCellEditor
;
79 import javax
.swing
.table
.TableCellRenderer
;
80 import javax
.swing
.text
.DefaultFormatterFactory
;
81 import javax
.swing
.text
.MaskFormatter
;
83 import jxTableTools
.ToolTipRenderer
;
84 import jxTableTools
.ZahlTableCellEditor
;
85 import jxTableTools
.ZeitCancelCellEditor
;
86 import jxTableTools
.ZeitTableCellEditor
;
88 import org
.jdesktop
.swingworker
.SwingWorker
;
89 import org
.jdesktop
.swingx
.JXPanel
;
90 import org
.jdesktop
.swingx
.JXTable
;
91 import org
.jdesktop
.swingx
.decorator
.ColorHighlighter
;
92 import org
.jdesktop
.swingx
.decorator
.HighlightPredicate
;
93 import org
.jdesktop
.swingx
.decorator
.HighlighterFactory
;
94 import org
.jdesktop
.swingx
.painter
.CompoundPainter
;
95 import org
.jdesktop
.swingx
.painter
.MattePainter
;
96 import org
.jdesktop
.swingx
.renderer
.DefaultTableRenderer
;
97 import org
.jdesktop
.swingx
.renderer
.IconValue
;
98 import org
.jdesktop
.swingx
.renderer
.IconValues
;
99 import org
.jdesktop
.swingx
.renderer
.JRendererCheckBox
;
100 import org
.jdesktop
.swingx
.renderer
.MappedValue
;
101 import org
.jdesktop
.swingx
.renderer
.StringValue
;
102 import org
.jdesktop
.swingx
.renderer
.StringValues
;
103 import org
.jdesktop
.swingx
.table
.TableColumnExt
;
104 import org
.therapi
.reha
.patient
.LadeProg
;
115 import rechteTools
.Rechte
;
116 import stammDatenTools
.RezTools
;
117 import systemEinstellungen
.SystemConfig
;
118 import CommonTools
.Colors
;
119 import systemTools
.IntegerTools
;
120 import CommonTools
.JRtaTextField
;
121 import CommonTools
.StringTools
;
122 import terminKalender
.ICalGenerator
;
123 import terminKalender
.ParameterLaden
;
124 import terminKalender
.DatFunk
;
125 import terminKalender
.ZeitFunk
;
126 import CommonTools
.ExUndHop
;
127 import CommonTools
.SqlInfo
;
129 import com
.jgoodies
.forms
.builder
.PanelBuilder
;
130 import com
.jgoodies
.forms
.layout
.CellConstraints
;
131 import com
.jgoodies
.forms
.layout
.FormLayout
;
133 import dialoge
.InfoDialog
;
134 import emailHandling
.EmailSendenExtern
;
135 @SuppressWarnings({ "unchecked", "unused" })
136 public class SuchenSeite
extends JXPanel
implements TableModelListener
,FocusListener
, ActionListener
,PropertyChangeListener
, KeyListener
{
140 private static final long serialVersionUID
= 1L;
141 public SuchenSeite thisClass
= null;
142 private JXPanel panLinks
= null;
143 private JXPanel panRechts
= null;
144 private JRtaTextField sucheName
= null;
145 private JRtaTextField sucheNummer
= null;
146 private JRtaTextField schreibeName
= null;
147 private JRtaTextField schreibeNummer
= null;
149 private JButton sucheStarten
= null;
150 private JButton sucheWeiter
= null;
151 private JButton sucheStoppen
= null;
152 private JButton auswahlUebernahme
= null;
153 private JButton auswahlDrucken
= null;
154 private JButton auswahlInDatei
= null;
155 private JButton auswahlPerEmail
= null;
156 private JButton allesMarkieren
= null;
157 private JButton allesEntmarkieren
= null;
158 private JButton allesZuruecksetzen
= null;
159 private JProgressBar fortschritt
= null;
161 private JLabel startLbl
= null;
162 private JLabel stopLbl
= null;
163 private JLabel aktLbl
= null;
164 private JLabel aktLblLegende
= null;
166 private JLabel trefferLbl
= null;
167 private JLabel ausgewaehltLbl
= null;
168 public static JLabel verarbeitetLbl
= null;
169 public JXTable jxSucheTable
= null;
171 //private MyRoogleSuche myTable = null;
172 public DefaultTableModel dtblm
= null;
173 /****************************/
174 public String aktuellesDatum
= null;
175 public static boolean mussUnterbrechen
= false;
176 private int[] suchenTage
= {0,0,0,0,0,0,0};
177 public Vector
<Vector
<String
>> sucheDaten
= new Vector
<Vector
<String
>>();
178 //public static Rdaten rooDaten = new Rdaten();
179 public Vector
<Vector
<Object
>>vecWahl
= new Vector
<Vector
<Object
>>();
180 private boolean suchelaeuft
= false;
181 public Object
[][] sucheKollegen
= null;
182 public HashMap
<String
,Integer
> hZeiten
= null;
183 private int gewaehlt
= 0;
184 public ArrayList
<Boolean
> selbstGesperrt
;
185 public static boolean verarbeitenBeendet
= false;
186 private String zeit
= "";
187 private int zeilengewaehlt
= 0;
188 public static boolean schicht
;
189 public static boolean selektiv
;
190 public String
[] selectUhr
= {null,null,null,null};
191 public boolean[] selectWal
= {false,false,false,false};
192 public String
[] schichtUhr
= {null,null};
193 public boolean[] schichtWal
= {false,false};
194 public boolean[] schichtVor
= {false,false};
195 public String
[] kollegenAbteilung
= null;
196 public boolean[] kollegenSuchen
= null;
197 public JScrollPane ptc
= null;
198 public boolean workerfertig
= true;
199 public String selektbeginn
;
200 public String schichtbeginn
;
201 public RoogleFenster eltern
;
202 public boolean nachfolgerloeschen
= false;
204 public InfoDialog infoDlg
= null;
205 public KeyListener kl
= null;
206 SuchenSeite(RoogleFenster xeltern
){
210 setLayout(new GridBagLayout());
213 addFocusListener(this);
214 addPropertyChangeListener(this);
215 addKeyListener(this);
216 this.eltern
= xeltern
;
219 public void setWorkerFertig(boolean wert
){
222 public SuchenSeite
getInstance(){
225 public void setzeDatum(String sdat
){
226 aktLbl
.setText(sdat
);
228 public void setKollegenSuchen(boolean[] kollSuchen
){
229 kollegenSuchen
= kollSuchen
;
231 public boolean getKollegenSuchen(int koll
){
232 return this.kollegenSuchen
[koll
];
234 public void setKollegenAbteilung(String
[] kolls
){
235 kollegenAbteilung
= kolls
;
237 public String
getKollegenAbteilung(int koll
){
238 return this.kollegenAbteilung
[koll
];
240 public void setzeTreffer(int treffer
){
241 trefferLbl
.setText(Integer
.toString(treffer
));
243 public void setzeZeilenAusgewaehlt(int xgewaehlt
){
244 ausgewaehltLbl
.setText(Integer
.toString(xgewaehlt
));
246 public String
getStartDatum(){
247 return startLbl
.getText();
249 public String
getStopDatum(){
250 return stopLbl
.getText();
252 public String
getAktDatum(){
253 return aktLbl
.getText();
255 public String
getSuchName(){
256 return sucheName
.getText();
258 public String
getSuchNummer(){
259 return sucheNummer
.getText();
261 public void setSucheBeendet(){
262 mussUnterbrechen
= true;
263 sucheStoppen
.setEnabled(false);
264 sucheStarten
.setEnabled(true);
266 public boolean getSucheBeendet(){
267 return mussUnterbrechen
;
269 public void setFortschrittRang(int von
, long bis
){
270 fortschritt
.setForeground(Color
.RED
);
271 fortschritt
.setMinimum(von
);
272 fortschritt
.setMaximum((int) bis
);
274 public void setFortschrittSetzen(int wert
){
275 fortschritt
.setValue(wert
);
277 public JProgressBar
getFortschritt(){
281 public void setFortschrittZeigen(boolean zeigen
){
282 fortschritt
.setVisible(zeigen
);
286 synchronized public void setDatenVector(Vector vec){
291 synchronized public Vector getDatenVector(){
292 return (Vector)sucheDaten;
295 public static void verarbeitungEinschalten(){
298 public void setKollegenEinstellen(Object
[][] obj
){
299 sucheKollegen
= obj
; //obj.clone();
301 public Object
[][] getKollegenEinstellen(){
302 return sucheKollegen
;
304 public void setKollegenZeiten(HashMap
<String
,Integer
> xhZeiten
){
305 hZeiten
= ((HashMap
<String
,Integer
>)xhZeiten
);//((HashMap<String,Integer>)hZeiten.clone());
307 public HashMap
<String
,Integer
> getKollegenZeiten(){
311 public void setGewaehlt(int gewaehlt
){
312 this.gewaehlt
= gewaehlt
;
314 public int getGewaehlt(){
315 return this.gewaehlt
;
317 public void setZeit(){
318 this.zeit
= Long
.valueOf(System
.currentTimeMillis()).toString();
320 public String
getZeit(){
324 public int getTreffer(){
325 return Integer
.parseInt(trefferLbl
.getText());
328 public boolean tagDurchsuchen(String sdatum
){
330 if(suchenTage
[DatFunk
.TagDerWoche(sdatum
)-1]==0){
337 public void datumEinstellen(){
338 startLbl
.setText(eltern
.zeitraumEdit
[0].getText());
339 stopLbl
.setText(eltern
.zeitraumEdit
[1].getText());
341 public void tageEinstellen(){
342 for(int i
= 0;i
<7;i
++){
343 suchenTage
[i
] = (eltern
.tageCheck
[i
].isSelected() ?
1 : 0);
345 sucheName
.requestFocus();
347 public void behandlerEinstellen(){
350 public void zeileTesten(Vector vtest){
351 //((MyRoogleSuche) thisClass.jxSucheTable.getModel()).addDaten(vtest);
354 public void tabelleAusschalten(){
355 jxSucheTable
.setEditable(false);
356 jxSucheTable
.setRowSelectionAllowed(false);
358 public void tabelleEinschalten(){
359 jxSucheTable
.setEditable(true);
360 jxSucheTable
.setRowSelectionAllowed(true);
363 void listenerEinschalten(){
364 dtblm
.addTableModelListener(this);
366 void listenerAusschalten(){
367 dtblm
.removeTableModelListener(this);
369 public void cursorWait(boolean ein
){
371 this.setCursor(Reha
.thisClass
.normalCursor
);
373 this.setCursor(Reha
.thisClass
.wartenCursor
);
377 private void activateKl(){
378 kl
= new KeyListener(){
380 public void keyTyped(KeyEvent e
) {
383 public void keyPressed(KeyEvent e
) {
384 if(e
.getKeyCode() == KeyEvent
.VK_F1
){
388 int row
= jxSucheTable
.getSelectedRow();
392 String reznummer
= InfoDialog
.macheNummer(jxSucheTable
.getValueAt(row
, 9).toString());
393 if(reznummer
.equals("")){
396 infoDlg
= new InfoDialog(reznummer
,"terminInfo",null);
398 infoDlg
.setLocationRelativeTo(null);
399 infoDlg
.setVisible(true);
404 public void keyReleased(KeyEvent e
) {
410 /******************************************/
412 private void erstelleGridBag(){
414 GridBagConstraints cc
= new GridBagConstraints();
416 cc
.anchor
= GridBagConstraints
.FIRST_LINE_START
;
423 cc
.fill
= GridBagConstraints
.BOTH
;
424 add(machePaneLinks(),cc
);
426 cc
.anchor
= GridBagConstraints
.PAGE_START
;
433 cc
.fill
= GridBagConstraints
.BOTH
;
434 add(machePaneRechts(),cc
);
438 private JXPanel
machePaneLinks(){
439 panLinks
= new JXPanel(new BorderLayout());
440 panLinks
.setBorder(BorderFactory
.createEmptyBorder(10, 0, 5, 0));
441 panLinks
.setBackgroundPainter(Reha
.thisClass
.compoundPainter
.get("SuchenSeite"));
442 //panLinks.setBackground(Color.WHITE);
443 JScrollPane jscr
= new JScrollPane();
444 jscr
.setOpaque(false);
445 jscr
.getViewport().setOpaque(false);
446 jscr
.setBorder(null);
447 //jscr.setViewportView(new JXPanel());
448 jscr
.setViewportView(formLinks());
449 panLinks
.add(jscr
,BorderLayout
.CENTER
);
453 private JXPanel
machePaneRechts(){
454 panRechts
= new JXPanel(new BorderLayout());
455 panRechts
.setBorder(BorderFactory
.createEmptyBorder(5, 5, 5, 5));
456 panRechts
.setBackground(Color
.WHITE
);
457 panRechts
.validate();
459 JScrollPane jscr
= new JScrollPane();
460 jscr
.setBorder(null);
461 jscr
.setBackground(Color
.WHITE
);
462 jscr
.setViewportView(formRechts());
463 panRechts
.add(jscr
,BorderLayout
.CENTER
);
465 //panRechts.add(formRechts(),BorderLayout.CENTER);
468 private JPanel
formLinks(){
470 String spalten
= "5dlu,70dlu:g,2dlu,30dlu:g,3dlu,p";
471 // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
473 String reihen = "10dlu,2dlu, p,2dlu,p,13dlu,p,2dlu,p,2dlu,p,10dlu, p, 2dlu,p, 10dlu, p , 2dlu, p , 2dlu, p , 2dlu , p, 8dlu, p, 8dlu, p ," +
474 // 28 29 30 31 32 33 34 35 36 37 38 39
475 "2dlu , p, 2dlu , p , 8dlu, p , 2dlu, p , 8dlu , p, 8dlu,p";
477 // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 f1 f2 18 19 20 21 22 23 24 25 26 27
478 String reihen
= "10dlu,2dlu, p,2dlu,p,13dlu,p,2dlu,p,2dlu,p,10dlu, p, 2dlu,p, 10dlu, p ,2px, 8dlu ,2px, p , 2dlu, p , 8dlu , p, 8dlu, p, 8dlu, p ," +
479 // 28 29 30 31 32 33 34 35 36 37 38 39
480 "2dlu , p, 2dlu , p , 8dlu, p , 2dlu, p , 8dlu , p";
482 FormLayout lay
= new FormLayout(spalten
,reihen
);
483 PanelBuilder builder
= new PanelBuilder(lay
);
484 builder
.setDefaultDialogBorder();
485 builder
.getPanel().setOpaque(false);
486 //builder.getPanel().setBackground(Color.WHITE);
487 CellConstraints cc
= new CellConstraints();
488 builder
.addSeparator("nach wem soll gesucht werden?", cc
.xyw(1, 1,5));
490 //builder.addLabel("Name suchen (leer = freie Termine)",cc.xy(2, 3));
491 //builder.addLabel("Rez.Nr.",cc.xy(4, 3));
493 sucheName
= new JRtaTextField("GROSS",true);
494 sucheName
.setToolTipText("Geben Sie hier Ihr Suchkriterim ein, leer = freie Termine suchen!");
495 //SuchenSeite.thisClass.schreibeName.setText(drops[0]);
496 //SuchenSeite.thisClass.schreibeNummer.setText(drops[1]);
498 builder
.add(sucheName
,cc
.xy(2,5));
500 sucheNummer
= new JRtaTextField("GROSS",true);
501 sucheNummer
.setToolTipText("Hier können Sie nach einer bestimmten Rezeptnummer suchen");
502 builder
.add(sucheNummer
,cc
.xyw(4,5,3));
504 builder
.addSeparator("mit was überschreiben?", cc
.xyw(1, 7,5));
506 schreibeName
= new JRtaTextField("GROSS",true);
507 schreibeName
.setToolTipText("Mit diesem Feld können Sie bestimmen mit was oder wem (evtl.) später Termineinträge überschrieben werden");
508 builder
.add(schreibeName
,cc
.xy(2,11));
510 schreibeNummer
= new JRtaTextField("GROSS",true);
511 schreibeNummer
.setToolTipText("Mit diesem Feld geben Sie an welche Rezeptnummer (evtl.) später eingetragen werden soll");
512 builder
.add(schreibeNummer
,cc
.xyw(4,11,3));
514 if(RoogleFenster
.gedropt
){
515 if(RoogleFenster
.sldrops
[0].length() > 10){
516 sucheName
.setText(RoogleFenster
.sldrops
[0].substring(0,10));
518 sucheName
.setText(RoogleFenster
.sldrops
[0]);
520 schreibeName
.setText(RoogleFenster
.sldrops
[0]);
521 schreibeNummer
.setText(RoogleFenster
.sldrops
[1]);
523 builder
.addSeparator("suche von / bis...", cc
.xyw(1, 13,5));
525 JXPanel dummy
= new JXPanel();
526 dummy
.setBorder(null);
527 dummy
.setOpaque(false);
528 //dummy.setBackground(Color.WHITE);
530 String dspalten
= "5dlu,70dlu:g,right:5dlu:g,5dlu:g,3dlu,right:p";
531 // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
532 String dreihen
= "0dlu,2dlu,p,2dlu,p,2dlu, p"; // ,2dlu,p,2dlu,p,2dlu, p, 2dlu,p";
533 FormLayout dlay
= new FormLayout(dspalten
,dreihen
);
534 dummy
.setLayout(dlay
);
536 CellConstraints dcc
= new CellConstraints();
537 dummy
.add(new JLabel("Start bei Datum:"), dcc
.xy(2,3));
538 dummy
.add(new JLabel("Stop bei Datum:"), dcc
.xy(2,5));
539 aktLblLegende
= new JLabel(" ");
540 dummy
.add(aktLblLegende
, dcc
.xy(2,7));
541 startLbl
= new JLabel("01.01.2008");
542 startLbl
.setForeground(Color
.BLUE
);
543 stopLbl
= new JLabel("01.01.2008");
544 stopLbl
.setForeground(Color
.BLUE
);
545 aktLbl
= new JLabel(" ");
546 aktLbl
.setForeground(Color
.RED
);
547 dummy
.add(startLbl
, dcc
.xyw(6,3,1));
548 dummy
.add(stopLbl
, dcc
.xyw(6,5,1));
549 dummy
.add(aktLbl
, dcc
.xyw(6,7,1));
551 builder
.add(dummy
,cc
.xyw(2,15,4));
553 builder
.addSeparator("Funktionsaufrufe", cc
.xyw(1, 17,5));
554 /*********************************************/
555 /*********************************************/
556 sucheStarten
= new JButton("Suchlauf starten");
557 sucheStarten
.setIcon(SystemConfig
.hmSysIcons
.get("buttongruen") );
558 sucheStarten
.setMnemonic(KeyEvent
.VK_S
);
559 sucheStarten
.setName("start");
560 sucheStarten
.addKeyListener(this);
561 sucheStarten
.setActionCommand("sstart");
562 sucheStarten
.addActionListener(this);
564 sucheWeiter
= new JButton("Auswahl nur(!!) drucken");
565 sucheWeiter
.setEnabled(false);
566 sucheWeiter
.setName("sucheWeiter");
567 sucheWeiter
.addKeyListener(this);
568 sucheWeiter
.setActionCommand("nurdrucken");
569 sucheWeiter
.addActionListener(this);
571 sucheStoppen
= new JButton("Suche unterbrechen");
572 sucheStoppen
.setIcon(SystemConfig
.hmSysIcons
.get("buttonrot"));
573 sucheStoppen
.setName("stop");
574 sucheStoppen
.addKeyListener(this);
575 sucheStoppen
.setEnabled(false);
576 sucheStoppen
.setActionCommand("sstop");
577 sucheStoppen
.addActionListener(this);
579 auswahlUebernahme
= new JButton("Auswahl übernehmen");
580 auswahlUebernahme
.setActionCommand("uebernahme");
581 auswahlUebernahme
.addActionListener(this);
583 auswahlDrucken
= new JButton("Term.Liste drucken");
584 auswahlDrucken
.setActionCommand("drucken");
585 auswahlDrucken
.addActionListener(this);
587 auswahlPerEmail
= new JButton("per Email senden");
588 auswahlPerEmail
.setActionCommand("email");
589 auswahlPerEmail
.addActionListener(this);
591 auswahlInDatei
= new JButton("Auswahl exportieren");
592 auswahlInDatei
.setActionCommand("export");
593 auswahlInDatei
.addActionListener(this);
595 allesMarkieren
= new JButton("alles markieren");
596 allesMarkieren
.setActionCommand("alles markieren");
597 allesMarkieren
.addActionListener(this);
599 allesEntmarkieren
= new JButton("alle entmarkieren");
600 allesEntmarkieren
.setActionCommand("alles entmarkieren");
601 allesEntmarkieren
.addActionListener(this);
603 allesZuruecksetzen
= new JButton("alles zurücksetzen");
604 allesZuruecksetzen
.setName("zurueck");
605 allesZuruecksetzen
.addKeyListener(this);
606 allesZuruecksetzen
.setActionCommand("zuruecksetzen");
607 allesZuruecksetzen
.setMnemonic(KeyEvent
.VK_Z
);
608 allesZuruecksetzen
.setForeground(Color
.RED
);
609 allesZuruecksetzen
.addActionListener(this);
611 fortschritt
= new JProgressBar();
612 fortschritt
.setStringPainted(true);
614 fortschritt
.setVisible(false);
615 builder
.add(fortschritt
,cc
.xyw(2,19,4));
617 builder
.add(sucheStarten
,cc
.xyw(2,21, 4));
618 builder
.add(sucheStoppen
,cc
.xyw(2,23, 4));
619 builder
.add(sucheWeiter
,cc
.xyw(2,25, 4));
620 builder
.add(auswahlUebernahme
,cc
.xyw(2,27, 4));
621 builder
.add(auswahlDrucken
,cc
.xyw(2,29, 4));
622 builder
.add(auswahlPerEmail
,cc
.xyw(2,31, 4));
623 builder
.add(auswahlInDatei
,cc
.xyw(2,33, 4));
625 builder
.add(allesMarkieren
,cc
.xyw(2,35, 4));
626 builder
.add(allesEntmarkieren
,cc
.xyw(2,37, 4));
627 builder
.add(allesZuruecksetzen
,cc
.xyw(2,39, 4));
630 setKnopfGedoense(new int[] {1,0,0,0,0,0,0,0,0,0});
631 //builder.getPanel().addKeyListener(this);
632 return builder
.getPanel();
634 private JPanel
formRechts(){
635 String spalten
= "5dlu,320dlu:g";
636 String reihen
= "p,1dlu,p:g,2dlu";
637 FormLayout lay
= new FormLayout(spalten
,reihen
);
638 PanelBuilder builder
= new PanelBuilder(lay
);
639 builder
.getPanel().setBackground(Color
.WHITE
);
640 //builder.setDefaultDialogBorder();
641 CellConstraints cc
= new CellConstraints();
642 JXPanel fpan
= new JXPanel(new FlowLayout(FlowLayout
.LEFT
));
643 fpan
.setBorder(BorderFactory
.createEmptyBorder(0, 0, 0, 0));
644 JLabel lab
= new JLabel("Treffer: ");
645 lab
.setForeground(Color
.BLUE
);
647 trefferLbl
= new JLabel("0");
648 trefferLbl
.setForeground(Color
.BLUE
);
649 fpan
.add(trefferLbl
);
650 fpan
.add(new JLabel(" "));
651 fpan
.add(new JLabel("Ausgewählt: "));
652 ausgewaehltLbl
= new JLabel("0");
653 fpan
.add(ausgewaehltLbl
);
654 fpan
.add(new JLabel(" "));
655 JLabel verarb
= new JLabel("Verarbeitet: ");
656 verarb
.setForeground(Color
.RED
);
658 verarbeitetLbl
= new JLabel("0");
659 verarbeitetLbl
.setForeground(Color
.RED
);
660 fpan
.add(verarbeitetLbl
);
661 builder
.add(fpan
,cc
.xy(2,1));
662 dtblm
= new MyDefaultTableModel();
663 //dtblm.addTableModelListener(this);
664 // 1 2 3 4 5 6 7 8 9 10 11
665 String
[] column
= {"x?","G!","Datum","von","bis","Min.","Beginn","Dauer.","Namen","Rez.Nr.","Behandler",
666 // 12 13 14 15 16 17 18 19
667 "Druckzeit","Sort","Spalte","sDatum","sOrigDatum","iBlock","id","maxblock",""};
668 dtblm
.setColumnIdentifiers(column
);
669 jxSucheTable
= new JXTable(dtblm
);
670 jxSucheTable
.setDoubleBuffered(true);
671 jxSucheTable
.setAutoStartEditOnKeyStroke(false);
672 jxSucheTable
.addMouseListener(new MouseAdapter(){
673 public void mousePressed(MouseEvent arg0
){
676 public void mouseClicked(MouseEvent arg0
) {
678 if(arg0
.getClickCount()==2){
679 int row
= jxSucheTable
.getSelectedRow();
680 int col
= jxSucheTable
.getSelectedColumn();
681 if( (Boolean
) jxSucheTable
.getValueAt(row
, 0)){
682 startCellEditing(jxSucheTable
,row
,col
);
686 if(arg0
.getClickCount()==1 && arg0
.getButton()==3){
687 int row
= jxSucheTable
.getSelectedRow();
688 int col
= jxSucheTable
.getSelectedColumn();
689 int row2
= jxSucheTable
.rowAtPoint(arg0
.getPoint());
693 jxSucheTable
.setRowSelectionInterval(row
, row
);
694 if( (Boolean
) jxSucheTable
.getValueAt(row
, 0)){
696 ZeigePopupMenuDauer(arg0
,jxSucheTable
.getValueAt(row
, col
).toString());
699 if(Reha
.thisClass
.terminpanel
!= null){
700 Reha
.thisClass
.terminpanel
.setzeTerminAktuell(jxSucheTable
.getValueAt(row
, 2).toString().substring(3),
701 jxSucheTable
.getValueAt(row
, 6).toString(),
702 jxSucheTable
.getValueAt(row
, 10).toString());
706 if(arg0
.getClickCount()==1){
708 int row
= jxSucheTable
.getSelectedRow();
709 int col
= jxSucheTable
.getSelectedColumn();
710 jxSucheTable
.setRowSelectionInterval(row
, row
);
711 }catch(Exception ex
){
717 jxSucheTable
.addKeyListener(kl
);
719 jxSucheTable.addKeyListener(new KeyListener(){
721 public void keyPressed(KeyEvent arg0) {
722 if(arg0.getKeyCode() == KeyEvent.VK_SPACE){
724 SwingUtilities.invokeLater(new Runnable(){
726 String reznummer = (String) ((Vector)((ArrayList)vTerm.get(belegung[aktiveSpalte[2]])).get(1)).get(aktiveSpalte[0]);
727 infoDlg = new InfoDialog(reznummer,"terminInfo");
729 infoDlg.setLocationRelativeTo(TerminFlaeche);
730 infoDlg.setVisible(true);
737 public void keyReleased(KeyEvent arg0) {
738 // TODO Auto-generated method stub
743 public void keyTyped(KeyEvent arg0) {
744 // TODO Auto-generated method stub
752 /***************************/
753 //jxSucheTable.setHighlighters(HighlighterFactory.createSimpleStriping());
754 jxSucheTable
.setHighlighters(HighlighterFactory
.createSimpleStriping(new Color(204,255,255)));
756 ((TableColumnExt
)jxSucheTable
.getColumn(0)).setCellEditor(new JXTable
.BooleanEditor());
758 jxSucheTable
.getColumn(0).setMinWidth(25);
759 jxSucheTable
.getColumn(0).setMaxWidth(25);
761 TableCellRenderer renderer
= new DefaultTableRenderer(new MappedValue(StringValues
.EMPTY
, IconValues
.ICON
), JLabel
.CENTER
);
762 // original TableCellRenderer renderer = new DefaultTableRenderer(new MappedValue(StringValue.EMPTY, IconValue.ICON), JLabel.CENTER);
764 // ImageIcon f�r gesperrt oder nicht
765 jxSucheTable
.getColumn(1).setCellRenderer(renderer
);
766 jxSucheTable
.getColumn(1).setMinWidth(20);
767 jxSucheTable
.getColumn(1).setMaxWidth(20);
769 jxSucheTable
.getColumn(2).setMinWidth(80);
770 jxSucheTable
.getColumn(2).setMaxWidth(80);
772 jxSucheTable
.getColumn(3).setMinWidth(40);
773 jxSucheTable
.getColumn(3).setMaxWidth(40);
774 DefaultTableCellRenderer crenderer
= new DefaultTableCellRenderer();
775 crenderer
.setHorizontalAlignment(JLabel
.CENTER
);
776 jxSucheTable
.getColumn(3).setCellRenderer(crenderer
);
778 jxSucheTable
.getColumn(4).setMinWidth(40);
779 jxSucheTable
.getColumn(4).setMaxWidth(40);
780 jxSucheTable
.getColumn(4).setCellRenderer(crenderer
);
782 jxSucheTable
.getColumn(5).setMinWidth(40);
783 jxSucheTable
.getColumn(5).setMaxWidth(40);
784 jxSucheTable
.getColumn(5).setCellRenderer(crenderer
);
785 //Beginn - Termin zum schreiben
786 DefaultTableCellRenderer farbrenderer
= new DefaultTableCellRenderer();
787 farbrenderer
.setForeground(Color
.BLUE
);
788 farbrenderer
.setHorizontalAlignment(JLabel
.CENTER
);
789 jxSucheTable
.getColumn(6).setMinWidth(40);
790 jxSucheTable
.getColumn(6).setMaxWidth(40);
791 jxSucheTable
.getColumn(6).setCellRenderer(farbrenderer
);
792 ((TableColumnExt
)jxSucheTable
.getColumn(6)).setCellEditor((TableCellEditor
) new ZeitTableCellEditor());
793 //Dauer - Termin zum schreiben
794 jxSucheTable
.getColumn(7).setMinWidth(35);
795 jxSucheTable
.getColumn(7).setMaxWidth(35);
796 jxSucheTable
.getColumn(7).setCellRenderer(farbrenderer
);
797 ((TableColumnExt
)jxSucheTable
.getColumn(7)).setCellEditor((TableCellEditor
) new ZahlTableCellEditor());
799 jxSucheTable
.getColumn(8).setMinWidth(80);
801 jxSucheTable
.getColumn(9).setMinWidth(55);
802 jxSucheTable
.getColumn(9).setMaxWidth(80);
804 jxSucheTable
.getColumn(10).setCellRenderer(new ToolTipRenderer(new Color(204,255,255)));
805 jxSucheTable
.getColumn(10).setMinWidth(65);
806 jxSucheTable
.getColumn(10).setMaxWidth(65);
807 //jxSucheTable.getColumn(10).setCellRenderer( new ToolTipRenderer());
809 jxSucheTable
.getColumn(11).setMinWidth(45);
810 jxSucheTable
.getColumn(11).setMaxWidth(45);
811 jxSucheTable
.getColumn(11).setCellRenderer(crenderer
);
812 ((TableColumnExt
)jxSucheTable
.getColumn(11)).setCellEditor((TableCellEditor
) new ZeitCancelCellEditor());
813 // Ãœbrige daten sind versteckt
814 jxSucheTable
.getColumn(12).setMinWidth(0);
815 jxSucheTable
.getColumn(12).setMaxWidth(0);
816 jxSucheTable
.getColumn(13).setMinWidth(0);
817 jxSucheTable
.getColumn(13).setMaxWidth(0);
818 jxSucheTable
.getColumn(14).setMinWidth(0);
819 jxSucheTable
.getColumn(14).setMaxWidth(0);
820 jxSucheTable
.getColumn(15).setMinWidth(0);
821 jxSucheTable
.getColumn(15).setMaxWidth(0);
822 jxSucheTable
.getColumn(16).setMinWidth(0);
823 jxSucheTable
.getColumn(16).setMaxWidth(0);
824 jxSucheTable
.getColumn(17).setMinWidth(0);
825 jxSucheTable
.getColumn(17).setMaxWidth(0);
826 jxSucheTable
.getColumn(18).setMinWidth(0);
827 jxSucheTable
.getColumn(18).setMaxWidth(0);
828 jxSucheTable
.getColumn(19).setMinWidth(0);
829 jxSucheTable
.getColumn(19).setMaxWidth(0);
830 jxSucheTable
.setColumnControlVisible(false);
832 jxSucheTable
.setEditable(true);
833 jxSucheTable
.setSortable(false);
834 jxSucheTable
.validate();
835 jxSucheTable
.setName("RoogleSuche");
838 //jxSucheTable.addTableModelListener(this);
839 /***************************/
840 ptc
= new JScrollPane();
841 ptc
.setBackground(Color
.WHITE
);
842 ptc
.setViewportBorder(null);
843 ptc
.setViewportView(jxSucheTable
);
848 builder
.add(ptc
,cc
.xywh(2, 3, 1, 2));
850 return builder
.getPanel();
853 /******************************************/
855 private void startCellEditing(JXTable table
,int row
,int col
){
856 final int xrows
= row
;
857 final int xcols
= col
;
858 final JXTable xtable
= table
;
859 SwingUtilities
.invokeLater(new Runnable(){
861 xtable
.setRowSelectionInterval(xrows
, xrows
);
862 xtable
.setColumnSelectionInterval(xcols
, xcols
);
863 xtable
.scrollRowToVisible(xrows
);
864 xtable
.editCellAt(xrows
,xcols
);
869 private void ZeigePopupMenuDauer(java
.awt
.event
.MouseEvent me
,String dauer
){
870 JPopupMenu jPop
= getDauerPopupMenu(dauer
);
872 jPop
.show( me
.getComponent(), me
.getX(), me
.getY() );
875 private void ZeigePopupStartzeit(java.awt.event.MouseEvent me){
876 JPopupMenu jPop = getBehandlungsartLoeschenMenu();
877 jPop.show( me.getComponent(), me.getX(), me.getY() );
881 private JPopupMenu
getDauerPopupMenu(String dauer
){
882 JPopupMenu jPopupMenu
= new JPopupMenu();
883 JMenuItem item
= new JMenuItem("alle nachfolgenden Termine auf die Dauer "+dauer
+" Minuten setzen, Nachfolgeblock löschen sofern erforderlich ?");
884 item
.setActionCommand("dauerneublockdelete");
885 item
.addActionListener(this);
886 jPopupMenu
.add(item
);
887 item
= new JMenuItem("alle nachfolgenden Termine auf die Dauer "+dauer
+" Minuten setzen, Nachfolgeblock im Original belassen ?");
888 item
.setActionCommand("dauerneublocksave");
889 item
.addActionListener(this);
890 jPopupMenu
.add(item
);
897 public void focusGained(FocusEvent arg0
) {
898 // TODO Auto-generated method stub
899 startLbl
.setText(eltern
.zeitraumEdit
[0].getText());
900 stopLbl
.setText(eltern
.zeitraumEdit
[1].getText());
904 public void focusLost(FocusEvent arg0
) {
905 // TODO Auto-generated method stub
911 public void actionPerformed(ActionEvent arg0
) {
912 // TODO Auto-generated method stub
913 String name
= arg0
.getActionCommand();
914 if(name
.equals("")){return;}
915 for(int i
= 0;i
<1;i
++){
917 if(name
.equals("sstart")){
918 knopfGedoense(new int[] {0,1,0,0,0,0,0,0,0,0});
920 sucheStoppen
.requestFocus();
923 if(name
.equals("sstop")){
924 knopfGedoense(new int[] {0,0,1,0,0,0,0,1,1,1});
928 if(name
.equals("zuruecksetzen")){
929 new SwingWorker
<Void
,Void
>(){
932 protected Void
doInBackground() throws Exception
{
933 knopfGedoense(new int[] {1,0,0,0,0,0,0,0,0,0});
934 roogleZuruecksetzen();
935 nachfolgerloeschen
= false;
940 //Runtime r = Runtime.getRuntime();
944 if(name
.equals("alles markieren")){
948 if(name
.equals("alles entmarkieren")){
952 if(name
.equals("uebernahme")){
954 JOptionPane
.showMessageDialog(null,"So so...,Sie haben zwar nix gewählt wollen es aber schon mal übernehmen - das NIX....\nOh Herr schmeiß Hirn ra!");
957 if((((String
)jxSucheTable
.getValueAt(0, 8)).trim().equals("")) && (((String
)jxSucheTable
.getValueAt(0, 9)).trim().equals("")) &&
958 (schreibeName
.getText().trim().equals("")) && (schreibeNummer
.getText().trim().equals("")) ){
959 JOptionPane
.showMessageDialog(null,"So so...,Sie suchen 'freie Termine' und wollen diese dann mit 'freien Terminen' überschreiben...\nOh Herr schmeiß Hirn ra!");
963 SwingUtilities
.invokeLater(new Runnable(){
965 SchreibeAuswahl sa
= new SchreibeAuswahl();
967 knopfGedoense(new int[] {0,0,0,0,1,1,1,0,0,1});
968 //auswahlSchreiben();
973 if(name
.equals("drucken")){
975 JOptionPane
.showMessageDialog(null,"So so...,Sie haben zwar nix gewählt wollen es aber schon mal drucken - das NIX....\nOh Herr schmeiß Hirn ra!");
979 SwingUtilities
.invokeLater(new Runnable(){
983 auswahlDrucken(true);
987 //auswahlSchreiben();
992 if(name
.equals("nurdrucken")){
994 JOptionPane
.showMessageDialog(null,"So so...,Sie haben zwar nix gewählt wollen es aber schon mal drucken - das NIX....\nOh Herr schmeiß Hirn ra!");
997 String fragestring
= "Achtung Sie schreiben keinerlei Daten in den Kalender!!!!!!\n"+
998 "Sie erstellen lediglich einen Ausdruck Ihrer derzeitigen Auswahl\n\n"+
999 "Wollen Sie den Vorgang fortsetzen ?";
1000 int anfrage
= JOptionPane
.showConfirmDialog(null, fragestring
, "Achtung wichtige Benutzeranfrage", JOptionPane
.YES_NO_OPTION
);
1001 if(anfrage
== JOptionPane
.NO_OPTION
){
1002 sucheWeiter
.setEnabled(false);
1006 SwingUtilities
.invokeLater(new Runnable(){
1012 auswahlDrucken(true);
1020 if(name
.equals("email")){
1022 JOptionPane
.showMessageDialog(null,"So so...,Sie haben zwar nix gewählt wollen es aber schon mal drucken - das NIX....\nOh Herr schmeiß Hirn ra!");
1025 if(vecWahl
.size()==0){
1026 String fragestring
= "Achtung Sie schreiben keinerlei Daten in den Kalender!!!!!!\n"+
1027 "Sie erstellen lediglich einen PDF-Terminplan für den Emailversand mit Ihrer derzeitigen Auswahl\n\n"+
1028 "Wollen Sie den Vorgang fortsetzen ?";
1029 int anfrage
= JOptionPane
.showConfirmDialog(null, fragestring
, "Achtung wichtige Benutzeranfrage", JOptionPane
.YES_NO_OPTION
);
1030 if(anfrage
== JOptionPane
.NO_OPTION
){
1031 sucheWeiter
.setEnabled(false);
1036 }catch(Exception ex
){
1037 JOptionPane
.showMessageDialog(null,"Fehler bei der Aufbereitung des Druckvectors für Email");
1041 SwingUtilities
.invokeLater(new Runnable(){
1045 auswahlDrucken(false);
1049 //auswahlSchreiben();
1054 if(name
.equals("export")){
1056 JOptionPane
.showMessageDialog(null,"So so...,Sie haben zwar nix gewählt wollen es aber schon mal exportieren - das NIX....\nOh Herr schmeiß Hirn ra!");
1060 SwingUtilities
.invokeLater(new Runnable(){
1064 auswahlExportieren();
1068 //auswahlSchreiben();
1074 if(name
.equals("dauerneublockdelete")){
1076 this.nachfolgerloeschen
= true;
1078 if(name
.equals("dauerneublocksave")){
1080 this.nachfolgerloeschen
= false;
1084 private void setzeNeueDauer(){
1085 int start
= jxSucheTable
.getSelectedRow();
1086 int ende
= jxSucheTable
.getRowCount();
1087 if(start
< 0 || ende
== 0){
1090 String dauer
= jxSucheTable
.getValueAt(start
, 7).toString();
1091 for(int i
= (start
+1); i
< ende
; i
++){
1092 if( (Boolean
) jxSucheTable
.getValueAt(i
, 0)){
1093 jxSucheTable
.setValueAt((String
)dauer
, i
, 7);
1097 private void knopfGedoense(int[] knopf
){
1098 while(sucheStarten
==null){
1101 } catch (InterruptedException e
) {
1102 // TODO Auto-generated catch block
1103 e
.printStackTrace();
1106 sucheStarten
.setEnabled((knopf
[0]==1 ?
true : false));
1107 sucheStoppen
.setEnabled((knopf
[1]==1 ?
true : false));
1108 sucheWeiter
.setEnabled((knopf
[2]==1 ?
true : false));
1109 if(!Rechte
.hatRecht(Rechte
.Rugl_write
, false)){
1110 auswahlUebernahme
.setEnabled(false);
1112 auswahlUebernahme
.setEnabled((knopf
[3]==1 ?
true : false));
1114 auswahlDrucken
.setEnabled((knopf
[4]==1 ?
true : false));
1115 auswahlPerEmail
.setEnabled((knopf
[5]==1 ?
true : false));
1116 auswahlInDatei
.setEnabled((knopf
[6]==1 ?
true : false));
1117 allesMarkieren
.setEnabled((knopf
[7]==1 ?
true : false));
1118 allesEntmarkieren
.setEnabled((knopf
[8]==1 ?
true : false));
1119 allesZuruecksetzen
.setEnabled((knopf
[9]==1 ?
true : false));
1121 public void setKnopfGedoense(int[] knopf
){
1122 knopfGedoense(knopf
);
1124 private void roogleStarten(){
1125 listenerAusschalten();
1126 this.zeilengewaehlt
= 0;
1127 setzeZeilenAusgewaehlt(this.zeilengewaehlt
);
1128 EntsperreSatz es
= new EntsperreSatz();
1129 es
.setzeEltern(getInstance());
1131 SwingUtilities
.invokeLater(new Runnable(){
1133 aktLblLegende
.setText("Aktuelles Datum:");
1134 aktLbl
.setText(getStartDatum());
1135 mussUnterbrechen
= false;
1137 sucheStoppen
.setEnabled(true);
1138 sucheStarten
.setEnabled(false);
1139 dtblm
.getDataVector().clear();
1141 sucheDaten
.trimToSize();
1143 jxSucheTable
.clearSelection();
1144 jxSucheTable
.setSelectionMode(0);
1145 tabelleAusschalten();
1146 jxSucheTable
.repaint();
1151 Reha.thisClass.conn.setAutoCommit(true);
1152 } catch (SQLException e) {
1153 // TODO Auto-generated catch block
1154 e.printStackTrace();
1157 WorkerSuchenInKalenderTagen WsIT
= new WorkerSuchenInKalenderTagen();
1158 WsIT
.setzeStatement(getInstance());
1162 SwingUtilities.invokeLater(new Runnable(){
1164 getInstance().workerfertig = false;
1166 WorkerTabelle2 wt = new WorkerTabelle2();
1177 SuchenSeite.getInstance().workerfertig = false;
1178 SuchenSeite.getInstance().wt = new WorkerTabelle();
1179 SuchenSeite.getInstance().wt.init();
1180 SuchenSeite.getInstance().wt.execute();
1187 sucheStoppen
.requestFocus();
1192 private void roogleStoppen(){
1193 sucheStoppen
.setEnabled(false);
1194 sucheStarten
.setEnabled(true);
1195 SwingUtilities
.invokeLater(new Runnable(){
1199 mussUnterbrechen
= true;
1200 jxSucheTable
.setRowSelectionAllowed(true);
1201 setFortschrittZeigen(false);
1206 private void roogleZuruecksetzen(){
1207 mussUnterbrechen
= true;
1209 if(trefferLbl.getText().equals(verarbeitetLbl.getText())){
1210 verarbeitetLbl.setText("0");
1212 JOptionPane.showMessageDialog(null, "Die Verarbeitung des Suchergebnisses ist noch nicht beendet....");
1216 aktLblLegende
.setText(" ");
1217 aktLbl
.setText(" ");
1218 dtblm
.getDataVector().clear();
1219 dtblm
.getDataVector().trimToSize();
1220 dtblm
.setRowCount(0);
1221 jxSucheTable
.removeAll();
1223 sucheDaten
.trimToSize();
1224 jxSucheTable
.clearSelection();
1225 jxSucheTable
.validate();
1226 jxSucheTable
.repaint();
1227 EntsperreSatz es
= new EntsperreSatz();
1228 es
.setzeEltern(getInstance());
1230 trefferLbl
.setText("0");
1231 ausgewaehltLbl
.setText("0");
1232 verarbeitetLbl
.setText("0");
1234 vecWahl
.trimToSize();
1235 this.zeilengewaehlt
= 0;
1236 sucheName
.requestFocus();
1238 private void auswahlExportieren(){
1239 JRtaTextField exportart
= new JRtaTextField("nix",false);
1240 ExportWahl exwahl
= new ExportWahl(auswahlInDatei
.getLocationOnScreen(),exportart
,"Was soll exportiert werden?");
1241 exwahl
.setVisible(true);
1242 if(exportart
.getText().equals("rehaplan")){
1243 if(rehaplanExport());
1244 JOptionPane
.showMessageDialog(null, "Plandateien wurden erfolgreich exportiert");
1245 }else if(exportart
.getText().equals("fahrdienstliste")){
1246 if(fahrdienstExport());
1247 JOptionPane
.showMessageDialog(null, "Daten für Fahrdienstliste wurden erfolgreich exportiert");
1248 }else if(exportart
.getText().equals("ical")){
1250 JOptionPane
.showMessageDialog(null, "Daten für iCal wurden exportiert und per Email versendet");
1252 }else if(exportart
.getText().equals("icalreha")){
1253 if(icalRehaExport()){
1254 JOptionPane
.showMessageDialog(null, "Daten für Reha-iCal wurden exportiert und per Email versendet");
1264 public static boolean icalRehaExport(){
1265 Vector
<Vector
<String
>> icalVec
= new Vector
<Vector
<String
>>();
1266 Vector
<String
> icalDummy
= new Vector
<String
>();
1267 String emailaddy
= "";
1268 String emaildummy
= "";
1269 boolean datewarning
= true;
1279 private boolean icalExport(){
1282 int lang
= vecWahl
.size();
1284 JOptionPane
.showMessageDialog(null, "Keine Termine zum iCal-Export und Versand ausgewählt");
1288 Vector
<Vector
<String
>> icalVec
= new Vector
<Vector
<String
>>();
1289 Vector
<String
> icalDummy
= new Vector
<String
>();
1290 String emailaddy
= "";
1291 String emaildummy
= "";
1292 boolean datewarning
= true;
1293 String stmt
= "select t2.emaila from pat5 as t2 join verordn as t1 on (t2.pat_intern = t1.pat_intern) where t1.rez_nr = '";
1294 List x0diszis
= Arrays
.asList(new String
[] {"KG","MA","ER","LO","RH","PO","FT","RS"});
1295 List x1diszis
= Arrays
.asList(new String
[] {"Physiotherapie","Massage/LD","Ergotherapie","Logopädie","Reha","Podologie","Funktionstraining","Rehasport"});
1299 //macheVevent(String datum, String start, String end, String titel, String beschreibung){
1300 for(int i
= 0; i
< lang
;i
++){
1302 icalDummy
.add( ((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(15)).replace("-", "") );
1303 icalDummy
.add( ((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(3)).replace(":", "")+"00" );
1304 icalDummy
.add( ((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(4)).replace(":", "")+"00" );
1305 if( (xtitel
=((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(9))).length() >= 2){
1306 if( (xindex
=x0diszis
.indexOf((String
)xtitel
.substring(0,2))) < 0 ){
1307 icalDummy
.add("Therapie-Termin");
1309 icalDummy
.add((String
)x1diszis
.get(xindex
));
1312 icalDummy
.add("Therapie-Termin");
1314 if(emailaddy
.equals("") && !xtitel
.equals("")){
1315 xpos
= xtitel
.indexOf("\\");
1317 emailaddy
= SqlInfo
.holeEinzelFeld(stmt
+xtitel
+"' LIMIT 1");
1318 //System.out.println(emailaddy);
1320 emailaddy
= SqlInfo
.holeEinzelFeld(stmt
+xtitel
.substring(0,xpos
)+"' LIMIT 1");
1321 //System.out.println(emailaddy);
1324 icalDummy
.add(((String
)SystemConfig
.hmIcalSettings
.get("beschreibung")).replace("\n","CRLF"));
1325 //"Hinweise:CRLF-Bitte bringen Sie für Physio und Massage ein Handtuch mitCRLF-Terminabsagen sind nur bis 24 Stunden vor dem Termin möglichCRLFdanach müssen wir Ihnen den Termin in Rechnung stellenCRLF-Bitte denken Sie an die Bezahlung der Rezeptgebühren, sofern SieCRLFrezeptgebührpflichtig sind"
1326 icalVec
.add((Vector
)icalDummy
.clone());
1328 if(emailaddy
.equals("")){
1329 if(schreibeNummer
.getText().trim().length() > 2){
1330 String schreibereznr
= (schreibeNummer
.getText().indexOf("\\") < 0 ? schreibeNummer
.getText() : schreibeNummer
.getText().substring(0,schreibeNummer
.getText().indexOf("\\") ) );
1331 emailaddy
= SqlInfo
.holeEinzelFeld(stmt
+schreibereznr
+"' LIMIT 1");
1334 /*****************************/
1335 JTextField tField
= new JTextField(25);
1336 tField
.setText(emailaddy
);
1337 JCheckBox cField
= new JCheckBox("mit Benachrichtigung vor dem Termin");
1338 cField
.setSelected((Boolean
) SystemConfig
.hmIcalSettings
.get("warnen"));
1339 JPanel myPanel
= new JPanel();
1340 FormLayout fm
= new FormLayout("5dlu,p,5dlu,p:g,5dlu","5dlu,p,5dlu,p,2dlu,p,15dlu");
1341 CellConstraints cc
= new CellConstraints();
1342 myPanel
.setLayout(fm
);
1343 myPanel
.add(new JLabel("Emailadresse:"),cc
.xy(2, 2));
1344 myPanel
.add(tField
, cc
.xy(4,2));
1345 //myPanel.add(new JLabel("Benachrichtigung:"),cc.xy(4,2));
1346 myPanel
.add(cField
,cc
.xy(4,4));
1347 int result
= JOptionPane
.showConfirmDialog(null, myPanel
,"Bitte Eingaben überprüfen", JOptionPane
.OK_CANCEL_OPTION
);
1348 if(result
== JOptionPane
.OK_OPTION
){
1349 emailaddy
= tField
.getText();
1350 datewarning
= cField
.isSelected();
1355 /*****************************/
1356 StringBuffer buf
= new StringBuffer();
1357 buf
.append(ICalGenerator
.macheKopf());
1358 for(int i
= 0;i
<icalVec
.size();i
++){
1359 buf
.append(ICalGenerator
.macheVevent(icalVec
.get(i
).get(0), icalVec
.get(i
).get(1), icalVec
.get(i
).get(2), icalVec
.get(i
).get(3), icalVec
.get(i
).get(4),datewarning
));
1361 buf
.append(ICalGenerator
.macheEnd());
1362 FileOutputStream outputFile
= new FileOutputStream(Reha
.proghome
+"temp/"+Reha
.aktIK
+"/TherapieTermine.ics");
1363 //OutputStreamWriter out = new OutputStreamWriter(outputFile, "ISO-8859-1");
1364 OutputStreamWriter out
= new OutputStreamWriter(outputFile
, "UTF8");
1365 BufferedWriter bw
= null;
1367 bw
= new BufferedWriter(out
);
1368 bw
.write(buf
.toString());
1377 //emailaddy = JOptionPane.showInputDialog(null,"Diese Email-Adresse verwenden:" , emailaddy);
1379 if(emailaddy
.equals("")){
1382 }catch(java
.lang
.NullPointerException ex
){
1385 String smtphost
= SystemConfig
.hmEmailExtern
.get("SmtpHost");
1386 String authent
= SystemConfig
.hmEmailExtern
.get("SmtpAuth");
1387 String benutzer
= SystemConfig
.hmEmailExtern
.get("Username") ;
1388 String pass1
= SystemConfig
.hmEmailExtern
.get("Password");
1389 String sender
= SystemConfig
.hmEmailExtern
.get("SenderAdresse");
1390 String secure
= SystemConfig
.hmEmailExtern
.get("SmtpSecure");
1391 String useport
= SystemConfig
.hmEmailExtern
.get("SmtpPort");
1392 //String recipient = "m.schuchmann@rta.de"+","+SystemConfig.hmEmailExtern.get("SenderAdresse");
1393 String recipient
= emailaddy
+((Boolean
) SystemConfig
.hmIcalSettings
.get("aufeigeneemail") ?
","+SystemConfig
.hmEmailExtern
.get("SenderAdresse") : "");
1394 //String text = "Ihre Behandlungstermine befinden sich im Dateianhang";
1395 boolean authx
= (authent
.equals("0") ?
false : true);
1396 boolean bestaetigen
= false;
1397 String
[] aufDat
= {Reha
.proghome
+"temp/"+Reha
.aktIK
+"/TherapieTermine.ics","TherapieTermine.ics"};
1398 ArrayList
<String
[]> attachments
= new ArrayList
<String
[]>();
1399 attachments
.add(aufDat
);
1400 EmailSendenExtern oMail
= new EmailSendenExtern();
1402 oMail
.sendMail(smtphost
, benutzer
, pass1
, sender
, recipient
, (String
)SystemConfig
.hmIcalSettings
.get("betreff"),
1403 (String
) SystemConfig
.hmIcalSettings
.get("emailtext"),attachments
,authx
,bestaetigen
,secure
,useport
);
1405 }catch(Exception e
){
1406 e
.printStackTrace( );
1407 JOptionPane
.showMessageDialog(null, "Emailversand fehlgeschlagen\n\n"+
1408 "Mögliche Ursachen:\n"+
1409 "- falsche Angaben zu Ihrem Emailpostfach und/oder dem Provider\n"+
1410 "- Sie haben keinen Kontakt zum Internet"+"\n\nFehlertext:"+e
.getLocalizedMessage());
1415 }catch(Exception ex
){
1416 JOptionPane
.showMessageDialog(null, "Fehler beim iCal-Export und Versand");
1427 private boolean fahrdienstExport(){
1430 int lang
= vecWahl
.size();
1432 JOptionPane
.showMessageDialog(null, "Keine Termine zum Exportieren in die Fahrdienstliste ausgewählt");
1435 //Druckzeit sofern vorhanden in offizielle Druckzeit übertragen
1436 for(int i
= 0; i
< lang
;i
++){
1437 if(! ((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(11)).trim().equals("")){
1438 ((Vector
<Object
>)vecWahl
.get(i
)).set(6,(String
) ((Vector
<Object
>)vecWahl
.get(i
)).get(11));
1441 @SuppressWarnings("rawtypes")
1442 Comparator
<Vector
> comparator
= new Comparator
<Vector
>() {
1444 public int compare(Vector o1
, Vector o2
) {
1445 String s1
= ((String
)o1
.get(15))+"/"+((String
)o1
.get(8)).replace("KGG-", "")+"/"+((String
)o1
.get(6));
1446 String s2
= ((String
)o2
.get(15))+"/"+((String
)o2
.get(8)).replace("KGG-", "")+"/"+((String
)o2
.get(6));
1447 ////System.out.println("Ergebnis der Sortierung = "+s1.compareTo(s2)+" S1="+s1+" / S2="+s2);
1448 return s1
.compareTo(s2
);
1451 Collections
.sort(vecWahl
,comparator
);
1452 FileOutputStream outputFile
= new FileOutputStream(SystemConfig
.hmVerzeichnisse
.get("Fahrdienstrohdatei")+"FPSort.txt");
1453 OutputStreamWriter out
= new OutputStreamWriter(outputFile
, "ISO-8859-1");
1454 BufferedWriter bw
= null;
1456 bw
= new BufferedWriter(out
);
1457 //bw = new BufferedWriter(new FileWriter(SystemConfig.hmVerzeichnisse.get("Fahrdienstrohdatei")+"FPSort.txt"));
1458 for(int i
= 0; i
< lang
;i
++){
1459 if( ((Boolean
)((Vector
<Object
>)vecWahl
.get(i
)).get(19)) ){
1461 drzeit
= getGruppendauer( ((String
) ((Vector
<Object
>)vecWahl
.get(i
)).get(8)) );
1463 drzeit
= getGruppendauer( ((String
) ((Vector
<Object
>)vecWahl
.get(i
)).get(5)) );
1465 bw
.write( ((String
) ((Vector
<Object
>)vecWahl
.get(i
)).get(15))+"°"+((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(6))+
1466 "°"+(String
)((Vector
<Object
>)vecWahl
.get(i
)).get(10)+"°"+((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(8)).replace("KGG-", "")+
1467 "°"+(String
)((Vector
<Object
>)vecWahl
.get(i
)).get(9)+"°"+drzeit
1475 new LadeProg(Reha
.proghome
+"FahrdienstExporter.jar " +
1476 Reha
.proghome
+"ini/"+Reha
.aktIK
+"/rehajava.ini");
1477 }catch(Exception ex
){
1478 ex
.printStackTrace();
1486 private boolean rehaplanExport(){
1488 int lang
= vecWahl
.size();
1490 JOptionPane
.showMessageDialog(null, "Keine Termine zum Exportieren nach RehaPlaner ausgewählt");
1493 if(sucheName
.getText().trim().equals("")){
1494 JOptionPane
.showMessageDialog(null, "Kein Name für die Exportdatei vorhanden (Suchefeld=leer)"+
1495 "\n\nExport in Plandatei nicht möglich\n\n");
1499 //Druckzeit sofern vorhanden in offizielle Druckzeit übertragen
1500 for(int i
= 0; i
< lang
;i
++){
1501 if(! ((String
) ((Vector
<Object
>)vecWahl
.get(i
)).get(11)).trim().equals("")){
1502 ((Vector
<Object
>)vecWahl
.get(i
)).set(6, ((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(11)) );
1505 @SuppressWarnings("rawtypes")
1506 Comparator
<Vector
> comparator
= new Comparator
<Vector
>() {
1508 public int compare(Vector o1
, Vector o2
) {
1509 String s1
= ((String
)o1
.get(15))+((String
)o1
.get(6));
1510 String s2
= ((String
)o2
.get(15))+((String
)o2
.get(6));
1511 return s1
.compareTo(s2
);
1514 Collections
.sort(vecWahl
,comparator
);
1515 ////System.out.println(vecWahl);
1523 FileOutputStream outputFile
= new FileOutputStream(SystemConfig
.hmVerzeichnisse
.get("Rehaplaner")+sucheName
.getText().trim()+".txt");
1524 OutputStreamWriter out
= new OutputStreamWriter(outputFile
, "ISO-8859-1");
1525 BufferedWriter bw
= null;
1526 bw
= new BufferedWriter(out
);
1528 for(int i
= 0; i
< lang
;i
++){
1529 //Wenn Gruppensignal gesetzt
1530 if( ((Boolean
) ((Vector
<Object
>)vecWahl
.get(i
)).get(19)) ){
1532 drzeit
= getGruppendauer( ((String
) ((Vector
<Object
>)vecWahl
.get(i
)).get(8)) );
1534 drzeit
= getGruppendauer( ((String
) ((Vector
<Object
>)vecWahl
.get(i
)).get(5)) );
1536 //Jetzt die gruppenzugehörigkeit holen
1538 kalzeile
= Integer
.parseInt( ((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(13)).substring(0,2));
1539 gruppe
= ParameterLaden
.searchAbteilung(kalzeile
);
1540 ////System.out.println(((Vector<String>)vecWahl.get(i)).get(6)+"/"+((Vector<String>)vecWahl.get(i)).get(10));
1541 }catch(Exception ex
){
1542 ex
.printStackTrace();
1544 // Datum auf deutsch Anfangszeit(=Druckzeit)
1545 bw
.write( ((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(14))+"°"+((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(6))+
1546 // ermittelte Dauer Gruppenkürzel
1547 "°"+drzeit
+"°"+(gruppe
.trim().equals("") ?
"--" : gruppe
)+"°"+
1548 // Matchcode Kalenderbenutzer
1549 ((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(10))+"°"+
1551 ((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(8)).replaceFirst("\\\\", "").replace("\\", "/Gruppe:_")
1560 } catch (IOException e
) {
1561 e
.printStackTrace();
1568 private String
getGruppendauer(String zeit
){
1570 int lastline
= zeit
.lastIndexOf("-");
1571 String nurmin
= zeit
.substring(lastline
+1);
1572 sret
= nurmin
.split("Min.")[0];
1576 private void auswahlDrucken(boolean drucken
){
1578 TermObjekt termin
= null;
1579 Vector
<TermObjekt
> vec
= new Vector
<TermObjekt
>();
1581 lang
= vecWahl
.size();
1583 JOptionPane
.showMessageDialog(null,"Sie haben die Auswahl nicht in den Terminplan übernommen!\n"+
1584 "Ohne die vorherige Ãœbernahme kann weder ein Ausdruck noch eine Email erstellt werden.");
1589 for(i
=0;i
<lang
;i
++){
1590 boolean isdruckzeit
= ( ((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(11)).trim().equals("")
1593 String druckzeit
= ( isdruckzeit
1594 ?
((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(11))
1595 : ((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(6)) );
1596 String sorter
= ((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(15))+ druckzeit
;
1597 String tag
= ((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(2));
1598 String termtext
= null;
1600 String termtext = (isdruckzeit
1601 ?((String)((Vector)vecWahl.get(i)).get(8))
1602 :((String)((Vector)vecWahl.get(i)).get(10)) );
1605 if(isdruckzeit
&& ((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(12)).trim().equals("")){
1606 if(((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(8)).contains("\\\\")){
1607 //System.out.println(((Vector)vecWahl.get(i)).get(8));
1608 termtext
= ((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(8)).substring(7);
1609 if(termtext
.contains("BWB")){
1610 termtext
= ((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(10));
1612 if(termtext
.contains("Min.")){
1613 minpos
= termtext
.lastIndexOf("-");
1614 termtext
= termtext
.substring(0,minpos
);
1619 if(termtext.contains("Gruppe:_")){
1620 termtext = termtext.substring(8);
1621 System.out.println("in variante 1= "+termtext);
1623 termtext = ((String)((Vector)vecWahl.get(i)).get(10)); // neu eingef�gt am 06.04.2009
1624 System.out.println("in variante 2= "+termtext);
1627 //System.out.println("in variante 2= "+termtext);
1631 termtext
= ((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(8));
1632 if(termtext
.contains("Gruppe:_")){
1633 termtext
= termtext
.substring(8);
1635 termtext
= ((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(10)); // neu eingef�gt am 06.04.2009
1640 termtext
= ((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(10));
1642 //erweitert um die Dauer;
1643 vec
.add(new TermObjekt(tag
,druckzeit
,termtext
,sorter
,((String
)((Vector
<Object
>)vecWahl
.get(i
)).get(5))));
1648 Collections
.sort(vec
);
1649 new TerminplanDrucken().init((Vector
<TermObjekt
>)vec
, drucken
,schreibeName
.getText().trim(),schreibeNummer
.getText().trim(),getInstance());
1654 public void tableChanged(TableModelEvent arg0
) {
1655 if(arg0
.getType() == TableModelEvent
.INSERT
){
1656 ////System.out.println("Tabellen-Zeile eingefügt");
1658 if(arg0
.getType() == TableModelEvent
.UPDATE
){
1660 if(jxSucheTable
.isEditable()){
1661 if(arg0
.getColumn() == 0){
1662 String sym
= ((ImageIcon
)jxSucheTable
.getValueAt(arg0
.getFirstRow(),1)).getDescription();
1663 if(sym
.equals("gesperrt") && ((Boolean
)jxSucheTable
.getValueAt(arg0
.getFirstRow(),0)) ){
1664 jxSucheTable
.setValueAt(Boolean
.valueOf(false),arg0
.getFirstRow(),0);
1665 }else if(!sym
.equals("gesperrt")){
1666 if( ((Boolean
)jxSucheTable
.getValueAt(arg0
.getFirstRow(),0)) ){
1667 this.zeilengewaehlt
++;
1668 setzeZeilenAusgewaehlt(this.zeilengewaehlt
);
1669 if(this.zeilengewaehlt
==1){
1670 if(!Rechte
.hatRecht(Rechte
.Rugl_write
, false)){
1671 auswahlUebernahme
.setEnabled(false);
1673 auswahlUebernahme
.setEnabled(true);
1675 auswahlDrucken
.setEnabled(true);
1676 auswahlPerEmail
.setEnabled(true);
1677 auswahlInDatei
.setEnabled(true);
1678 sucheWeiter
.setEnabled(true);
1681 this.zeilengewaehlt
--;
1682 setzeZeilenAusgewaehlt(this.zeilengewaehlt
);
1683 if(this.zeilengewaehlt
==0){
1684 auswahlUebernahme
.setEnabled(false);
1685 auswahlDrucken
.setEnabled(false);
1686 auswahlPerEmail
.setEnabled(false);
1687 auswahlInDatei
.setEnabled(false);
1688 sucheWeiter
.setEnabled(false);
1693 if(arg0
.getColumn() == 11){
1694 if(((String
)jxSucheTable
.getValueAt(arg0
.getFirstRow(), 11)).trim().equals(":")){
1695 jxSucheTable
.setValueAt("", arg0
.getFirstRow(), 11);
1698 if(arg0
.getColumn() == 6){
1699 int test
= testeZeiten(arg0
.getFirstRow(),arg0
.getColumn());
1702 JOptionPane
.showMessageDialog(null,"Sie haben versucht den Terminstart von den Beginn des verfügbaren Blockes zu setzen");
1703 jxSucheTable
.setValueAt(jxSucheTable
.getValueAt(arg0
.getFirstRow(),3), arg0
.getFirstRow(), 6);
1706 jxSucheTable
.setValueAt(jxSucheTable
.getValueAt(arg0
.getFirstRow(),3), arg0
.getFirstRow(), 6);
1710 // Prüfung einbauen ob Beginnzeit + Dauer nicht Endzeit übersteigt bzw. vor Planbeginnzeit liegt.
1711 //jxSucheTable.setValueAt("", arg0.getFirstRow(), 6);
1713 if(arg0
.getColumn() == 7){
1714 if(testeZeiten(arg0
.getFirstRow(),arg0
.getColumn()) > 0){
1715 jxSucheTable
.setValueAt(jxSucheTable
.getValueAt(arg0
.getFirstRow(),5), arg0
.getFirstRow(), 7);
1717 //jxSucheTable.setValueAt("", arg0.getFirstRow(), 7);
1718 // Prüfung einbauen ob Beginnzeit + Dauer nicht Endzeit übersteigt bzw. vor Planbeginnzeit liegt.
1725 private int testeZeiten(int reihe
, int zeile
){
1727 int tkstart
,tkende
,plstart
,pldauer
;
1728 tkstart
= (int) ZeitFunk
.MinutenSeitMitternacht(((String
)jxSucheTable
.getValueAt(reihe
, 3)).trim()+":00");
1729 tkende
= (int) ZeitFunk
.MinutenSeitMitternacht(((String
)jxSucheTable
.getValueAt(reihe
, 4)).trim()+":00");
1730 plstart
= (int) ZeitFunk
.MinutenSeitMitternacht(((String
)jxSucheTable
.getValueAt(reihe
, 6)).trim()+":00");
1731 pldauer
= Integer
.parseInt((String
)jxSucheTable
.getValueAt(reihe
, 7));
1732 if(plstart
< tkstart
){
1735 if((plstart
+pldauer
) > tkende
){
1743 private void allesMark(boolean mark
){
1744 int bis
= jxSucheTable
.getRowCount(),i
;
1746 this.zeilengewaehlt
= 0;
1747 boolean gezeigt
= false;
1749 listenerAusschalten();
1751 if(dtblm
.getValueAt(i
, 1) != null){
1752 if(((ImageIcon
)dtblm
.getValueAt(i
, 1)).getDescription().equals("offen")){
1753 dtblm
.setValueAt(Boolean
.valueOf(true),i
, 0);
1754 this.zeilengewaehlt
++;
1760 JOptionPane
.showMessageDialog(null,"Ein oder mehrere Termine sind noch nicht verifizier \n und können deshalb nicht gewählt werden");
1766 setzeZeilenAusgewaehlt(this.zeilengewaehlt
);
1767 listenerEinschalten();
1768 if(!Rechte
.hatRecht(Rechte
.Rugl_write
, false)){
1769 auswahlUebernahme
.setEnabled(false);
1771 auswahlUebernahme
.setEnabled(true);
1773 auswahlDrucken
.setEnabled(true);
1774 auswahlPerEmail
.setEnabled(true);
1775 auswahlInDatei
.setEnabled(true);
1776 sucheWeiter
.setEnabled(true);
1778 listenerAusschalten();
1780 dtblm
.setValueAt(Boolean
.valueOf(false),i
, 0);
1782 this.zeilengewaehlt
= 0;
1783 setzeZeilenAusgewaehlt(this.zeilengewaehlt
);
1784 listenerEinschalten();
1785 auswahlUebernahme
.setEnabled(false);
1786 auswahlDrucken
.setEnabled(false);
1787 auswahlPerEmail
.setEnabled(false);
1788 auswahlInDatei
.setEnabled(false);
1789 sucheWeiter
.setEnabled(false);
1793 private void druckVectorInit(){
1794 int lang
= dtblm
.getRowCount(),i
;
1796 //Vector vec = null;
1800 //name = String.valueOf(schreibeName.getText().trim());
1801 //nummer = String.valueOf(schreibeNummer.getText().trim().replace("\\", "\\\\") );
1802 ////System.out.println("Rezeptnummer = "+nummer);
1804 for(i
=0;i
<lang
;i
++){
1806 if((Boolean
)dtblm
.getValueAt(i
,0)){
1808 setFortschrittSetzen(durchlauf
++);
1809 vecWahl
.add((Vector
<Object
>)dtblm
.getDataVector().get(i
));
1810 ((Vector
<Object
>)vecWahl
.get(vecWahl
.size()-1)).set(11, (String
) dtblm
.getValueAt(i
,11));
1811 ((Vector
<Object
>)vecWahl
.get(vecWahl
.size()-1)).set(6, (String
) dtblm
.getValueAt(i
,6));
1815 private void exportVectorInit(){
1816 int lang
= dtblm
.getRowCount(),i
;
1818 //Vector vec = null;
1821 for(i
=0;i
<lang
;i
++){
1822 if((Boolean
)dtblm
.getValueAt(i
,0)){
1823 setFortschrittSetzen(durchlauf
++);
1824 vecWahl
.add( ((Vector
<Object
>)dtblm
.getDataVector().get(i
)));
1825 //vecWahl.add( ((Vector<Object>)dtblm.getDataVector().get(i)).clone());
1826 ((Vector
<Object
>)vecWahl
.get(vecWahl
.size()-1)).set(11, (String
) dtblm
.getValueAt(i
,11));
1827 ((Vector
<Object
>)vecWahl
.get(vecWahl
.size()-1)).set(6, (String
) dtblm
.getValueAt(i
,6));
1832 private void icsExportVectorInit(){
1833 int lang = dtblm.getRowCount(),i;
1835 //Vector vec = null;
1838 for(i=0;i<lang;i++){
1839 if((Boolean)dtblm.getValueAt(i,0)){
1840 setFortschrittSetzen(durchlauf++);
1841 vecWahl.add( ((Vector<Object>)dtblm.getDataVector().get(i)));
1842 //vecWahl.add( ((Vector<Object>)dtblm.getDataVector().get(i)).clone());
1843 ((Vector<Object>)vecWahl.get(vecWahl.size()-1)).set(11, (String) dtblm.getValueAt(i,11));
1844 ((Vector<Object>)vecWahl.get(vecWahl.size()-1)).set(6, (String) dtblm.getValueAt(i,6));
1850 /********************************************************/
1851 class SchreibeAuswahl
extends SwingWorker
<Void
,Void
>{
1854 protected Void
doInBackground() throws Exception
{
1855 //Hier wird gelöscht unbedingt vorher fragen bevor
1856 if( (schreibeName
.getText().trim().equals("")) && (schreibeNummer
.getText().trim().equals(""))){
1857 int anfrage
= JOptionPane
.showConfirmDialog(null, "Wollen Sie wirklich die ausgewählten Termine löschen (=freigeben) ?", "Achtung wichtige Benutzeranfrage", JOptionPane
.YES_NO_OPTION
);
1859 if(anfrage == JOptionPane.NO_OPTION){
1860 setKnopfGedoense(new int[] {0,0,0,1,1,1,1,1,1,1});
1864 if(anfrage
!= JOptionPane
.YES_OPTION
){
1865 setKnopfGedoense(new int[] {0,0,0,1,1,1,1,1,1,1});
1870 if( (schreibeName
.getText().trim().equals("")) && (schreibeNummer
.getText().trim().equals(""))){
1871 //roogleZuruecksetzen();
1873 // TODO Auto-generated method stub
1878 private void auswahlSchreiben(){
1879 int lang
= dtblm
.getRowCount(),i
;
1881 int tkstart
,tkdauer
,plstart
,pldauer
;
1882 Vector
<Vector
<String
>> vec
= null;
1884 boolean leer
= false;
1886 // this.zeilengewaehlt;
1887 setFortschrittRang(0,this.zeilengewaehlt
);
1888 setFortschrittSetzen(0);
1889 setFortschrittZeigen(true);
1893 name
= schreibeName
.getText().trim();
1894 nummer
=schreibeNummer
.getText().trim().replace("\\", "\\\\") ;
1895 String meldung
= "";
1896 for(i
=0;i
<lang
;i
++){
1898 if((Boolean
)dtblm
.getValueAt(i
,0)){
1899 setFortschrittSetzen(durchlauf
++);
1900 vecWahl
.add( ((Vector
<Object
>)dtblm
.getDataVector().get(i
)) );
1901 ((Vector
<Object
>)vecWahl
.get(vecWahl
.size()-1)).set(11, (String
) dtblm
.getValueAt(i
,11));
1902 ((Vector
<Object
>)vecWahl
.get(vecWahl
.size()-1)).set(6, (String
) dtblm
.getValueAt(i
,6));
1903 tkstart
= (int) ZeitFunk
.MinutenSeitMitternacht(((String
)jxSucheTable
.getValueAt(i
, 3)).trim()+":00");
1904 tkdauer
= Integer
.parseInt((String
)jxSucheTable
.getValueAt(i
, 5));
1905 plstart
= (int) ZeitFunk
.MinutenSeitMitternacht(((String
)jxSucheTable
.getValueAt(i
, 6)).trim()+":00");
1906 pldauer
= Integer
.parseInt((String
)jxSucheTable
.getValueAt(i
, 7));
1908 // Abgleich der Verfügbaren Dauer mit der gewünschten Termindauer
1909 // (Nur!) wenn es sich um Gruppentermine handelt kann u.U. die verfügbare Dauer
1910 // kürzer sein als die (angeblich) gewünschte Dauer.
1911 // Abfragen ob dem so ist, sofern ja, nachfragen ob die gewünschte Dauer auf die
1912 // tatsächlich verfügbare Dauer gekürzt werden soll.
1913 // Wird ja ausgewählt wird gekürzt, in jedem anderen Fall
1914 // nach oben zum Schleifenanfang, jedenfalls wird dann nichts in den Kalender geschrieben.
1915 if(pldauer
> tkdauer
){
1916 meldung
= "<html>Achtung der Termin vom<br><br><b>"+
1917 jxSucheTable
.getValueAt(i
, 2).toString()+" - "+
1918 jxSucheTable
.getValueAt(i
, 3).toString()+" - "+jxSucheTable
.getValueAt(i
, 10).toString()+
1919 "<br><br></b>muß auf die verfügbare Dauer von<b><font color='#ff0000'> -> "+
1920 Integer
.toString(tkdauer
)+" Minuten gekürzt <- </font></b>werden"+
1921 "<br><br>wollen Sie das wirklich?</html>";
1922 int frage
= JOptionPane
.showConfirmDialog(null, meldung
,"Achtung wichtige Benutzeranfrage",JOptionPane
.YES_NO_OPTION
);
1923 if(frage
!= JOptionPane
.YES_OPTION
){
1926 jxSucheTable
.setValueAt(Integer
.toString(tkdauer
),i
, 7);
1929 for(int j
= 0;j
<1;){
1930 if((tkstart
==plstart
) && (tkdauer
==pldauer
)){
1931 // Beginn und Dauer sind gleich geblieben
1932 if((name
.equals("")) && (nummer
.equals(""))){
1933 // Termin wird gelöscht es müssen die Blöcke vorher und nachher getestet werden;
1934 // deshalb zuerst Vector mit dem Tag holen
1936 vec
= sucheZeile(i
);
1937 schreibeLoeschen(vec
,i
,name
,nummer
);
1938 } catch (SQLException e
) {
1939 e
.printStackTrace();
1943 // nur Statement bilden und weg damit... kein Vector gedönse
1944 String snum
= Integer
.toString(((Integer
) jxSucheTable
.getValueAt(i
, 16)));
1945 String stmt
= "Update flexkc set T"+snum
+"='"+StringTools
.EscapedDouble(name
)+"', N"+snum
+"='"+nummer
+"' where id='"+
1946 ((String
)jxSucheTable
.getValueAt(i
, 17)).trim()+"'";
1948 schreibeZeile(stmt
);
1949 } catch (SQLException e
) {
1950 e
.printStackTrace();
1955 // Zunächst den Vector mit dem Tag holen der immer überprüft werden muß
1957 vec
= sucheZeile(i
);
1958 } catch (SQLException e
) {
1959 e
.printStackTrace();
1961 if((name
.equals("")) && (nummer
.equals(""))){
1962 JOptionPane
.showMessageDialog(null,"Das löschen eines Termin und gleichzeitiges verändern der Startzeit \n"+
1963 "bzw. der Termindauer, ist in einem - nicht unerheblich Maß - Schwachsinn!\n"+
1964 "...und deshalb auch in dieser Software-Version nicht vorgesehen");
1965 //schreibeLoeschen(vec,i,name,nummer);
1968 // Vector ebenfalls untersuchen;
1969 //1. bisheriger Beginn/Dauer/Ende ermitteln
1970 int tkende
= (int) ZeitFunk
.MinutenSeitMitternacht( ZeitFunk
.MinutenZuZeit(tkstart
+tkdauer
) );
1971 int plende
= (int) ZeitFunk
.MinutenSeitMitternacht( ZeitFunk
.MinutenZuZeit(plstart
+pldauer
) );
1973 //2. Abfrage ob Beginn später und Ende früher - Mittelblock erforderlich - 2 neue Blöcke!
1974 if((tkstart
!= plstart
) && (tkdauer
!= pldauer
) && (tkende
!= plende
)){
1975 schreibeTermin(vec
,i
,1,tkstart
,tkdauer
,tkende
,plstart
,pldauer
,plende
,name
,nummer
);
1978 //3. Abfrage ob Beginn gleich und Ende früher - Nachblock erforderlich - 1 neuer Block!
1979 if((tkstart
== plstart
) && (tkdauer
!= pldauer
)){
1980 schreibeTermin(vec
,i
,2,tkstart
,tkdauer
,tkende
,plstart
,pldauer
,plende
,name
,nummer
);
1983 //4. Abfrage ob Beginn später und Ende gleich - Vorblock erforderlich - 1 neuer Block!
1984 if((tkstart
!= plstart
) && (tkdauer
!= pldauer
) && (tkende
==plende
)){
1985 schreibeTermin(vec
,i
,3,tkstart
,tkdauer
,tkende
,plstart
,pldauer
,plende
,name
,nummer
);
1994 } catch (InterruptedException e
) {
1995 // TODO Auto-generated catch block
1996 e
.printStackTrace();
2000 setFortschrittZeigen(false);
2003 /*****************************************/
2004 private void schreibeTermin(Vector
<Vector
<String
>> vec
,int zeile
,int art
,int tkstart
,int tkdauer
,int tkende
,int plstart
,int pldauer
,int plende
,String name
,String nummer
){
2006 int vecgross
= vec
.size();
2007 Vector
<Vector
<String
>> newvec
= new Vector
<Vector
<String
>>();
2008 int block
= (Integer
) jxSucheTable
.getValueAt(zeile
,16);
2009 int geaendert
= Integer
.parseInt( (String
) jxSucheTable
.getValueAt(zeile
,18) );
2010 if(vecgross
!= geaendert
){
2011 ////System.out.println("vermerkt sind "+vecgross+" Blöcke / tatsächlich in der Datenbank sind "+geaendert+" Blöcke");
2012 block
+= (vecgross
-geaendert
);
2017 for(int j
= 0; j
<1;j
++){
2019 for(i
=0;i
<vecgross
;i
++){
2021 newvec
.add((Vector
<String
>)vec
.get(i
));
2022 }else if(i
==(block
-1)){
2023 newvec
.add(vec
.get(i
));
2024 ((Vector
<String
>)newvec
.get(i
)).set(3,Integer
.toString(plstart
-tkstart
));
2025 ((Vector
<String
>)newvec
.get(i
)).set(4,ZeitFunk
.MinutenZuZeit(tkstart
+(plstart
-tkstart
)));
2026 Vector
<String
> aktvec
= new Vector
<String
>();
2029 aktvec
.add(ZeitFunk
.MinutenZuZeit(plstart
));
2030 aktvec
.add(Integer
.toString(pldauer
));
2031 aktvec
.add(ZeitFunk
.MinutenZuZeit(plstart
+pldauer
));
2033 Vector
<String
> nachvec
= new Vector
<String
>();
2034 nachvec
.add( ((Vector
<String
>)vec
.get(i
)).get(0));
2035 nachvec
.add( ((Vector
<String
>)vec
.get(i
)).get(1));
2036 nachvec
.add( aktvec
.get(4));
2037 String planende
= (String
)jxSucheTable
.getValueAt(zeile
,4)+":00";
2039 nachvec
.add( Integer
.toString((int) ZeitFunk
.MinutenSeitMitternacht(planende
) -
2040 (int)ZeitFunk
.MinutenSeitMitternacht((String
)nachvec
.get(2)) ) ) ;
2041 nachvec
.add(planende
);
2043 newvec
.add(nachvec
);
2044 }else if (i
>(block
-1)){
2045 newvec
.add(vec
.get(i
));
2048 String stmt
= macheStat(newvec
,Integer
.parseInt((String
)jxSucheTable
.getValueAt(zeile
,17)),name
,nummer
);
2049 ////System.out.println("Mit vor und nachblock "+stmt);
2051 schreibeZeile(stmt
);
2052 } catch (SQLException e
) {
2053 // TODO Auto-generated catch block
2054 e
.printStackTrace();
2059 //hier muß eingegriffen werden wenn beim Überschreiben mit
2060 //veränderter Dauer der Nachblock gelöscht werden soll
2061 //ebenfalls muß dann überprüft werden ob er übernächste Block ebenfalls ein Leerblock ist
2062 //in dem Fall müßte dann der Leerblock zusammengefaßt werden
2063 //die Blockanzahl bliebe also gleich!!!
2064 for(i
=0;i
<vecgross
;i
++){
2066 Vector
<String
> aktvec
= new Vector
<String
>();
2069 aktvec
.add(ZeitFunk
.MinutenZuZeit(plstart
));
2070 aktvec
.add(Integer
.toString(pldauer
));
2071 aktvec
.add(ZeitFunk
.MinutenZuZeit(plstart
+pldauer
));
2073 if(i
< (vecgross
-1) ){
2074 //hier rein die Abfrage ob Nachfolgeblock
2076 if( ((String
)((Vector
<String
>)vec
.get(i
+1)).get(0)).equals("") &&
2077 ((String
)((Vector
<String
>)vec
.get(i
+1)).get(1)).equals("") &&
2078 nachfolgerloeschen
){
2079 Vector
<String
> nachvec
= new Vector
<String
>();
2082 nachvec
.add( (String
)aktvec
.get(4) ) ;
2083 //Dauer neu einstellen
2084 long dauer
= ZeitFunk
.ZeitDifferenzInMinuten((String
)aktvec
.get(4),
2085 ((String
)((Vector
<String
>)vec
.get(i
+1)).get(4)) );
2087 nachvec
.add( Long
.toString(dauer
) ) ;
2088 //Ende neu einstellen
2089 nachvec
.add( ((String
)((Vector
<String
>)vec
.get(i
+1)).get(4)) );
2090 newvec
.add(nachvec
);
2094 if(nachfolgerloeschen
){
2095 Vector
<String
> nachvec
= new Vector
<String
>();
2098 nachvec
.add( (String
)aktvec
.get(4) ) ;
2099 nachvec
.add( Integer
.toString(tkdauer
-pldauer
)) ;
2100 nachvec
.add( ZeitFunk
.MinutenZuZeit(tkende
) ) ;
2101 newvec
.add(nachvec
);
2103 Vector
<String
> nachvec
= new Vector
<String
>();
2104 nachvec
.add( ((String
)((Vector
<String
>)vec
.get(i
)).get(0)) ) ;
2105 nachvec
.add( ((String
)((Vector
<String
>)vec
.get(i
)).get(1)) ) ;
2106 nachvec
.add( (String
)aktvec
.get(4) ) ;
2107 nachvec
.add( Integer
.toString(tkdauer
-pldauer
)) ;
2108 nachvec
.add( ZeitFunk
.MinutenZuZeit(tkende
) ) ;
2109 newvec
.add(nachvec
);
2113 Vector
<String
> nachvec
= new Vector
<String
>();
2114 nachvec
.add( ((String
)((Vector
<String
>)vec
.get(i
)).get(0)) ) ;
2115 nachvec
.add( ((String
)((Vector
<String
>)vec
.get(i
)).get(1)) ) ;
2116 nachvec
.add( (String
)aktvec
.get(4) ) ;
2117 nachvec
.add( Integer
.toString(tkdauer
-pldauer
)) ;
2118 nachvec
.add( ZeitFunk
.MinutenZuZeit(tkende
) ) ;
2119 newvec
.add(nachvec
);
2122 newvec
.add(vec
.get(i
));
2125 //System.out.println("Nachblock gesetzt");
2126 //System.out.println(newvec);
2127 String stmt
= macheStat(newvec
,Integer
.parseInt((String
)jxSucheTable
.getValueAt(zeile
,17)),name
,nummer
);
2128 ////System.out.println("Nur mit Nachblock "+stmt);
2130 ////System.out.println("EscapedDouble String = "+stmt);
2131 schreibeZeile(stmt
);
2132 } catch (SQLException e
) {
2133 // TODO Auto-generated catch block
2134 e
.printStackTrace();
2139 for(i
=0;i
<vecgross
;i
++){
2141 Vector
<String
> vorvec
= new Vector
<String
>();
2142 vorvec
.add( ((String
)((Vector
<String
>)vec
.get(i
)).get(0)) ) ;
2143 vorvec
.add( ((String
)((Vector
<String
>)vec
.get(i
)).get(1)) ) ;
2144 vorvec
.add( ZeitFunk
.MinutenZuZeit(tkstart
)) ;
2145 vorvec
.add( Integer
.toString(tkdauer
-pldauer
) ) ;
2146 vorvec
.add( ZeitFunk
.MinutenZuZeit(plstart
)) ;
2149 Vector
<String
> aktvec
= new Vector
<String
>();
2152 aktvec
.add(ZeitFunk
.MinutenZuZeit(plstart
));
2153 aktvec
.add(Integer
.toString(pldauer
));
2154 aktvec
.add(ZeitFunk
.MinutenZuZeit(plstart
+pldauer
));
2158 newvec
.add(vec
.get(i
));
2162 String stmt
= macheStat(newvec
,Integer
.parseInt((String
)jxSucheTable
.getValueAt(zeile
,17)),name
,nummer
);
2164 schreibeZeile(stmt
);
2165 } catch (SQLException e
) {
2166 e
.printStackTrace();
2174 /*****************************************/
2175 private void schreibeLoeschen(Vector
<Vector
<String
>> vec
,int zeile
,String name
,String nummer
){
2176 int block
= (Integer
) jxSucheTable
.getValueAt(zeile
,16);
2177 int bloecke
= vec
.size();
2178 int geaendert
= Integer
.parseInt( (String
) jxSucheTable
.getValueAt(zeile
,18) );
2179 if(bloecke
!= geaendert
){
2180 ////System.out.println("vermerkt sind "+bloecke+" Blöcke / tatsächlich in der Datenbank sind "+geaendert+" Blöcke");
2181 block
+= (bloecke
-geaendert
);
2184 // nur den nachfolgenden Block prüfen!!
2185 for(int i
=0;i
<1;i
++){
2189 // es gibt nur einen Block
2191 ////System.out.println(jxSucheTable.getValueAt(zeile,8)+" ist im ersten Block / insgesamt existieren "+vec.size()+" Blöcke");
2192 // es gibt mehrere blöcke
2193 ((Vector
<String
>)vec
.get(block
-1)).set(0, "");
2194 ((Vector
<String
>)vec
.get(block
-1)).set(1, "");
2195 stmt
= macheStat(vec
,Integer
.parseInt((String
)jxSucheTable
.getValueAt(zeile
,17)),name
,nummer
);
2196 ////System.out.println("Es gibt nur einen Block, deshalb kann man dirket das statement basteln");
2197 ////System.out.println(stmt);
2200 //es gibt mehrere bloecke und der betroffene block = der erste, also muß der nachfolgende untersucht werden.
2201 ////System.out.println(jxSucheTable.getValueAt(zeile,8)+" ist im ersten Block / insgesamt existieren "+vec.size()+" Blöcke");
2202 String xname
,xnummer
;
2203 xname
= (String
) ((Vector
<String
>)vec
.get(1)).get(0);
2204 xnummer
= (String
) ((Vector
<String
>)vec
.get(1)).get(1);
2205 if(xname
.trim().equals("") && xnummer
.trim().equals("")){
2206 String startzeit
= (String
) ((Vector
<String
>)vec
.get(0)).get(2);
2207 String endzeit
= (String
) ((Vector
<String
>)vec
.get(1)).get(4);
2208 int dauer1
= Integer
.parseInt((String
) ((Vector
<String
>)vec
.get(1)).get(3));
2209 int dauer2
= Integer
.parseInt((String
) ((Vector
<String
>)vec
.get(0)).get(3));
2210 int dauerNeu
= dauer1
+dauer2
;
2211 ((Vector
<String
>)vec
.get(1)).set(0, "");
2212 ((Vector
<String
>)vec
.get(1)).set(1, "");
2213 ((Vector
<String
>)vec
.get(1)).set(2, startzeit
);
2214 ((Vector
<String
>)vec
.get(1)).set(3, Integer
.toString(dauerNeu
));
2215 ((Vector
<String
>)vec
.get(1)).set(4,endzeit
);
2217 stmt
= macheStat(vec
,Integer
.parseInt((String
)jxSucheTable
.getValueAt(zeile
,17)),name
,nummer
);
2218 ////System.out.println("Der betroffene Block ist der erste und der nachfolgende Block = ebenfalls leer");
2219 ////System.out.println(stmt);
2223 ((Vector
<String
>)vec
.get(block
-1)).set(0, "");
2224 ((Vector
<String
>)vec
.get(block
-1)).set(1, "");
2225 stmt
= macheStat(vec
,Integer
.parseInt((String
)jxSucheTable
.getValueAt(zeile
,17)),name
,nummer
);
2226 ////System.out.println("Der betroffene Block ist der erste und der nachfolgende Block = nicht(!!) leer");
2227 ////System.out.println(stmt);
2232 // es gibt mehrere Blöcke aber der betroffene ist der letzte nur den vorherigen Block prüfen
2233 if(block
== bloecke
){
2234 ////System.out.println(jxSucheTable.getValueAt(zeile,8)+" ist im ersten Block / insgesamt existieren "+vec.size()+" Bl�cke");
2235 String xname
,xnummer
;
2236 xname
= (String
) ((Vector
<String
>)vec
.get(block
-2)).get(0);
2237 xnummer
= (String
) ((Vector
<String
>)vec
.get(block
-2)).get(1);
2238 if(xname
.trim().equals("") && xnummer
.trim().equals("")){
2239 String startzeit
= (String
) ((Vector
<String
>)vec
.get(block
-2)).get(2);
2240 String endzeit
= (String
) ((Vector
<String
>)vec
.get(block
-1)).get(4);
2241 int dauer1
= Integer
.parseInt((String
) ((Vector
<String
>)vec
.get(block
-2)).get(3));
2242 int dauer2
= Integer
.parseInt((String
) ((Vector
<String
>)vec
.get(block
-1)).get(3));
2243 int dauerNeu
= dauer1
+dauer2
;
2244 ((Vector
<String
>)vec
.get(block
-2)).set(0, "");
2245 ((Vector
<String
>)vec
.get(block
-2)).set(1, "");
2246 ((Vector
<String
>)vec
.get(block
-2)).set(2, startzeit
);
2247 ((Vector
<String
>)vec
.get(block
-2)).set(3, Integer
.toString(dauerNeu
));
2248 ((Vector
<String
>)vec
.get(block
-2)).set(4,endzeit
);
2249 vec
.remove(block
-1);
2250 stmt
= macheStat(vec
,Integer
.parseInt((String
)jxSucheTable
.getValueAt(zeile
,17)),name
,nummer
);
2251 ////System.out.println("Der betroffene Block ist der letzte und der vorhergehende ist ebenfalls leer");
2252 ////System.out.println(stmt);
2255 ((Vector
<String
>)vec
.get(block
-1)).set(0, "");
2256 ((Vector
<String
>)vec
.get(block
-1)).set(1, "");
2257 stmt
= macheStat(vec
,Integer
.parseInt((String
)jxSucheTable
.getValueAt(zeile
,17)),name
,nummer
);
2258 ////System.out.println("Der betroffene Block ist der letzte und der nachfolgende Block = nicht(!!) leer");
2259 ////System.out.println(stmt);
2263 if((block
> 1) && (block
!= bloecke
)){
2264 String xname
,xnummer
,yname
,ynummer
;
2265 xname
= (String
) ((Vector
<String
>)vec
.get(block
-2)).get(0);
2266 xnummer
= (String
) ((Vector
<String
>)vec
.get(block
-2)).get(1);
2267 yname
= (String
) ((Vector
<String
>)vec
.get(block
)).get(0);
2268 ynummer
= (String
) ((Vector
<String
>)vec
.get(block
)).get(1);
2269 if(( xname
.trim().equals("")) && (xnummer
.trim().equals("")) &&
2270 ( yname
.trim().equals("")) && (ynummer
.trim().equals("")) ){
2271 //der Vorbock ist leer und der Nachblock ist auch leef
2272 String startzeitvb
= (String
) ((Vector
<String
>)vec
.get(block
-2)).get(2);
2273 String endzeitnb
= (String
) ((Vector
<String
>)vec
.get(block
)).get(4);
2274 int dauervb
= Integer
.parseInt((String
) ((Vector
<String
>)vec
.get(block
-2)).get(3));
2275 int dauerakt
= Integer
.parseInt((String
) ((Vector
<String
>)vec
.get(block
-1)).get(3));
2276 int dauernb
= Integer
.parseInt((String
) ((Vector
<String
>)vec
.get(block
)).get(3));
2277 int dauerNeu
= dauervb
+dauerakt
+dauernb
;
2278 ((Vector
<String
>)vec
.get(block
-2)).set(0, "");
2279 ((Vector
<String
>)vec
.get(block
-2)).set(1, "");
2280 ((Vector
<String
>)vec
.get(block
-2)).set(2, startzeitvb
);
2281 ((Vector
<String
>)vec
.get(block
-2)).set(3, Integer
.toString(dauerNeu
));
2282 ((Vector
<String
>)vec
.get(block
-2)).set(4,endzeitnb
);
2284 vec
.remove(block
-1);
2285 stmt
= macheStat(vec
,Integer
.parseInt((String
)jxSucheTable
.getValueAt(zeile
,17)),name
,nummer
);
2286 ////System.out.println("Der betroffene Block ist zwischendrinn der vorhergehende und der nachfolgende sind ebenfalls leer");
2287 ////System.out.println(stmt);
2290 if(( xname
.trim().equals("")) && (xnummer
.trim().equals("")) ){
2291 //der Vorblock ist leer der Nachblock nicht !!
2292 String startzeit
= (String
) ((Vector
<String
>)vec
.get(block
-2)).get(2);
2293 String endzeit
= (String
) ((Vector
<String
>)vec
.get(block
-1)).get(4);
2294 int dauer1
= Integer
.parseInt((String
) ((Vector
<String
>)vec
.get(block
-2)).get(3));
2295 int dauer2
= Integer
.parseInt((String
) ((Vector
<String
>)vec
.get(block
-1)).get(3));
2296 int dauerNeu
= dauer1
+dauer2
;
2297 ((Vector
<String
>)vec
.get(block
-2)).set(0, "");
2298 ((Vector
<String
>)vec
.get(block
-2)).set(1, "");
2299 ((Vector
<String
>)vec
.get(block
-2)).set(2, startzeit
);
2300 ((Vector
<String
>)vec
.get(block
-2)).set(3, Integer
.toString(dauerNeu
));
2301 ((Vector
<String
>)vec
.get(block
-2)).set(4,endzeit
);
2302 vec
.remove(block
-1);
2303 stmt
= macheStat(vec
,Integer
.parseInt((String
)jxSucheTable
.getValueAt(zeile
,17)),name
,nummer
);
2304 ////System.out.println("Der betroffene Block zwischendrinn und der vorhergende ist ebenfalls leer");
2305 ////System.out.println(stmt);
2308 if(( yname
.trim().equals("")) && (ynummer
.trim().equals("")) ){
2309 //der Vorblock ist nicht leer aber der Nachblock!!
2310 String startzeit
= (String
) ((Vector
<String
>)vec
.get(block
-1)).get(2);
2311 String endzeit
= (String
) ((Vector
<String
>)vec
.get(block
)).get(4);
2312 int dauer1
= Integer
.parseInt((String
) ((Vector
<String
>)vec
.get(block
-1)).get(3));
2313 int dauer2
= Integer
.parseInt((String
) ((Vector
<String
>)vec
.get(block
)).get(3));
2314 int dauerNeu
= dauer1
+dauer2
;
2315 ((Vector
<String
>)vec
.get(block
-1)).set(0, "");
2316 ((Vector
<String
>)vec
.get(block
-1)).set(1, "");
2317 ((Vector
<String
>)vec
.get(block
-1)).set(2, startzeit
);
2318 ((Vector
<String
>)vec
.get(block
-1)).set(3, Integer
.toString(dauerNeu
));
2319 ((Vector
<String
>)vec
.get(block
-1)).set(4,endzeit
);
2321 stmt
= macheStat(vec
,Integer
.parseInt((String
)jxSucheTable
.getValueAt(zeile
,17)),name
,nummer
);
2322 ////System.out.println("Der betroffene Block zwischendrinn und der nachfolgende ist ebenfalls leer");
2323 ////System.out.println(stmt);
2326 ((Vector
<String
>)vec
.get(block
-1)).set(0, "");
2327 ((Vector
<String
>)vec
.get(block
-1)).set(1, "");
2328 stmt
= macheStat(vec
,Integer
.parseInt((String
)jxSucheTable
.getValueAt(zeile
,17)),name
,nummer
);
2329 ////System.out.println("Der betroffene Block zwischendrinn und weder der vorherige noch der nachfolgende sind leer");
2330 ////System.out.println(stmt);
2336 ////System.out.println(jxSucheTable.getValueAt(zeile,8)+" ist im Block Nr. "+block+" / insgesamt existieren "+vec.size()+" Blöcke");
2341 schreibeZeile(stmt
);
2342 } catch (SQLException e
) {
2343 // TODO Auto-generated catch block
2344 e
.printStackTrace();
2350 /*****************************************/
2351 private String
macheStat(Vector
<Vector
<String
>> vec
,int id
,String name
,String nummer
){
2352 String stmt
= "";//String.valueOf();
2353 int gross
= vec
.size(),i
;
2354 String rnummer
= null;
2355 String snummer
= null;
2356 stmt
= "Update flexkc set ";
2357 ////System.out.println(name+" - "+nummer);
2358 for(i
=0;i
<gross
;i
++){
2359 ////System.out.println(vec.get(i));
2360 stmt
= stmt
+"T"+(i
+1)+" = '"+StringTools
.Escaped(((String
)((Vector
<String
>)vec
.get(i
)).get(0)))+"'"+", ";
2361 rnummer
= ((String
)((Vector
<String
>)vec
.get(i
)).get(1));
2362 snummer
= rnummer
.trim().replace("\\", "\\\\") ;
2363 rnummer
= snummer
.replace("\\\\\\\\", "\\\\");
2364 stmt
= stmt
+"N"+(i
+1)+" = '"+rnummer
+"'"+", ";
2365 //stmt = stmt +"N"+(i+1)+" = '"+((String)((Vector)vec.get(i)).get(1))+"'"+", ";
2366 stmt
= stmt
+"TS"+(i
+1)+" = '"+((String
)((Vector
<String
>)vec
.get(i
)).get(2))+"'"+", ";
2367 stmt
= stmt
+"TD"+(i
+1)+" = '"+((String
)((Vector
<String
>)vec
.get(i
)).get(3))+"'"+", ";
2368 stmt
= stmt
+"TE"+(i
+1)+" = '"+((String
)((Vector
<String
>)vec
.get(i
)).get(4))+"'"+", ";
2370 stmt
= stmt
+ "BELEGT ='"+Integer
.toString(vec
.size())+"' where id='"+Integer
.toString(id
)+"'";
2371 ////System.out.println(stmt);
2375 /*****************************************/
2376 private void schreibeZeile(String sstmt
) throws SQLException
{
2377 Statement stmt
= null;
2378 ResultSet rs
= null;
2380 //Wenn die Zeilen tats�chlich geschrieben werden sollen ab hier entfernen
2387 //bis hierher entfernen
2389 stmt
= (Statement
) Reha
.thisClass
.conn
.createStatement(ResultSet
.TYPE_SCROLL_SENSITIVE
,
2390 ResultSet
.CONCUR_UPDATABLE
);
2392 res
= stmt
.execute(sstmt
);
2397 } catch (SQLException sqlEx
) { // ignore }
2404 } catch (SQLException sqlEx
) { // ignore }
2411 /*****************************************/
2412 private Vector
<Vector
<String
>> sucheZeile(int zeile
) throws SQLException
{
2413 Statement stmt
= null;
2414 ResultSet rs
= null;
2416 Vector
<Vector
<String
>> vec
= new Vector
<Vector
<String
>>();
2418 stmt
= (Statement
) Reha
.thisClass
.conn
.createStatement(ResultSet
.TYPE_SCROLL_SENSITIVE
,
2419 ResultSet
.CONCUR_UPDATABLE
);
2420 suchstmt
= "select * from flexkc where id = '"+jxSucheTable
.getValueAt(zeile
,17)+"'";
2423 rs
= (ResultSet
) stmt
.executeQuery(suchstmt
);
2424 Vector
<String
> vx
= new Vector
<String
>();
2426 int bloecke
= Integer
.parseInt(rs
.getString(301));
2427 ////System.out.println("Bl�cke = "+bloecke);
2430 for(ii
=0;ii
<bloecke
;ii
++){
2431 vx
.add(rs
.getString("T"+(ii
+1)));
2432 vx
.add(rs
.getString("N"+(ii
+1)));
2433 vx
.add(rs
.getString("TS"+(ii
+1)));
2434 vx
.add(rs
.getString("TD"+(ii
+1)));
2435 vx
.add(rs
.getString("TE"+(ii
+1)));
2436 vec
.add( (Vector
<String
>)vx
.clone());
2441 vx.add(rs.getString("BELEGT"));
2442 vec.add(vx.clone());
2446 }catch(Exception ex
){
2452 } catch (SQLException sqlEx
) { // ignore }
2459 } catch (SQLException sqlEx
) { // ignore }
2466 return (Vector
<Vector
<String
>>)vec
;//.clone();
2468 /********Ende SwingWorker*/
2471 /**************Ende der Hauptklasse*******************************/
2474 public void propertyChange(PropertyChangeEvent arg0
) {
2478 public void keyPressed(KeyEvent arg0
) {
2479 ////System.out.println("********Button in KeyPressed*********");
2480 ////System.out.println(((JComponent)arg0.getSource()).getName());
2481 if(arg0
.getKeyCode()== 10 || arg0
.getKeyCode()==0){
2487 public void keyReleased(KeyEvent arg0
) {
2488 String csource
= "";
2489 if(arg0
.getKeyCode() == 10 || arg0
.getKeyCode() == 0){
2490 csource
= ((JComponent
)arg0
.getSource()).getName();
2495 if(csource
.equals("start")){
2496 if(sucheStarten
.isEnabled() ){
2497 if(! sucheStarten
.isSelected() ){
2498 sucheStarten
.setSelected(true);
2501 knopfGedoense(new int[] {0,1,0,0,0,0,0,0,0,0});
2503 sucheStoppen
.requestFocus();
2508 if(csource
.equals("stop")){
2509 if(sucheStoppen
.isEnabled()){
2510 knopfGedoense(new int[] {0,0,1,0,0,0,0,1,1,1});
2515 if(csource
.equals("zurueck")){
2516 if(allesZuruecksetzen
.isEnabled()){
2517 knopfGedoense(new int[] {1,0,0,0,0,0,0,0,0,0});
2518 roogleZuruecksetzen();
2519 Runtime r
= Runtime
.getRuntime();
2527 public void keyTyped(KeyEvent arg0
) {
2528 if(arg0
.getKeyCode() == 10 || arg0
.getKeyCode() == 0){
2535 /***********************Bereits jetzt f�r*************************/
2536 /***********************ein Update vorgesehen*********************/
2537 /*****************************************************************/
2538 class WorkerSuchenInKalenderTagen
extends SwingWorker
<Void
,Void
>{
2539 Statement stmt
= null;
2540 ResultSet rs
= null;
2541 String sergebnis
= "";
2542 boolean gesperrt
= false;
2543 boolean gruppe
= false;
2545 String
[] exStatement
= {null};
2546 String suchkrit1
= "";
2547 String suchkrit2
= "";
2548 String sqlEnde
= "";
2555 String aktDatum
= null;
2556 ArrayList
<String
> atermine
= new ArrayList
<String
>();
2557 public ArrayList
<String
> sperrDatum
= new ArrayList
<String
>();
2558 //private ArrayList<String> sperrDatum = new ArrayList<String>();
2560 int schichtArt
= -1;
2561 int selektivArt
= -1;
2563 Vector
<Object
> machevec
= new Vector
<Object
>();
2566 public void setzeStatement(SuchenSeite xeltern
){
2569 img
= SystemConfig
.hmSysIcons
.get("zuzahlnichtok");
2570 img2
= SystemConfig
.hmSysIcons
.get("zuzahlfrei");
2571 //img = new ImageIcon(Reha.proghome+"icons/Kreuz_klein.gif");
2572 //img2 = new ImageIcon(Reha.proghome+"icons/frei.png");
2573 img
.setDescription("gesperrt");
2574 img2
.setDescription("offen");
2577 this.sperrDatum
.clear();
2578 if(SuchenSeite
.selektiv
){
2579 selektivArt
= macheSelektiv();
2586 protected Void
doInBackground() throws Exception
{
2587 // TODO Auto-generated method stub
2590 //Vector treadVect = new Vector();
2591 aktDatum
= getAktDatum();
2594 stmt
= (Statement
) Reha
.thisClass
.conn
.createStatement(ResultSet
.TYPE_SCROLL_SENSITIVE
,
2595 ResultSet
.CONCUR_UPDATABLE
);
2596 sqlEnde
= DatFunk
.sDatInSQL(getStopDatum());
2598 sqlAkt
= DatFunk
.sDatInSQL(aktDatum
);
2601 suchkrit1
= getSuchName().trim();
2602 suchkrit2
= getSuchNummer().trim();
2607 int gruppereal
,gruppewant
;
2609 for(int j
=0;j
<1;j
++){
2610 if(suchkrit1
.equals("")&& suchkrit2
.equals("")){
2611 // es wird nach leeren Terminen gesucht
2615 if( (!suchkrit1
.equals(""))&& suchkrit2
.equals("")){
2616 // es wird nach einem Namen gesucht
2620 if( (suchkrit1
.equals(""))&& (!suchkrit2
.equals(""))){
2621 // es wird nach einer Nummer gesucht
2625 if( (!suchkrit1
.equals(""))&& (!suchkrit2
.equals(""))){
2626 // es wird nach einem Namen und nach einer Nummer gesucht
2632 String
[] abtei
= {"KG","MA","ER","LO","SP"};
2634 zeit1
= System
.currentTimeMillis();
2635 tabelleAusschalten();
2636 setFortschrittRang(0,DatFunk
.TageDifferenz( eltern
.getStartDatum(), eltern
.getStopDatum() ) );
2637 setFortschrittSetzen(0);
2638 setFortschrittZeigen(true);
2639 Vector
<String
> abtlg
= new Vector
<String
>(Arrays
.asList(abtei
));
2640 Vector
<Object
> yvec
= null;
2646 while( (DatFunk
.DatumsWert(sqlAkt
) <= DatFunk
.DatumsWert(sqlEnde
)) && (!SuchenSeite
.mussUnterbrechen
)){
2647 setzeDatum(aktDatum
);
2648 if( tagDurchsuchen(aktDatum
) ){
2652 if(getGewaehlt() <= 20){
2653 test
= macheStatement(sqlAkt
);
2654 ////System.out.println(test);
2656 test
= "select * from flexkc where datum = '"+sqlAkt
+"' LIMIT "+ParameterLaden
.maxKalZeile
;
2658 rs
= (ResultSet
) stmt
.executeQuery(test
);
2664 /*in Spalte 301 steht die Anzahl der belegten Bl�cke*/
2665 int belegt
= rs
.getInt(301);
2669 String skollege
= "";
2675 skollege
= rs
.getString(303).substring(0,2);
2676 if( skollege
.substring(0,1) == "0" ){
2677 ikollege
= Integer
.parseInt(skollege
.substring(1,2));
2679 ikollege
= Integer
.parseInt(skollege
);
2682 /***************Hier wird getestet ob die Kalender zeile belegt ist*****/
2683 /********wenn ein Benutzer gel�scht wurde kommt leer zur�ck*******/
2684 szeil
= ParameterLaden
.getKollegenUeberDBZeile(ikollege
);
2685 ////System.out.println("Kollege �ber DBZeile = "+szeil);
2686 if(!szeil
.equals("")){
2688 String sabteilung
= eltern
.kollegenAbteilung
[ikollege
].trim();//getKollegenAbteilung(ikollege).trim();
2689 if(! sabteilung
.equals("") ){
2690 if( (abtlg
.contains(sabteilung
)) ){
2691 defdauer
= (int) eltern
.hZeiten
.get(eltern
.kollegenAbteilung
[ikollege
]);
2692 //getKollegenAbteilung(ikollege));
2695 ////System.out.println("Kollege "+szeil+" hat keine Zeitzuordnung, nehme Gruppendefiniton");
2698 if( (abteilnr
= SystemConfig
.oGruppen
.gruppenNamen
.indexOf(sabteilung
)) >= 0){
2699 defdauer
= Long
.valueOf(SystemConfig
.oGruppen
.gruppenGueltig
.get(abteilnr
)[2]).intValue();
2700 //defdauer = (int) new Long(SystemConfig.oGruppen.gruppenGueltig.get(abteilnr)[2]).intValue();
2701 ////System.out.println("G�ltig ab:"+ datFunk.WertInDatum(SystemConfig.oGruppen.gruppenGueltig.get(abteilnr)[0]));
2702 //ermitteln ob alte oder neue Definition verwendet werden soll // in Variable ablegen
2703 //dann Sprung in die Tests
2717 for(ii
= 1;ii
<= belegt
;ii
++){
2719 name
= ( rs
.getString("T"+(ii
))== null ?
"" : rs
.getString("T"+(ii
)).trim() );
2720 nummer
= ( rs
.getString("N"+(ii
))== null ?
"" : rs
.getString("N"+(ii
)).trim() );
2723 if(! (eltern
.getKollegenSuchen(ikollege
)) ){
2724 ////System.out.println("Keine Suche erforderlich f�r Kollege "+ikollege);
2725 // falls hier nicht gesucht werden soll = anzahl > 20
2732 int kaldauer
= Integer
.parseInt(rs
.getString("TD"+(ii
)));
2735 boolean keintest
= keinTest();
2736 if( (suchArt
==1) && (kaldauer
< defdauer
)){
2737 // wenn die Terminkaldauer kleiner als die eingestellte Dauer
2741 // leerer Termin gesucht
2742 if((keintest
) && (!gruppe
)){
2743 yvec
= sucheNachFreien(rs
,name
,nummer
,skollege
,ikollege
,ii
,defdauer
);
2744 ////System.out.println("Es wurde ein vecor erstllt");
2747 if( (keintest
) && (gruppe
)){
2748 if(name
.equals("") && nummer
.equals("")){
2753 if( (vecgruppe
= gruppenTest(rs
,abteilnr
,ii
,defdauer
,true)) != null){
2754 ////System.out.println("In Gruppensuchen nach Freien");
2755 yvec
= sucheNachGruppenFreien(rs
,name
,nummer
,skollege
,ikollege
,ii
,defdauer
,abteilnr
,vecgruppe
,true);
2756 //System.out.println("Leersuche"+yvec);
2762 if(freiTermin(name
,nummer
)){
2763 if(schichtTest(rs
,ii
,defdauer
)){
2764 yvec
= sucheNachSelect(rs
,name
,nummer
,skollege
,ikollege
,ii
,defdauer
);
2771 if(freiTermin(name
,nummer
)){
2772 if(selektivTest(rs
,ii
,defdauer
)){
2773 yvec
= sucheNachSelect(rs
,name
,nummer
,skollege
,ikollege
,ii
,defdauer
);
2781 /***********************************/
2783 if(name
.contains(suchkrit1
) && !nummer
.contains("@FREI") && (!gruppe
) ){
2784 if(suchkrit1
.equals("#KGG")){
2785 yvec
= sucheNachKGG(rs
,name
,nummer
,skollege
,ikollege
,ii
,defdauer
);
2788 if(name
.contains("KGG")){
2789 yvec
= sucheNachKGG(rs
,name
,nummer
,skollege
,ikollege
,ii
,defdauer
);
2792 yvec
= sucheNachNamen(rs
,name
,nummer
,skollege
,ikollege
,ii
);
2795 if(name
.contains(suchkrit1
) && !nummer
.contains("@FREI") && (gruppe
) ){
2797 if( (vecgruppe
= gruppenTest(rs
,abteilnr
,ii
,defdauer
,false)) != null){
2798 yvec
= sucheNachGruppenFreien(rs
,name
,nummer
,skollege
,ikollege
,ii
,defdauer
,abteilnr
,vecgruppe
,false);
2799 //System.out.println("Suchkrit 1 + Suchkrit 2 "+yvec);
2800 gruppereal
= Integer
.parseInt( (String
)yvec
.get(5));
2801 gruppewant
= Integer
.parseInt( (String
)yvec
.get(7));
2802 if(gruppereal
< gruppewant
){
2803 yvec
.set(7,Integer
.toString(gruppereal
));
2809 /***********************************/
2811 if(nummer
.contains(suchkrit2
) && (!gruppe
) ){
2812 if(name
.contains("KGG")){
2813 yvec
= sucheNachKGG(rs
,name
,nummer
,skollege
,ikollege
,ii
,defdauer
);
2816 yvec
= sucheNachNamen(rs
,name
,nummer
,skollege
,ikollege
,ii
);
2819 if(nummer
.contains(suchkrit2
) && (gruppe
) ){
2821 if( (vecgruppe
= gruppenTest(rs
,abteilnr
,ii
,defdauer
,false)) != null){
2822 yvec
= sucheNachGruppenFreien(rs
,name
,nummer
,skollege
,ikollege
,ii
,defdauer
,abteilnr
,vecgruppe
,false);
2823 //System.out.println("Suchkrit 2 "+yvec);
2824 gruppereal
= Integer
.parseInt( (String
)yvec
.get(5));
2825 gruppewant
= Integer
.parseInt( (String
)yvec
.get(7));
2826 if(gruppereal
< gruppewant
){
2827 yvec
.set(7,Integer
.toString(gruppereal
));
2834 /***********************************/
2836 if(name
.contains(suchkrit1
) && nummer
.contains(suchkrit2
) && (!gruppe
) ){
2837 if(suchkrit1
.equals("#KGG")){
2838 yvec
= sucheNachKGG(rs
,name
,nummer
,skollege
,ikollege
,ii
,defdauer
);
2841 if(name
.contains("KGG")){
2842 yvec
= sucheNachKGG(rs
,name
,nummer
,skollege
,ikollege
,ii
,defdauer
);
2845 yvec
= sucheNachNamen(rs
,name
,nummer
,skollege
,ikollege
,ii
);
2848 if(name
.contains(suchkrit1
) && nummer
.contains(suchkrit2
) && (gruppe
) ){
2853 if( (vecgruppe
= gruppenTest(rs
,abteilnr
,ii
,defdauer
,false)) != null){
2854 ////System.out.println("In Gruppensuchen nach Freien");
2855 yvec
= sucheNachGruppenFreien(rs
,name
,nummer
,skollege
,ikollege
,ii
,defdauer
,abteilnr
,vecgruppe
,false);
2856 //System.out.println("Suchkrit 1 + Suchkrit 2 "+yvec);
2857 gruppereal
= Integer
.parseInt( (String
)yvec
.get(5));
2858 gruppewant
= Integer
.parseInt( (String
)yvec
.get(7));
2859 if(gruppereal
< gruppewant
){
2860 yvec
.set(7,Integer
.toString(gruppereal
));
2867 /***********************************/
2874 getInstance().dtblm
.addRow(yvec
);
2875 /**************************/
2876 aktuell
= dtblm
.getRowCount();
2877 SuchenSeite
.verarbeitetLbl
.setText(Integer
.toString(aktuell
));
2878 sperre
= (String
)dtblm
.getValueAt(aktuell
-1,13)+
2879 dtblm
.getValueAt(aktuell
-1,14) ;
2880 if(!sperrDatum
.contains(sperre
+SystemConfig
.dieseMaschine
+zeit
)){
2881 cmd
= "sperre='"+sperre
+"'";
2882 ret
= SqlInfo
.zaehleSaetze("flexlock", cmd
);
2884 cmd
= "insert into flexlock set sperre='"+sperre
+"', maschine='"+SystemConfig
.dieseMaschine
+"', "+
2886 SqlInfo
.sqlAusfuehren(cmd
);
2887 sperrDatum
.add(sperre
+SystemConfig
.dieseMaschine
+zeit
);
2889 dtblm
.setValueAt(img
,aktuell
-1,1);
2892 //sucheDaten.add(yvec);
2896 } // ende der for f�r die einzelnen Felder
2898 } //neu endif von: keine Zeile im Kalender
2899 } // Klammer der While
2901 aktDatum
= DatFunk
.sDatPlusTage(aktDatum
, 1);
2902 setFortschrittSetzen(++ftage
);
2903 sqlAlt
= String
.valueOf(sqlAkt
);
2904 sqlAkt
= DatFunk
.sDatInSQL(aktDatum
);
2906 aktDatum
= DatFunk
.sDatPlusTage(aktDatum
, 1);
2908 sqlAkt
= DatFunk
.sDatInSQL(aktDatum
); ////System.out.println(SuchenSeite.getAktDatum()+"-"+SuchenSeite.tagDurchsuchen(SuchenSeite.getAktDatum()) );
2909 setFortschrittSetzen(++ftage
);
2911 /*********Ende der oberen While*********/
2913 }catch(SQLException ex
) {
2914 //System.out.println("von stmt -SQLState: " + ex.getSQLState());
2915 }catch(Exception ex2
){
2916 ex2
.printStackTrace();
2927 } catch (SQLException sqlEx
) { // ignore }
2935 } catch (SQLException sqlEx
) { // ignore }
2941 if (DatFunk
.DatumsWert(sqlAkt
) > DatFunk
.DatumsWert(sqlEnde
)){
2943 setFortschrittZeigen(false);
2945 long dauer
= (System
.currentTimeMillis()-zeit1
);
2946 SwingUtilities
.invokeLater(new Runnable(){
2948 setKnopfGedoense(new int[] {0,0,0,0,0,0,0,1,1,1});
2949 tabelleEinschalten();
2950 listenerEinschalten();
2951 ////System.out.println("Vectorgröße = "+getInstance().dtblm.getRowCount());
2952 mussUnterbrechen
= true;
2953 jxSucheTable
.revalidate();
2958 private Vector
getColVec(){
2959 Vector cols
= new Vector();
2960 String
[] column
= {"x?","G!","Datum","von","bis","Min.","Beginn","Dauer.","Namen","Rez.Nr.","Behandler",
2961 // 12 13 14 15 16 17 18 19
2962 "Druckzeit","Sort","Spalte","sDatum","sOrigDatum","iBlock","id","maxblock",""};
2963 for(int i
= 0; i
< column
.length
;i
++){
2964 cols
.add(column
[i
]);
2966 return (Vector
)cols
;//(Vector)cols.clone();
2969 /********************************************/
2970 private Vector
gruppenTest(ResultSet rs
, int gruppe
,int feld
,int defdauer
,boolean suchleer
) throws SQLException
{
2972 Vector vecret
= null;
2973 String sDatum
= DatFunk
.sDatInDeutsch(rs
.getString("DATUM"));
2975 int taginwoche
= DatFunk
.TagDerWoche(sDatum
);
2978 if( DatFunk
.DatumsWert(sDatum
) >=
2979 SystemConfig
.oGruppen
.gruppenGueltig
.get(gruppe
)[0] ){
2982 int xdauer
= Integer
.parseInt(rs
.getString("TD"+(feld
)).trim());
2983 String xzeit
= rs
.getString("TS"+(feld
)).trim().substring(0,5);
2985 int gross
= (int)((Vector
)((Vector
)((Vector
)SystemConfig
.oGruppen
.gruppeAlle
.get(gruppe
)).get(altneu
)).get(taginwoche
-1)).size();
2987 System.out.println("\n***************************************\n");
2988 System.out.println("Termine = "+gross);
2989 System.out.println("Defdauer = "+defdauer);
2990 System.out.println("VerfügbarDauer = "+xdauer);
2991 System.out.println("SuchLeer = "+suchleer);
2993 for(int i
= 0;i
<gross
;i
++){
2994 long lgrenzeklein
=(Long
) ((Vector
)((Vector
)((Vector
)((Vector
)SystemConfig
.oGruppen
.gruppeAlle
.get(gruppe
)).get(altneu
)).get(taginwoche
-1)).get(i
)).get(0);
2995 long lgrenzegross
=(Long
) ((Vector
)((Vector
)((Vector
)((Vector
)SystemConfig
.oGruppen
.gruppeAlle
.get(gruppe
)).get(altneu
)).get(taginwoche
-1)).get(i
)).get(1);
2997 if(longPasstZwischen(lgrenzeklein
,lgrenzegross
,xzeit
,(suchleer ? defdauer
: xdauer
))){
2998 vecret
= (Vector
) ((Vector
)((Vector
)((Vector
)((Vector
)SystemConfig
.oGruppen
.gruppeAlle
.get(gruppe
)).get(altneu
)).get(taginwoche
-1)).get(i
));
3000 System.out.println("passt zwischen");
3001 System.out.println(vecret);
3003 return (Vector
)vecret
;
3012 private boolean schichtTest(ResultSet rs
,int ii
,int defdauer
) throws SQLException
{
3013 String kalende
,kalanfang
,datum
;
3014 String pbeginn
,pende
,uhr1
,uhr2
;
3015 boolean wogerade
= false;
3016 int[] selektparm1
=null;
3017 int[] selektparm2
=null;
3018 pbeginn
= rs
.getString("TS"+ii
);
3019 pende
= rs
.getString("TE"+ii
);
3020 wogerade
= DatFunk
.GeradeWoche(DatFunk
.sDatInDeutsch(rs
.getString("DATUM")));
3021 kalanfang
= SystemConfig
.KalenderUmfang
[0];
3022 kalende
= SystemConfig
.KalenderUmfang
[1];
3024 // Bearbeitet nur gerade Kalenderwochen
3025 uhr1
= schichtUhr
[0];
3026 uhr2
= schichtUhr
[1];
3027 if((wogerade
) && (schichtWal
[0])){
3029 selektparm1
= (Schnittmenge(kalanfang
,uhr1
,pbeginn
,pende
));
3030 if(selektparm1
[0] >=defdauer
){
3031 String drzeit
= (selektparm1
[3] > 0 ?
3032 ZeitFunk
.MinutenZuZeit(selektparm1
[1]).substring(0,5) :
3033 ZeitFunk
.MinutenZuZeit(selektparm1
[2]-defdauer
).substring(0,5));
3034 selektbeginn
= drzeit
;
3040 selektparm1
= (Schnittmenge(uhr1
,kalende
,pbeginn
,pende
));
3041 if(selektparm1
[0] >=defdauer
){
3042 String drzeit
= (selektparm1
[3] > 0 ?
3043 ZeitFunk
.MinutenZuZeit(selektparm1
[1]).substring(0,5) :
3044 ZeitFunk
.MinutenZuZeit(selektparm1
[2]-defdauer
).substring(0,5));
3045 selektbeginn
= drzeit
;
3052 if((!wogerade
) && (schichtWal
[1])){
3054 selektparm1
= (Schnittmenge(kalanfang
,uhr2
,pbeginn
,pende
));
3055 if(selektparm1
[0] >=defdauer
){
3056 String drzeit
= (selektparm1
[3] > 0 ?
3057 ZeitFunk
.MinutenZuZeit(selektparm1
[1]).substring(0,5) :
3058 ZeitFunk
.MinutenZuZeit(selektparm1
[2]-defdauer
).substring(0,5));
3059 selektbeginn
= drzeit
;
3065 selektparm1
= (Schnittmenge(uhr2
,kalende
,pbeginn
,pende
));
3066 if(selektparm1
[0] >=defdauer
){
3067 String drzeit
= (selektparm1
[3] > 0 ?
3068 ZeitFunk
.MinutenZuZeit(selektparm1
[1]).substring(0,5) :
3069 ZeitFunk
.MinutenZuZeit(selektparm1
[2]-defdauer
).substring(0,5));
3070 selektbeginn
= drzeit
;
3079 private boolean selektivTest(ResultSet rs
,int ii
,int defdauer
) throws SQLException
{
3080 //long planbeginn,planende;
3081 String kalende
,kalanfang
;
3082 String pbeginn
,pende
,wbeginn1
,wende1
,wbeginn2
,wende2
;
3083 pbeginn
= rs
.getString("TS"+ii
);
3084 pende
= rs
.getString("TE"+ii
);
3085 wbeginn1
= selectUhr
[0];
3086 wende1
= selectUhr
[1];
3087 wbeginn2
= selectUhr
[2];
3088 wende2
= selectUhr
[3];
3090 kalanfang
= SystemConfig
.KalenderUmfang
[0];
3091 kalende
= SystemConfig
.KalenderUmfang
[1];
3094 int[] selektparm1
=null;
3095 int[] selektparm2
=null;
3096 for(int v
= 0;v
< 1; v
++){
3097 /*******************************/
3098 if(macheSelektiv()==0){
3099 selektparm1
= (Schnittmenge(wbeginn1
,kalende
,pbeginn
,pende
));
3100 if(selektparm1
[0] >=defdauer
){
3101 String drzeit
= (selektparm1
[3] > 0 ?
3102 ZeitFunk
.MinutenZuZeit(selektparm1
[1]).substring(0,5) :
3103 ZeitFunk
.MinutenZuZeit(selektparm1
[2]-defdauer
).substring(0,5));
3104 selektbeginn
= drzeit
;
3110 /*******************************/
3111 if(macheSelektiv()==1){
3112 selektparm1
= Schnittmenge(kalanfang
,wende1
,pbeginn
,pende
);
3113 if(selektparm1
[0 ]>=defdauer
){
3114 String drzeit
= (selektparm1
[3] > 0 ?
3115 ZeitFunk
.MinutenZuZeit(selektparm1
[1]).substring(0,5) :
3116 ZeitFunk
.MinutenZuZeit(selektparm1
[2]-defdauer
).substring(0,5));
3117 selektbeginn
= drzeit
;
3123 /*******************************/
3124 if(macheSelektiv()==2){
3125 selektparm1
= Schnittmenge(wbeginn1
,wende1
,pbeginn
,pende
);
3126 if(( selektparm1
[0] >=defdauer
)){
3127 String drzeit
= (selektparm1
[3] > 0 ?
3128 ZeitFunk
.MinutenZuZeit(selektparm1
[1]).substring(0,5) :
3129 ZeitFunk
.MinutenZuZeit(selektparm1
[2]-defdauer
).substring(0,5));
3130 selektbeginn
= drzeit
;
3136 /**************ab hier mit ODER - Bedingung***************/
3137 if(macheSelektiv()==3){
3138 selektparm1
= Schnittmenge(wbeginn1
,wende1
,pbeginn
,pende
);
3139 selektparm2
= Schnittmenge(wbeginn2
,kalende
,pbeginn
,pende
);
3140 if( (selektparm1
[0]>=defdauer
) || (selektparm2
[0]>=defdauer
) ){
3141 if(selektparm1
[0] >= defdauer
){
3142 //if(selektparm1[3] == -1){//System.out.println("Anfang = -1 - "+pbeginn);}
3143 String drzeit
= (selektparm1
[3] > 0 ?
3144 ZeitFunk
.MinutenZuZeit(selektparm1
[1]).substring(0,5) :
3145 ZeitFunk
.MinutenZuZeit(selektparm1
[2]-defdauer
).substring(0,5));
3146 selektbeginn
= drzeit
;
3148 String drzeit
= (selektparm2
[3] > 0 ?
3149 ZeitFunk
.MinutenZuZeit(selektparm2
[1]).substring(0,5) :
3150 ZeitFunk
.MinutenZuZeit(selektparm2
[2]-defdauer
).substring(0,5));
3151 selektbeginn
= drzeit
;
3158 /*******************************/
3159 if(macheSelektiv()==4){
3160 selektparm1
= Schnittmenge(wbeginn1
,wende1
,pbeginn
,pende
);
3161 selektparm2
= Schnittmenge(kalanfang
,wende2
,pbeginn
,pende
);
3162 if( (selektparm1
[0]>=defdauer
) || (selektparm2
[0]>=defdauer
) ){
3163 if(selektparm1
[0] >= defdauer
){
3164 String drzeit
= (selektparm1
[3] > 0 ?
3165 ZeitFunk
.MinutenZuZeit(selektparm1
[1]).substring(0,5) :
3166 ZeitFunk
.MinutenZuZeit(selektparm1
[2]-defdauer
).substring(0,5));
3167 selektbeginn
= drzeit
;
3169 String drzeit
= (selektparm2
[3] > 0 ?
3170 ZeitFunk
.MinutenZuZeit(selektparm2
[1]).substring(0,5) :
3171 ZeitFunk
.MinutenZuZeit(selektparm2
[2]-defdauer
).substring(0,5));
3172 selektbeginn
= drzeit
;
3179 /*******************************/
3180 if(macheSelektiv()==5){
3181 selektparm1
= Schnittmenge(wbeginn1
,wende1
,pbeginn
,pende
);
3182 selektparm2
= Schnittmenge(wbeginn2
,wende2
,pbeginn
,pende
);
3183 if( (selektparm1
[0]>=defdauer
) || (selektparm2
[0]>=defdauer
) ){
3184 if(selektparm1
[0] >= defdauer
){
3185 String drzeit
= (selektparm1
[3] > 0 ?
3186 ZeitFunk
.MinutenZuZeit(selektparm1
[1]).substring(0,5) :
3187 ZeitFunk
.MinutenZuZeit(selektparm1
[2]-defdauer
).substring(0,5));
3188 selektbeginn
= drzeit
;
3190 String drzeit
= (selektparm2
[3] > 0 ?
3191 ZeitFunk
.MinutenZuZeit(selektparm2
[1]).substring(0,5) :
3192 ZeitFunk
.MinutenZuZeit(selektparm2
[2]-defdauer
).substring(0,5));
3193 selektbeginn
= drzeit
;
3204 boolean passtZwischen(String sgrenzeklein
,String sgrenzegross
,String szeit
,int dauer
){
3205 long z1
= ZeitFunk
.MinutenSeitMitternacht(sgrenzeklein
);
3206 long z2
= ZeitFunk
.MinutenSeitMitternacht(sgrenzegross
);
3207 long z3
= ZeitFunk
.MinutenSeitMitternacht(szeit
)+Long
.parseLong(Integer
.toString(dauer
));
3208 return( ((z3
>= z1
) && (z3
<=z2
)) ?
true : false);
3210 boolean longPasstZwischen(long lgrenzeklein
,long lgrenzegross
,String szeit
,int dauer
){
3211 long z1
= lgrenzeklein
;
3212 long z2
= lgrenzegross
;
3214 long z3
= ZeitFunk
.MinutenSeitMitternacht(szeit
)+Long
.parseLong(Integer
.toString(dauer
));
3215 return( ((z3
>= z1
) && (z3
<=z2
)) ?
true : false);
3217 boolean ZeitGroesserGleich(String szeit1
,String szeit2
){
3218 long z1
= ZeitFunk
.MinutenSeitMitternacht(szeit1
);
3219 long z2
= ZeitFunk
.MinutenSeitMitternacht(szeit2
);
3220 return( z2
>= z1 ?
true : false);
3222 boolean ZeitGroesser(String szeit1
,String szeit2
){
3223 long z1
= ZeitFunk
.MinutenSeitMitternacht(szeit1
);
3224 long z2
= ZeitFunk
.MinutenSeitMitternacht(szeit2
);
3225 return( z2
> z1 ?
true : false);
3227 boolean ZeitKleinerGleich(String szeit1
,String szeit2
){
3228 long z1
= ZeitFunk
.MinutenSeitMitternacht(szeit1
);
3229 long z2
= ZeitFunk
.MinutenSeitMitternacht(szeit2
);
3230 return( z2
<= z1 ?
true : false);
3232 boolean ZeitKleiner(String szeit1
,String szeit2
){
3233 long z1
= ZeitFunk
.MinutenSeitMitternacht(szeit1
);
3234 long z2
= ZeitFunk
.MinutenSeitMitternacht(szeit2
);
3235 return( z2
< z1 ?
true : false);
3237 int[] Schnittmenge(String sklein1
,String sgross1
,String sklein2
,String sgross2
){
3238 long z1
= ZeitFunk
.MinutenSeitMitternacht(sklein1
);
3239 long z2
= ZeitFunk
.MinutenSeitMitternacht(sgross1
);
3240 long z3
= ZeitFunk
.MinutenSeitMitternacht(sklein2
);
3241 long z4
= ZeitFunk
.MinutenSeitMitternacht(sgross2
);
3242 long schnittbeginn
, schnittende
;
3244 // Wenn Wunschbeginn fr�her oder gleich als gefundener Termin-Beginn
3245 if ( (z1
<= z3
) && (z2
>= z4
) ){
3249 return new int[] {Long
.valueOf(schnittende
-schnittbeginn
).intValue(),Long
.valueOf(schnittbeginn
).intValue(),Long
.valueOf(schnittende
).intValue(),ananfang
};
3255 //return new Long(z2-z3).intValue();
3274 return new int[] {Long
.valueOf(schnittende
-schnittbeginn
).intValue(),Long
.valueOf(schnittbeginn
).intValue(),Long
.valueOf(schnittende
).intValue(),ananfang
};
3278 private int macheSelektiv(){
3279 boolean c0
= selectWal
[0];
3280 boolean c1
= selectWal
[1];
3281 boolean c2
= selectWal
[2];
3282 boolean c3
= selectWal
[3];
3283 if((c0
) && (!c1
) && (!c2
) && (!c3
)){
3286 if((!c0
) && (c1
) && (!c2
) && (!c3
)){
3289 if((c0
) && (c1
) && (!c2
) && (!c3
)){
3292 if((c0
) && (c1
) && (c2
) && (!c3
)){
3295 if((c0
) && (c1
) && (!c2
) && (c3
)){
3298 if((c0
) && (c1
) && (c2
) && (c3
)){
3304 private boolean keinTest(){
3305 return ((!schicht
) &&(!selektiv
) ?
true : false);
3307 public void trefferSetzen(){
3308 SwingUtilities
.invokeLater(new Runnable(){
3310 setzeTreffer(treffer
);
3314 private String
macheStatement(String sqldatum
){
3318 String ssuchen
= "";
3320 lang
= getKollegenEinstellen().length
;
3322 for (i
=0;i
<lang
;i
++){
3324 if(((Boolean
)getKollegenEinstellen()[i
][1]) ){
3325 ////System.out.println("Inhalt von [i]="+i+" / Inhalt von [5=]"+SuchenSeite.getKollegenEinstellen()[i][5] );
3326 int dbZeile
= (Integer
) getKollegenEinstellen()[i
][0];
3327 //int dbZeile = (Integer) SuchenSeite.getKollegenEinstellen()[i][5];
3328 ssuchen
= (dbZeile
<=9 ?
"0"+(dbZeile
)+"BEHANDLER" : (dbZeile
)+"BEHANDLER");
3330 stmt
= "select * from flexkc where datum = '";
3331 stmt
= stmt
+sqldatum
+"' AND (BEHANDLER='"+ssuchen
+"'";
3334 stmt
= stmt
+" OR BEHANDLER='"+ssuchen
+"'";
3340 stmt
= stmt
+") ORDER BY BEHANDLER";
3347 /************ alternative ***********/
3348 private boolean freiTermin(String name
,String nummer
) throws SQLException
{
3349 if(name
.equals("") && nummer
.equals("") ){
3355 private Vector
<Object
> sucheNachFreien(ResultSet rs
,String name
,String nummer
,String skollege
,int ikollege
,int ii
,int defdauer
) throws SQLException
{
3356 Vector
<Object
> vec
= null;
3357 if(name
.equals("") && nummer
.equals("") ){
3358 vec
= macheVector(rs
,name
,nummer
,skollege
,ikollege
,ii
,defdauer
);
3362 private Vector
<Object
> sucheNachGruppenFreien(ResultSet rs
,String name
,String nummer
,String skollege
,int ikollege
,int ii
,int defdauer
,int gruppennr
,Vector
<?
> grupdat
,boolean suchleer
) throws SQLException
{
3363 // //System.out.println("Gültig ab:"+ datFunk.WertInDatum(SystemConfig.oGruppen.gruppenGueltig.get(gruppennr)[0]));
3364 Vector
<Object
> vec
= null;
3365 vec
= macheGruppenVector(rs
,name
,nummer
,skollege
,ikollege
,ii
,defdauer
,grupdat
,suchleer
);
3369 private Vector
<Object
> sucheNachNamen(ResultSet rs
,String name
,String nummer
,String skollege
,int ikollege
,int ii
) throws SQLException
{
3370 Vector
<Object
> vec
= null;
3371 if(name
.contains(suchkrit1
)){
3372 vec
= macheVector(rs
,name
,nummer
,skollege
,ikollege
,ii
,-1);
3376 private Vector
<Object
> sucheNachSelect(ResultSet rs
,String name
,String nummer
,String skollege
,int ikollege
,int ii
,int defdauer
) throws SQLException
{
3377 Vector
<Object
> vec
= null;
3378 vec
= macheVector(rs
,name
,nummer
,skollege
,ikollege
,ii
,defdauer
);
3379 vec
.set(6, selektbeginn
);
3382 private Vector
<Object
> sucheNachKGG(ResultSet rs
,String name
,String nummer
,String skollege
,int ikollege
,int ii
,int defdauer
) throws SQLException
{
3383 Vector
<Object
> vec
= null;
3384 vec
= macheKGGVector(rs
,name
,nummer
,skollege
,ikollege
,ii
,defdauer
);
3388 private Vector
<Object
> macheVector(ResultSet rs
,String name
,String nummer
,String skollege
,int ikollege
,int ii
,int defdauer
) throws SQLException
{
3389 //Vector vec = new Vector();
3391 machevec
.trimToSize();
3396 uhrzeit
= rs
.getString("TS"+(ii
));
3398 sorigdatum
= rs
.getString(305);
3399 sdatum
= DatFunk
.sDatInDeutsch(sorigdatum
);
3400 skollege
= (String
) ParameterLaden
.getKollegenUeberReihe(ikollege
);
3401 //{"x?","G!","Datum","Beginn","Ende","Min.","Namen","Rez.Nr.","Behandler","Druckzeit","Sort","Spalte","richtigesDatum","block","id-db"};
3402 machevec
.add(Boolean
.valueOf(false));
3404 machevec
.add(DatFunk
.WochenTag(sdatum
).substring(0,2)+"-"+sdatum
);
3405 machevec
.add(uhrzeit
.substring(0,5));
3406 machevec
.add(rs
.getString("TE"+(ii
)).trim().substring(0,5));
3407 machevec
.add(rs
.getString("TD"+(ii
)).trim());
3408 machevec
.add(rs
.getString("TS"+(ii
)).trim().substring(0,5));
3409 machevec
.add((defdauer
== -1 ? rs
.getString("TD"+(ii
)).trim() : Integer
.toString(defdauer
) ) );
3411 machevec
.add(nummer
);
3412 machevec
.add(skollege
);
3414 machevec
.add(""); //fr�her sorter
3415 machevec
.add(rs
.getString("BEHANDLER"));
3416 machevec
.add(sdatum
);
3417 machevec
.add(sorigdatum
);
3419 machevec
.add(rs
.getString("id"));
3420 machevec
.add(rs
.getString("BELEGT"));
3421 machevec
.add(Boolean
.valueOf(false));
3423 return (Vector
<Object
>)machevec
.clone();
3426 private Vector
<Object
> macheKGGVector(ResultSet rs
,String name
,String nummer
,String skollege
,int ikollege
,int ii
,int defdauer
) throws SQLException
{
3428 machevec
.trimToSize();
3429 //Vector vec = new Vector();
3434 uhrzeit
= rs
.getString("TS"+(ii
));
3436 sorigdatum
= rs
.getString(305);
3437 sdatum
= DatFunk
.sDatInDeutsch(sorigdatum
);
3438 skollege
= (String
) ParameterLaden
.getKollegenUeberReihe(ikollege
);
3439 //{"x?","G!","Datum","Beginn","Ende","Min.","Namen","Rez.Nr.","Behandler","Druckzeit","Sort","Spalte","richtigesDatum","block","id-db"};
3440 machevec
.add(Boolean
.valueOf(false));
3442 machevec
.add(DatFunk
.WochenTag(sdatum
).substring(0,2)+"-"+sdatum
);
3443 machevec
.add(uhrzeit
.substring(0,5));
3444 machevec
.add(rs
.getString("TE"+(ii
)).trim().substring(0,5));
3445 machevec
.add(rs
.getString("TD"+(ii
)).trim());
3446 machevec
.add(rs
.getString("TS"+(ii
)).trim().substring(0,5));
3447 machevec
.add((defdauer
== -1 ? rs
.getString("TD"+(ii
)).trim() : Integer
.toString(defdauer
) ) );
3449 machevec
.add(nummer
);
3450 machevec
.add(skollege
);
3451 machevec
.add(rs
.getString("TS"+(ii
)).trim().substring(0,2)+":00");
3452 machevec
.add(skollege
); //früher sorter
3453 machevec
.add(rs
.getString("BEHANDLER"));
3454 machevec
.add(sdatum
);
3455 machevec
.add(sorigdatum
);
3457 machevec
.add(rs
.getString("id"));
3458 machevec
.add(rs
.getString("BELEGT"));
3459 machevec
.add(Boolean
.valueOf(false));
3461 return (Vector
<Object
>)machevec
.clone();
3464 private Vector
<Object
> macheGruppenVector(ResultSet rs
,String name
,String nummer
,String skollege
,int ikollege
,int ii
,int defdauer
,Vector vecgruppe
,boolean suchleer
) throws SQLException
{
3467 machevec
.trimToSize();
3468 //Vector vec = new Vector();
3473 uhrzeit
= rs
.getString("TS"+(ii
));
3475 sorigdatum
= rs
.getString(305);
3476 sdatum
= DatFunk
.sDatInDeutsch(sorigdatum
);
3477 skollege
= (String
) ParameterLaden
.getKollegenUeberReihe(ikollege
);
3478 //{"x?","G!","Datum","Beginn","Ende","Min.","Namen","Rez.Nr.","Behandler","Druckzeit","Sort","Spalte","richtigesDatum","block","id-db"};
3479 machevec
.add(Boolean
.valueOf(false));
3481 machevec
.add(DatFunk
.WochenTag(sdatum
).substring(0,2)+"-"+sdatum
);
3482 machevec
.add(uhrzeit
.substring(0,5));
3483 machevec
.add(rs
.getString("TE"+(ii
)).trim().substring(0,5));
3484 machevec
.add(rs
.getString("TD"+(ii
)).trim());
3485 machevec
.add(rs
.getString("TS"+(ii
)).trim().substring(0,5));
3486 machevec
.add(Integer
.toString(defdauer
));
3487 boolean xgruppe
= false;
3488 //if(name.trim().equals("")){
3490 if(((String
)vecgruppe
.get(3)).toUpperCase().contains("@BEHANDLER")){
3491 /******** hier noch das handling f�r Teile des Namens anzeigen *******/
3492 if(name
.length() >= 5){
3493 snam
= name
.substring(0,5)+"\\\\"+((String
)vecgruppe
.get(3)).split("@")[0]+"-"+vecgruppe
.get(4)+"Min.";
3495 snam
= ((String
)vecgruppe
.get(3)).split("@")[0]+"-"+vecgruppe
.get(4)+"Min.";
3499 if(name
.length() >= 5){
3500 snam
= name
.substring(0,5)+"\\\\"+vecgruppe
.get(3)+"-"+vecgruppe
.get(4)+"Min.";
3502 snam
= vecgruppe
.get(3)+"-"+vecgruppe
.get(4)+"Min.";
3510 machevec
.add(nummer
);
3511 machevec
.add(skollege
);
3512 String drzeit
= (String
)vecgruppe
.get(2);
3513 machevec
.add((drzeit
.trim().equals("00:00") ?
"--:--" : vecgruppe
.get(2)));
3514 machevec
.add((xgruppe ? skollege
: "")); //fr�her sorter
3515 machevec
.add(rs
.getString("BEHANDLER"));
3516 machevec
.add(sdatum
);
3517 machevec
.add(sorigdatum
);
3519 machevec
.add(rs
.getString("id"));
3520 machevec
.add(rs
.getString("BELEGT"));
3521 machevec
.add(Boolean
.valueOf(true));
3523 return (Vector
<Object
>)machevec
.clone();
3528 /**********************************************************************/
3529 /**********************************************************************/
3530 /**********************************************************************/
3531 private synchronized int XSperrenVerarbeiten(int akt
,Vector vecx
,String zeit
){
3532 Statement stmtx
= null;
3533 ResultSet rsx
= null;
3537 Reha.thisClass.conn.setAutoCommit(true);
3538 } catch (SQLException e1) {
3539 // TODO Auto-generated catch block
3540 e1.printStackTrace();
3547 sperre
= (String
)((Vector
)vecx
).get(13)+
3548 (String
)((Vector
)vecx
).get(14) ;
3550 //if(! sperrDatum.contains(sperre+SystemConfig.dieseMaschine)){
3554 stmtx
= (Statement
) Reha
.thisClass
.conn
.createStatement(ResultSet
.TYPE_SCROLL_SENSITIVE
,
3555 ResultSet
.CONCUR_UPDATABLE
);
3557 } catch (SQLException e
) {
3558 // TODO Auto-generated catch block
3559 e
.printStackTrace();
3562 rsx
= stmtx
.executeQuery("select sperre,maschine from flexlock where sperre='"+sperre
+"'");
3564 //this.sperrDatum.add(sperre+SystemConfig.dieseMaschine+zeit);
3565 String st
= "insert into flexlock set sperre='"+sperre
+"', maschine='"+SystemConfig
.dieseMaschine
+"', "+
3568 //new ExUndHop().setzeStatement(String.valueOf(st));
3572 } catch (InterruptedException e) {
3573 // TODO Auto-generated catch block
3574 e.printStackTrace();
3581 if(! sperrDatum.contains(sperre+SystemConfig.dieseMaschine+SuchenSeite.getZeit())){
3589 } catch (SQLException e
) {
3590 // TODO Auto-generated catch block
3591 e
.printStackTrace();
3601 } catch (SQLException sqlEx
) { // ignore }
3605 if (stmtx
!= null) {
3608 } catch (SQLException sqlEx
) { // ignore }
3612 }catch(Exception ex
){
3613 ex
.printStackTrace();
3619 private synchronized void malen(ImageIcon bild
,int wo
){
3620 dtblm
.setValueAt(bild
, wo
, 1);
3626 /************************Ende des WorkerThreads************************/
3627 /**********************************************************************/
3628 /**********************************************************************/
3629 /**********************************************************************/
3631 /**********************************************************************/
3634 class MyDefaultTableModel
extends DefaultTableModel
{
3638 private static final long serialVersionUID
= 1L;
3640 public Class
getColumnClass(int columnIndex
) {
3641 if(columnIndex
==0){return Boolean
.class;}
3642 /* if(columnIndex==1){return JLabel.class;}*/
3643 else{return String
.class;}
3644 //return (columnIndex == 0) ? Boolean.class : String.class;
3647 public boolean isCellEditable(int row
, int col
) {
3648 //Note that the data/cell address is constant,
3649 //no matter where the cell appears onscreen.
3655 if((Boolean
) getValueAt(row
,0)){
3660 }else if(col
== 11){
3668 /*******************************************************************/
3669 /*******************************************************************/
3670 /**************************************************/
3672 /**************************************************/
3673 /**************************************************/
3674 class WorkerTabelle
extends SwingWorker
<Void
,Void
>{
3675 boolean fertig
= false;
3677 public ArrayList
<String
> sperrDatum
= new ArrayList
<String
>();
3678 private ImageIcon img
,img2
;
3679 private String zeit
;
3680 private int merken
= -1;
3683 img
= SystemConfig
.hmSysIcons
.get("zuzahlnichtok");
3684 img2
= SystemConfig
.hmSysIcons
.get("zuzahlfrei");
3685 img
.setDescription("gesperrt");
3686 img2
.setDescription("offen");
3691 public void setEnde(){
3695 protected Void
doInBackground() throws Exception
{
3704 anzahl
= sucheDaten
.size();
3705 if( (SuchenSeite
.mussUnterbrechen
) && (anzahl
==0) && (getTreffer()==anzahl
) ){
3708 if( (SuchenSeite
.mussUnterbrechen
) && (anzahl
==(aktuell
+1)) && (aktuell
==(getTreffer()-1)) ){
3714 if(aktuell
!= (anzahl
-1)){
3717 SuchenSeite
.verarbeitetLbl
.setText(Integer
.toString(aktuell
+1));
3718 nvec
= (Vector
) ((Vector
)sucheDaten
.get(aktuell
));//.clone();
3719 sperre
= (String
)((Vector
)nvec
).get(13)+
3720 (String
)((Vector
)nvec
).get(14) ;
3722 if(sperrDatum
.contains(sperre
+SystemConfig
.dieseMaschine
+zeit
)){
3726 int ret
= XSperrenVerarbeiten(aktuell
,nvec
,zeit
);
3728 sperrDatum
.add(sperre
+SystemConfig
.dieseMaschine
+zeit
);
3730 nvec
.set(1, (ret
==0 ? img2
: img
));
3735 jxSucheTable
.validate();
3738 if( (SuchenSeite
.mussUnterbrechen
) && (anzahl
==(aktuell
+1)) && (aktuell
==(getTreffer()-1)) ){
3744 if( (SuchenSeite
.mussUnterbrechen
)
3745 && (anzahl
==(aktuell
+1))
3746 && (aktuell
==(getTreffer()-1))
3747 && (getTreffer()==anzahl
) ){
3753 }catch(Exception ex
){
3754 ex
.printStackTrace();
3757 setWorkerFertig(true);
3762 /************************/
3763 private int XSperrenVerarbeiten(int akt
,Vector
<String
> vecx
,String zeit
){
3764 Statement stmtx
= null;
3765 ResultSet rsx
= null;
3769 sperre
= (String
)((Vector
<String
>)vecx
).get(13)+
3770 (String
)((Vector
<String
>)vecx
).get(14) ;
3773 String cmd
= "sperre='"+sperre
+"'";
3774 if(SqlInfo
.zaehleSaetze("flexlock", cmd
)==0){
3775 cmd
= "insert into flexlock set sperre='"+sperre
+"', maschine='"+SystemConfig
.dieseMaschine
+"', "+
3777 //SqlInfo.sqlAusfuehren(cmd);
3778 new ExUndHop().setzeStatement(cmd
);
3786 //if(! sperrDatum.contains(sperre+SystemConfig.dieseMaschine)){
3790 stmtx
= (Statement
) Reha
.thisClass
.conn
.createStatement(ResultSet
.TYPE_SCROLL_SENSITIVE
,
3791 ResultSet
.CONCUR_UPDATABLE
);
3793 } catch (SQLException e
) {
3794 // TODO Auto-generated catch block
3795 e
.printStackTrace();
3798 rsx
= stmtx
.executeQuery("select sperre,maschine from flexlock where sperre='"+sperre
+"' LIMIT 1");
3800 //this.sperrDatum.add(sperre+SystemConfig.dieseMaschine+zeit);
3801 String st
= "insert into flexlock set sperre='"+sperre
+"', maschine='"+SystemConfig
.dieseMaschine
+"', "+
3804 //new ExUndHop().setzeStatement(String.valueOf(st));
3807 } catch (InterruptedException e
) {
3808 // TODO Auto-generated catch block
3809 e
.printStackTrace();
3815 if(! sperrDatum.contains(sperre+SystemConfig.dieseMaschine+SuchenSeite.getZeit())){
3823 } catch (SQLException e
) {
3824 // TODO Auto-generated catch block
3825 e
.printStackTrace();
3836 } catch (SQLException sqlEx
) { // ignore }
3840 if (stmtx
!= null) {
3844 } catch (SQLException sqlEx
) { // ignore }
3854 /**************************************************/
3855 class WorkerTabelle2
extends SwingWorker
<Void
,Void
>{
3856 boolean fertig
= false;
3858 public ArrayList
<String
> sperrDatum
= new ArrayList
<String
>();
3859 private ImageIcon img
,img2
;
3860 private String zeit
;
3861 private int merken
= -1;
3864 img
= SystemConfig
.hmSysIcons
.get("zuzahlnichtok");
3865 img2
= SystemConfig
.hmSysIcons
.get("zuzahlfrei");
3866 img
.setDescription("gesperrt");
3867 img2
.setDescription("offen");
3872 public void setEnde(){
3876 protected Void
doInBackground() throws Exception
{
3883 anzahl
= dtblm
.getRowCount();
3884 if( (SuchenSeite
.mussUnterbrechen
) && (anzahl
==0) && (getTreffer()==anzahl
) ){
3887 if( (SuchenSeite
.mussUnterbrechen
) && (anzahl
==(aktuell
+1)) && (aktuell
==(getTreffer()-1)) ){
3893 if(aktuell
!= (anzahl
-1)){
3896 SuchenSeite
.verarbeitetLbl
.setText(Integer
.toString(aktuell
+1));
3897 sperre
= (String
)dtblm
.getValueAt(aktuell
,13)+
3898 dtblm
.getValueAt(aktuell
,14) ;
3899 if(sperrDatum
.contains(sperre
+SystemConfig
.dieseMaschine
+zeit
)){
3900 //dtblm.setValueAt(img2,aktuell,1) ;
3903 int ret
= XSperrenVerarbeiten(aktuell
,sperre
,zeit
);
3905 sperrDatum
.add(sperre
+SystemConfig
.dieseMaschine
+zeit
);
3907 dtblm
.setValueAt(img
,aktuell
,1);
3912 if( (SuchenSeite
.mussUnterbrechen
) && (anzahl
==(aktuell
+1)) && (aktuell
==(getTreffer()-1)) ){
3918 if( (SuchenSeite
.mussUnterbrechen
)
3919 && (anzahl
==(aktuell
+1))
3920 && (aktuell
==(getTreffer()-1))
3921 && (getTreffer()==anzahl
) ){
3927 setWorkerFertig(true);
3934 /************************/
3935 private int XSperrenVerarbeiten(int akt
,String xsperre
,String zeit
){
3936 Statement stmtx
= null;
3937 ResultSet rsx
= null;
3940 String sperre
= xsperre
;
3942 String cmd
= "sperre='"+sperre
+"'";
3943 if(SqlInfo
.zaehleSaetze("flexlock", cmd
)==0){
3944 cmd
= "insert into flexlock set sperre='"+sperre
+"', maschine='"+SystemConfig
.dieseMaschine
+"', "+
3946 SqlInfo
.sqlAusfuehren(cmd
);
3947 //new ExUndHop().setzeStatement(cmd);
3960 /**************************************************/
3966 class TermObjekt
implements Comparable
<TermObjekt
>{
3968 public String beginn
;
3969 public String termtext
;
3970 public String sorter
;
3971 public String dauer
;
3973 public TermObjekt(String xtag
,String xbeginn
,String xtermtext
,String xsorter
,String xdauer
){
3975 this.beginn
= xbeginn
;
3976 this.termtext
=xtermtext
;
3977 this.sorter
= xsorter
;
3978 this.dauer
= xdauer
;
3983 public int compareTo(TermObjekt o
) {
3984 //First order by name
3985 int result
= sorter
.compareTo(o
.sorter
);
3987 //if names are equal order by age, youngest first
3988 result
= termtext
.compareTo(o
.termtext
);
3996 class Rdaten
extends Observable
{
3997 public Vector
<String
> rvec
;
4000 rvec
= new Vector
<String
>();
4004 class EntsperreSatz
extends Thread
implements Runnable
{
4005 private SuchenSeite eltern
;
4006 public void setzeEltern(SuchenSeite xeltern
){
4007 this.eltern
= xeltern
;
4010 Statement stmt
= null;
4013 stmt
= (Statement
) Reha
.thisClass
.conn
.createStatement(ResultSet
.TYPE_SCROLL_SENSITIVE
,
4014 ResultSet
.CONCUR_UPDATABLE
);
4015 } catch (SQLException e
) {
4016 e
.printStackTrace();
4019 if(this.eltern
== null){
4020 //System.out.println("this.eltern.getZeit() == NULL");
4022 stmt
.execute("delete from flexlock where maschine='"+SystemConfig
.dieseMaschine
+"' AND zeit='"+this.eltern
.getZeit()+"'");
4023 } catch (SQLException e
) {
4024 e
.printStackTrace();
4031 } catch (SQLException sqlEx
) { // ignore }