Annotation of FM2SQL/FM2SQL.java, revision 1.43

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

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