Annotation of FM2SQL/FM2SQL.java, revision 1.1.1.1
1.1 rogo 1: import javax.swing.*;
2: import javax.swing.event.*;
3: import javax.swing.table.TableModel;
4:
5: import Convert.DataBase;
6:
7: import java.awt.event.*;
8: import java.awt.Dimension;
9: import java.awt.FlowLayout;
10: import java.awt.*;
11: import java.sql.*;
12: import java.util.*;
13: import java.io.*;
14: /**
15: *
16: * <br>
17: * <h2>FileMaker Test (JDBC Database Driver Test)</h2>
18: * Main class :
19: * contains the main Frame, all event handlers etc
20: * <br>
21: * The Database access is made over DBBean class
22: * all other classes are just for the visualization of the data
23: * @version 0.2( first stable release)
24: * @author rogo
25: *
26: */
27: public class FM2SQL extends JFrame implements ActionListener, TableModelListener
28: {
29: /**
30: * The database Bean instance.
31: *
32: */
33: DBBean bean;
34: /**
35: * The database destination Bean instance.
36: *
37: */
38: DBBean destBean;
39:
40: /**
41: * box - Tablenames
42: */
43:
44: JComboBox box;
45: /**
46: * tList - Tablenames to choose from
47: */
48:
49: JList tList = new JList(new String[] { "no database", "connection", "" });
50: JList tListDest = new JList(new String[] { "no database connection", "", "" });
51:
52: /**
53: * box2 - Layout names
54: */
55:
56: JComboBox box2;
57: /**
58: * box3 - Database URLs
59: */
60: JComboBox box3;
61: /**
62: * box4 - Database URLs
63: */
64: JComboBox box4;
65:
66: TableComponent table, tC;
67: Vector tables = new Vector();
68: Vector layouts = new Vector();
69: JPanel listPanel;
70: JPanel topPanel, contentPanel;
71: FM2SQL fm = this;
72: boolean noDBUpdate = false;
73: boolean noUserUpdate = false;
74: int id = 0;
75: static boolean debug = false;
76: /**
77: * The result window used for query results
78: */
79: MultiResultWindow window;
80: /**
81: * The result window used for query results
82: */
83: MultiResultWindow windowDest;
84:
85: static FM2SQL fmInstance;
86: static String url = "jdbc:fmpro:http://141.14.237.42";
87: JButton showTables = new JButton(), showTables1 = new JButton();
88: JButton convert = new JButton();
89: JButton dropTables = new JButton();
90:
91: int oldWidth = 0, oldHeight = 0;
92: boolean resize = true;
93: static FileWriter logFile;
94: Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
95: JFileChooser configExportFileChooser;
96: JFileChooser configImportFileChooser;
97:
98: /**
99: * tries to connect to database specified in url-Variable.
100: * initializes all GUI components, then fails throws an exception
101: *
102: */
103: public FM2SQL() throws Exception
104: {
105: Image local = getToolkit().getImage(getClass().getResource("icons/fm.jpg"));
106: if (local != null);
107: setIconImage(local);
108: bean = new DBBean();
109: destBean = new DBBean();
110: box2 = new JComboBox();
111: box3 = new JComboBox(new String[] { "jdbc:fmpro:http://141.14.237.74:8050", "jdbc:fmpro:http://localhost", "jdbc:postgresql://foxridge/test" });
112: box3.setEditable(true);
113: box4 = new JComboBox(new String[] {"jdbc:postgresql://foxridge/test","jdbc:postgresql://erebos/test1" });
114: box4.setEditable(true);
115: box4.addActionListener(this);
116: table = new TableComponent();
117: box = new JComboBox(tables);
118: box.addActionListener(this);
119: box2.addActionListener(this);
120: box3.addActionListener(this);
121:
122: contentPanel = new JPanel();
123: contentPanel.setLayout(new BoxLayout(contentPanel, BoxLayout.Y_AXIS));
124: topPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 5));
125: topPanel.add(Box.createRigidArea(new Dimension(10, 0)));
126: topPanel.add(new JLabel("FileMaker DB "));
127: topPanel.add(new JLabel("PostgresSQL "));
128: //tListDest.setMinimumSize(new Dimension(120, 250));
129: //tListDest.setMaximumSize(new Dimension(230, 250));
130: //tListDest.setPreferredSize(new Dimension(230, 250));
131:
132: box3.setMinimumSize(new Dimension(200, 20));
133: box3.setMaximumSize(new Dimension(320, 20));
134: box3.setPreferredSize(new Dimension(320, 20));
135: box4.setMinimumSize(new Dimension(200, 20));
136: box4.setMaximumSize(new Dimension(320, 20));
137: box4.setPreferredSize(new Dimension(330, 20));
138:
139: tC = new TableComponent();
140: tC.sizeToFit(450, 250);
141: tC.tableModel.addTableModelListener(this);
142: JPanel dataBasePanel = new JPanel();
143: dataBasePanel.setLayout(new FlowLayout(FlowLayout.LEFT, 2, 2));
144: dataBasePanel.add(Box.createRigidArea(new Dimension(10, 0)));
145: dataBasePanel.add(new JLabel("Choose src database: "));
146: dataBasePanel.add(box3);
147: dataBasePanel.add(Box.createRigidArea(new Dimension(10, 0)));
148: dataBasePanel.add(new JLabel("Choose dest database : "));
149: dataBasePanel.add(Box.createRigidArea(new Dimension(5, 0)));
150:
151: dataBasePanel.add(box4);
152: dataBasePanel.add(Box.createRigidArea(new Dimension(10, 0)));
153: listPanel = new JPanel();
154: listPanel.setLayout(new java.awt.GridBagLayout());
155: java.awt.GridBagConstraints gbc = new java.awt.GridBagConstraints();
156: JScrollPane pane = new JScrollPane(tList);
157: tC.tableScroller.setPreferredSize(new Dimension(450, 265));
158: tC.table.revalidate();
159: tC.setMinimumSize(tC.tableScroller.getPreferredSize());
160: tC.setMaximumSize(tC.tableScroller.getPreferredSize());
161:
162: //gbc.gridx=GridBagConstraints.RELATIVE;
163: gbc.gridx = 0;
164: gbc.weightx = 1.0;
165: gbc.weighty = 0.0;
166: gbc.gridwidth = 2;
167: gbc.gridheight = 1;
168: gbc.anchor = GridBagConstraints.NORTHWEST;
169: listPanel.add(new JLabel(" select Tables to Convert ", JLabel.LEFT), gbc);
170: gbc.gridx = 2;
171: listPanel.add(new JLabel(" Tables in database ", JLabel.CENTER), gbc);
172:
173: gbc.anchor = GridBagConstraints.WEST;
174: gbc.gridy = 1;
175: gbc.gridx = 0;
176: gbc.gridwidth = 1;
177: gbc.weightx = 0.0;
178: listPanel.add(tC, gbc);
179: JScrollPane paneDest = new JScrollPane(tListDest);
180: showTables1 = new JButton("show Tables");
181: showTables1.setActionCommand("show Tables source");
182: gbc.anchor = GridBagConstraints.NORTH;
183: gbc.weightx = 0.0;
184: gbc.gridx = 1;
185: listPanel.add(showTables1, gbc);
186: paneDest.setPreferredSize(new Dimension(250, 265));
187: paneDest.setMinimumSize(paneDest.getPreferredSize());
188: paneDest.setMaximumSize(paneDest.getPreferredSize());
189: gbc.anchor = GridBagConstraints.WEST;
190: gbc.gridy = 1;
191: gbc.gridx = 2;
192: gbc.weightx = 0.2;
193: listPanel.add(paneDest, gbc);
194: JPanel buttonPanel = new JPanel();
195: buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.Y_AXIS));
196: convert = new JButton("Convert Tables");
197: showTables = new JButton("show Tables");
198: dropTables = new JButton("drop Tables");
199: // System.out.println(convert.getPreferredSize());
200: showTables.setMinimumSize(convert.getPreferredSize());
201: dropTables.setMinimumSize(convert.getPreferredSize());
202: showTables.setMaximumSize(convert.getPreferredSize());
203: dropTables.setMaximumSize(convert.getPreferredSize());
204: showTables.setPreferredSize(convert.getPreferredSize());
205: dropTables.setPreferredSize(convert.getPreferredSize());
206:
207: showTables.addActionListener(fm);
208: showTables1.addActionListener(fm);
209:
210: buttonPanel.add(showTables);
211: buttonPanel.add(convert);
212: convert.addActionListener(fm);
213: dropTables.addActionListener(fm);
214: buttonPanel.add(dropTables);
215: gbc.gridx = 3;
216: gbc.anchor = GridBagConstraints.NORTHWEST;
217: gbc.gridy = 1;
218: gbc.weightx = 1.0;
219: listPanel.add(buttonPanel, gbc);
220: contentPanel.add(dataBasePanel);
221: contentPanel.add(listPanel);
222: listPanel.setMaximumSize(new Dimension(getPreferredSize().width, 550));
223: listPanel.setMinimumSize(new Dimension(getPreferredSize().width, 150));
224: listPanel.setPreferredSize(new Dimension(getPreferredSize().width, 350));
225:
226: getContentPane().add(contentPanel, "Center");
227: this.addWindowListener(new WindowAdapter()
228: {
229: public void windowClosing(WindowEvent e)
230: {
231: System.exit(0);
232: }
233: });
234: addComponentListener(new ComponentAdapter()
235: {
236: public void componentResized(ComponentEvent e)
237: {
238:
239: if (oldWidth != getWidth() || oldHeight != getHeight())
240: {
241: table.sizeToFit(getWidth(), getHeight());
242:
243: Dimension dim = table.table.getPreferredSize();
244: int size = contentPanel.getPreferredSize().height + new JScrollBar().getPreferredSize().height + new JMenuBar().getPreferredSize().height + 10;
245:
246: table.tableScroller.setPreferredSize(new Dimension(getWidth() - 15, getHeight() - size));
247: Dimension d2 = table.tableScroller.getPreferredSize();
248:
249: oldWidth = getWidth();
250: oldHeight = getHeight();
251:
252: table.setPreferredSize(new Dimension(d2.width + 15, d2.height + 5));
253: table.table.revalidate();
254: table.tableScroller.revalidate();
255: table.revalidate();
256: if (getHeight() > table.table.getPreferredSize().height + (2 * size))
257: setSize(getWidth(), table.table.getPreferredSize().height + 2 * size);
258: // System.out.println("size" + size);
259: }
260: listPanel.setMaximumSize(new Dimension(getPreferredSize().width - 5, 550));
261: listPanel.setMinimumSize(new Dimension(getPreferredSize().width - 5, 200));
262: listPanel.setPreferredSize(new Dimension(getPreferredSize().width - 5, 370));
263:
264: ((JPanel) getContentPane()).revalidate();
265: repaint();
266: setTitle("Filemaker To Postgres Conversion Tool ");
267:
268: }
269: });
270:
271: setMenu();
272: //setSize(800, 600);
273: pack();
274: setLocation((screenSize.width - getWidth()) / 2, (screenSize.height - getHeight()) / 2);
275: //setVisible(true);
276: validate();
277:
278: // repaint();
279:
280: }
281:
282: /**
283: *
284: */
285: public static void main(String[] args)
286: {
287: try
288: {
289: System.setErr(System.out);
290: // Properties prop = System.getProperties();
291: // Enumeration enum= prop.keys();
292: // while(enum.hasMoreElements())
293: //System.out.println(enum.nextElement());
294:
295: if (System.getProperty("os.name").startsWith("W"))
296: // javax.swing.UIManager.setLookAndFeel(
297: // new com.sun.java.swing.plaf.windows.WindowsLookAndFeel());
298: javax.swing.UIManager.put("Table.focusCellHighlightBorder", new javax.swing.border.LineBorder(java.awt.Color.black));
299: javax.swing.UIManager.put("Table.focusCellBackground", new java.awt.Color(227, 227, 227, 127));
300:
301: fmInstance = new FM2SQL();
302: fmInstance.table.tableModel.addTableModelListener(fmInstance);
303: fmInstance.setVisible(true);
304: /* if (!new File("./html").exists())
305: new File("./html").mkdirs();
306: logFile = new FileWriter("./html/index.html");
307: openLog();
308: */
309: } catch (Exception e)
310: {
311: JOptionPane pane = new JOptionPane(e.getMessage() + " \n URL: " + url, JOptionPane.ERROR_MESSAGE);
312:
313: JDialog dialog = pane.createDialog(null, " Exception occured while connecting");
314: e.printStackTrace();
315: dialog.addWindowListener(new WindowAdapter()
316: {
317: public void windowClosing(WindowEvent e)
318: {
319: System.exit(0);
320: }
321: });
322: dialog.addComponentListener(new ComponentAdapter()
323: {
324:
325: public void componentHidden(ComponentEvent e)
326: {
327:
328: System.exit(0);
329: }
330: });
331: dialog.show();
332: }
333: }
334: public void actionPerformed(ActionEvent e)
335: {
336: String command = e.getActionCommand();
337: if (debug)
338: System.out.println("command " + command);
339: if (command == "comboBoxEdited")
340: {
341: Object src = e.getSource();
342: if (src == box3)
343: {
344: if (debug)
345: System.out.println("hey" + box3.getSelectedItem());
346: Object insObj =box3.getSelectedItem();
347: ((DefaultComboBoxModel) box3.getModel()).removeElement(insObj);
348:
349: ((DefaultComboBoxModel) box3.getModel()).insertElementAt(insObj, 0);
350: box3.setSelectedItem(insObj);
351: } else if (src == box4)
352: {
353: if (debug)
354: System.out.println("hey" + box4.getSelectedItem());
355: //((DefaultComboBoxModel) box4.getModel()).insertElementAt(box4.getSelectedItem(), 0);
356: try
357: {
358: String selected = (String) box4.getSelectedItem();
359: destBean.setConnection(selected);
360: Vector catalogs = destBean.getCatalogs();
361: Vector urls = new Vector();
362: for (int i = 0; i < catalogs.size(); ++i)
363: {
364: urls.add(destBean.url.substring(0, destBean.url.lastIndexOf("/") + 1) + catalogs.get(i));
365: }
366: box4.setModel(new DefaultComboBoxModel(urls));
367: box4.setSelectedItem(selected);
368: } catch (Exception e5)
369: {
370: }
371: }
372: }
373: if (command == "comboBoxChanged")
374: {
375: try
376: {
377: //System.out.println("hallo " + (e.getSource() == box3));
378:
379: Object src = e.getSource();
380: if (src == box3&&!noUserUpdate)
381: {
382: Thread thread = new Thread()
383: {
384: public void run()
385: {
386:
387: try
388: {
389: PasswordDialog dialog = new PasswordDialog(fmInstance, bean);
390: dialog.setLocationRelativeTo(box3);
391: dialog.thread = Thread.currentThread();
392: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
393: fmInstance.setEnabled(false);
394: dialog.setVisible(true);
395: String url = box3.getSelectedItem().toString();
396: bean.url = (url != null) ? url : bean.url;
397: bean.connection = null;
398: bean.getConnection();
399: tables = bean.getTableNames();
400: fillTable();
401: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
402: fmInstance.setEnabled(true);
403: // System.out.println("hallo" + tables + " ");
404: } catch (Exception e5)
405: {
406: ByteArrayOutputStream b = new ByteArrayOutputStream();
407: PrintStream stream = new PrintStream(b);
408: e5.printStackTrace(stream);
409: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
410: fmInstance.setEnabled(true);
411: Vector header = new Vector();
412: header.add("no database");
413: header.add("connection");
414: Vector rows = new Vector();
415: //rows.add(header);
416: noDBUpdate=true;
417: tC.tableModel.setDataVector(rows, header);
418: tC.tableModel.setRowCount(20);
419: tC.revalidate();
420: tC.tableModel.fireTableDataChanged();
421: noDBUpdate=false;
422: showErrorDialog(b.toString(), "Error occured !");
423: }
424: }
425: };
426: thread.start();
427: } else if (src == box4&&!noUserUpdate)
428: {
429: Thread thread = new Thread()
430: {
431: public void run()
432: {
433:
434: try
435: {
436:
437: PasswordDialog dialog = new PasswordDialog(fmInstance, destBean);
438: dialog.setLocationRelativeTo(box4);
439: dialog.thread = Thread.currentThread();
440: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
441: fmInstance.setEnabled(false);
442: dialog.setVisible(true);
443: destBean.setConnection((String) box4.getSelectedItem());
444: DefaultListModel model = new DefaultListModel();
445: Vector tables = destBean.getTableNames();
446: for (int j = 0; j < tables.size(); ++j)
447: model.addElement(tables.get(j));
448: // System.out.println("hallo" + tables + " ");
449: tListDest.setModel(model);
450: // System.out.println("hallo" + tables + " ");
451: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
452: fmInstance.setEnabled(true);
453: } catch (Exception e5)
454: {
455: ByteArrayOutputStream b = new ByteArrayOutputStream();
456: PrintStream stream = new PrintStream(b);
457: e5.printStackTrace(stream);
458: fmInstance.setEnabled(true);
459: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
460: DefaultListModel model = new DefaultListModel();
461: model.addElement("no database connection");
462: tListDest.setModel(model);
463:
464: showErrorDialog(b.toString(), "Error occured !");
465: }
466: }
467: };
468: thread.start();
469:
470: }
471: setTitle("Filemaker To Postgres Conversion Tool ");
472: // pack();
473:
474: } catch (Exception e4)
475: {
476: ByteArrayOutputStream b = new ByteArrayOutputStream();
477: PrintStream stream = new PrintStream(b);
478: e4.printStackTrace(stream);
479: showErrorDialog(b.toString(), "Open of table failed");
480:
481: }
482: }
483: if (command == "show Driver features")
484: {
485: ResultWindow result = new ResultWindow(this);
486: try
487: {
488: Vector[] vecs = bean.TestDB(bean.getConnection().getMetaData());
489: result.updateResult(vecs[0], vecs[1]);
490: // result.pack();
491: result.title = "Database features";
492: result.setVisible(true);
493: String name = result.writeResult();
494: } catch (Exception e2)
495: {
496: }
497: }
498: //writing config
499: if (command.equals("export XML Config"))
500: {
501: if (configExportFileChooser == null)
502: {
503: configExportFileChooser = new JFileChooser();
504: configExportFileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
505: configExportFileChooser.setFileFilter(new XMLFilter());
506: configExportFileChooser.setDialogType(JFileChooser.SAVE_DIALOG);
507: configExportFileChooser.addActionListener(new ActionListener()
508: {
509: public void actionPerformed(ActionEvent e2)
510: {
511: System.out.println(e2.getActionCommand());
512: if (!e2.getActionCommand().toString().equals("ApproveSelection"))
513: return;
514:
515: Thread thread = new Thread()
516: {
517: public void run()
518: {
519: File configFile = configExportFileChooser.getSelectedFile();
520: writeConfig(configFile.toString());
521:
522: }
523: };
524: thread.start();
525:
526: }
527: });
528: }
529: configExportFileChooser.rescanCurrentDirectory();
530: configExportFileChooser.showDialog(fmInstance, " Save ");
531:
532: }
533: if (command.equals("import XML Config"))
534: {
535: if (configImportFileChooser == null)
536: {
537: configImportFileChooser = new JFileChooser();
538: configImportFileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
539: configImportFileChooser.setFileFilter(new XMLFilter());
540: configImportFileChooser.setDialogType(JFileChooser.OPEN_DIALOG);
541: configImportFileChooser.addActionListener(new ActionListener()
542: {
543: public void actionPerformed(ActionEvent e2)
544: {
545: System.out.println(e2.getActionCommand());
546: if (!e2.getActionCommand().toString().equals("ApproveSelection"))
547: return;
548:
549: Thread thread = new Thread()
550: {
551: public void run()
552: {
553: File configFile = configImportFileChooser.getSelectedFile();
554: readXMLConfig(configFile.toString());
555:
556: }
557: };
558: thread.start();
559:
560: }
561: });
562: }
563: configImportFileChooser.rescanCurrentDirectory();
564: configImportFileChooser.showDialog(fmInstance, " Open ");
565:
566: }
567:
568:
569: if (command.equals("Convert Tables"))
570: {
571:
572: Thread thread = new Thread()
573: {
574: public void run()
575: {
576: setEnabled(false);
577: convert();
578: setEnabled(true);
579: }
580:
581: };
582: thread.start();
583: }
584: if (command.equals("show Tables"))
585: {
586: Thread thread = new Thread()
587: {
588: public void run()
589: {
590: fmInstance.setEnabled(false);
591: boolean visible = showTable(1);
592: window.validate();
593: window.setVisible(visible);
594: fmInstance.setEnabled(true);
595:
596: }
597: };
598: thread.start();
599: // System.out.println("hello");
600:
601: }
602: if (command.equals("show Tables source"))
603: {
604: Thread thread = new Thread()
605: {
606: public void run()
607: {
608: fmInstance.setEnabled(false);
609: boolean visible = showTable(0);
610: window.validate();
611: window.setVisible(visible);
612: fmInstance.setEnabled(true);
613: }
614: };
615: thread.start();
616: // System.out.println("hello"+thread);
617:
618: }
619:
620: if (command.equals("drop Tables"))
621: {
622: Thread thread = new Thread()
623: {
624: public void run()
625: {
626: dropTable();
627: }
628: };
629: thread.start();
630: }
631: }
632: /**
633: * Copys the content of source to destination and makes new table if necessary
634: */
635: public void convert()
636: {
637:
638: Vector vectors[] = getListFromTable();
639: Convert.user = bean.user;
640: Convert.passwd = bean.passwd;
641: Convert.userDest = destBean.user;
642: Convert.passwdDest = destBean.passwd;
643: try
644: {
645: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
646: fmInstance.setEnabled(false);
647: Convert.convert(bean.url, box4.getSelectedItem().toString(), vectors[0], vectors[1],vectors[2],vectors[3]);
648:
649: destBean.setConnection((String) box4.getSelectedItem());
650: DefaultListModel model = new DefaultListModel();
651: tables = destBean.getTableNames();
652: for (int j = 0; j < tables.size(); ++j)
653: model.addElement(tables.get(j));
654: if (debug)
655: System.out.println("hallo" + tables + " ");
656: tListDest.setModel(model);
657: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
658: } catch (Exception e4)
659: {
660: ByteArrayOutputStream b = new ByteArrayOutputStream();
661: PrintStream stream = new PrintStream(b);
662: e4.printStackTrace(stream);
663: showErrorDialog(b.toString(), "Conversion of table failed");
664: fmInstance.setEnabled(true);
665: }
666: }
667: public void writeConfig(String file)
668: {
669: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
670: fmInstance.setEnabled(false);
671:
672: Vector vectors[] = getListFromTable();
673: Convert.DataBase source = new Convert.DataBase(bean,vectors[0],vectors[1],vectors[2],vectors[3]);
674: Convert.DataBase destination = new Convert.DataBase(destBean,new Vector(),new Vector(),new Vector(),new Vector());
675:
676: try
677: {
678: Convert.writeConfig(file,source,destination);
679: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
680: fmInstance.setEnabled(true);
681:
682: } catch (Exception e)
683: {
684: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
685: fmInstance.setEnabled(true);
686:
687: ByteArrayOutputStream b = new ByteArrayOutputStream();
688: PrintStream stream = new PrintStream(b);
689: e.printStackTrace(stream);
690: showErrorDialog(b.toString(), "Error while writing xml config !");
691: }
692:
693: }
694: public void readXMLConfig(String file)
695: {
696:
697: try
698: {
699: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
700: fmInstance.setEnabled(false);
701: Vector databases = Convert.getXMLConfig(file);
702: DataBase destBase = (DataBase) databases.lastElement();
703: //destBase.bean.getConnection();
704: noUserUpdate = true;
705: destBean=destBase.bean;
706: Object destObj =destBean.url;
707: ((DefaultComboBoxModel) box4.getModel()).removeElement(destObj);
708: ((DefaultComboBoxModel) box4.getModel()).insertElementAt(destObj,0);
709: box4.setSelectedItem(destObj);
710: //@TODO comboBox action Events should do nothing on config file read+combox in table should be updated
711: databases.remove(destBase);
712: for (Iterator iter = databases.iterator(); iter.hasNext();)
713: {
714: Convert.DataBase database = (Convert.DataBase) iter.next();
715: database.bean.getConnection();
716: bean = database.bean;
717: Object obj =bean.url;
718: ((DefaultComboBoxModel) box3.getModel()).removeElement(obj);
719: ((DefaultComboBoxModel) box3.getModel()).insertElementAt(obj,0);
720: box3.setSelectedItem(obj);
721: fillTable();
722: Vector tables=database.bean.getTableNames();
723: Collections.sort(tables,String.CASE_INSENSITIVE_ORDER);
724: for (int i =0;i<database.tables.size();++i)
725: {
726: String table = (String) database.tables.get(i);
727: int index=tables.indexOf(table);
728: if(index<0) throw new RuntimeException("Error table \""+table+"\" does no longer exist\n at server "+bean.url +"\n or you mispelled the tablename.");
729: noDBUpdate = true;
730: tC.tableModel.setValueAt(new TableComponent.SQLCommand(database.selects.get(i).toString()),index,2);
731: String create =database.creates.get(i).toString();
732: tC.tableModel.setValueAt(new TableComponent.SQLCommand(create.equals("") ? create:" "+create),index,3);
733: Object comboBox=tC.tableModel.getValueAt(index,1);
734: if(comboBox!=null) ((JComboBox)comboBox).setSelectedItem(database.layouts.get(i));
735: tC.tableModel.fireTableDataChanged();
736: noDBUpdate = false;
737: noUserUpdate = false;
738:
739: }
740: destBean.getConnection();
741:
742: DefaultListModel model = new DefaultListModel();
743: tables = destBean.getTableNames();
744: for (int j = 0; j < tables.size(); ++j)
745: model.addElement(tables.get(j));
746: // System.out.println("hallo" + tables + " ");
747: tListDest.setModel(model);
748: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
749: fmInstance.setEnabled(true);
750:
751: }
752:
753: } catch (Exception e)
754: {
755: noUserUpdate = false;
756: noDBUpdate = false;
757: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
758: fmInstance.setEnabled(true);
759:
760: ByteArrayOutputStream b = new ByteArrayOutputStream();
761: PrintStream stream = new PrintStream(b);
762: e.printStackTrace(stream);
763: showErrorDialog(b.toString(), "Error while reading xml config !");
764: }
765:
766: }
767: public boolean showTable(int list)
768: {
769: ProgressDialog dialog = new ProgressDialog(fm);
770: dialog.setTitle("Preparing tables to be displayed");
771: dialog.thread = Thread.currentThread();
772: dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
773: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
774: String query = new String();
775: Object[] objs = tListDest.getSelectedValues();
776: Vector[] vectors = getListFromTable();
777: Vector tables = (list == 0) ? vectors[0] : new Vector();
778: if (list > 0)
779: for (int i = 0; i < objs.length; ++i)
780: {
781: if (debug)
782: System.out.println(objs[i]);
783: tables.add(objs[i]);
784: }
785: if (window != null)
786: window.dispose();
787: if (windowDest != null)
788: windowDest.dispose();
789:
790: window = new MultiResultWindow(fm);
791: if (list > 0)
792: {
793: windowDest = new MultiResultWindow(fm);
794: window = windowDest;
795: }
796: dialog.setLocation(FM2SQL.fmInstance.getLocationOnScreen().x + (FM2SQL.fmInstance.getWidth() - 500) / 2, FM2SQL.fmInstance.getLocationOnScreen().y + (FM2SQL.fmInstance.getHeight() - 250) / 2);
797: dialog.setSize(500, 250);
798: if (!tables.isEmpty())
799: dialog.show();
800: dialog.title.setText("Preparing tables to be diplayed");
801: for (int i = 0; i < tables.size(); ++i)
802: {
803: dialog.table.setText("Getting table " + tables.get(i));
804: dialog.status.setText("Table " + (i + 1) + " of " + tables.size());
805:
806: if(list==0)
807: query = "select * from " + bean.getQC() +tables.get(i).toString() + bean.getQC();
808: else
809: query = "select * from " + destBean.getQC() +tables.get(i).toString() + destBean.getQC();
810: if(list==0) query = vectors[2].get(i).toString();
811: if (list == 0 && vectors[1].get(i) != null)
812: if (vectors[1].get(i).toString() != "")
813: {
814: String layout =" layout " + bean.getQC() + vectors[1].get(i).toString() + bean.getQC();
815: String name = tables.get(i).toString();
816: StringBuffer queryLayout=new StringBuffer(query);
817: queryLayout.insert(queryLayout.indexOf(name)+name.length()+1," "+layout);
818: query=queryLayout.toString();
819: }
820: if(debug)
821: showErrorDialog("query in show tables is "+query,"Hello");
822: window.title = " Table ;-) " + (String) tables.get(i);
823: // break;
824: // } else
825: // window.title = "Error! - No valid tablename found";
826:
827: try
828: {
829: if ((query.toLowerCase().indexOf("insert") >= 0)
830: || (query.toLowerCase().indexOf("delete") >= 0)
831: || (query.toLowerCase().indexOf("alter") >= 0)
832: || (query.toLowerCase().indexOf("update") >= 0))
833: {
834: Statement stm = (list > 0) ? destBean.getConnection().createStatement() : bean.getConnection().createStatement();
835: stm.executeUpdate(query);
836: Vector vec = new Vector();
837: Vector vec2 = new Vector();
838: Vector vec3 = new Vector();
839: vec2.add(query);
840: vec3.add(vec2);
841: vec.add("Insert, update, etc done! No results available");
842: // vec.add("no Results were produced");
843:
844: window.updateResult(vec3, vec);
845: //window.pack();
846: // window.setVisible(true);
847:
848: } else
849: {
850: Vector[] vecs = (list > 0) ? destBean.getQueryData(query, dialog, 50) : bean.getQueryData(query, dialog, 50);
851: if (vecs[1].isEmpty())
852: throw new Exception("Wrong columnname or Empty Layout");
853: window.updateResult(vecs[0], vecs[1]);
854:
855: //window.pack();
856: //String name = window.writeResult();
857: //appendLog(window.title, name);
858: }
859:
860: //window.setVisible(true);
861:
862: } catch (Exception e)
863: {
864: System.out.println("Exception occured");
865: e.printStackTrace();
866: Vector vec = new Vector();
867: Vector vec2 = new Vector();
868: Vector vec3 = new Vector();
869: vec2.add(e.getMessage());
870: vec3.add(vec2);
871: vec.add("Exception occured! No results available");
872: //vec.add("no Results were produced");
873:
874: window.updateResult(vec3, vec);
875: //window.pack();
876: // window.setVisible(true);
877: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
878:
879: }
880: } // to for
881: window.pack();
882: window.setSize(700, 600);
883:
884: window.oldTabCount = 10000;
885: dialog.dispose();
886: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
887:
888: return !tables.isEmpty();
889:
890: }
891:
892: public void dropTable()
893: {
894: String query = new String();
895: Object[] objs = tListDest.getSelectedValues();
896: Vector tables = new Vector();
897: for (int i = 0; i < objs.length; ++i)
898: {
899: System.out.println(objs[i]);
900: tables.add(objs[i]);
901: }
902:
903: for (int i = 0; i < tables.size(); ++i)
904: {
905:
906: query = "drop table "+destBean.getQC() + tables.get(i) + destBean.getQC();
907:
908: try
909: {
910: Statement stm = destBean.getConnection().createStatement();
911: stm.executeUpdate(query);
912: } catch (Exception e)
913: {
914: ByteArrayOutputStream b = new ByteArrayOutputStream();
915: PrintStream stream = new PrintStream(b);
916: e.printStackTrace(stream);
917: showErrorDialog(b.toString(), "Open of table failed");
918:
919: }
920: } // to for
921: try
922: {
923: destBean.setConnection((String) box4.getSelectedItem());
924: DefaultListModel model = new DefaultListModel();
925: tables = destBean.getTableNames();
926: for (int j = 0; j < tables.size(); ++j)
927: model.addElement(tables.get(j));
928: System.out.println("hallo" + tables + " ");
929: tListDest.setModel(model);
930: } catch (Exception e4)
931: {
932: }
933:
934: }
935: /**
936: * invoked then the user changes the table or the tableModel changes
937: */
938: public void tableChanged(TableModelEvent e)
939: {
940: // if (e.getType() == e.INSERT)
941: //System.out.println("Insert done");
942: // if (e.getType() == e.UPDATE)
943: // System.out.println("Update done");
944: //if (e.getType() == e.DELETE)
945: // System.out.println("Delete done");
946: if (e.getType() == e.UPDATE && !noDBUpdate)
947: {
948: int row = e.getFirstRow(), col = e.getColumn();
949: System.out.println("Got in " + row + " " + col );
950: TableModel model = (TableModel)e.getSource();
951: String columnName = model.getColumnName(col);
952: Object test = model.getValueAt(row, col);
953: String idVal = (test == null) ? "" : test.toString();
954: String value = (test == null) ? "" : test.toString();;
955:
956: System.out.println("Got in " + columnName +" "+idVal);
957: try
958: {
959: if(columnName.equals("select")||columnName.equals("Layouts"))
960: {
961: String table = model.getValueAt(row,0).toString();
962: String layout = (model.getValueAt(row,1)!=null) ?((JComboBox)model.getValueAt(row,1)).getSelectedItem().toString():"";
963: String query = model.getValueAt(row,2).toString();
964: String create = model.getValueAt(row,3).toString();
965: System.out.println("table" +table+" layout "+layout+" query "+query);
966: if(!create.equals(""))
967: {
968: Object[] options = { "Yes","No"};
969: int option=showDialog("Create Statement not empty! Do you want to overwrite?","create statement",options );
970: if(option==0)
971: model.setValueAt(createStatement(table,destBean,layout,query),row,3);
972: }
973:
974:
975: }
976: /* Statement stm = bean.getConnection().createStatement();
977: // stm.executeUpdate("DELETE FROM \""+fm.tables.get(0)+"\" WHERE \"erstellt von\"='rogo') ");
978:
979: if (idVal == "")
980: stm.executeUpdate("INSERT INTO " + DBBean.quoteChar + box.getSelectedItem() + DBBean.quoteChar + " (" + DBBean.quoteChar + columnName + DBBean.quoteChar + ") VALUES ('" + value + "') ");
981: else
982: stm.executeUpdate(
983: "UPDATE " + DBBean.quoteChar + box.getSelectedItem() + DBBean.quoteChar + " SET " + DBBean.quoteChar + columnName + DBBean.quoteChar + "='" + value + "' WHERE ID='" + idVal + "' ");
984: */
985: } catch (Exception e2)
986: {
987: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
988: ByteArrayOutputStream b = new ByteArrayOutputStream();
989: PrintStream stream = new PrintStream(b);
990: e2.printStackTrace(stream);
991: showErrorDialog(b.toString(), "Error while updating table !");
992: }
993: }
994: }
995:
996: /**
997: * initialize the menubar
998: */
999: private void setMenu()
1000: {
1001: JMenuBar menubar = new JMenuBar();
1002: JMenu menu = new JMenu("File");
1003:
1004: JMenuItem item = new JMenuItem("import XML Config");
1005: item.addActionListener(fm);
1006: menu.add(item);
1007: item = new JMenuItem("export XML Config");
1008: item.addActionListener(fm);
1009: menu.add(item);
1010: menubar.add(menu);
1011: menu = new JMenu("Options");
1012:
1013: item = new JMenuItem("show Driver features");
1014: item.addActionListener(fm);
1015: menu.add(item);
1016: menubar.add(menu);
1017:
1018: item.addActionListener(fm);
1019: menu.add(item);
1020:
1021: menubar.add(menu);
1022:
1023: menu.setBackground(fm.getBackground());
1024: menubar.setBackground(fm.getBackground());
1025: setJMenuBar(menubar);
1026: }
1027: /**
1028: * open the log file (index.html)
1029: */
1030:
1031: public static void openLog() throws Exception
1032: {
1033:
1034: StringBuffer buff = new StringBuffer();
1035: buff.append("<html>");
1036: buff.append("<head>");
1037: buff.append("\n<title>");
1038: buff.append("FileMaker Test");
1039: buff.append("</title>\n");
1040: buff.append("</head>\n");
1041:
1042: buff.append("<body>\n");
1043: buff.append("<center>\n");
1044: buff.append("\n<h3>");
1045: buff.append("FileMaker Test");
1046: buff.append("</h3>\n");
1047:
1048: logFile.write(TableComponent.convertUml(buff).toString());
1049: logFile.flush();
1050: }
1051: /**
1052: * Append one entry to the log file(index.html)
1053: */
1054: public static void appendLog(String entry, String name) throws Exception
1055: {
1056: logFile.write("<a href=\"./" + name.substring(name.lastIndexOf("/") + 1) + "\">");
1057: logFile.write(entry + "</a>");
1058: logFile.write("<br>\n<br>\n");
1059: logFile.flush();
1060: }
1061: /**
1062: * closes the log file invoked then the application closes
1063: */
1064: public static void closeLog() throws Exception
1065: {
1066: logFile.write("\n</body>");
1067: logFile.write("\n</html>");
1068:
1069: logFile.close();
1070: }
1071: public static void showErrorDialog(String message, String title)
1072: {
1073: JDialog dialog = new JDialog(fmInstance);
1074: dialog.setTitle(title);
1075: JTextArea text = new JTextArea();
1076: JScrollPane scroller = new JScrollPane(text);
1077: dialog.getContentPane().add(scroller);
1078: text.append(message);
1079: dialog.setSize(600, 300);
1080: dialog.setLocationRelativeTo(fmInstance);
1081: dialog.show();
1082: //JOptionPane.showMessageDialog(null, message, title, JOptionPane.ERROR_MESSAGE);
1083: }
1084: public static class ProgressDialog extends JDialog
1085: {
1086: JLabel table = new JLabel(" ");
1087: JLabel status = new JLabel(" ");
1088: JLabel title = new JLabel(" ");
1089: JPanel content = new JPanel();
1090: JPanel titlePanel = new JPanel();
1091: JPanel labelPanel = new JPanel();
1092: JPanel statusPanel = new JPanel();
1093: JPanel buttonPanel = new JPanel();
1094:
1095: JProgressBar progress = new JProgressBar();
1096: JButton cancel = new JButton("Cancel");
1097: Thread thread;
1098: public ProgressDialog(JFrame frame)
1099: {
1100: super(frame);
1101: content = new JPanel(true);
1102: //content.setBorder(BorderFactory.createRaisedBevelBorder());
1103: content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
1104: title = new JLabel("Progress of conversion");
1105: title.setHorizontalTextPosition(title.CENTER);
1106: titlePanel.add(title);
1107: buttonPanel.add(cancel);
1108: // content.add(titlePanel);
1109: content.add(Box.createRigidArea(new java.awt.Dimension(0, 15)));
1110: content.add(labelPanel);
1111: content.add(new JLabel(""));
1112: content.add(progress);
1113: content.add(statusPanel);
1114: content.add(buttonPanel);
1115: content.add(Box.createRigidArea(new java.awt.Dimension(0, 15)));
1116: labelPanel.add(table);
1117: statusPanel.add(status);
1118: getContentPane().add(titlePanel, "North");
1119: getContentPane().add(content, "Center");
1120: this.addWindowListener(new WindowAdapter()
1121: {
1122: public void windowClosing(WindowEvent e)
1123: {
1124: cancel.doClick();
1125: }
1126: });
1127:
1128: cancel.addActionListener(new ActionListener()
1129: {
1130: public void actionPerformed(ActionEvent e)
1131: {
1132: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
1133: fmInstance.setEnabled(true);
1134: setVisible(false);
1135: thread.stop();
1136: }
1137: });
1138: pack();
1139:
1140: }
1141:
1142: }
1143: public static class PasswordDialog extends JDialog
1144: {
1145: JLabel table = new JLabel(" ");
1146: JLabel status = new JLabel(" ");
1147: JLabel title = new JLabel(" ");
1148: JPanel content = new JPanel();
1149: JPanel titlePanel = new JPanel();
1150: JPanel userPanel = new JPanel();
1151: JPanel passwordPanel = new JPanel();
1152: JPanel buttonPanel = new JPanel();
1153: JTextField user = new JTextField(10);
1154: JTextField passwd = new JPasswordField(10);
1155:
1156: JButton cancel = new JButton("Cancel");
1157: JButton ok = new JButton("Ok");
1158: DBBean bean = null;
1159: Thread thread;
1160: public PasswordDialog(JFrame frame, DBBean localBean)
1161: {
1162: super(frame);
1163: setTitle("PasswordDialog");
1164: setModal(true);
1165: content = new JPanel(true);
1166: this.bean = localBean;
1167: //content.setBorder(BorderFactory.createRaisedBevelBorder());
1168: ActionListener al = new ActionListener()
1169: {
1170: public void actionPerformed(ActionEvent e)
1171: {
1172: bean.setUserAndPasswd(user.getText(), passwd.getText());
1173: setVisible(false);
1174: }
1175:
1176: };
1177: this.addWindowListener(new WindowAdapter()
1178: {
1179: public void windowClosing(WindowEvent e)
1180: {
1181: cancel.doClick();
1182: }
1183: });
1184:
1185: user.setText(localBean.user);
1186: passwd.setText(localBean.passwd);
1187: user.addActionListener(al);
1188: passwd.addActionListener(al);
1189: content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
1190: title = new JLabel("Enter user and password ");
1191: title.setHorizontalTextPosition(title.CENTER);
1192: titlePanel.add(title);
1193: buttonPanel.add(ok);
1194: buttonPanel.add(cancel);
1195: content.add(titlePanel);
1196: content.add(Box.createRigidArea(new java.awt.Dimension(0, 15)));
1197: // content.add(labelPanel);
1198: content.add(new JLabel(""));
1199: content.add(userPanel);
1200: content.add(passwordPanel);
1201: content.add(buttonPanel);
1202: content.add(Box.createRigidArea(new java.awt.Dimension(0, 15)));
1203: //labelPanel.add(table);
1204: userPanel.add(new JLabel("Username: "));
1205: userPanel.add(user);
1206: passwordPanel.add(new JLabel("Password: "));
1207: passwordPanel.add(passwd);
1208: passwd.setPreferredSize(user.getPreferredSize());
1209: passwd.setMinimumSize(passwd.getPreferredSize());
1210: passwd.setMaximumSize(passwd.getPreferredSize());
1211: passwd.setSize(passwd.getPreferredSize());
1212: getContentPane().add(titlePanel, "North");
1213: getContentPane().add(content, "Center");
1214: ok.addActionListener(al);
1215: cancel.addActionListener(new ActionListener()
1216: {
1217: public void actionPerformed(ActionEvent e)
1218: {
1219: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
1220: fmInstance.setEnabled(true);
1221: setVisible(false);
1222: thread.stop();
1223: }
1224:
1225: });
1226: pack();
1227:
1228: }
1229:
1230: }
1231: public void fillTable()
1232: {
1233: noDBUpdate = true;
1234: Vector tableNames = bean.getTableNames();
1235: Collections.sort(tableNames, String.CASE_INSENSITIVE_ORDER);
1236: Vector[] data = new Vector[2];
1237: data[1] = new Vector();
1238: data[1].add("Table");
1239: data[1].add("Layouts");
1240: data[1].add("select");
1241: data[1].add("create");
1242:
1243: data[0] = new Vector();
1244:
1245: for (int i = 0; i < tableNames.size(); i++)
1246: {
1247: String name = tableNames.get(i).toString();
1248: Vector layouts = new Vector();
1249: try
1250: {
1251: layouts = bean.getLayoutNames(name);
1252: } catch (SQLException e)
1253: {
1254: layouts = new Vector();
1255: }
1256: Vector dataRow = new Vector();
1257: dataRow.add(name);
1258: if (!layouts.isEmpty())
1259: dataRow.add(new JComboBox(layouts));
1260: else
1261: dataRow.add(null);
1262: dataRow.add(new TableComponent.SQLCommand("select * from "+bean.getQC()+name+bean.getQC()));
1263:
1264: data[0].add(dataRow);
1265: dataRow.add(new TableComponent.SQLCommand(""));
1266: //System.out.println(dataRow);
1267: }
1268: tC.tableModel.setDataVector(data[0], data[1]);
1269: tC.revalidate();
1270: tC.tableModel.fireTableDataChanged();
1271: noDBUpdate = false;
1272:
1273: }
1274: public Vector[] getListFromTable()
1275: {
1276: Vector[] vec = new Vector[4];
1277: vec[0] = new Vector();
1278: vec[1] = new Vector();
1279: vec[2] = new Vector();
1280: vec[3] = new Vector();
1281: int[] rows = tC.table.getSelectedRows();
1282: for (int i = 0; i < rows.length; i++)
1283: {
1284: //System.out.println(tC.tableModel.getValueAt(rows[i],1));
1285: vec[0].add(tC.tableModel.getValueAt(rows[i], 0));
1286: JComboBox box = ((JComboBox) tC.tableModel.getValueAt(rows[i], 1));
1287: String layoutName = (box != null) ? box.getSelectedItem().toString() : "";
1288: vec[1].add(layoutName);
1289: vec[2].add(tC.tableModel.getValueAt(rows[i], 2).toString());
1290: vec[3].add(tC.tableModel.getValueAt(rows[i], 3).toString());
1291:
1292: }
1293: return vec;
1294: }
1295: public void setEnabled(boolean state)
1296: {
1297: showTables.setEnabled(state);
1298: showTables1.setEnabled(state);
1299: convert.setEnabled(state);
1300: dropTables.setEnabled(state);
1301: box3.setEnabled(state);
1302: box4.setEnabled(state);
1303:
1304: }
1305: public TableComponent.SQLCommand createStatement(String table,DBBean beanDest,String layout,String query) throws SQLException
1306: {
1307: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
1308:
1309: if(beanDest.url.equals("")) beanDest.url=box4.getSelectedItem().toString();
1310: StringBuffer command = new StringBuffer(50);
1311: command.append("\n CREATE TABLE ");
1312: command.append(beanDest.getQC());
1313: command.append(Convert.convertText(table));
1314: command.append(beanDest.getQC());
1315: command.append("\n ( ");
1316: String type = null;
1317: // String query = "select * from " + bean.getQC() +table + bean.getQC();
1318: if (!layout.equals(""))
1319: {
1320: layout = " layout " + bean.getQC() + layout + bean.getQC();
1321: StringBuffer queryLayout = new StringBuffer(query);
1322: queryLayout.insert(queryLayout.indexOf(table) + table.length() + 1, " " + layout);
1323: query = queryLayout.toString();
1324: System.out.println("added layout "+ query);
1325:
1326: }
1327: Vector[] result=bean.getQueryData(query,1);
1328: for (int i = 0; i < result[1].size() - 1; ++i)
1329: {
1330: type = bean.metaData.getColumnTypeName(i + 1);
1331: // System.out.println(i+" "+result[1].get(i)+" "+type);
1332: type = (type.equals("NUMBER")) ? "INT4" : type;
1333: type = (type.equals("CONTAINER")) ? "TEXT" : type;
1334: type = type.toUpperCase();
1335: if(i==0)
1336: command.append(beanDest.getQC() + Convert.convertText((String) result[1].get(i)) + beanDest.getQC() + " " + type + ", ");
1337: else
1338: command.append(" "+beanDest.getQC() + Convert.convertText((String) result[1].get(i)) + beanDest.getQC() + " " + type + ", ");
1339: command.append("\n");
1340: }
1341: type = bean.metaData.getColumnTypeName(result[1].size());
1342: type = (type.equals("NUMBER")) ? "INT4" : type;
1343: type = (type.equals("CONTAINER")) ? "TEXT" : type;
1344: type = type.toUpperCase();
1345: command.append(" "+beanDest.getQC() + Convert.convertText((String) result[1].get(result[1].size() - 1)) + beanDest.getQC() + " " + type);
1346: command.append("\n )\n");
1347: fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
1348:
1349: return new TableComponent.SQLCommand(command.toString());
1350: }
1351: static class XMLFilter extends javax.swing.filechooser.FileFilter
1352: {
1353: public boolean accept(java.io.File file)
1354: {
1355: if (file.getName().toLowerCase().endsWith(".xml") || file.isDirectory())
1356: return true;
1357: else
1358: return false;
1359: }
1360: public String getDescription()
1361: {
1362: return "Batch Convert XML File";
1363: }
1364:
1365: }
1366: public static int showDialog(String message, String title, Object[] options)
1367: {
1368: int option = JOptionPane.showOptionDialog(null, message, title, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]);
1369: return option;
1370:
1371: }
1372:
1373: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>