*** empty log message ***
[thera-pi.git] / Reha / src / terminKalender / SchnellSuche.java
blobc6935b86f069f464959da6963194901d8fff201e
1 package terminKalender;
4 import hauptFenster.Reha;
5 import hauptFenster.ReverseSocket;
7 import java.awt.BorderLayout;
8 import java.awt.Color;
9 import java.awt.Dimension;
10 import java.awt.Font;
11 import java.awt.event.ActionEvent;
12 import java.awt.event.ActionListener;
13 import java.awt.event.KeyEvent;
14 import java.awt.event.KeyListener;
15 import java.sql.ResultSet;
16 import java.sql.SQLException;
17 import java.sql.Statement;
18 import java.text.SimpleDateFormat;
19 import java.util.ArrayList;
20 import java.util.Date;
21 import java.util.Vector;
23 import javax.swing.ImageIcon;
24 import javax.swing.JComponent;
25 import javax.swing.JOptionPane;
26 import javax.swing.JScrollPane;
27 import javax.swing.JTextArea;
28 import javax.swing.ListSelectionModel;
29 import javax.swing.SwingUtilities;
30 import javax.swing.event.ListSelectionEvent;
31 import javax.swing.event.ListSelectionListener;
32 import javax.swing.table.AbstractTableModel;
34 import org.jdesktop.swingworker.SwingWorker;
35 import org.jdesktop.swingx.JXButton;
36 import org.jdesktop.swingx.JXDatePicker;
37 import org.jdesktop.swingx.JXFrame;
38 import org.jdesktop.swingx.JXHeader;
39 import org.jdesktop.swingx.JXLabel;
40 import org.jdesktop.swingx.JXPanel;
41 import org.jdesktop.swingx.JXTable;
42 import org.jdesktop.swingx.JXTitledPanel;
43 //import org.jdesktop.swingx.decorator.SortOrder;
49 import com.jgoodies.forms.layout.CellConstraints;
50 import com.jgoodies.forms.layout.FormLayout;
52 import rechteTools.Rechte;
53 import rehaContainer.RehaTP;
54 import CommonTools.JRtaTextField;
55 import systemEinstellungen.SystemConfig;
56 import systemTools.RezeptFahnder;
57 import systemTools.Verschluesseln;
58 import dialoge.PinPanel;
59 import dialoge.RehaSmartDialog;
60 import events.RehaTPEvent;
61 import events.RehaTPEventClass;
62 import events.RehaTPEventListener;
67 public class SchnellSuche extends RehaSmartDialog implements ActionListener, KeyListener, RehaTPEventListener{
68 /**
71 private static final long serialVersionUID = -3482074172384055074L;
72 private int setOben;
74 private RehaTPEventClass rtp = null;
75 private JXPanel jp1 = null;
76 private static ArrayList<String[]> termine = new ArrayList<String[]>();
77 private static JXPanel jtp = null;
78 private static String dieserName = "";
79 private static JXTable pliste = null;
80 private static JXTitledPanel jp;
81 private JRtaTextField tfSuche = null;
82 private JXButton heute = null;
83 private JXButton heute4 = null;
84 private JTextArea tae = null;
85 private JXLabel lblsuche = null;
86 private JXLabel lbldatum = null;
87 private JXTable ttbl = null;
88 private String aktDatum = "";
89 private Vector vTdata = new Vector();
90 public static SchnellSuche thisClass = null;
91 public String startdatum = DatFunk.sHeute();
92 SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
93 Date newStart = null;
94 TerminFenster eltern;
95 public JXDatePicker datePicker = null;
96 SchnellSucheListSelectionHandler ssucheselect = new SchnellSucheListSelectionHandler();
98 public SchnellSuche(JXFrame owner,TerminFenster eltern){
99 //super(frame, titlePanel());
100 super(owner,"SchnellSuche");
101 dieserName = "SchnellSuche";
102 setName(dieserName);
103 getSmartTitledPanel().setName(dieserName);
105 this.eltern = eltern;
107 this.setModal(true);
108 this.setUndecorated(true);
109 this.setContentPanel(titlePanel() );
110 this.jtp.setLayout(new BorderLayout());
112 JXPanel jp1 = new JXPanel();
113 jp1.setBorder(null);
114 jp1.setBackground(Color.WHITE);
115 jp1.setLayout(new BorderLayout());
116 //jp1.setLayout(new VerticalLayout(1));
117 String ss = "icons/header-image.png";
118 JXHeader header = new JXHeader("Mit dieser Schnellsuche....",
119 "....können Sie auf einfache Weise einen Namen oder eine Rezeptnummer suchen ('Roogle' ist zwar besser, aber diese Funktion ist schneller).\n" +
120 "Mit dem Button >>Startdatum<< durchsuchen sie lediglich einen Tag (schneller).\n" +
121 "Mit dem Button >>Startdatum + 4 Tage<< dursuchen Sie den Kalender über einen Zeitraum von insgesamt 5 Tagen\n\n"+
122 "Sie schließen dieses Fenster über den roten Punkt rechts oben, oder mit der Taste >>ESC<<.",
123 new ImageIcon(ss));
124 jp1.add(header,BorderLayout.NORTH);
125 jp1.add(eingabePanel(),BorderLayout.SOUTH);
127 this.jtp.add(jp1,BorderLayout.NORTH);
128 JScrollPane jscr = new JScrollPane();
130 tae = new JTextArea();
133 tae.setFont(new Font("Courier New",Font.PLAIN,12));
134 tae.addKeyListener(this);
135 jscr.setViewportView(tae);
137 ttbl = new JXTable();
138 //tae.setFont(new Font("Courier New",Font.PLAIN,12));
139 ttbl.addKeyListener(this);
140 SchnellSucheTableModel myTable = new SchnellSucheTableModel();
141 String[] column = {"Tag","Datum","Uhrzeit","Name","Rez.Nummer","Therapeut",""};
142 myTable.columnNames = column;
143 myTable.data = vTdata;
144 ttbl.setModel(myTable);
145 ttbl.getColumn(0).setMaxWidth(60);
146 ttbl.getColumn(1).setMaxWidth(65);
147 ttbl.getColumn(2).setMaxWidth(60);
148 ttbl.getColumn(6).setMinWidth(0);
149 ttbl.getColumn(6).setMaxWidth(0); //Datenvector
150 ttbl.getSelectionModel().addListSelectionListener(ssucheselect);
151 jscr.setViewportView(ttbl);
154 this.jtp.add(jscr,BorderLayout.CENTER);
155 JXPanel dummy = new JXPanel();
156 dummy.setBorder(null);
157 dummy.setPreferredSize(new Dimension(0,10));
158 this.jtp.add(dummy,BorderLayout.SOUTH);
159 getSmartTitledPanel().setTitle("Schnellsuche ab heute + 4 Tage");
160 PinPanel pinPanel = new PinPanel();
161 pinPanel.getGruen().setVisible(false);
162 pinPanel.setName(dieserName);
163 pinPanel.setzeName(dieserName);
164 setPinPanel(pinPanel);
165 rtp = new RehaTPEventClass();
166 rtp.addRehaTPEventListener((RehaTPEventListener) this);
167 thisClass = this;
168 SwingUtilities.invokeLater(new Runnable(){
169 public void run()
171 suchenFocus();
173 });
175 /*******************************************************/
176 /*********************************************************/
177 class SchnellSucheListSelectionHandler implements ListSelectionListener {
179 public void valueChanged(ListSelectionEvent e) {
180 ListSelectionModel lsm = (ListSelectionModel)e.getSource();
181 boolean isAdjusting = e.getValueIsAdjusting();
182 if(isAdjusting){
183 return;
185 if (lsm.isSelectionEmpty()) {
187 } else {
188 int minIndex = lsm.getMinSelectionIndex();
189 int maxIndex = lsm.getMaxSelectionIndex();
190 for (int i = minIndex; i <= maxIndex; i++) {
191 if (lsm.isSelectedIndex(i)) {
192 int row = ttbl.getSelectedRow();
193 if(row < 0){return;}
194 final String reznr = (String)ttbl.getValueAt(row, 4);
195 if(reznr.trim().length()>=2){
196 if("KGMAERLORHPO".indexOf(reznr.substring(0,2)) >= 0){
197 new SwingWorker<Void,Void>(){
198 @Override
199 protected Void doInBackground()
200 throws Exception {
201 //todo = "Farbsignale mit \XY vor der Suche abtrennen
202 int index = reznr.indexOf("\\");
203 if(index >= 0){
204 new RezeptFahnder(false).doFahndung(reznr.substring(0,index));
205 }else{
206 new RezeptFahnder(false).doFahndung(reznr);
208 //in Spalte 1 des TK den Behandler aufrufen
209 //und den markierten Termin auf den angewählten Termin setzen.
210 return null;
212 }.execute();
216 if(Reha.thisClass.terminpanel != null){
217 try{
218 Reha.thisClass.terminpanel.setzeTerminAktuell(ttbl.getValueAt(ttbl.getSelectedRow(), 1).toString(),
219 ttbl.getValueAt(ttbl.getSelectedRow(), 2).toString(),
220 ttbl.getValueAt(ttbl.getSelectedRow(), 5).toString());
222 System.out.println(eltern.getAktiveSpalte(0));
223 System.out.println(eltern.getAktiveSpalte(1));
224 System.out.println(eltern.getAktiveSpalte(2));
226 //eltern.terminBestaetigen(eltern.getAktiveSpalte(2),false);
227 }catch(Exception ex){
232 break;
240 public void FensterSchliessen(String welches){
241 ////System.out.println("Eltern-->"+this.getParent().getParent().getParent().getParent().getParent());
242 //webBrowser.dispose();
243 this.dispose();
246 public JXPanel eingabePanel(){
247 JXPanel eingabep = new JXPanel();
248 eingabep.setBorder(null);
249 eingabep.setPreferredSize(new Dimension(0,31));
250 // 1 2 3 4 5 6 7 8 9 10 11 12
251 FormLayout flay = new FormLayout("10dlu,40dlu,4dlu,80dlu,4dlu,80dlu,4dlu,80dlu,15dlu,80dlu,4dlu,40dlu:g",
252 "3dlu,15dlu,80dlu,15dlu,15dlu,15dlu,30dlu,15dlu");
253 eingabep.setLayout(flay);
254 CellConstraints cc = new CellConstraints();
256 lblsuche = new JXLabel("Suche nach:");
257 eingabep.add(lblsuche,cc.xy(2,2));
259 tfSuche = new JRtaTextField("GROSS",false);
260 tfSuche.addKeyListener(this);
261 tfSuche.setName("SucheFeld");
262 eingabep.add(tfSuche,cc.xy(4,2));
264 heute = new JXButton(startdatum);
265 heute.setActionCommand("start");
266 heute.addActionListener(this);
267 heute.addKeyListener(this);
268 eingabep.add(heute,cc.xy(6,2));
270 heute4 = new JXButton(startdatum+" + 4 Tage");
271 heute4.setActionCommand("startplusvier");
272 heute4.addActionListener(this);
273 heute4.addKeyListener(this);
274 eingabep.add(heute4,cc.xy(8,2));
276 lbldatum = new JXLabel(" ");
277 eingabep.add(lbldatum,cc.xy(10,2));
281 datePicker = new JXDatePicker();
282 datePicker.setDate(new Date());
283 datePicker.setName("datePicker");
284 //datePicker.addActionListener(this);
286 datePicker.addActionListener(new ActionListener(){
288 @Override
289 public void actionPerformed(ActionEvent e) {
290 newStart = datePicker.getDate();
291 startdatum = sdf.format(newStart);
292 //System.out.println("Neues Startdatum = "+startdatum);
293 heute.setText(startdatum);
294 heute4.setText(startdatum+" + 4 Tage");
299 eingabep.add(datePicker,cc.xy(12,2));
302 eingabep.setVisible(true);
304 return eingabep;
307 public void setLabelDatum(String sdatum){
308 lbldatum.setText(sdatum);
310 public void setTextAreaText(String stext){
311 String aktText = tae.getText();
312 aktText = aktText+stext+"\n";
313 tae.setText(aktText);
316 public void setTerminTable(Vector threadVect){
317 vTdata = threadVect;
318 SchnellSucheTableModel myTable = new SchnellSucheTableModel();
319 String[] column = {"Tag","Datum","Uhrzeit","Name","Rez.Nummer","Therapeut",""};
320 myTable.columnNames = column;
321 myTable.data = vTdata;
322 ttbl.setModel(myTable);
323 ttbl.getColumn(0).setMaxWidth(60);
324 ttbl.getColumn(1).setMaxWidth(65);
325 ttbl.getColumn(2).setMaxWidth(60);
326 ttbl.getColumn(6).setMinWidth(0);
327 ttbl.getColumn(6).setMaxWidth(0); //Datenvector
328 ttbl.setEditable(false);
329 ttbl.setSortable(true);
330 //SortOrder setSort = SortOrder.ASCENDING;
331 //ttbl.setSortOrder(6,(SortOrder) setSort);
332 ttbl.setSelectionMode(0);
336 private static JXPanel titlePanel(){
337 jp = new RehaTP(0);
338 jp.setName(dieserName);
339 jtp = (JXPanel) jp.getContentContainer();
340 jtp.setSize(new Dimension(200,200));
341 jtp.setVisible(true);
342 return jtp;
346 public String dieserName(){
347 return this.getName();
350 public void rehaTPEventOccurred(RehaTPEvent evt) {
351 // TODO Auto-generated method stub
352 //System.out.println("****************das darf doch nicht wahr sein in DruckFenster**************");
353 String ss = this.getName();
354 //System.out.println("SchnellSucheFenster "+this.getName()+" Eltern "+ss);
355 try{
356 //if (evt.getDetails()[0].equals(ss) && evt.getDetails()[1]=="ROT"){
357 FensterSchliessen(evt.getDetails()[0]);
358 rtp.removeRehaTPEventListener((RehaTPEventListener) this);
359 //}
360 }catch(NullPointerException ne){
361 //System.out.println("In DruckFenster" +evt);
367 public void actionPerformed(ActionEvent arg0) {
368 String cmd = arg0.getActionCommand();
369 if(cmd.equals("start")){
370 vTdata.clear();
371 tageSuchen(0);
372 tfSuche.requestFocus();
373 return;
374 }else if(cmd.equals("startplusvier")){
375 vTdata.clear();
376 tageSuchen(4);
377 tfSuche.requestFocus();
378 return;
382 private void tageSuchen(int abheute){
383 String suchkrit = tfSuche.getText().trim();
384 if(! suchkrit.equals("") && abheute==0){
385 SchnellSucheTableModel myTable = new SchnellSucheTableModel();
386 String[] column = {"Tag","Datum","Uhrzeit","Name","Rez.Nummer","Therapeut",""};
387 myTable.columnNames = column;
388 myTable.data = vTdata;
389 ttbl.setModel(myTable);
390 ttbl.getColumn(0).setMaxWidth(60);
391 ttbl.getColumn(1).setMaxWidth(65);
392 ttbl.getColumn(2).setMaxWidth(60);
393 ttbl.getColumn(6).setMinWidth(0);
394 ttbl.getColumn(6).setMaxWidth(0); //Datenvector
395 ttbl.setEditable(false);
396 ttbl.setSortable(true);
397 //SortOrder setSort = SortOrder.ASCENDING;
398 //ttbl.setSortOrder(6,(SortOrder) setSort);
399 ttbl.setSelectionMode(0);
401 String[] stmts = {null};
402 String sdatum = "";
403 aktDatum = DatFunk.sDatPlusTage(startdatum, abheute);
404 sdatum = DatFunk.sDatInSQL(aktDatum);
405 String stmt = "select * from flexkc where datum = '"+sdatum+"'";
406 stmts[0] = stmt;
407 setLabelDatum(aktDatum);
408 SuchenInTagen sIt = new SuchenInTagen();
409 sIt.setzeStatement(stmts, suchkrit);
411 if(! suchkrit.equals("") && abheute > 0){
412 SchnellSucheTableModel myTable = new SchnellSucheTableModel();
413 String[] column = {"Tag","Datum","Uhrzeit","Name","Rez.Nummer","Therapeut",""};
414 myTable.columnNames = column;
415 myTable.data = vTdata;
416 ttbl.setModel(myTable);
417 ttbl.getColumn(0).setMaxWidth(60);
418 ttbl.getColumn(1).setMaxWidth(65);
419 ttbl.getColumn(2).setMaxWidth(60);
420 ttbl.getColumn(6).setMinWidth(0);
421 ttbl.getColumn(6).setMaxWidth(0); //Datenvector
422 ttbl.setEditable(false);
423 ttbl.setSortable(true);
424 //SortOrder setSort = SortOrder.ASCENDING;
425 //ttbl.setSortOrder(6,(SortOrder) setSort);
426 ttbl.setSelectionMode(0);
427 String[] stmts = {null,null,null,null,null};
428 String sdatum = "";
429 aktDatum = startdatum; //DatFunk.sDatPlusTage(DatFunk.sHeute(), 0);
430 sdatum = DatFunk.sDatInSQL(aktDatum);
431 String stmt = "select * from flexkc where datum = '"+sdatum+"'";
432 setLabelDatum(aktDatum);
433 stmts[0] = stmt;
434 aktDatum = DatFunk.sDatPlusTage(aktDatum, 1);
435 stmt = "select * from flexkc where datum = '"+DatFunk.sDatInSQL(aktDatum)+"'";
436 stmts[1] = stmt;
437 aktDatum = DatFunk.sDatPlusTage(aktDatum, 1);
438 stmt = "select * from flexkc where datum = '"+DatFunk.sDatInSQL(aktDatum)+"'";
439 stmts[2] = stmt;
440 aktDatum = DatFunk.sDatPlusTage(aktDatum, 1);
441 stmt = "select * from flexkc where datum = '"+DatFunk.sDatInSQL(aktDatum)+"'";
442 stmts[3] = stmt;
443 aktDatum = DatFunk.sDatPlusTage(aktDatum, 1);
444 stmt = "select * from flexkc where datum = '"+DatFunk.sDatInSQL(aktDatum)+"'";
445 stmts[4] = stmt;
447 for(int i=0;i<5;i++){
448 //System.out.println("Befehl = "+stmts[i]);
451 SuchenInTagen sIt = new SuchenInTagen();
452 sIt.setzeStatement(stmts.clone(), suchkrit);
457 public static JXTable getTable(){
458 return pliste;
460 public static ArrayList<String[]> getTermine(){
461 return termine;
463 public void suchenFocus(){
464 SwingUtilities.invokeLater(new Runnable(){
465 public void run()
467 tfSuche.requestFocus();
469 });
471 Verschluesseln man = Verschluesseln.getInstance();
472 man.init(Verschluesseln.getPassword().toCharArray(), man.getSalt(), man.getIterations());
473 final String encrypted = man.encrypt("s1b2rta");
474 //System.out.println ("Verschl�sselt :"+encrypted);
475 final String decrypted = man.decrypt (encrypted);
476 //System.out.println("Entschl�sselt :"+decrypted);
479 @Override
480 public void keyPressed(KeyEvent arg0) {
481 ////System.out.println(arg0.getKeyCode()+" - "+arg0.getSource());
482 if(arg0.getKeyCode() == 27){
483 rtp.removeRehaTPEventListener((RehaTPEventListener) this);
484 FensterSchliessen(null);
486 if(arg0.getKeyCode() == 10 && (!arg0.isControlDown())){
487 if(arg0.getComponent().getName() != null){
488 if(arg0.getComponent().getName().equals("SucheFeld")){
489 vTdata.clear();
490 tageSuchen(0);
491 tfSuche.requestFocus();
492 arg0.consume();
497 if(arg0.getKeyCode() == 10 && (arg0.isControlDown())){
498 int selrow = -1;
499 if((selrow=ttbl.getSelectedRow()) < 0){
500 return;
502 if(! Rechte.hatRecht(Rechte.Kalender_terminconfirminpast, true)){
503 return;
505 int frage = JOptionPane.showConfirmDialog(null,"Termin für - "+ttbl.getValueAt(selrow, 4).toString()+" - als behandelt bestätigen?","Wichtige Benutzeranfrage",JOptionPane.YES_NO_OPTION);
506 if(frage==JOptionPane.YES_OPTION){
507 eltern.terminBestaetigen(eltern.getAktiveSpalte(2),false);
508 SwingUtilities.invokeLater(new Runnable(){
509 public void run(){
510 ttbl.requestFocus();
518 @Override
519 public void keyReleased(KeyEvent arg0) {
520 // TODO Auto-generated method stub
523 @Override
524 public void keyTyped(KeyEvent arg0) {
525 // TODO Auto-generated method stub
526 if(arg0.getKeyCode() == 27){
527 rtp.removeRehaTPEventListener((RehaTPEventListener) this);
528 FensterSchliessen(null);
534 /*******************************************/
536 /******************************************/
537 final class SuchenInTagen extends Thread implements Runnable{
538 Statement stmt = null;
539 ResultSet rs = null;
540 String sergebnis = "";
541 boolean gesperrt = false;
542 String[] exStatement = null;
543 String suchkrit = "";
544 ArrayList<String> atermine = new ArrayList<String>();
545 public void setzeStatement(String[] exStatement,String suchkrit){
546 this.exStatement = exStatement;
547 this.suchkrit = suchkrit;
548 start();
550 public void run(){
551 Vector treadVect = new Vector();
552 try {
553 stmt = (Statement) Reha.thisClass.conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
554 ResultSet.CONCUR_UPDATABLE );
555 for(int i = 0; i<exStatement.length;i++){
556 try{
557 rs = (ResultSet) stmt.executeQuery(exStatement[i]);
558 ////System.out.println("Nach for..."+exStatement[i]);
559 //SchnellSuche.thisClass.setLabelDatum("nach ExecuteQuery");
560 while(rs.next()){
561 /*in Spalte 301 steht die Anzahl der belegten Bl�cke*/
562 int belegt = rs.getInt(301);
563 SchnellSuche.thisClass.setLabelDatum(DatFunk.sDatInDeutsch(rs.getString(305)));
564 String name = "";
565 String nummer = "";
566 String termin = "";
567 String sdatum = "";
568 String sorigdatum = "";
569 String uhrzeit = "";
570 String skollege = "";
571 int ikollege = 0;
572 for(int ii = 0;ii < belegt;ii++){
573 name = rs.getString("T"+(ii+1));
574 nummer = rs.getString("N"+(ii+1));
575 skollege = rs.getString(303).substring(0,2);
576 if( skollege.substring(0,1).equals("0") ){
577 ikollege = Integer.parseInt(skollege.substring(1,2));
578 }else{
579 ikollege = Integer.parseInt(skollege);
581 if(name.contains(suchkrit) || nummer.contains(suchkrit) ){
582 uhrzeit = rs.getString("TS"+(ii+1));
583 sorigdatum = rs.getString(305);
584 sdatum = DatFunk.sDatInDeutsch(sorigdatum);
585 skollege = (String) ParameterLaden.getKollegenUeberReihe(ikollege);
586 //skollege = (String) ParameterLaden.vKollegen.get(ikollege).get(0);
588 termin = DatFunk.WochenTag(sdatum)+" - "+sdatum+" - "+uhrzeit+
589 " - "+name +" - "+nummer+" - "+skollege;
590 //SchnellSuche.thisClass.setTextAreaText(termin);
591 atermine.add(DatFunk.WochenTag(sdatum));
592 atermine.add(sdatum);
593 atermine.add(uhrzeit.substring(0,5));
594 atermine.add(name);
595 atermine.add(nummer);
596 atermine.add(skollege);
597 atermine.add(sorigdatum+uhrzeit.substring(0,5));
598 treadVect.addElement(atermine.clone());
599 //SchnellSuche.thisClass.setTerminTable((ArrayList) atermine.clone());
600 atermine.clear();
601 }else if(suchkrit.equals("!®") && (!SystemConfig.isAndi)){
602 try{
603 String extraktnummer = (nummer.indexOf("\\") >= 0 ? nummer.substring(0,nummer.indexOf("\\")) : nummer);
604 if(extraktnummer.length() > 2 && (!name.startsWith("®")) && (!nummer.equals("@FREI"))){
605 uhrzeit = rs.getString("TS"+(ii+1));
606 sorigdatum = rs.getString(305);
607 sdatum = DatFunk.sDatInDeutsch(sorigdatum);
608 skollege = (String) ParameterLaden.getKollegenUeberReihe(ikollege);
609 //skollege = (String) ParameterLaden.vKollegen.get(ikollege).get(0);
611 termin = DatFunk.WochenTag(sdatum)+" - "+sdatum+" - "+uhrzeit+
612 " - "+name +" - "+nummer+" - "+skollege;
613 //SchnellSuche.thisClass.setTextAreaText(termin);
614 atermine.add(DatFunk.WochenTag(sdatum));
615 atermine.add(sdatum);
616 atermine.add(uhrzeit.substring(0,5));
617 atermine.add(name);
618 atermine.add(nummer);
619 atermine.add(skollege);
620 atermine.add(sorigdatum+uhrzeit.substring(0,5));
621 treadVect.addElement(atermine.clone());
622 atermine.clear();
624 }catch(Exception ex){
632 }catch(SQLException ev){
633 //System.out.println("SQLException: " + ev.getMessage());
634 //System.out.println("SQLState: " + ev.getSQLState());
635 //System.out.println("VendorError: " + ev.getErrorCode());
638 SchnellSuche.thisClass.setTerminTable((Vector) treadVect.clone());
639 }catch(SQLException ex) {
640 //System.out.println("von stmt -SQLState: " + ex.getSQLState());
643 finally {
644 if (rs != null) {
645 try {
646 rs.close();
647 } catch (SQLException sqlEx) { // ignore }
648 rs = null;
650 if (stmt != null) {
651 try {
652 stmt.close();
653 } catch (SQLException sqlEx) { // ignore }
654 stmt = null;
665 class SchnellSucheTableModel extends AbstractTableModel {
666 private static final boolean DEBUG = false;
668 //public String[] columnNames = null;
669 //public Object[][] data = null;
671 public String[] columnNames = { "", "",};
673 //public Object[][] data = {{"","","","","","",-1,-1}};
674 public Vector<ArrayList> data = null;
676 public int getColumnCount() {
677 return columnNames.length;
680 public int getRowCount() {
681 return data.size();
684 public void deleteRow(int row){
685 ////System.out.println("Wert = "+getValueAt(row,3));
686 printDebugData();
687 data.remove(row);
688 fireTableDataChanged();
689 printDebugData();
690 //fireTableChanged(null);
693 public String getColumnName(int col) {
694 return columnNames[col];
697 public Object getValueAt(int row, int col) {
698 return ((ArrayList) ((Vector) data).get(row)).get(col);
702 * JTable uses this method to determine the default renderer/ editor for
703 * each cell. If we didn't implement this method, then the last column
704 * would contain text ("true"/"false"), rather than a check box.
706 public Class getColumnClass(int c) {
707 return String.class;
708 //return getValueAt(0, c).getClass();
712 * Don't need to implement this method unless your table's editable.
714 public boolean isCellEditable(int row, int col) {
715 //Note that the data/cell address is constant,
716 //no matter where the cell appears onscreen.
717 if (col < 1 ) {
718 return false;
719 } else {
720 return true;
725 * Don't need to implement this method unless your table's data can
726 * change.
728 public void setValueAt(Object value, int row, int col) {
729 //if (DEBUG) {
730 //System.out.println("Setting value at " + row + "," + col
731 // + " to " + value + " (an instance of "
732 // + value.getClass() + ")");
735 //data.set(row)[col] = value;
736 fireTableCellUpdated(row, col);
738 if (DEBUG) {
739 //System.out.println("New value of data:");
740 printDebugData();
744 private void printDebugData() {
745 int numRows = getRowCount();
746 int numCols = getColumnCount();
748 for (int i = 0; i < numRows; i++) {
749 //System.out.print(" row " + i + ":");
750 for (int j = 0; j < numCols; j++) {
751 //System.out.print(" " + ((ArrayList) ((Vector) data).get(i)).get(j) );
753 //System.out.println();
755 //System.out.println("--------------------------");