Annotation of FM2SQL/src/FM2SQL.java, revision 1.5

1.1       rogo        1: /*
                      2:  * FM2SQL.java -- Main program Filemaker to SQL Converter 
                      3:  * Copyright (C) 2003 Robert Gordesch (rogo@mpiwg-berlin.mpg.de) 
                      4:  * This program is free software; you can redistribute it and/or modify it
                      5:  * under the terms of the GNU General Public License as published by the Free
                      6:  * Software Foundation; either version 2 of the License, or (at your option)
                      7:  * any later version.  Please read license.txt for the full details. A copy of
                      8:  * the GPL may be found at http://www.gnu.org/copyleft/lgpl.html  You should
                      9:  * have received a copy of the GNU General Public License along with this
                     10:  * program; if not, write to the Free Software Foundation, Inc., 59 Temple
                     11:  * Place, Suite 330, Boston, MA 02111-1307 USA  Created on 15.09.2003 by
                     12:  * rogo  
                     13:  */
                     14: 
                     15: import java.awt.Cursor;
                     16: import java.awt.Dimension;
                     17: import java.awt.Font;
                     18: import java.awt.GridBagConstraints;
                     19: import java.awt.GridBagLayout;
                     20: import java.awt.Image;
                     21: import java.awt.Insets;
                     22: import java.awt.event.ActionEvent;
                     23: import java.awt.event.ActionListener;
                     24: import java.awt.event.ComponentAdapter;
                     25: import java.awt.event.ComponentEvent;
                     26: import java.awt.event.InputEvent;
                     27: import java.awt.event.WindowAdapter;
                     28: import java.awt.event.WindowEvent;
                     29: import java.io.ByteArrayOutputStream;
                     30: import java.io.File;
                     31: import java.io.FileWriter;
                     32: import java.io.PrintStream;
                     33: import java.sql.SQLException;
                     34: import java.sql.Statement;
                     35: import java.text.ParseException;
                     36: import java.util.Collections;
                     37: import java.util.Iterator;
                     38: import java.util.Vector;
                     39: 
                     40: import javax.swing.Box;
                     41: import javax.swing.BoxLayout;
                     42: import javax.swing.ButtonGroup;
                     43: import javax.swing.DefaultComboBoxModel;
                     44: import javax.swing.DefaultListModel;
                     45: import javax.swing.JButton;
                     46: import javax.swing.JCheckBoxMenuItem;
                     47: import javax.swing.JComboBox;
                     48: import javax.swing.JDialog;
                     49: import javax.swing.JFileChooser;
                     50: import javax.swing.JFrame;
                     51: import javax.swing.JLabel;
                     52: import javax.swing.JList;
                     53: import javax.swing.JMenu;
                     54: import javax.swing.JMenuBar;
                     55: import javax.swing.JMenuItem;
                     56: import javax.swing.JOptionPane;
                     57: import javax.swing.JPanel;
                     58: import javax.swing.JPasswordField;
                     59: import javax.swing.JProgressBar;
                     60: import javax.swing.JScrollBar;
                     61: import javax.swing.JScrollPane;
                     62: import javax.swing.JSplitPane;
                     63: import javax.swing.JTextArea;
                     64: import javax.swing.JTextField;
                     65: import javax.swing.KeyStroke;
                     66: import javax.swing.ListSelectionModel;
                     67: import javax.swing.SwingConstants;
                     68: import javax.swing.event.TableModelEvent;
                     69: import javax.swing.event.TableModelListener;
                     70: import javax.swing.table.TableModel;
1.5     ! rogo       71: 
1.1       rogo       72: /**
                     73:  * 
                     74:  * <br>
                     75:  * <h2>FileMaker Test (JDBC Database Driver Test)</h2>
                     76:  * Main class : contains the main Frame, all event handlers etc <br>
                     77:  * The Database access is made over DBBean class all other classes are just for
                     78:  * the visualization of the data
                     79:  * 
                     80:  * @version 0.3( first stable release)
                     81:  * @author rogo
1.2       rogo       82:  * 
1.1       rogo       83:  */
                     84: public class FM2SQL extends JFrame implements ActionListener, TableModelListener
                     85: {
1.5     ! rogo       86:   private JMenuItem delimiterItem;
        !            87:   private JCheckBoxMenuItem convertItem;
        !            88:   private JCheckBoxMenuItem appendItem;
        !            89:   private JCheckBoxMenuItem updateItem;
        !            90:   private JCheckBoxMenuItem deleteItem;
        !            91:   private JCheckBoxMenuItem useNormanToUnicodeMapper;
        !            92:   private JMenuItem aboutBox;
        !            93:   int mode = -1;
        !            94:   final static int STATUS_INDEX = 0;
        !            95:   final static int NAME_INDEX = 1;
        !            96:   final static int ID_INDEX = 2;
        !            97:   final static int SELECT_INDEX = 3;
        !            98:   final static int CREATE_INDEX = 4;
        !            99:   final static int LAYOUT_INDEX = 5;
        !           100: 
        !           101:   /**
        !           102:    * The database Bean instance.
        !           103:    * 
        !           104:    */
        !           105:   DBBean bean;
        !           106:   /**
        !           107:    * The database destination Bean instance.
        !           108:    * 
        !           109:    */
        !           110:   DBBean destBean;
        !           111: 
        !           112:   /**
        !           113:    * tList - Tablenames to choose from
        !           114:    */
        !           115: 
        !           116:   JList tList = new JList(new String[]
        !           117:   { "no database", "connection", "" });
        !           118:   JList tListDest = new JList(new String[]
        !           119:   { "no database connection", "", "" });
        !           120: 
        !           121:   /**
        !           122:    * sourceUrl - Database URL ComboBox
        !           123:    */
        !           124:   JComboBox sourceURLBox;
        !           125:   /**
        !           126:    * destUrlBox - Database URL ComboBox
        !           127:    */
        !           128:   JComboBox destURLBox;
        !           129: 
        !           130:   TableComponent table, tC;
        !           131:   Vector tables = new Vector();
        !           132:   Vector layouts = new Vector();
        !           133:   JPanel listPanel;
        !           134:   JPanel topPanel, topPanel2, contentPanel;
        !           135:   JScrollPane paneDest;
        !           136:   FM2SQL fm = this;
        !           137:   boolean noDBUpdate = false;
        !           138:   boolean noUserUpdate = false;
        !           139:   int id = 0;
        !           140:   static boolean debug = false;
        !           141:   /**
        !           142:    * The result window used for query results
        !           143:    */
        !           144:   MultiResultWindow window;
        !           145:   /**
        !           146:    * The result window used for query results
        !           147:    */
        !           148:   MultiResultWindow windowDest;
        !           149: 
        !           150:   static FM2SQL fmInstance;
        !           151:   static String url = "jdbc:fmpro:http://141.14.237.42";
        !           152:   JButton showTables = new JButton(), showTables1 = new JButton();
        !           153:   JButton convert = new JButton();
        !           154:   JButton dropTables = new JButton();
        !           155: 
        !           156:   int oldWidth = 0, oldHeight = 0;
        !           157:   boolean resize = true;
        !           158:   static FileWriter logFile;
        !           159:   String delimiter = "";
        !           160: 
        !           161:   Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        !           162:   JFileChooser configExportFileChooser;
        !           163:   JFileChooser configImportFileChooser;
        !           164:   private JCheckBoxMenuItem synchronizeItem;
        !           165: 
        !           166:   /**
        !           167:    * tries to connect to database specified in url-Variable. initializes all GUI
        !           168:    * components, then fails throws an exception
        !           169:    * 
        !           170:    */
        !           171:   public FM2SQL() throws Exception
        !           172:   {
        !           173: 
        !           174:     initializeGUI();
        !           175:   }
        !           176: 
        !           177:   public void initializeGUI() throws Exception
        !           178:   {
        !           179:     Image local = getToolkit().getImage(FM2SQL.class.getResource("icons/fm.jpg"));
        !           180:     if (local != null)
        !           181:       ;
        !           182:     setIconImage(local);
        !           183:     bean = new DBBean();
        !           184:     destBean = new DBBean();
        !           185:     sourceURLBox = new JComboBox(new String[]
        !           186:     { "jdbc:fmpro:http://141.14.237.74:8050", "jdbc:fmpro:http://localhost",
        !           187:         "jdbc:postgresql://foxridge/test", "jdbc:sequelink://r583-3:2399" });
        !           188:     sourceURLBox.setEditable(true);
        !           189:     sourceURLBox.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        !           190:     destURLBox = new JComboBox(new String[]
        !           191:     { "jdbc:postgresql://foxridge/test" });
        !           192:     destURLBox.setEditable(true);
        !           193:     destURLBox.addActionListener(this);
        !           194:     destURLBox.setFont(new Font("Times New Roman", Font.PLAIN, 14));
        !           195:     table = new TableComponent();
        !           196:     // box = new JComboBox(tables);
        !           197:     // box.addActionListener(this);
        !           198:     // box2.addActionListener(this);
        !           199:     sourceURLBox.addActionListener(this);
        !           200: 
        !           201:     contentPanel = new JPanel();
        !           202:     contentPanel.setLayout(new BoxLayout(contentPanel, BoxLayout.Y_AXIS));
        !           203: 
        !           204:     sourceURLBox.setMinimumSize(new Dimension(450, 25));
        !           205:     sourceURLBox.setMaximumSize(new Dimension(550, 25));
        !           206:     sourceURLBox.setPreferredSize(new Dimension(450, 25));
        !           207:     destURLBox.setMinimumSize(new Dimension(450, 25));
        !           208:     destURLBox.setMaximumSize(new Dimension(550, 25));
        !           209:     destURLBox.setPreferredSize(new Dimension(450, 25));
        !           210:     paneDest = new JScrollPane(tListDest);
        !           211:     // tListDest.setPreferredSize(paneDest.getPreferredSize());
        !           212:     // paneDest.setPreferredSize(new Dimension(350, 365));
        !           213:     Dimension dim = paneDest.getPreferredSize();
        !           214:     paneDest.setMinimumSize(dim);
        !           215:     // paneDest.setMaximumSize(new Dimension(dim.width + 50, dim.height + 50));
        !           216: 
        !           217:     tC = new TableComponent();
        !           218:     tC.sizeToFit(450, 250);
        !           219:     tC.tableModel.addTableModelListener(this);
        !           220:     JPanel destPanel = new JPanel();
        !           221:     destPanel.setLayout(new java.awt.GridBagLayout());
        !           222: 
        !           223:     listPanel = new JPanel();
        !           224:     listPanel.setLayout(new java.awt.GridBagLayout());
        !           225:     java.awt.GridBagConstraints gbc = new java.awt.GridBagConstraints();
        !           226:     JScrollPane pane = new JScrollPane(tList);
        !           227:     tC.tableScroller.setPreferredSize(new Dimension(450, 365));
        !           228:     // tC.table.revalidate();
        !           229:     tC.tableScroller.setMinimumSize(new Dimension(450, 250));
        !           230:     // tC.tableScroller.setMaximumSize(tC.tableScroller.getPreferredSize());
        !           231:     topPanel = new JPanel();
        !           232:     topPanel.setLayout(new GridBagLayout());
        !           233:     topPanel2 = new JPanel();
        !           234:     topPanel2.setLayout(new GridBagLayout());
        !           235: 
        !           236:     gbc.gridx = 0;
        !           237:     gbc.gridy = 0;
        !           238:     gbc.weightx = 0.1;
        !           239:     gbc.weighty = 0.1;
        !           240:     gbc.gridwidth = 1;
        !           241:     gbc.gridheight = 1;
        !           242:     gbc.insets = new Insets(2, 2, 5, 5);
        !           243:     gbc.ipadx = 1;
        !           244:     gbc.ipady = 1;
        !           245: 
        !           246:     gbc.anchor = GridBagConstraints.WEST;
        !           247:     listPanel.add(topPanel, gbc);
        !           248:     destPanel.add(topPanel2, gbc);
        !           249: 
        !           250:     topPanel.add(new JLabel("Choose src database: ", JLabel.CENTER), gbc);
        !           251:     topPanel2.add(new JLabel("Choose dest database : ", JLabel.CENTER), gbc);
        !           252: 
        !           253:     gbc.anchor = GridBagConstraints.NORTHWEST;
        !           254:     gbc.gridy = 1;
        !           255:     topPanel.add(sourceURLBox, gbc);
        !           256: 
        !           257:     topPanel2.add(destURLBox, gbc);
        !           258: 
        !           259:     // gbc.gridx=GridBagConstraints.RELATIVE;
        !           260:     // dataBasePanel.add(new JLabel(" select Tables to Convert ", JLabel.LEFT));
        !           261:     gbc.gridy = 1;
        !           262:     gbc.anchor = GridBagConstraints.SOUTHWEST;
        !           263: 
        !           264:     listPanel.add(new JLabel(" select Tables to Convert  ", JLabel.LEFT), gbc);
        !           265:     destPanel.add(new JLabel("  Tables in database  ", JLabel.LEFT), gbc);
        !           266: 
        !           267:     // gbc.anchor = GridBagConstraints.WEST;
        !           268:     gbc.gridy = 2;
        !           269:     gbc.gridx = 0;
        !           270:     // gbc.weightx = 0.0;
        !           271:     // dataBasePanel.add(tC);
        !           272:     gbc.anchor = GridBagConstraints.NORTHWEST;
        !           273:     gbc.gridheight = 1;
        !           274:     gbc.fill = GridBagConstraints.BOTH;
        !           275:     listPanel.add(tC.tableScroller, gbc);
        !           276:     // gbc.fill = GridBagConstraints.VERTICAL;
        !           277:     destPanel.add(paneDest, gbc);
        !           278:     showTables1 = new JButton("show Tables");
        !           279:     showTables1.setActionCommand("show Tables source");
        !           280:     // gbc.anchor = GridBagConstraints.NORTH;
        !           281:     // gbc.weightx = 0.0;
        !           282:     gbc.fill = GridBagConstraints.NONE;
        !           283:     gbc.gridheight = 1;
        !           284: 
        !           285:     gbc.gridx = 0;
        !           286:     gbc.gridy = 2;
        !           287:     // topPanel.add(showTables1, gbc);
        !           288:     JPanel buttonPanel = new JPanel();
        !           289:     buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
        !           290:     buttonPanel.setMinimumSize(new Dimension(380, 30));
        !           291:     convert = new JButton("Convert Tables");
        !           292:     showTables = new JButton("show Tables");
        !           293:     dropTables = new JButton("drop Tables");
        !           294:     // System.out.println(convert.getPreferredSize());
        !           295:     showTables.setMinimumSize(convert.getPreferredSize());
        !           296:     dropTables.setMinimumSize(convert.getPreferredSize());
        !           297:     showTables.setMaximumSize(convert.getPreferredSize());
        !           298:     dropTables.setMaximumSize(convert.getPreferredSize());
        !           299:     showTables.setPreferredSize(convert.getPreferredSize());
        !           300:     dropTables.setPreferredSize(convert.getPreferredSize());
        !           301: 
        !           302:     showTables.addActionListener(fm);
        !           303:     showTables1.addActionListener(fm);
        !           304: 
        !           305:     buttonPanel.add(showTables);
        !           306:     buttonPanel.add(convert);
        !           307:     convert.addActionListener(fm);
        !           308:     dropTables.addActionListener(fm);
        !           309:     buttonPanel.add(dropTables);
        !           310: 
        !           311:     JPanel buttonPanelSrc = new JPanel();
        !           312:     buttonPanelSrc.setLayout(new BoxLayout(buttonPanelSrc, BoxLayout.X_AXIS));
        !           313:     buttonPanelSrc.setMinimumSize(new Dimension(200, 30));
        !           314:     buttonPanelSrc.add(showTables1);
        !           315: 
        !           316:     topPanel.add(buttonPanelSrc, gbc);
        !           317:     topPanel2.add(buttonPanel, gbc);
        !           318: 
        !           319:     // gbc.anchor = GridBagConstraints.WEST;
        !           320:     // gbc.gridy = 1;
        !           321:     // gbc.gridx = 2;
        !           322:     // gbc.weightx = 0.2;
        !           323: 
        !           324:     // gbc.gridx = 3;
        !           325:     // gbc.anchor = GridBagConstraints.NORTHWEST;
        !           326:     // gbc.gridy = 1;
        !           327:     // gbc.weightx = 1.0;
        !           328:     // listPanel.add(buttonPanel, gbc);
        !           329:     JSplitPane splitter = new JSplitPane();
        !           330:     splitter.setTopComponent(listPanel);
        !           331:     splitter.setBottomComponent(destPanel);
        !           332: 
        !           333:     // contentPanel.add(dataBasePanel);
        !           334:     // contentPanel.add(listPanel);
        !           335:     listPanel.setMaximumSize(new Dimension(660, 750));
        !           336:     listPanel.setMinimumSize(new Dimension(660, 250));
        !           337:     listPanel.setPreferredSize(new Dimension(480, 500));
        !           338:     paneDest.setPreferredSize(new Dimension(250, 285));
        !           339: 
        !           340:     getContentPane().add(splitter, "Center");
        !           341:     this.addWindowListener(new WindowAdapter() {
        !           342:       public void windowClosing(WindowEvent e)
        !           343:       {
        !           344:         bean.closeAllConnections();
        !           345:         destBean.closeAllConnections();
        !           346:         System.exit(0);
        !           347:       }
        !           348:     });
        !           349:     addComponentListener(new ComponentAdapter() {
        !           350:       public void componentResized(ComponentEvent e)
        !           351:       {
        !           352: 
        !           353:         if (oldWidth != getWidth() || oldHeight != getHeight())
        !           354:         {
        !           355:           // table.sizeToFit(getWidth(), getHeight());
        !           356: 
        !           357:           Dimension dim = table.table.getPreferredSize();
        !           358:           int size = contentPanel.getPreferredSize().height
        !           359:               + new JScrollBar().getPreferredSize().height
        !           360:               + new JMenuBar().getPreferredSize().height + 10;
        !           361: 
        !           362:           table.tableScroller.setPreferredSize(new Dimension(getWidth() - 15, getHeight() - size));
        !           363:           Dimension d2 = table.tableScroller.getPreferredSize();
        !           364: 
        !           365:           oldWidth = getWidth();
        !           366:           oldHeight = getHeight();
        !           367: 
        !           368:           table.setPreferredSize(new Dimension(d2.width + 15, d2.height + 5));
        !           369:           table.table.revalidate();
        !           370:           table.tableScroller.revalidate();
        !           371:           table.revalidate();
        !           372:           if (getHeight() > table.table.getPreferredSize().height + (2 * size))
        !           373:             setSize(getWidth(), table.table.getPreferredSize().height + 2 * size);
        !           374:           // System.out.println("size" + size);
        !           375:         }
        !           376:         // listPanel.setMaximumSize(new Dimension(getPreferredSize().width - 5,
        !           377:         // 550));
        !           378:         // listPanel.setMinimumSize(new Dimension(getPreferredSize().width - 5,
        !           379:         // 200));
        !           380:         // listPanel.setPreferredSize(new Dimension(getPreferredSize().width -
        !           381:         // 5, 370));
        !           382:         tC.tableScroller.revalidate();
        !           383:         Dimension dim = getSize();
        !           384:         tC.tableScroller.setMinimumSize(new Dimension(dim.width - 400, dim.height
        !           385:             - topPanel.getPreferredSize().height - 100));
        !           386:         tC.tableScroller.setMaximumSize(getSize());
        !           387:         tC.tableScroller.setPreferredSize(tC.tableScroller.getMinimumSize());
        !           388: 
        !           389:         paneDest.setMinimumSize(new Dimension(400, dim.height - topPanel2.getPreferredSize().height
        !           390:             - 100));
        !           391:         paneDest.setMaximumSize(tC.tableScroller.getMaximumSize());
        !           392:         paneDest.setPreferredSize(new Dimension(400, dim.height
        !           393:             - topPanel2.getPreferredSize().height - 100));
        !           394: 
        !           395:         paneDest.validate();
        !           396:         // tC.tableScroller.setPreferredSize(getSize());
        !           397:         // @TODO new sizeToFit method for listPanel table!!!
        !           398:         tC.sizeToFit(getWidth(), getHeight());
        !           399:         ((JPanel) getContentPane()).revalidate();
        !           400:         repaint();
        !           401:         setTitle("Filemaker 2 SQL Conversion Tool ");
        !           402: 
        !           403:       }
        !           404:     });
        !           405: 
        !           406:     setMenu();
        !           407:     // setSize(800, 600);
        !           408:     pack();
        !           409:     setLocation((screenSize.width - getWidth()) / 2, (screenSize.height - getHeight()) / 2);
        !           410:     // setVisible(true);
        !           411:     validate();
        !           412: 
        !           413:     // repaint();
        !           414: 
        !           415:   }
        !           416: 
        !           417:   /**
        !           418:    * 
        !           419:    */
        !           420:   public static void main(String[] args)
        !           421:   {
        !           422:     try
        !           423:     {
        !           424:       System.setErr(System.out);
        !           425:       //           Properties prop = System.getProperties();
        !           426:       //           Enumeration enume = prop.keys();
        !           427:       //           Enumeration enum2 = prop.elements();
        !           428:       //
        !           429:       //           while (enume.hasMoreElements())
        !           430:       //               System.out.println(enume.nextElement() + " " + enum2.nextElement());
        !           431:       //
        !           432:       if (System.getProperty("os.name").startsWith("W"))
        !           433:         javax.swing.UIManager
        !           434:             .setLookAndFeel(new com.sun.java.swing.plaf.windows.WindowsLookAndFeel());
        !           435:       javax.swing.UIManager.put("Table.focusCellHighlightBorder",
        !           436:           new javax.swing.border.LineBorder(java.awt.Color.black));
        !           437:       javax.swing.UIManager
        !           438:           .put("Table.focusCellBackground", new java.awt.Color(227, 227, 227, 127));
        !           439: 
        !           440:       fmInstance = new FM2SQL();
        !           441:       fmInstance.table.tableModel.addTableModelListener(fmInstance);
        !           442:       fmInstance.setVisible(true);
        !           443: 
        !           444:     } catch (Exception e)
        !           445:     {
        !           446:       JOptionPane pane = new JOptionPane(e.getMessage() + "  \n URL: " + url,
        !           447:           JOptionPane.ERROR_MESSAGE);
        !           448: 
        !           449:       JDialog dialog = pane.createDialog(null, " Exception occured while connecting");
        !           450:       e.printStackTrace();
        !           451:       dialog.addWindowListener(new WindowAdapter() {
        !           452:         public void windowClosing(WindowEvent e)
        !           453:         {
        !           454:           System.exit(0);
        !           455:         }
        !           456:       });
        !           457:       dialog.addComponentListener(new ComponentAdapter() {
        !           458: 
        !           459:         public void componentHidden(ComponentEvent e)
        !           460:         {
        !           461: 
        !           462:           System.exit(0);
        !           463:         }
        !           464:       });
        !           465:       dialog.setVisible(true);
        !           466:     }
        !           467:   }
        !           468: 
        !           469:   public void actionPerformed(ActionEvent e)
        !           470:   {
        !           471:     String command = e.getActionCommand();
        !           472:     if (debug)
        !           473:       System.out.println("command " + command);
        !           474:     if (command.equals(aboutBox.getText()))
        !           475:     {
        !           476:       JOptionPane.showMessageDialog(fmInstance,Convert.versionID, "About FM2SQL",JOptionPane.INFORMATION_MESSAGE);
        !           477:     }
        !           478: 
        !           479:     if (command == "comboBoxEdited")
        !           480:     {
        !           481:       Object src = e.getSource();
        !           482:       if (src == sourceURLBox)
        !           483:       {
        !           484:         if (debug)
        !           485:           System.out.println("hey" + sourceURLBox.getSelectedItem());
        !           486:         Object insObj = sourceURLBox.getSelectedItem();
        !           487:         ((DefaultComboBoxModel) sourceURLBox.getModel()).removeElement(insObj);
        !           488: 
        !           489:         ((DefaultComboBoxModel) sourceURLBox.getModel()).insertElementAt(insObj, 0);
        !           490:         sourceURLBox.setSelectedItem(insObj);
        !           491:       } else if (src == destURLBox)
        !           492:       {
        !           493:         if (debug)
        !           494:           System.out.println("hey" + destURLBox.getSelectedItem());
        !           495:         // ((DefaultComboBoxModel)
        !           496:         // box4.getModel()).insertElementAt(box4.getSelectedItem(), 0);
        !           497:         try
        !           498:         {
        !           499:           String selected = (String) destURLBox.getSelectedItem();
        !           500:           destBean.setConnection(selected);
        !           501:           Vector catalogs = destBean.getCatalogs();
        !           502:           Vector urls = new Vector();
        !           503:           for (int i = 0; i < catalogs.size(); ++i)
        !           504:           {
        !           505:             urls
        !           506:                 .add(destBean.url.substring(0, destBean.url.lastIndexOf("/") + 1) + catalogs.get(i));
        !           507:           }
        !           508:           destURLBox.setModel(new DefaultComboBoxModel(urls));
        !           509:           destURLBox.setSelectedItem(selected);
        !           510:         } catch (Exception e5)
        !           511:         {
        !           512:         }
        !           513:       }
        !           514:     }
        !           515:     if (command == "comboBoxChanged")
        !           516:     {
        !           517:       try
        !           518:       {
        !           519:         // System.out.println("hallo " + (e.getSource() == box3));
        !           520:         Object src = e.getSource();
        !           521:         if (src == sourceURLBox && !noUserUpdate)
        !           522:         {
        !           523:           Thread thread = new Thread() {
        !           524:             public void run()
        !           525:             {
        !           526: 
        !           527:               try
        !           528:               {
        !           529:                 PasswordDialog dialog = new PasswordDialog(fmInstance, bean);
        !           530:                 dialog.setLocationRelativeTo(sourceURLBox);
        !           531:                 dialog.thread = Thread.currentThread();
        !           532:                 fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        !           533:                 fmInstance.setEnabled(false);
        !           534:                 dialog.setVisible(true);
        !           535:                 String url = sourceURLBox.getSelectedItem().toString();
        !           536:                 bean.url = (url != null) ? url : bean.url;
        !           537:                 bean.connection = null;
        !           538:                 bean.getConnection();
        !           539:                 tables = bean.getTableNames();
        !           540:                 fillTable();
        !           541:                 fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        !           542:                 fmInstance.setEnabled(true);
        !           543:                 // System.out.println("hallo" + tables + " ");
        !           544:               } catch (Exception e5)
        !           545:               {
        !           546:                 ByteArrayOutputStream b = new ByteArrayOutputStream();
        !           547:                 PrintStream stream = new PrintStream(b);
        !           548:                 e5.printStackTrace(stream);
        !           549:                 fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        !           550:                 fmInstance.setEnabled(true);
        !           551:                 Vector header = new Vector();
        !           552:                 header.add("no database");
        !           553:                 header.add("connection");
        !           554:                 Vector rows = new Vector();
        !           555:                 // rows.add(header);
        !           556:                 noDBUpdate = true;
        !           557:                 tC.tableModel.setDataVector(rows, header);
        !           558:                 tC.tableModel.setRowCount(20);
        !           559:                 tC.revalidate();
        !           560:                 tC.tableModel.fireTableDataChanged();
        !           561:                 noDBUpdate = false;
        !           562:                 showErrorDialog(b.toString(), "Error occured !");
        !           563:               }
        !           564:             }
        !           565:           };
        !           566:           thread.start();
        !           567:         } else if (src == destURLBox && !noUserUpdate)
        !           568:         {
        !           569:           Thread thread = new Thread() {
        !           570:             public void run()
        !           571:             {
        !           572: 
        !           573:               try
        !           574:               {
        !           575: 
        !           576:                 PasswordDialog dialog = new PasswordDialog(fmInstance, destBean);
        !           577:                 dialog.setLocationRelativeTo(destURLBox);
        !           578:                 dialog.thread = Thread.currentThread();
        !           579:                 fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        !           580:                 fmInstance.setEnabled(false);
        !           581:                 dialog.setVisible(true);
        !           582:                 destBean.setConnection((String) destURLBox.getSelectedItem());
        !           583:                 DefaultListModel model = new DefaultListModel();
        !           584:                 Vector tables = destBean.getTableNames();
        !           585:                 for (int j = 0; j < tables.size(); ++j)
        !           586:                   model.addElement(tables.get(j));
        !           587:                 // System.out.println("hallo" + tables + " ");
        !           588:                 tListDest.setModel(model);
        !           589:                 // System.out.println("hallo" + tables + " ");
        !           590:                 fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        !           591:                 fmInstance.setEnabled(true);
        !           592:               } catch (Exception e5)
        !           593:               {
        !           594:                 ByteArrayOutputStream b = new ByteArrayOutputStream();
        !           595:                 PrintStream stream = new PrintStream(b);
        !           596:                 e5.printStackTrace(stream);
        !           597:                 fmInstance.setEnabled(true);
        !           598:                 fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        !           599:                 DefaultListModel model = new DefaultListModel();
        !           600:                 model.addElement("no database connection");
        !           601:                 tListDest.setModel(model);
        !           602: 
        !           603:                 showErrorDialog(b.toString(), "Error occured !");
        !           604:               }
        !           605:             }
        !           606:           };
        !           607:           thread.start();
        !           608: 
        !           609:         }
        !           610:         setTitle("Filemaker 2 SQL Conversion Tool ");
        !           611:         // pack();
        !           612: 
        !           613:       } catch (Exception e4)
        !           614:       {
        !           615:         ByteArrayOutputStream b = new ByteArrayOutputStream();
        !           616:         PrintStream stream = new PrintStream(b);
        !           617:         e4.printStackTrace(stream);
        !           618:         showErrorDialog(b.toString(), "Open of table failed");
        !           619: 
        !           620:       }
        !           621:     }
        !           622:     if (command == "show Driver features")
        !           623:     {
        !           624:       ResultWindow result = new ResultWindow(this);
        !           625:       try
        !           626:       {
        !           627:         Vector[] vecs = bean.TestDB(bean.getConnection().getMetaData());
        !           628:         result.updateResult(vecs[0], vecs[1]);
        !           629:         // result.pack();
        !           630:         result.title = "Database features";
        !           631:         result.setVisible(true);
        !           632:         String name = result.writeResult();
        !           633:       } catch (Exception e2)
        !           634:       {
        !           635:       }
        !           636:     }
        !           637:     if (command.equals("Delimiter"))
        !           638:     {
        !           639:       new DelimiterDialog(fmInstance).setVisible(true);
        !           640:       // delimiter = JOptionPane.showInputDialog(fmInstance,"Enter delimiter
        !           641:       // String",delimiter);
        !           642: 
        !           643:     }
        !           644: 
        !           645:     if (command == "Convert Mode")
        !           646:     {
        !           647:       System.out.println("Convert Mode selected");
        !           648:       convert.setText("Convert Tables");
        !           649:       convert.setActionCommand("Convert Tables");
        !           650:       convert.setToolTipText("Normal table conversion  existing table will be deleted");
        !           651:       mode = Convert.DataBase.CONVERT_MODE;
        !           652:     }
        !           653:     if (command == "Append Mode")
        !           654:     {
        !           655:       System.out.println("Append Mode selected");
        !           656:       convert.setText("Append Tables");
        !           657:       convert.setActionCommand("Append Tables");
        !           658:       convert.setToolTipText("Appends data to an existing table");
        !           659: 
        !           660:       mode = Convert.DataBase.APPEND_MODE;
        !           661:     }
        !           662:     if (command == "Update Mode")
        !           663:     {
        !           664:       System.out.println("Update Mode selected");
        !           665:       convert.setText("Update Tables");
        !           666:       convert.setActionCommand("Update Tables");
        !           667:       convert.setToolTipText("Updates data that has been changed in source");
        !           668:       mode = Convert.DataBase.UPDATE_MODE;
        !           669:     }
        !           670:     if (command == "Delete Mode")
        !           671:     {
        !           672:       System.out.println("Delete Mode selected");
        !           673:       convert.setText("Delete Tables");
        !           674:       convert.setActionCommand("Delete Tables");
        !           675:       convert.setToolTipText("Deletes data that has been deleted in source");
        !           676:       mode = Convert.DataBase.DELETE_MODE;
        !           677:     }
        !           678:     if (command == "Synchronize Mode")
        !           679:     {
        !           680:       System.out.println("Synchronize Mode selected");
        !           681:       convert.setText("Synchronize Tables");
        !           682:       convert.setActionCommand("Synchronize Tables");
        !           683:       convert.setToolTipText("Synchronize data with destination table");
        !           684:       mode = Convert.DataBase.SYNCHRONIZE_MODE;
        !           685:     }
        !           686: 
        !           687:     if (command.equals("use NormanToUnicodeMapper"))
        !           688:     {
        !           689:       if (bean != null)
        !           690:         bean.setUseNormanToUnicodeMapper(useNormanToUnicodeMapper.isSelected());
        !           691:     }
        !           692:     // writing config
        !           693:     if (command.equals("save XML Config"))
        !           694:     {
        !           695:       if (configExportFileChooser == null)
        !           696:       {
        !           697:         configExportFileChooser = new JFileChooser();
        !           698:         configExportFileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
        !           699:         configExportFileChooser.setFileFilter(new XMLFilter());
        !           700:         configExportFileChooser.setDialogType(JFileChooser.SAVE_DIALOG);
        !           701:         configExportFileChooser.addActionListener(new ActionListener() {
        !           702:           public void actionPerformed(ActionEvent e2)
        !           703:           {
        !           704:             System.out.println(e2.getActionCommand());
        !           705:             if (!e2.getActionCommand().toString().equals("ApproveSelection"))
        !           706:               return;
        !           707: 
        !           708:             Thread thread = new Thread() {
        !           709:               public void run()
        !           710:               {
        !           711:                 File configFile = configExportFileChooser.getSelectedFile();
        !           712:                 writeConfig(configFile.toString());
        !           713: 
        !           714:               }
        !           715:             };
        !           716:             thread.start();
        !           717: 
        !           718:           }
        !           719:         });
        !           720:       }
        !           721:       configExportFileChooser.rescanCurrentDirectory();
        !           722:       configExportFileChooser.showDialog(fmInstance, " Save ");
        !           723: 
        !           724:     }
        !           725:     if (command.equals("open XML Config"))
        !           726:     {
        !           727:       if (configImportFileChooser == null)
        !           728:       {
        !           729:         configImportFileChooser = new JFileChooser();
        !           730:         configImportFileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
        !           731:         configImportFileChooser.setFileFilter(new XMLFilter());
        !           732:         configImportFileChooser.setDialogType(JFileChooser.OPEN_DIALOG);
        !           733:         configImportFileChooser.addActionListener(new ActionListener() {
        !           734:           public void actionPerformed(ActionEvent e2)
        !           735:           {
        !           736:             System.out.println(e2.getActionCommand());
        !           737:             if (!e2.getActionCommand().toString().equals("ApproveSelection"))
        !           738:               return;
        !           739: 
        !           740:             Thread thread = new Thread() {
        !           741:               public void run()
        !           742:               {
        !           743:                 File configFile = configImportFileChooser.getSelectedFile();
        !           744:                 readXMLConfig(configFile.toString());
        !           745: 
        !           746:               }
        !           747:             };
        !           748:             thread.start();
        !           749: 
        !           750:           }
        !           751:         });
        !           752:       }
        !           753:       configImportFileChooser.rescanCurrentDirectory();
        !           754:       configImportFileChooser.showDialog(fmInstance, " Open ");
        !           755: 
        !           756:     }
        !           757: 
        !           758:     if (command.equals("Convert Tables") || command.equals("Append Tables"))
        !           759:     {
        !           760: 
        !           761:       Thread thread = new Thread() {
        !           762:         public void run()
        !           763:         {
        !           764:           setEnabled(false);
        !           765:           convert();
        !           766:           setEnabled(true);
        !           767:         }
        !           768: 
        !           769:       };
        !           770:       thread.start();
        !           771:     }
        !           772:     if (command.equals("Update Tables"))
        !           773:     {
        !           774: 
        !           775:       Thread thread = new Thread() {
        !           776:         public void run()
        !           777:         {
        !           778:           setEnabled(false);
        !           779:           update();
        !           780:           setEnabled(true);
        !           781:         }
        !           782: 
        !           783:       };
        !           784:       thread.start();
        !           785:     }
        !           786:     if (command.equals("Delete Tables"))
        !           787:     {
        !           788: 
        !           789:       Thread thread = new Thread() {
        !           790:         public void run()
        !           791:         {
        !           792:           setEnabled(false);
        !           793:           delete();
        !           794:           setEnabled(true);
        !           795:         }
        !           796: 
        !           797:       };
        !           798:       thread.start();
        !           799:     }
        !           800:     if (command.equals("Synchronize Tables"))
        !           801:     {
        !           802: 
        !           803:       Thread thread = new Thread() {
        !           804:         public void run()
        !           805:         {
        !           806:           setEnabled(false);
        !           807:           synchronize();
        !           808:           setEnabled(true);
        !           809:         }
        !           810: 
        !           811:       };
        !           812:       thread.start();
        !           813:     }
        !           814: 
        !           815:     if (command.equals("show Tables"))
        !           816:     {
        !           817:       Thread thread = new Thread() {
        !           818:         public void run()
        !           819:         {
        !           820:           fmInstance.setEnabled(false);
        !           821:           boolean visible = showTable(1);
        !           822:           window.validate();
        !           823:           window.setVisible(visible);
        !           824:           fmInstance.setEnabled(true);
        !           825: 
        !           826:         }
        !           827:       };
        !           828:       thread.start();
        !           829:       // System.out.println("hello");
        !           830: 
        !           831:     }
        !           832:     if (command.equals("show Tables source"))
        !           833:     {
        !           834:       Thread thread = new Thread() {
        !           835:         public void run()
        !           836:         {
        !           837:           fmInstance.setEnabled(false);
        !           838:           boolean visible = showTable(0);
        !           839:           window.validate();
        !           840:           window.setVisible(visible);
        !           841:           fmInstance.setEnabled(true);
        !           842:         }
        !           843:       };
        !           844:       thread.start();
        !           845:       // System.out.println("hello"+thread);
        !           846: 
        !           847:     }
        !           848: 
        !           849:     if (command.equals("drop Tables"))
        !           850:     {
        !           851:       Thread thread = new Thread() {
        !           852:         public void run()
        !           853:         {
        !           854:           dropTable();
        !           855:         }
        !           856:       };
        !           857:       thread.start();
        !           858:     }
        !           859:     if (command.equals("Quit"))
        !           860:     {
        !           861:       bean.closeAllConnections();
        !           862:       destBean.closeAllConnections();
        !           863:       fmInstance.dispose();
        !           864:       System.exit(0);
        !           865: 
        !           866:     }
        !           867: 
        !           868:   }
        !           869: 
        !           870:   /**
        !           871:    * 
        !           872:    */
        !           873:   protected void synchronize()
        !           874:   {
        !           875:     Vector vectors[] = getListFromTable();
        !           876:     Convert.user = bean.user;
        !           877:     Convert.passwd = bean.passwd;
        !           878:     Convert.userDest = destBean.user;
        !           879:     Convert.passwdDest = destBean.passwd;
        !           880:     try
        !           881:     {
        !           882: 
        !           883:       fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        !           884:       fmInstance.setEnabled(false);
        !           885:       // TODO indexList vector weiter reichen
        !           886:       Convert.synchronize(bean.url, destURLBox.getSelectedItem().toString(), vectors[0],
        !           887:           vectors[1], vectors[2], vectors[3], vectors[4], mode, delimiter, new Vector());
        !           888: 
        !           889:       destBean.setConnection((String) destURLBox.getSelectedItem());
        !           890:       DefaultListModel model = new DefaultListModel();
        !           891:       tables = destBean.getTableNames();
        !           892:       for (int j = 0; j < tables.size(); ++j)
        !           893:         model.addElement(tables.get(j));
        !           894:       if (debug)
        !           895:         System.out.println("hallo" + tables + " ");
        !           896:       tListDest.setModel(model);
        !           897:       fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        !           898:     } catch (Exception e4)
        !           899:     {
        !           900:       ByteArrayOutputStream b = new ByteArrayOutputStream();
        !           901:       PrintStream stream = new PrintStream(b);
        !           902:       e4.printStackTrace(stream);
        !           903:       showErrorDialog(b.toString(), "Synchronize of table failed");
        !           904:       fmInstance.setEnabled(true);
        !           905:     }
        !           906: 
        !           907:   }
        !           908: 
        !           909:   /**
        !           910:    * Updates the content of source to destination and makes new table if
        !           911:    * necessary
        !           912:    */
        !           913: 
        !           914:   public void update()
        !           915:   {
        !           916:     Vector vectors[] = getListFromTable();
        !           917:     Convert.user = bean.user;
        !           918:     Convert.passwd = bean.passwd;
        !           919:     Convert.userDest = destBean.user;
        !           920:     Convert.passwdDest = destBean.passwd;
        !           921:     try
        !           922:     {
        !           923: 
        !           924:       fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        !           925:       fmInstance.setEnabled(false);
        !           926:       Convert.update(bean.url, destURLBox.getSelectedItem().toString(), vectors[0], vectors[1],
        !           927:           vectors[2], vectors[3], vectors[4], mode);
        !           928: 
        !           929:       destBean.setConnection((String) destURLBox.getSelectedItem());
        !           930:       DefaultListModel model = new DefaultListModel();
        !           931:       tables = destBean.getTableNames();
        !           932:       for (int j = 0; j < tables.size(); ++j)
        !           933:         model.addElement(tables.get(j));
        !           934:       if (debug)
        !           935:         System.out.println("hallo" + tables + " ");
        !           936:       tListDest.setModel(model);
        !           937:       fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        !           938:     } catch (Exception e4)
        !           939:     {
        !           940:       ByteArrayOutputStream b = new ByteArrayOutputStream();
        !           941:       PrintStream stream = new PrintStream(b);
        !           942:       e4.printStackTrace(stream);
        !           943:       showErrorDialog(b.toString(), "Update of table failed");
        !           944:       fmInstance.setEnabled(true);
        !           945:     }
        !           946: 
        !           947:   }
        !           948: 
        !           949:   public void delete()
        !           950:   {
        !           951:     Vector vectors[] = getListFromTable();
        !           952:     Convert.user = bean.user;
        !           953:     Convert.passwd = bean.passwd;
        !           954:     Convert.userDest = destBean.user;
        !           955:     Convert.passwdDest = destBean.passwd;
        !           956:     try
        !           957:     {
        !           958: 
        !           959:       fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        !           960:       fmInstance.setEnabled(false);
        !           961:       Convert.delete(bean.url, destURLBox.getSelectedItem().toString(), vectors[0], vectors[1],
        !           962:           vectors[2], vectors[3], vectors[4], mode);
        !           963: 
        !           964:       destBean.setConnection((String) destURLBox.getSelectedItem());
        !           965:       DefaultListModel model = new DefaultListModel();
        !           966:       tables = destBean.getTableNames();
        !           967:       for (int j = 0; j < tables.size(); ++j)
        !           968:         model.addElement(tables.get(j));
        !           969:       if (debug)
        !           970:         System.out.println("hallo" + tables + " ");
        !           971:       tListDest.setModel(model);
        !           972:       fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        !           973:     } catch (Exception e4)
        !           974:     {
        !           975:       ByteArrayOutputStream b = new ByteArrayOutputStream();
        !           976:       PrintStream stream = new PrintStream(b);
        !           977:       e4.printStackTrace(stream);
        !           978:       showErrorDialog(b.toString(), "Delete of table failed");
        !           979:       fmInstance.setEnabled(true);
        !           980:     }
        !           981: 
        !           982:   }
        !           983: 
        !           984:   /**
        !           985:    * Copys the content of source to destination and makes new table if necessary
        !           986:    */
        !           987:   public void convert()
        !           988:   {
        !           989: 
        !           990:     Vector vectors[] = getListFromTable();
        !           991:     Convert.user = bean.user;
        !           992:     Convert.passwd = bean.passwd;
        !           993:     Convert.userDest = destBean.user;
        !           994:     Convert.passwdDest = destBean.passwd;
        !           995:     try
        !           996:     {
        !           997:       fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        !           998:       fmInstance.setEnabled(false);
        !           999:       Convert.convert(bean.url, destURLBox.getSelectedItem().toString(), vectors[0], vectors[1],
        !          1000:           vectors[2], vectors[3], vectors[4], mode, delimiter);
        !          1001:       destBean.setConnection((String) destURLBox.getSelectedItem());
        !          1002:       DefaultListModel model = new DefaultListModel();
        !          1003:       tables = destBean.getTableNames();
        !          1004:       for (int j = 0; j < tables.size(); ++j)
        !          1005:         model.addElement(tables.get(j));
        !          1006:       if (debug)
        !          1007:         System.out.println("hallo" + tables + " ");
        !          1008:       tListDest.setModel(model);
        !          1009:       fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        !          1010:     } catch (Exception e4)
        !          1011:     {
        !          1012:       ByteArrayOutputStream b = new ByteArrayOutputStream();
        !          1013:       PrintStream stream = new PrintStream(b);
        !          1014:       e4.printStackTrace(stream);
        !          1015:       showErrorDialog(b.toString(), "Conversion of table failed");
        !          1016:       fmInstance.setEnabled(true);
        !          1017:     }
        !          1018:   }
        !          1019: 
        !          1020:   public void writeConfig(String file)
        !          1021:   {
        !          1022:     fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        !          1023:     fmInstance.setEnabled(false);
        !          1024: 
        !          1025:     Vector vectors[] = getListFromTable();
        !          1026:     if (convertItem.isSelected())
        !          1027:       mode = Convert.DataBase.CONVERT_MODE;
        !          1028:     else if (appendItem.isSelected())
        !          1029:       mode = Convert.DataBase.APPEND_MODE;
        !          1030:     else if (updateItem.isSelected())
        !          1031:       mode = Convert.DataBase.UPDATE_MODE;
        !          1032:     else if (deleteItem.isSelected())
        !          1033:       mode = Convert.DataBase.DELETE_MODE;
        !          1034:     else if (synchronizeItem.isSelected())
        !          1035:       mode = Convert.DataBase.SYNCHRONIZE_MODE;
        !          1036: 
        !          1037:     // TODO add id vector in table and write it out
        !          1038:     Convert.DataBase source = new Convert.DataBase(bean, vectors[0], vectors[1], vectors[2],
        !          1039:         vectors[3], vectors[4], mode);
        !          1040:     Convert.DataBase destination = new Convert.DataBase(destBean, new Vector(), new Vector(),
        !          1041:         new Vector(), new Vector(), new Vector(), -1);
        !          1042:     source.delimiter = delimiter;
        !          1043:     source.useNormanToUnicodeMapper = useNormanToUnicodeMapper.isSelected();
        !          1044:     try
        !          1045:     {
        !          1046:       Convert.writeConfig(file, source, destination);
        !          1047:       fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        !          1048:       fmInstance.setEnabled(true);
        !          1049: 
        !          1050:     } catch (Exception e)
        !          1051:     {
        !          1052:       fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        !          1053:       fmInstance.setEnabled(true);
        !          1054: 
        !          1055:       ByteArrayOutputStream b = new ByteArrayOutputStream();
        !          1056:       PrintStream stream = new PrintStream(b);
        !          1057:       e.printStackTrace(stream);
        !          1058:       showErrorDialog(b.toString(), "Error while writing xml config  !");
        !          1059:     }
        !          1060: 
        !          1061:   }
        !          1062: 
        !          1063:   public void readXMLConfig(String file)
        !          1064:   {
        !          1065: 
        !          1066:     try
        !          1067:     {
        !          1068:       fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        !          1069:       fmInstance.setEnabled(false);
        !          1070:       StringBuffer sb = Convert.readXMLFile(file);
        !          1071:       Vector databases = Convert.getXMLConfig(sb);
        !          1072:       Convert.DataBase destBase = (Convert.DataBase) databases.lastElement();
        !          1073:       // destBase.bean.getConnection();
        !          1074:       noUserUpdate = true;
        !          1075:       destBean = destBase.bean;
        !          1076:       Object destObj = destBean.url;
        !          1077:       ((DefaultComboBoxModel) destURLBox.getModel()).removeElement(destObj);
        !          1078:       ((DefaultComboBoxModel) destURLBox.getModel()).insertElementAt(destObj, 0);
        !          1079:       destURLBox.setSelectedItem(destObj);
        !          1080:       databases.remove(destBase);
        !          1081:       for (Iterator iter = databases.iterator(); iter.hasNext();)
        !          1082:       {
        !          1083:         Convert.DataBase database = (Convert.DataBase) iter.next();
        !          1084: 
        !          1085:         if (database.mode == Convert.DataBase.CONVERT_MODE)
        !          1086:         {
        !          1087:           convertItem.doClick();
        !          1088:         } else if (database.mode == Convert.DataBase.APPEND_MODE)
        !          1089:         {
        !          1090:           appendItem.doClick();
        !          1091:         } else if (database.mode == Convert.DataBase.UPDATE_MODE)
        !          1092:         {
        !          1093:           updateItem.doClick();
        !          1094:         } else if (database.mode == Convert.DataBase.DELETE_MODE)
        !          1095:         {
        !          1096:           deleteItem.doClick();
        !          1097:         } else if (database.mode == Convert.DataBase.SYNCHRONIZE_MODE)
        !          1098:         {
        !          1099:           synchronizeItem.doClick();
        !          1100:         }
        !          1101: 
        !          1102:         delimiter = database.delimiter;
        !          1103:         database.bean.getConnection();
        !          1104: 
        !          1105:         bean = database.bean;
        !          1106:         if (bean.isUseNormanToUnicodeMapper())
        !          1107:           useNormanToUnicodeMapper.setSelected(true);
        !          1108:         Object obj = bean.url;
        !          1109:         ((DefaultComboBoxModel) sourceURLBox.getModel()).removeElement(obj);
        !          1110:         ((DefaultComboBoxModel) sourceURLBox.getModel()).insertElementAt(obj, 0);
        !          1111:         sourceURLBox.setSelectedItem(obj);
        !          1112:         fillTable();
        !          1113:         Vector tables = database.bean.getTableNames();
        !          1114:         Collections.sort(tables, String.CASE_INSENSITIVE_ORDER);
        !          1115:         int[] indices = new int[database.tables.size()];
        !          1116:         for (int i = 0; i < database.tables.size(); ++i)
        !          1117:         {
        !          1118:           String table = (String) database.tables.get(i);
        !          1119:           int index = tables.indexOf(table);
        !          1120:           if (index < 0)
        !          1121:             throw new RuntimeException("Error table \"" + table
        !          1122:                 + "\" does no longer exist\n at server " + bean.url
        !          1123:                 + "\n or you mispelled the tablename.");
        !          1124:           noDBUpdate = true;
        !          1125:           tC.tableModel.setValueAt(
        !          1126:               new TableComponent.SQLCommand(database.selects.get(i).toString()), index,
        !          1127:               SELECT_INDEX);
        !          1128: 
        !          1129:           String create = database.creates.get(i).toString();
        !          1130:           tC.tableModel.setValueAt(new TableComponent.SQLCommand(create.equals("") ? create
        !          1131:               : "           " + create), index, CREATE_INDEX);
        !          1132:           // tC.tableModel.setValueAt(new
        !          1133:           // TableComponent.SQLCommand(bean.ids.get(i).toString()),index,ID_INDEX);
        !          1134: 
        !          1135:           Object comboBox = tC.tableModel.getValueAt(index, LAYOUT_INDEX);
        !          1136:           Object idcomboBox = tC.tableModel.getValueAt(index, ID_INDEX);
        !          1137: 
        !          1138:           indices[i] = index;
        !          1139:           if (comboBox != null)
        !          1140:           {
        !          1141:             String layout = database.layouts.get(i).toString();
        !          1142:             ((JComboBox) comboBox).setSelectedItem(layout);
        !          1143:             if (layout != "")
        !          1144:             {
        !          1145:               bean.makeQuery("select * from" + bean.getQC() + table + bean.getQC() + " layout "
        !          1146:                   + bean.getQC() + layout + bean.getQC(), 1);
        !          1147: 
        !          1148:               Vector idVec = bean.getColumnNames();
        !          1149:               if (idVec == null)
        !          1150:                 idVec = new Vector();
        !          1151:               idVec.add(0, "");
        !          1152:               ((JComboBox) idcomboBox).setModel(new DefaultComboBoxModel(idVec));
        !          1153:             }
        !          1154: 
        !          1155:           }
        !          1156:           if (idcomboBox != null)
        !          1157:             ((JComboBox) idcomboBox).setSelectedItem(bean.ids.get(i));
        !          1158:           tC.tableModel.fireTableDataChanged();
        !          1159:           noDBUpdate = false;
        !          1160:           noUserUpdate = false;
        !          1161: 
        !          1162:         }
        !          1163:         // add Selections
        !          1164:         ListSelectionModel lm = tC.table.getSelectionModel();
        !          1165:         for (int i = 0; i < indices.length; ++i)
        !          1166:         {
        !          1167:           lm.addSelectionInterval(indices[i], indices[i]);
        !          1168:           tC.tableModel.setValueAt(Boolean.TRUE, indices[i], STATUS_INDEX);
        !          1169:         }
        !          1170:         destBean.getConnection();
        !          1171: 
        !          1172:         DefaultListModel model = new DefaultListModel();
        !          1173:         tables = destBean.getTableNames();
        !          1174:         for (int j = 0; j < tables.size(); ++j)
        !          1175:           model.addElement(tables.get(j));
        !          1176:         // System.out.println("hallo" + tables + " ");
        !          1177:         tListDest.setModel(model);
        !          1178:         fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        !          1179:         fmInstance.setEnabled(true);
        !          1180: 
        !          1181:       }
        !          1182: 
        !          1183:     } catch (Exception e)
        !          1184:     {
        !          1185:       noUserUpdate = false;
        !          1186:       noDBUpdate = false;
        !          1187:       fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        !          1188:       fmInstance.setEnabled(true);
        !          1189: 
        !          1190:       ByteArrayOutputStream b = new ByteArrayOutputStream();
        !          1191:       PrintStream stream = new PrintStream(b);
        !          1192:       e.printStackTrace(stream);
        !          1193:       showErrorDialog(b.toString(), "Error while reading xml config  !");
        !          1194:     }
        !          1195: 
        !          1196:   }
        !          1197: 
        !          1198:   public boolean showTable(int list)
        !          1199:   {
        !          1200:     ProgressDialog dialog = new ProgressDialog(fm, bean);
        !          1201:     dialog.setTitle("Preparing tables to be displayed");
        !          1202:     dialog.thread = Thread.currentThread();
        !          1203:     dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        !          1204:     fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        !          1205:     String query = new String();
        !          1206:     Object[] objs = tListDest.getSelectedValues();
        !          1207:     Vector[] vectors = (list == 0) ? getListFromTable() : null;
        !          1208:     Vector tables = (list == 0) ? vectors[0] : new Vector();
        !          1209:     if (list > 0)
        !          1210:       for (int i = 0; i < objs.length; ++i)
        !          1211:       {
        !          1212:         if (debug)
        !          1213:           System.out.println(objs[i]);
        !          1214:         tables.add(objs[i]);
        !          1215:       }
        !          1216:     if (window != null)
        !          1217:       window.dispose();
        !          1218:     if (windowDest != null)
        !          1219:       windowDest.dispose();
        !          1220: 
        !          1221:     window = new MultiResultWindow(fm);
        !          1222:     if (list > 0)
        !          1223:     {
        !          1224:       windowDest = new MultiResultWindow(fm);
        !          1225:       window = windowDest;
        !          1226:     }
        !          1227:     dialog.setLocation(FM2SQL.fmInstance.getLocationOnScreen().x
        !          1228:         + (FM2SQL.fmInstance.getWidth() - 500) / 2, FM2SQL.fmInstance.getLocationOnScreen().y
        !          1229:         + (FM2SQL.fmInstance.getHeight() - 250) / 2);
        !          1230:     dialog.setSize(500, 250);
        !          1231:     if (!tables.isEmpty())
        !          1232:       dialog.setVisible(true);
        !          1233:     dialog.title.setText("Preparing tables to be diplayed");
        !          1234:     for (int i = 0; i < tables.size(); ++i)
        !          1235:     {
        !          1236:       dialog.table.setText("Getting table " + tables.get(i));
        !          1237:       dialog.status.setText("Table " + (i + 1) + " of " + tables.size());
        !          1238: 
        !          1239:       if (list == 0)
        !          1240:         query = "select * from " + bean.getQC() + tables.get(i).toString() + bean.getQC();
        !          1241:       else
        !          1242:         query = "select * from " + destBean.getQC() + tables.get(i).toString() + destBean.getQC();
        !          1243:       if (list == 0)
        !          1244:         query = vectors[2].get(i).toString();
        !          1245:       if (list == 0 && vectors[1].get(i) != null)
        !          1246:         if (vectors[1].get(i).toString() != "")
        !          1247:         {
        !          1248:           String layout = " layout " + bean.getQC() + vectors[1].get(i).toString() + bean.getQC();
        !          1249:           String name = tables.get(i).toString();
        !          1250:           StringBuffer queryLayout = new StringBuffer(query);
        !          1251:           queryLayout.insert(queryLayout.indexOf(name) + name.length() + 1, " " + layout);
        !          1252:           query = queryLayout.toString();
        !          1253:         }
        !          1254:       if (debug)
        !          1255:         showErrorDialog("query in show tables is " + query, "Hello");
        !          1256:       window.title = " Table ;-) " + (String) tables.get(i);
        !          1257:       // break;
        !          1258:       // } else
        !          1259:       // window.title = "Error! - No valid tablename found";
        !          1260: 
        !          1261:       try
        !          1262:       {
        !          1263:         if ((query.toLowerCase().indexOf("insert") >= 0)
        !          1264:             || (query.toLowerCase().indexOf("delete") >= 0)
        !          1265:             || (query.toLowerCase().indexOf("alter") >= 0)
        !          1266:             || (query.toLowerCase().indexOf("update") >= 0))
        !          1267:         {
        !          1268:           Statement stm = (list > 0) ? destBean.getConnection().createStatement() : bean
        !          1269:               .getConnection().createStatement();
        !          1270:           stm.executeUpdate(query);
        !          1271:           Vector vec = new Vector();
        !          1272:           Vector vec2 = new Vector();
        !          1273:           Vector vec3 = new Vector();
        !          1274:           vec2.add(query);
        !          1275:           vec3.add(vec2);
        !          1276:           vec.add("Insert, update, etc done! No results available");
        !          1277:           // vec.add("no Results were produced");
        !          1278: 
        !          1279:           window.updateResult(vec3, vec);
        !          1280:           // window.pack();
        !          1281:           // window.setVisible(true);
        !          1282: 
        !          1283:         } else
        !          1284:         {
        !          1285:           Vector[] vecs = (list > 0) ? destBean.getQueryData(query, dialog, 50) : bean
        !          1286:               .getQueryData(query, dialog, 50);
        !          1287:           if (vecs[1].isEmpty())
        !          1288:             throw new Exception("Wrong columnname or Empty Layout");
        !          1289:           window.updateResult(vecs[0], vecs[1]);
        !          1290: 
        !          1291:           // window.pack();
        !          1292:           // String name = window.writeResult();
        !          1293:           // appendLog(window.title, name);
        !          1294:         }
        !          1295: 
        !          1296:         // window.setVisible(true);
        !          1297: 
        !          1298:       } catch (Exception e)
        !          1299:       {
        !          1300:         System.out.println("Exception occured");
        !          1301:         e.printStackTrace();
        !          1302:         Vector vec = new Vector();
        !          1303:         Vector vec2 = new Vector();
        !          1304:         Vector vec3 = new Vector();
        !          1305:         vec2.add(e.getMessage());
        !          1306:         vec3.add(vec2);
        !          1307:         vec.add("Exception occured! No results available");
        !          1308:         // vec.add("no Results were produced");
        !          1309: 
        !          1310:         window.updateResult(vec3, vec);
        !          1311:         // window.pack();
        !          1312:         // window.setVisible(true);
        !          1313:         fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        !          1314: 
        !          1315:       }
        !          1316:     } // to for
        !          1317:     window.pack();
        !          1318:     window.setSize(700, 600);
        !          1319: 
        !          1320:     window.oldTabCount = 10000;
        !          1321:     dialog.dispose();
        !          1322:     fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        !          1323: 
        !          1324:     return !tables.isEmpty();
        !          1325: 
        !          1326:   }
        !          1327: 
        !          1328:   public void dropTable()
        !          1329:   {
        !          1330:     String query = new String();
        !          1331:     Object[] objs = tListDest.getSelectedValues();
        !          1332:     Vector tables = new Vector();
        !          1333:     for (int i = 0; i < objs.length; ++i)
        !          1334:     {
        !          1335:       System.out.println(objs[i]);
        !          1336:       tables.add(objs[i]);
        !          1337:     }
        !          1338: 
        !          1339:     for (int i = 0; i < tables.size(); ++i)
        !          1340:     {
        !          1341: 
        !          1342:       query = "drop table " + destBean.getQC() + tables.get(i) + destBean.getQC();
        !          1343: 
        !          1344:       try
        !          1345:       {
        !          1346:         Statement stm = destBean.getConnection().createStatement();
        !          1347:         stm.executeUpdate(query);
        !          1348:       } catch (Exception e)
        !          1349:       {
        !          1350:         ByteArrayOutputStream b = new ByteArrayOutputStream();
        !          1351:         PrintStream stream = new PrintStream(b);
        !          1352:         e.printStackTrace(stream);
        !          1353:         showErrorDialog(b.toString(), "Open of table failed");
        !          1354: 
        !          1355:       }
        !          1356:     } // to for
        !          1357:     try
        !          1358:     {
        !          1359:       destBean.setConnection((String) destURLBox.getSelectedItem());
        !          1360:       DefaultListModel model = new DefaultListModel();
        !          1361:       tables = destBean.getTableNames();
        !          1362:       for (int j = 0; j < tables.size(); ++j)
        !          1363:         model.addElement(tables.get(j));
        !          1364:       System.out.println("hallo" + tables + " ");
        !          1365:       tListDest.setModel(model);
        !          1366:     } catch (Exception e4)
        !          1367:     {
        !          1368:     }
        !          1369: 
        !          1370:   }
        !          1371: 
        !          1372:   /**
        !          1373:    * invoked then the user changes the table or the tableModel changes
        !          1374:    */
        !          1375:   public void tableChanged(TableModelEvent e)
        !          1376:   {
        !          1377:     // if (e.getType() == e.INSERT)
        !          1378:     // System.out.println("Insert done");
        !          1379:     // if (e.getType() == e.UPDATE)
        !          1380:     // System.out.println("Update done");
        !          1381:     // if (e.getType() == e.DELETE)
        !          1382:     // System.out.println("Delete done");
        !          1383:     if (e.getType() == TableModelEvent.UPDATE && !noDBUpdate)
        !          1384:     {
        !          1385:       int row = e.getFirstRow(), col = e.getColumn();
        !          1386:       System.out.println("Got in " + row + " " + col);
        !          1387:       TableModel model = (TableModel) e.getSource();
        !          1388:       String columnName = model.getColumnName(col);
        !          1389:       Object test = model.getValueAt(row, col);
        !          1390:       String idVal = (test == null) ? "" : test.toString();
        !          1391:       String value = (test == null) ? "" : test.toString();
        !          1392:       ;
        !          1393: 
        !          1394:       System.out.println("Got in " + columnName + " " + idVal);
        !          1395:       try
        !          1396:       {
        !          1397:         if (columnName.equals("select") || columnName.equals("Layouts"))
        !          1398:         {
        !          1399:           String table = model.getValueAt(row, NAME_INDEX).toString();
        !          1400:           String layout = (model.getValueAt(row, LAYOUT_INDEX) != null) ? ((JComboBox) model
        !          1401:               .getValueAt(row, LAYOUT_INDEX)).getSelectedItem().toString() : "";
        !          1402:           String query = model.getValueAt(row, SELECT_INDEX).toString();
        !          1403:           String create = model.getValueAt(row, CREATE_INDEX).toString();
        !          1404:           String id = (model.getValueAt(row, ID_INDEX) != null) ? ((JComboBox) model.getValueAt(
        !          1405:               row, ID_INDEX)).getSelectedItem().toString() : "";
        !          1406: 
        !          1407:           System.out.println("table" + table + " layout " + layout + " query " + query);
        !          1408:           if (!create.equals(""))
        !          1409:           {
        !          1410:             Object[] options =
        !          1411:             { "Yes", "No" };
        !          1412:             int option = showDialog("Create Statement not empty! Do you want to overwrite?",
        !          1413:                 "create statement", options);
        !          1414:             if (option == 0)
        !          1415:               model.setValueAt(createStatement(table, destBean, layout, query), row, CREATE_INDEX);
        !          1416:           }
        !          1417:           if (columnName.equals("Layouts"))
        !          1418:           {
        !          1419: 
        !          1420:             bean.makeQuery("select * from" + bean.getQC() + table + bean.getQC() + " layout "
        !          1421:                 + bean.getQC() + layout + bean.getQC(), 1);
        !          1422: 
        !          1423:             Vector idVec = bean.getColumnNames();
        !          1424:             if (idVec == null)
        !          1425:               idVec = new Vector();
        !          1426:             idVec.add(0, "");
        !          1427:             JComboBox box = ((JComboBox) model.getValueAt(row, ID_INDEX));
        !          1428:             box.setModel(new DefaultComboBoxModel(idVec));
        !          1429:             box.setSelectedItem(id);
        !          1430: 
        !          1431:             tC.tableModel.fireTableCellUpdated(row, ID_INDEX);
        !          1432:           }
        !          1433: 
        !          1434:         }
        !          1435:         /*
        !          1436:          * Statement stm = bean.getConnection().createStatement(); //
        !          1437:          * stm.executeUpdate("DELETE FROM \""+fm.tables.get(0)+"\" WHERE
        !          1438:          * \"erstellt von\"='rogo') ");
        !          1439:          * 
        !          1440:          * if (idVal == "") stm.executeUpdate("INSERT INTO " + DBBean.quoteChar +
        !          1441:          * box.getSelectedItem() + DBBean.quoteChar + " (" + DBBean.quoteChar +
        !          1442:          * columnName + DBBean.quoteChar + ") VALUES ('" + value + "') "); else
        !          1443:          * stm.executeUpdate( "UPDATE " + DBBean.quoteChar +
        !          1444:          * box.getSelectedItem() + DBBean.quoteChar + " SET " + DBBean.quoteChar +
        !          1445:          * columnName + DBBean.quoteChar + "='" + value + "' WHERE ID='" + idVal + "'
        !          1446:          * ");
        !          1447:          */
        !          1448:       } catch (Exception e2)
        !          1449:       {
        !          1450:         fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        !          1451:         ByteArrayOutputStream b = new ByteArrayOutputStream();
        !          1452:         PrintStream stream = new PrintStream(b);
        !          1453:         e2.printStackTrace(stream);
        !          1454:         showErrorDialog(b.toString(), "Error while updating table  !");
        !          1455:       }
        !          1456:     }
        !          1457:   }
        !          1458: 
        !          1459:   /**
        !          1460:    * initialize the menubar
        !          1461:    */
        !          1462:   private void setMenu()
        !          1463:   {
        !          1464:     JMenuBar menubar = new JMenuBar();
        !          1465:     JMenu menu = new JMenu("File");
        !          1466:     menu.setMnemonic('F');
        !          1467:     JMenuItem item = new JMenuItem("open XML Config");
        !          1468:     item.setToolTipText("opens a XML config file for batch conversion");
        !          1469:     item.setMnemonic('i');
        !          1470:     item.setAccelerator(KeyStroke.getKeyStroke('O', InputEvent.CTRL_DOWN_MASK));
        !          1471: 
        !          1472:     item.addActionListener(fm);
        !          1473:     menu.add(item);
        !          1474:     item = new JMenuItem("save XML Config");
        !          1475:     item.setToolTipText("saves the current selections in an XML config file for batch conversion");
        !          1476:     item.setAccelerator(KeyStroke.getKeyStroke('S', InputEvent.CTRL_DOWN_MASK));
        !          1477:     item.setMnemonic('x');
        !          1478: 
        !          1479:     item.addActionListener(fm);
        !          1480:     menu.add(item);
        !          1481:     item = new JMenuItem("Quit");
        !          1482:     item.setMnemonic('Q');
        !          1483:     item.setToolTipText("Quits the application");
        !          1484:     item.setAccelerator(KeyStroke.getKeyStroke('Q', InputEvent.CTRL_DOWN_MASK));
        !          1485:     item.addActionListener(fm);
        !          1486:     menu.add(item);
        !          1487: 
        !          1488:     menubar.add(menu);
        !          1489:     menu = new JMenu("Options");
        !          1490:     menu.setMnemonic('O');
        !          1491: 
        !          1492:     ButtonGroup bgrp = new ButtonGroup();
        !          1493:     convertItem = new JCheckBoxMenuItem("Convert Mode");
        !          1494:     convertItem.setToolTipText("Normal table conversion  existing table will be deleted");
        !          1495:     convertItem.addActionListener(fm);
        !          1496: 
        !          1497:     bgrp.add(convertItem);
        !          1498: 
        !          1499:     menu.add(convertItem);
        !          1500:     menubar.add(menu);
        !          1501: 
        !          1502:     appendItem = new JCheckBoxMenuItem("Append Mode");
        !          1503:     appendItem.setToolTipText("Appends data to an existing table");
        !          1504:     appendItem.addActionListener(fm);
        !          1505: 
        !          1506:     bgrp.add(appendItem);
        !          1507: 
        !          1508:     menu.add(appendItem);
        !          1509:     menubar.add(menu);
        !          1510: 
        !          1511:     updateItem = new JCheckBoxMenuItem("Update Mode");
        !          1512:     updateItem.setToolTipText("Updates data in an existing table");
        !          1513:     updateItem.addActionListener(fm);
        !          1514: 
        !          1515:     bgrp.add(updateItem);
        !          1516: 
        !          1517:     menu.add(updateItem);
        !          1518:     deleteItem = new JCheckBoxMenuItem("Delete Mode");
        !          1519:     deleteItem
        !          1520:         .setToolTipText("Deletes data in an existing table \n that has been deleted in source table");
        !          1521:     deleteItem.addActionListener(fm);
        !          1522: 
        !          1523:     bgrp.add(deleteItem);
        !          1524: 
        !          1525:     menu.add(deleteItem);
        !          1526:     synchronizeItem = new JCheckBoxMenuItem("Synchronize Mode");
        !          1527:     synchronizeItem
        !          1528:         .setToolTipText("Synchronizes data with an existing table \n Data wich has been added or removed will be deleted or addded to the destination table. The rest will be updated");
        !          1529:     synchronizeItem.addActionListener(fm);
        !          1530: 
        !          1531:     bgrp.add(synchronizeItem);
        !          1532: 
        !          1533:     menu.add(synchronizeItem);
        !          1534:     useNormanToUnicodeMapper = new JCheckBoxMenuItem("use NormanToUnicodeMapper");
        !          1535:     useNormanToUnicodeMapper
        !          1536:         .setToolTipText("maps characters in norman encoding to unicode characters");
        !          1537:     useNormanToUnicodeMapper.addActionListener(fm);
        !          1538:     menu.add(useNormanToUnicodeMapper);
        !          1539: 
        !          1540:     menubar.add(menu);
        !          1541:     item = new JMenuItem("show Driver features");
        !          1542:     item.setToolTipText("shows the features of the selected driver");
        !          1543:     item.addActionListener(fm);
        !          1544:     menu.add(item);
        !          1545:     menubar.add(menu);
        !          1546:     delimiterItem = new JMenuItem("Delimiter");
        !          1547:     delimiterItem.setToolTipText("Delimiter for FM Arrayfields");
        !          1548:     delimiterItem.addActionListener(fm);
        !          1549:     menu.add(delimiterItem);
        !          1550:     menubar.add(menu);
        !          1551: 
        !          1552:     // item.addActionListener(fm);
        !          1553:     // menu.add(item);
        !          1554: 
        !          1555:     menubar.add(menu);
        !          1556: 
        !          1557:     menu = new JMenu("About");
        !          1558:     menu.setMnemonic('A');
        !          1559:     aboutBox = new JMenuItem("about FM2SQL");
        !          1560:     aboutBox.addActionListener(fm);
        !          1561:     menu.add(aboutBox);
        !          1562:     menubar.add(menu);
        !          1563: 
        !          1564:     menu.setBackground(fm.getBackground());
        !          1565:     menubar.setBackground(fm.getBackground());
        !          1566:     convertItem.doClick();
        !          1567: 
        !          1568:     setJMenuBar(menubar);
        !          1569:   }
        !          1570: 
        !          1571:   /**
        !          1572:    * open the log file (index.html)
        !          1573:    */
        !          1574: 
        !          1575:   public static void openLog() throws Exception
        !          1576:   {
        !          1577: 
        !          1578:     StringBuffer buff = new StringBuffer();
        !          1579:     buff.append("<html>");
        !          1580:     buff.append("<head>");
        !          1581:     buff.append("\n<title>");
        !          1582:     buff.append("FileMaker Test");
        !          1583:     buff.append("</title>\n");
        !          1584:     buff.append("</head>\n");
        !          1585: 
        !          1586:     buff.append("<body>\n");
        !          1587:     buff.append("<center>\n");
        !          1588:     buff.append("\n<h3>");
        !          1589:     buff.append("FileMaker Test");
        !          1590:     buff.append("</h3>\n");
        !          1591: 
        !          1592:     logFile.write(TableComponent.convertUml(buff).toString());
        !          1593:     logFile.flush();
        !          1594:   }
        !          1595: 
        !          1596:   /**
        !          1597:    * Append one entry to the log file(index.html)
        !          1598:    */
        !          1599:   public static void appendLog(String entry, String name) throws Exception
        !          1600:   {
        !          1601:     logFile.write("<a href=\"./" + name.substring(name.lastIndexOf("/") + 1) + "\">");
        !          1602:     logFile.write(entry + "</a>");
        !          1603:     logFile.write("<br>\n<br>\n");
        !          1604:     logFile.flush();
        !          1605:   }
        !          1606: 
        !          1607:   /**
        !          1608:    * closes the log file invoked then the application closes
        !          1609:    */
        !          1610:   public static void closeLog() throws Exception
        !          1611:   {
        !          1612:     logFile.write("\n</body>");
        !          1613:     logFile.write("\n</html>");
        !          1614: 
        !          1615:     logFile.close();
        !          1616:   }
        !          1617: 
        !          1618:   public static void showErrorDialog(String message, String title)
        !          1619:   {
        !          1620:     JDialog dialog = new JDialog(fmInstance);
        !          1621:     dialog.setTitle(title);
        !          1622:     JTextArea text = new JTextArea();
        !          1623:     JScrollPane scroller = new JScrollPane(text);
        !          1624:     dialog.getContentPane().add(scroller);
        !          1625:     text.append(message);
        !          1626:     dialog.setSize(600, 300);
        !          1627:     dialog.setLocationRelativeTo(fmInstance);
        !          1628:     dialog.setVisible(true);
        !          1629:     // JOptionPane.showMessageDialog(null, message, title,
        !          1630:     // JOptionPane.ERROR_MESSAGE);
        !          1631:   }
        !          1632: 
        !          1633:   public static class ProgressDialog extends JDialog
        !          1634:   {
        !          1635:     JLabel table = new JLabel("    ");
        !          1636:     JLabel status = new JLabel("    ");
        !          1637:     JLabel title = new JLabel("     ");
        !          1638:     JPanel content = new JPanel();
        !          1639:     JPanel titlePanel = new JPanel();
        !          1640:     JPanel labelPanel = new JPanel();
        !          1641:     JPanel statusPanel = new JPanel();
        !          1642:     JPanel buttonPanel = new JPanel();
        !          1643: 
        !          1644:     JProgressBar progress = new JProgressBar();
        !          1645:     JButton cancel = new JButton("Cancel");
        !          1646:     Thread thread;
        !          1647:     DBBean bean;
        !          1648: 
        !          1649:     public ProgressDialog(JFrame frame, DBBean bean)
        !          1650:     {
        !          1651:       super(frame);
        !          1652:       this.bean = bean;
        !          1653: 
        !          1654:       content = new JPanel(true);
        !          1655:       // content.setBorder(BorderFactory.createRaisedBevelBorder());
        !          1656:       content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
        !          1657:       title = new JLabel("Progress of conversion");
        !          1658:       title.setHorizontalTextPosition(SwingConstants.CENTER);
        !          1659:       titlePanel.add(title);
        !          1660:       buttonPanel.add(cancel);
        !          1661:       // content.add(titlePanel);
        !          1662:       content.add(Box.createRigidArea(new java.awt.Dimension(0, 15)));
        !          1663:       content.add(labelPanel);
        !          1664:       content.add(new JLabel(""));
        !          1665:       content.add(progress);
        !          1666:       content.add(statusPanel);
        !          1667:       content.add(buttonPanel);
        !          1668:       content.add(Box.createRigidArea(new java.awt.Dimension(0, 15)));
        !          1669:       labelPanel.add(table);
        !          1670:       statusPanel.add(status);
        !          1671:       getContentPane().add(titlePanel, "North");
        !          1672:       getContentPane().add(content, "Center");
        !          1673:       this.addWindowListener(new WindowAdapter() {
        !          1674:         public void windowClosing(WindowEvent e)
        !          1675:         {
        !          1676:           cancel.doClick();
        !          1677:         }
        !          1678:       });
        !          1679: 
        !          1680:       cancel.addActionListener(new ActionListener() {
        !          1681:         public void actionPerformed(ActionEvent e)
        !          1682:         {
        !          1683:           fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        !          1684:           fmInstance.setEnabled(true);
        !          1685:           setVisible(false);
        !          1686:           try
        !          1687:           {
        !          1688:             ProgressDialog.this.bean.getConnection().close();
        !          1689:           } catch (SQLException e1)
        !          1690:           {
        !          1691:             // TODO Auto-generated catch block
        !          1692:             e1.printStackTrace();
        !          1693:           } catch (Exception e1)
        !          1694:           {
        !          1695:             // TODO Auto-generated catch block
        !          1696:             e1.printStackTrace();
        !          1697:           }
        !          1698:           thread.stop();
        !          1699:         }
        !          1700:       });
        !          1701:       pack();
        !          1702: 
        !          1703:     }
        !          1704: 
        !          1705:   }
        !          1706: 
        !          1707:   public static class DelimiterDialog extends JDialog
        !          1708:   {
        !          1709:     JLabel table = new JLabel("    ");
        !          1710:     JLabel status = new JLabel("    ");
        !          1711:     JLabel title = new JLabel("     ");
        !          1712:     JPanel content = new JPanel();
        !          1713:     JPanel titlePanel = new JPanel();
        !          1714:     JPanel delimiterPanel = new JPanel();
        !          1715:     JPanel buttonPanel = new JPanel();
        !          1716:     JTextField delimiter = new JTextField(10);
        !          1717: 
        !          1718:     JButton cancel = new JButton("Cancel");
        !          1719:     JButton ok = new JButton("Ok");
        !          1720:     Thread thread;
        !          1721: 
        !          1722:     public DelimiterDialog(JFrame frame)
        !          1723:     {
        !          1724:       super(frame);
        !          1725:       setTitle("Delimiter Editor");
        !          1726:       setModal(true);
        !          1727:       content = new JPanel(true);
        !          1728:       delimiter.setText(fmInstance.delimiter);
        !          1729:       ActionListener al = new ActionListener() {
        !          1730:         public void actionPerformed(ActionEvent e)
        !          1731:         {
        !          1732:           fmInstance.delimiter = parseDelimiter(delimiter.getText());
        !          1733:           setVisible(false);
        !          1734:         }
        !          1735: 
        !          1736:       };
        !          1737:       this.addWindowListener(new WindowAdapter() {
        !          1738:         public void windowClosing(WindowEvent e)
        !          1739:         {
        !          1740:           cancel.doClick();
        !          1741:         }
        !          1742:       });
        !          1743: 
        !          1744:       // delimiter.setText(fmInstance.delimiter);
        !          1745:       delimiter.addActionListener(al);
        !          1746:       content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
        !          1747:       title = new JLabel("Enter Delimiter ");
        !          1748:       title.setHorizontalTextPosition(SwingConstants.CENTER);
        !          1749:       titlePanel.add(title);
        !          1750:       buttonPanel.add(ok);
        !          1751:       buttonPanel.add(cancel);
        !          1752:       content.add(titlePanel);
        !          1753:       content.add(Box.createRigidArea(new java.awt.Dimension(0, 15)));
        !          1754: 
        !          1755:       content.add(new JLabel(""));
        !          1756:       content.add(delimiterPanel);
        !          1757:       content.add(buttonPanel);
        !          1758:       content.add(Box.createRigidArea(new java.awt.Dimension(0, 15)));
        !          1759: 
        !          1760:       delimiterPanel.add(new JLabel("Delimiter:  "));
        !          1761:       delimiterPanel.add(delimiter);
        !          1762:       getContentPane().add(titlePanel, "North");
        !          1763:       getContentPane().add(content, "Center");
        !          1764:       ok.addActionListener(al);
        !          1765:       cancel.addActionListener(new ActionListener() {
        !          1766:         public void actionPerformed(ActionEvent e)
        !          1767:         {
        !          1768:           fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        !          1769:           fmInstance.setEnabled(true);
        !          1770:           setVisible(false);
        !          1771:           // thread.stop();
        !          1772:         }
        !          1773: 
        !          1774:       });
        !          1775:       pack();
        !          1776:       setLocationRelativeTo(fmInstance);
        !          1777:     }
        !          1778: 
        !          1779:     public String parseDelimiter(Object o)
        !          1780:     {
        !          1781:       String str = o.toString();
        !          1782:       StringBuffer sbuff = new StringBuffer();
        !          1783:       int length = str.length();
        !          1784:       for (int i = 0; i < length; ++i)
        !          1785:       {
        !          1786: 
        !          1787:         if (str.charAt(i) == '\\')
        !          1788:         {
        !          1789:           System.out.println(str.charAt(i));
        !          1790:           if (str.charAt(i + 1) == 'r')
        !          1791:           {
        !          1792:             sbuff.append("\r");
        !          1793:           }
        !          1794:           if (str.charAt(i + 1) == 't')
        !          1795:           {
        !          1796:             sbuff.append("\t");
        !          1797:           }
        !          1798:           if (str.charAt(i + 1) == 'n')
        !          1799:           {
        !          1800:             sbuff.append("\n");
        !          1801:           }
        !          1802:           if (str.charAt(i + 1) == '\\')
        !          1803:           {
        !          1804:             sbuff.append("\\");
        !          1805:           }
        !          1806: 
        !          1807:           if (i < length - 1)
        !          1808:             ++i;
        !          1809: 
        !          1810:         } else
        !          1811:           sbuff.append(str.charAt(i));
        !          1812:       }
        !          1813: 
        !          1814:       return sbuff.toString();
        !          1815:     }
        !          1816:   }
        !          1817: 
        !          1818:   public static class PasswordDialog extends JDialog
        !          1819:   {
        !          1820:     JLabel table = new JLabel("    ");
        !          1821:     JLabel status = new JLabel("    ");
        !          1822:     JLabel title = new JLabel("     ");
        !          1823:     JPanel content = new JPanel();
        !          1824:     JPanel titlePanel = new JPanel();
        !          1825:     JPanel userPanel = new JPanel();
        !          1826:     JPanel passwordPanel = new JPanel();
        !          1827:     JPanel buttonPanel = new JPanel();
        !          1828:     JTextField user = new JTextField(10);
        !          1829:     JTextField passwd = new JPasswordField(10);
        !          1830: 
        !          1831:     JButton cancel = new JButton("Cancel");
        !          1832:     JButton ok = new JButton("Ok");
        !          1833:     DBBean bean = null;
        !          1834:     Thread thread;
        !          1835: 
        !          1836:     public PasswordDialog(JFrame frame, DBBean localBean)
        !          1837:     {
        !          1838:       super(frame);
        !          1839:       setTitle("PasswordDialog");
        !          1840:       setModal(true);
        !          1841:       content = new JPanel(true);
        !          1842:       this.bean = localBean;
        !          1843:       // content.setBorder(BorderFactory.createRaisedBevelBorder());
        !          1844:       ActionListener al = new ActionListener() {
        !          1845:         public void actionPerformed(ActionEvent e)
        !          1846:         {
        !          1847:           bean.setUserAndPasswd(user.getText(), passwd.getText());
        !          1848:           setVisible(false);
        !          1849:         }
        !          1850: 
        !          1851:       };
        !          1852:       this.addWindowListener(new WindowAdapter() {
        !          1853:         public void windowClosing(WindowEvent e)
        !          1854:         {
        !          1855:           cancel.doClick();
        !          1856:         }
        !          1857:       });
        !          1858: 
        !          1859:       user.setText(localBean.user);
        !          1860:       passwd.setText(localBean.passwd);
        !          1861:       user.addActionListener(al);
        !          1862:       passwd.addActionListener(al);
        !          1863:       content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
        !          1864:       title = new JLabel("Enter user and password ");
        !          1865:       title.setHorizontalTextPosition(SwingConstants.CENTER);
        !          1866:       titlePanel.add(title);
        !          1867:       buttonPanel.add(ok);
        !          1868:       buttonPanel.add(cancel);
        !          1869:       content.add(titlePanel);
        !          1870:       content.add(Box.createRigidArea(new java.awt.Dimension(0, 15)));
        !          1871:       // content.add(labelPanel);
        !          1872:       content.add(new JLabel(""));
        !          1873:       content.add(userPanel);
        !          1874:       content.add(passwordPanel);
        !          1875:       content.add(buttonPanel);
        !          1876:       content.add(Box.createRigidArea(new java.awt.Dimension(0, 15)));
        !          1877:       // labelPanel.add(table);
        !          1878:       userPanel.add(new JLabel("Username:  "));
        !          1879:       userPanel.add(user);
        !          1880:       passwordPanel.add(new JLabel("Password:  "));
        !          1881:       passwordPanel.add(passwd);
        !          1882:       passwd.setPreferredSize(user.getPreferredSize());
        !          1883:       passwd.setMinimumSize(passwd.getPreferredSize());
        !          1884:       passwd.setMaximumSize(passwd.getPreferredSize());
        !          1885:       passwd.setSize(passwd.getPreferredSize());
        !          1886:       getContentPane().add(titlePanel, "North");
        !          1887:       getContentPane().add(content, "Center");
        !          1888:       ok.addActionListener(al);
        !          1889:       cancel.addActionListener(new ActionListener() {
        !          1890:         public void actionPerformed(ActionEvent e)
        !          1891:         {
        !          1892:           fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        !          1893:           fmInstance.setEnabled(true);
        !          1894:           setVisible(false);
        !          1895:           thread.stop();
        !          1896:         }
        !          1897: 
        !          1898:       });
        !          1899:       pack();
        !          1900: 
        !          1901:     }
        !          1902: 
        !          1903:   }
        !          1904: 
        !          1905:   public void fillTable()
        !          1906:   {
        !          1907:     noDBUpdate = true;
        !          1908:     bean.setUseNormanToUnicodeMapper(useNormanToUnicodeMapper.isSelected());
        !          1909:     Vector tableNames = bean.getTableNames();
        !          1910:     Collections.sort(tableNames, String.CASE_INSENSITIVE_ORDER);
        !          1911:     Vector[] data = new Vector[2];
        !          1912:     data[1] = new Vector(6);
        !          1913:     data[1].setSize(6);
        !          1914:     data[1].set(STATUS_INDEX, " ");
        !          1915:     data[1].set(NAME_INDEX, " source Tablename  ");
        !          1916:     data[1].set(LAYOUT_INDEX, "Layouts");
        !          1917:     data[1].set(SELECT_INDEX, "select");
        !          1918:     data[1].set(CREATE_INDEX, "create");
        !          1919:     data[1].set(ID_INDEX, " id ");
        !          1920:     data[0] = new Vector();
        !          1921:     for (int i = 0; i < tableNames.size(); i++)
        !          1922:     {
        !          1923:       String name = tableNames.get(i).toString();
        !          1924:       Vector layouts = new Vector();
        !          1925:       Vector idVec = new Vector();
        !          1926: 
        !          1927:       try
        !          1928:       {
        !          1929:         bean.makeQuery("select * from" + bean.getQC() + name + bean.getQC(), 1);
        !          1930:         layouts = bean.getLayoutNames(name);
        !          1931:       } catch (SQLException e)
        !          1932:       {
        !          1933:         layouts = new Vector();
        !          1934:       } catch (Exception e)
        !          1935:       {
        !          1936:         // TODO Auto-generated catch block
        !          1937:         e.printStackTrace();
        !          1938:       }
        !          1939: 
        !          1940:       idVec = bean.getColumnNames();
        !          1941:       if (idVec == null)
        !          1942:         idVec = new Vector();
        !          1943:       idVec.add(0, "");
        !          1944:       Vector dataRow = new Vector(6);
        !          1945: 
        !          1946:       dataRow.setSize(6);
        !          1947:       dataRow.set(STATUS_INDEX, Boolean.FALSE);
        !          1948:       dataRow.set(NAME_INDEX, name);
        !          1949: 
        !          1950:       dataRow.set(SELECT_INDEX, new TableComponent.SQLCommand("select * from " + bean.getQC()
        !          1951:           + name + bean.getQC()));
        !          1952:       if (!layouts.isEmpty())
        !          1953:         dataRow.set(LAYOUT_INDEX, new JComboBox(layouts));
        !          1954:       else
        !          1955:         dataRow.set(LAYOUT_INDEX, null);
        !          1956: 
        !          1957:       // create row
        !          1958:       dataRow.set(CREATE_INDEX, new TableComponent.SQLCommand(""));
        !          1959:       // id row
        !          1960:       dataRow.set(ID_INDEX, new TableComponent.IDComboBox(idVec));// new
        !          1961:       // TableComponent.SQLCommand(""));
        !          1962:       bean.ids.add("");
        !          1963:       data[0].add(dataRow);
        !          1964: 
        !          1965:       // System.out.println(dataRow);
        !          1966:     }
        !          1967: 
        !          1968:     tC.booleanRenderer.renderFalseEmpty = true;
        !          1969:     tC.tableModel.setDataVector(data[0], data[1]);
        !          1970:     // @TODO new sizeToFit method needed
        !          1971:     // tC.sizeToFit(450, 250);
        !          1972:     Dimension dim = listPanel.getPreferredSize();
        !          1973:     tC.sizeToFit(dim.width, dim.height);
        !          1974:     tC.revalidate();
        !          1975:     tC.tableModel.fireTableDataChanged();
        !          1976:     noDBUpdate = false;
        !          1977: 
        !          1978:   }
        !          1979: 
        !          1980:   public Vector[] getListFromTable()
        !          1981:   {
        !          1982:     Vector[] vec = new Vector[5];
        !          1983:     vec[0] = new Vector();
        !          1984:     vec[1] = new Vector();
        !          1985:     vec[2] = new Vector();
        !          1986:     vec[3] = new Vector();
        !          1987:     vec[4] = new Vector();
        !          1988:     for (int i = 0; i < tC.tableModel.getRowCount(); ++i)
        !          1989:     {
        !          1990:     }
        !          1991:     int[] rows = tC.table.getSelectedRows();
        !          1992:     for (int i = 0; i < tC.tableModel.getRowCount(); i++)
        !          1993:     {
        !          1994:       if (((Boolean) tC.tableModel.getValueAt(i, STATUS_INDEX)) == Boolean.FALSE)
        !          1995:       {
        !          1996:         System.out.println("skipped row " + i);
        !          1997:         continue;
        !          1998:       }
        !          1999: 
        !          2000:       // System.out.println(tC.tableModel.getValueAt(rows[i],1));
        !          2001:       vec[0].add(tC.tableModel.getValueAt(i, NAME_INDEX));
        !          2002:       JComboBox box = ((JComboBox) tC.tableModel.getValueAt(i, LAYOUT_INDEX));
        !          2003:       String layoutName = (box != null) ? box.getSelectedItem().toString() : "";
        !          2004: 
        !          2005:       String idName = ((JComboBox) tC.tableModel.getValueAt(i, ID_INDEX)).getSelectedItem()
        !          2006:           .toString();
        !          2007:       vec[1].add(layoutName);
        !          2008:       vec[2].add(tC.tableModel.getValueAt(i, SELECT_INDEX).toString());
        !          2009:       vec[3].add(tC.tableModel.getValueAt(i, CREATE_INDEX).toString());
        !          2010:       vec[4].add(idName);
        !          2011: 
        !          2012:     }
        !          2013:     return vec;
        !          2014:   }
        !          2015: 
        !          2016:   public void setEnabled(boolean state)
        !          2017:   {
        !          2018:     showTables.setEnabled(state);
        !          2019:     showTables1.setEnabled(state);
        !          2020:     convert.setEnabled(state);
        !          2021:     dropTables.setEnabled(state);
        !          2022:     sourceURLBox.setEnabled(state);
        !          2023:     destURLBox.setEnabled(state);
        !          2024: 
        !          2025:   }
        !          2026: 
        !          2027:   public TableComponent.SQLCommand createStatement(String table, DBBean beanDest, String layout,
        !          2028:       String query) throws SQLException, ParseException, Exception
        !          2029:   {
        !          2030:     fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        !          2031: 
        !          2032:     if (beanDest.url.equals(""))
        !          2033:       beanDest.url = destURLBox.getSelectedItem().toString();
        !          2034:     StringBuffer command = new StringBuffer(50);
        !          2035:     command.append("\n           CREATE TABLE ");
        !          2036:     command.append(beanDest.getQC());
        !          2037:     command.append(Convert.convertText(table));
        !          2038:     command.append(beanDest.getQC());
        !          2039:     command.append("\n             ( ");
        !          2040:     String type = null;
        !          2041:     // String query = "select * from " + bean.getQC() +table + bean.getQC();
        !          2042:     if (!layout.equals(""))
        !          2043:     {
        !          2044:       layout = " layout " + bean.getQC() + layout + bean.getQC();
        !          2045:       StringBuffer queryLayout = new StringBuffer(query);
        !          2046:       queryLayout.insert(queryLayout.indexOf(table) + table.length() + 1, " " + layout);
        !          2047:       query = queryLayout.toString();
        !          2048:       System.out.println("added layout  " + query);
        !          2049: 
        !          2050:     }
        !          2051:     Vector[] result = bean.getQueryData(query, 1);
        !          2052:     for (int i = 0; i < result[1].size() - 1; ++i)
        !          2053:     {
        !          2054:       type = bean.metaData.getColumnTypeName(i + 1);
        !          2055:       // System.out.println(i+" "+result[1].get(i)+" "+type);
        !          2056:       type = (type.equals("NUMBER")) ? "INT4" : type;
        !          2057:       type = (type.equals("CONTAINER")) ? "TEXT" : type;
        !          2058:       type = type.toUpperCase();
        !          2059:       if (i == 0)
        !          2060:         command.append(beanDest.getQC() + Convert.convertText((String) result[1].get(i))
        !          2061:             + beanDest.getQC() + " " + type + ", ");
        !          2062:       else
        !          2063:         command
        !          2064:             .append("               " + beanDest.getQC()
        !          2065:                 + Convert.convertText((String) result[1].get(i)) + beanDest.getQC() + " " + type
        !          2066:                 + ", ");
        !          2067:       command.append("\n");
        !          2068:     }
        !          2069:     type = bean.metaData.getColumnTypeName(result[1].size());
        !          2070:     type = (type.equals("NUMBER")) ? "INT4" : type;
        !          2071:     type = (type.equals("CONTAINER")) ? "TEXT" : type;
        !          2072:     type = type.toUpperCase();
        !          2073:     command.append("               " + beanDest.getQC()
        !          2074:         + Convert.convertText((String) result[1].get(result[1].size() - 1)) + beanDest.getQC()
        !          2075:         + " " + type);
        !          2076:     command.append("\n             )\n");
        !          2077:     fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        !          2078: 
        !          2079:     return new TableComponent.SQLCommand(command.toString());
        !          2080:   }
        !          2081: 
        !          2082:   static class XMLFilter extends javax.swing.filechooser.FileFilter
        !          2083:   {
        !          2084:     public boolean accept(java.io.File file)
        !          2085:     {
        !          2086:       if (file.getName().toLowerCase().endsWith(".xml") || file.isDirectory())
        !          2087:         return true;
        !          2088:       else
        !          2089:         return false;
        !          2090:     }
        !          2091: 
        !          2092:     public String getDescription()
        !          2093:     {
        !          2094:       return "Batch Convert XML File";
        !          2095:     }
        !          2096: 
        !          2097:   }
        !          2098: 
        !          2099:   public static int showDialog(String message, String title, Object[] options)
        !          2100:   {
        !          2101:     int option = JOptionPane.showOptionDialog(null, message, title, JOptionPane.DEFAULT_OPTION,
        !          2102:         JOptionPane.WARNING_MESSAGE, null, options, options[0]);
        !          2103:     return option;
1.1       rogo     2104: 
1.5     ! rogo     2105:   }
1.1       rogo     2106: 
                   2107: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>