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

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

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