Annotation of FM2SQL/FM2SQL.java, revision 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>