--- FM2SQL/Attic/FM2SQL.java 2003/12/10 12:24:41 1.2 +++ FM2SQL/Attic/FM2SQL.java 2004/01/19 08:24:37 1.13 @@ -2,11 +2,8 @@ import javax.swing.*; import javax.swing.event.*; import javax.swing.table.TableModel; -import Convert.DataBase; - import java.awt.event.*; import java.awt.Dimension; -import java.awt.FlowLayout; import java.awt.*; import java.sql.*; import java.util.*; @@ -20,12 +17,16 @@ import java.io.*; *
* The Database access is made over DBBean class * all other classes are just for the visualization of the data - * @version 0.2( first stable release) + * @version 0.3( first stable release) * @author rogo * */ public class FM2SQL extends JFrame implements ActionListener, TableModelListener { + private JCheckBoxMenuItem convertItem; + private JCheckBoxMenuItem appendItem; + private JCheckBoxMenuItem updateItem; + int mode = -1; /** * The database Bean instance. * @@ -104,182 +105,7 @@ public class FM2SQL extends JFrame imple public FM2SQL() throws Exception { - initializeGUI();if(true)return; - Image local = getToolkit().getImage(getClass().getResource("icons/fm.jpg")); - if (local != null); - setIconImage(local); - bean = new DBBean(); - destBean = new DBBean(); - box2 = new JComboBox(); - box3 = new JComboBox(new String[] { "jdbc:fmpro:http://141.14.237.74:8050", "jdbc:fmpro:http://localhost", "jdbc:postgresql://foxridge/test" }); - box3.setEditable(true); - box4 = new JComboBox(new String[] {"jdbc:postgresql://foxridge/test","jdbc:postgresql://erebos/test1" }); - box4.setEditable(true); - box4.addActionListener(this); - table = new TableComponent(); - box = new JComboBox(tables); - box.addActionListener(this); - box2.addActionListener(this); - box3.addActionListener(this); - - contentPanel = new JPanel(); - contentPanel.setLayout(new BoxLayout(contentPanel, BoxLayout.Y_AXIS)); - topPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 5)); - topPanel.add(Box.createRigidArea(new Dimension(10, 0))); - topPanel.add(new JLabel("FileMaker DB ")); - topPanel.add(new JLabel("PostgresSQL ")); - //tListDest.setMinimumSize(new Dimension(120, 250)); - //tListDest.setMaximumSize(new Dimension(230, 250)); - //tListDest.setPreferredSize(new Dimension(230, 250)); - - box3.setMinimumSize(new Dimension(200, 20)); - box3.setMaximumSize(new Dimension(320, 20)); - box3.setPreferredSize(new Dimension(320, 20)); - box4.setMinimumSize(new Dimension(200, 20)); - box4.setMaximumSize(new Dimension(320, 20)); - box4.setPreferredSize(new Dimension(330, 20)); - - tC = new TableComponent(); - tC.sizeToFit(450, 250); - tC.tableModel.addTableModelListener(this); - JPanel dataBasePanel = new JPanel(); - dataBasePanel.setLayout(new BoxLayout(dataBasePanel,BoxLayout.LINE_AXIS)); - dataBasePanel.add(Box.createRigidArea(new Dimension(10, 0))); - dataBasePanel.add(new JLabel("Choose src database: ")); - dataBasePanel.add(box3); - dataBasePanel.add(Box.createRigidArea(new Dimension(10, 0))); - dataBasePanel.add(new JLabel("Choose dest database : ")); - dataBasePanel.add(Box.createRigidArea(new Dimension(5, 0))); - - dataBasePanel.add(box4); - dataBasePanel.add(Box.createRigidArea(new Dimension(10, 0))); - listPanel = new JPanel(); - listPanel.setLayout(new java.awt.GridBagLayout()); - java.awt.GridBagConstraints gbc = new java.awt.GridBagConstraints(); - JScrollPane pane = new JScrollPane(tList); - tC.tableScroller.setPreferredSize(new Dimension(450, 265)); - tC.table.revalidate(); - tC.setMinimumSize(tC.tableScroller.getPreferredSize()); - tC.setMaximumSize(tC.tableScroller.getPreferredSize()); - - //gbc.gridx=GridBagConstraints.RELATIVE; - gbc.gridx = 0; - gbc.weightx = 1.0; - gbc.weighty = 0.0; - gbc.gridwidth = 2; - gbc.gridheight = 1; - gbc.anchor = GridBagConstraints.NORTHWEST; - listPanel.add(new JLabel(" select Tables to Convert ", JLabel.LEFT), gbc); - gbc.gridx = 2; - listPanel.add(new JLabel(" Tables in database ", JLabel.CENTER), gbc); - - gbc.anchor = GridBagConstraints.WEST; - gbc.gridy = 1; - gbc.gridx = 0; - gbc.gridwidth = 1; - gbc.weightx = 0.0; - listPanel.add(tC, gbc); - JScrollPane paneDest = new JScrollPane(tListDest); - showTables1 = new JButton("show Tables"); - showTables1.setActionCommand("show Tables source"); - gbc.anchor = GridBagConstraints.NORTH; - gbc.weightx = 0.0; - gbc.gridx = 1; - listPanel.add(showTables1, gbc); - paneDest.setPreferredSize(new Dimension(250, 265)); - paneDest.setMinimumSize(paneDest.getPreferredSize()); - paneDest.setMaximumSize(paneDest.getPreferredSize()); - gbc.anchor = GridBagConstraints.WEST; - gbc.gridy = 1; - gbc.gridx = 2; - gbc.weightx = 0.2; - listPanel.add(paneDest, gbc); - JPanel buttonPanel = new JPanel(); - buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.Y_AXIS)); - convert = new JButton("Convert Tables"); - showTables = new JButton("show Tables"); - dropTables = new JButton("drop Tables"); - // System.out.println(convert.getPreferredSize()); - showTables.setMinimumSize(convert.getPreferredSize()); - dropTables.setMinimumSize(convert.getPreferredSize()); - showTables.setMaximumSize(convert.getPreferredSize()); - dropTables.setMaximumSize(convert.getPreferredSize()); - showTables.setPreferredSize(convert.getPreferredSize()); - dropTables.setPreferredSize(convert.getPreferredSize()); - - showTables.addActionListener(fm); - showTables1.addActionListener(fm); - - buttonPanel.add(showTables); - buttonPanel.add(convert); - convert.addActionListener(fm); - dropTables.addActionListener(fm); - buttonPanel.add(dropTables); - gbc.gridx = 3; - gbc.anchor = GridBagConstraints.NORTHWEST; - gbc.gridy = 1; - gbc.weightx = 1.0; - listPanel.add(buttonPanel, gbc); - contentPanel.add(dataBasePanel); - contentPanel.add(listPanel); - listPanel.setMaximumSize(new Dimension(getPreferredSize().width, 550)); - listPanel.setMinimumSize(new Dimension(getPreferredSize().width, 150)); - listPanel.setPreferredSize(new Dimension(getPreferredSize().width, 350)); - - getContentPane().add(contentPanel, "Center"); - this.addWindowListener(new WindowAdapter() - { - public void windowClosing(WindowEvent e) - { - System.exit(0); - } - }); - addComponentListener(new ComponentAdapter() - { - public void componentResized(ComponentEvent e) - { - - if (oldWidth != getWidth() || oldHeight != getHeight()) - { - table.sizeToFit(getWidth(), getHeight()); - - Dimension dim = table.table.getPreferredSize(); - int size = contentPanel.getPreferredSize().height + new JScrollBar().getPreferredSize().height + new JMenuBar().getPreferredSize().height + 10; - - table.tableScroller.setPreferredSize(new Dimension(getWidth() - 15, getHeight() - size)); - Dimension d2 = table.tableScroller.getPreferredSize(); - - oldWidth = getWidth(); - oldHeight = getHeight(); - - table.setPreferredSize(new Dimension(d2.width + 15, d2.height + 5)); - table.table.revalidate(); - table.tableScroller.revalidate(); - table.revalidate(); - if (getHeight() > table.table.getPreferredSize().height + (2 * size)) - setSize(getWidth(), table.table.getPreferredSize().height + 2 * size); - // System.out.println("size" + size); - } - listPanel.setMaximumSize(new Dimension(getPreferredSize().width - 5, 550)); - listPanel.setMinimumSize(new Dimension(getPreferredSize().width - 5, 200)); - listPanel.setPreferredSize(new Dimension(getPreferredSize().width - 5, 370)); - - ((JPanel) getContentPane()).revalidate(); - repaint(); - setTitle("Filemaker To Postgres Conversion Tool "); - - } - }); - - setMenu(); - //setSize(800, 600); - pack(); - setLocation((screenSize.width - getWidth()) / 2, (screenSize.height - getHeight()) / 2); - //setVisible(true); - validate(); - - // repaint(); - + initializeGUI(); } public void initializeGUI() throws Exception { @@ -310,7 +136,7 @@ public class FM2SQL extends JFrame imple box4.setMaximumSize(new Dimension(550, 20)); box4.setPreferredSize(new Dimension(450, 20)); paneDest = new JScrollPane(tListDest); - tListDest.setPreferredSize(paneDest.getPreferredSize()); + // tListDest.setPreferredSize(paneDest.getPreferredSize()); // paneDest.setPreferredSize(new Dimension(350, 365)); Dimension dim = paneDest.getPreferredSize(); paneDest.setMinimumSize(dim); @@ -375,7 +201,7 @@ public class FM2SQL extends JFrame imple gbc.gridheight = 1; gbc.fill = GridBagConstraints.BOTH; listPanel.add(tC.tableScroller, gbc); - gbc.fill = GridBagConstraints.VERTICAL; + // gbc.fill = GridBagConstraints.VERTICAL; destPanel.add(paneDest, gbc); showTables1 = new JButton("show Tables"); showTables1.setActionCommand("show Tables source"); @@ -386,10 +212,10 @@ public class FM2SQL extends JFrame imple gbc.gridx = 0; gbc.gridy = 2; - topPanel.add(showTables1, gbc); + // topPanel.add(showTables1, gbc); JPanel buttonPanel = new JPanel(); buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS)); - buttonPanel.setMinimumSize(new Dimension(200, 20)); + buttonPanel.setMinimumSize(new Dimension(380, 30)); convert = new JButton("Convert Tables"); showTables = new JButton("show Tables"); dropTables = new JButton("drop Tables"); @@ -410,7 +236,14 @@ public class FM2SQL extends JFrame imple dropTables.addActionListener(fm); buttonPanel.add(dropTables); + JPanel buttonPanelSrc = new JPanel(); + buttonPanelSrc.setLayout(new BoxLayout(buttonPanelSrc, BoxLayout.X_AXIS)); + buttonPanelSrc.setMinimumSize(new Dimension(200, 30)); + buttonPanelSrc.add(showTables1); + + topPanel.add(buttonPanelSrc, gbc); topPanel2.add(buttonPanel, gbc); + // gbc.anchor = GridBagConstraints.WEST; // gbc.gridy = 1; // gbc.gridx = 2; @@ -471,10 +304,14 @@ public class FM2SQL extends JFrame imple // listPanel.setPreferredSize(new Dimension(getPreferredSize().width - 5, 370)); tC.tableScroller.revalidate(); Dimension dim = getSize(); - tC.tableScroller.setMinimumSize(new Dimension(dim.width, dim.height - topPanel.getPreferredSize().height - 100)); + tC.tableScroller.setMinimumSize(new Dimension(dim.width-400, dim.height - topPanel.getPreferredSize().height - 100)); tC.tableScroller.setMaximumSize(getSize()); - paneDest.setMinimumSize(new Dimension(dim.width, dim.height - topPanel2.getPreferredSize().height - 100)); + tC.tableScroller.setPreferredSize(tC.tableScroller.getMinimumSize()); + + paneDest.setMinimumSize(new Dimension(400, dim.height - topPanel2.getPreferredSize().height - 100)); paneDest.setMaximumSize(tC.tableScroller.getMaximumSize()); + paneDest.setPreferredSize(new Dimension(400, dim.height - topPanel2.getPreferredSize().height - 100)); + paneDest.validate(); // tC.tableScroller.setPreferredSize(getSize()); tC.sizeToFit(getWidth(), getHeight()); @@ -712,8 +549,29 @@ public class FM2SQL extends JFrame imple { } } + if (command == "Convert Mode") + { + System.out.println("Convert Mode selected"); + convert.setText("Convert Tables"); + convert.setActionCommand("Convert Tables"); + mode = Convert.DataBase.CONVERT_MODE; + } + if (command == "Append Mode") + { + System.out.println("Append Mode selected"); + convert.setText("Append Tables"); + convert.setActionCommand("Append Tables"); + mode = Convert.DataBase.APPEND_MODE; + } + if (command == "Update Mode") + { + System.out.println("Update Mode selected"); + convert.setText("Update Tables"); + convert.setActionCommand("Update Tables"); + mode = Convert.DataBase.UPDATE_MODE; + } //writing config - if (command.equals("export XML Config")) + if (command.equals("save XML Config")) { if (configExportFileChooser == null) { @@ -747,7 +605,7 @@ public class FM2SQL extends JFrame imple configExportFileChooser.showDialog(fmInstance, " Save "); } - if (command.equals("import XML Config")) + if (command.equals("open XML Config")) { if (configImportFileChooser == null) { @@ -783,7 +641,7 @@ public class FM2SQL extends JFrame imple } - if (command.equals("Convert Tables")) + if (command.equals("Convert Tables")||command.equals("Append Tables")) { Thread thread = new Thread() @@ -798,6 +656,22 @@ public class FM2SQL extends JFrame imple }; thread.start(); } + if (command.equals("Update Tables")) + { + + Thread thread = new Thread() + { + public void run() + { + setEnabled(false); + update(); + setEnabled(true); + } + + }; + thread.start(); + } + if (command.equals("show Tables")) { Thread thread = new Thread() @@ -845,6 +719,49 @@ public class FM2SQL extends JFrame imple }; thread.start(); } + if(command.equals("Quit")) + { + fmInstance.dispose(); + System.exit(0); + + } + + } + /** + * Updates the content of source to destination and makes new table if necessary + */ + + public void update() + { + Vector vectors[] = getListFromTable(); + Convert.user = bean.user; + Convert.passwd = bean.passwd; + Convert.userDest = destBean.user; + Convert.passwdDest = destBean.passwd; + try + { + fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + fmInstance.setEnabled(false); + Convert.update(bean.url, box4.getSelectedItem().toString(), vectors[0], vectors[1], vectors[2], vectors[3],vectors[4], mode); + + destBean.setConnection((String) box4.getSelectedItem()); + DefaultListModel model = new DefaultListModel(); + tables = destBean.getTableNames(); + for (int j = 0; j < tables.size(); ++j) + model.addElement(tables.get(j)); + if (debug) + System.out.println("hallo" + tables + " "); + tListDest.setModel(model); + fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } catch (Exception e4) + { + ByteArrayOutputStream b = new ByteArrayOutputStream(); + PrintStream stream = new PrintStream(b); + e4.printStackTrace(stream); + showErrorDialog(b.toString(), "Conversion of table failed"); + fmInstance.setEnabled(true); + } + } /** * Copys the content of source to destination and makes new table if necessary @@ -861,7 +778,7 @@ public class FM2SQL extends JFrame imple { fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); fmInstance.setEnabled(false); - Convert.convert(bean.url, box4.getSelectedItem().toString(), vectors[0], vectors[1],vectors[2],vectors[3]); + Convert.convert(bean.url, box4.getSelectedItem().toString(), vectors[0], vectors[1],vectors[2],vectors[3],mode); destBean.setConnection((String) box4.getSelectedItem()); DefaultListModel model = new DefaultListModel(); @@ -887,8 +804,14 @@ public class FM2SQL extends JFrame imple fmInstance.setEnabled(false); Vector vectors[] = getListFromTable(); - Convert.DataBase source = new Convert.DataBase(bean,vectors[0],vectors[1],vectors[2],vectors[3]); - Convert.DataBase destination = new Convert.DataBase(destBean,new Vector(),new Vector(),new Vector(),new Vector()); + if(convertItem.isSelected()) mode = Convert.DataBase.CONVERT_MODE; + else + if(appendItem.isSelected()) mode = Convert.DataBase.APPEND_MODE; + else + if(updateItem.isSelected()) mode = Convert.DataBase.UPDATE_MODE; + // TODO add id vector in table and write it out + Convert.DataBase source = new Convert.DataBase(bean,vectors[0],vectors[1],vectors[2],vectors[3],vectors[4],mode); + Convert.DataBase destination = new Convert.DataBase(destBean,new Vector(),new Vector(),new Vector(),new Vector(),new Vector(),-1); try { @@ -916,7 +839,7 @@ public class FM2SQL extends JFrame imple fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); fmInstance.setEnabled(false); Vector databases = Convert.getXMLConfig(file); - DataBase destBase = (DataBase) databases.lastElement(); + Convert.DataBase destBase = (Convert.DataBase) databases.lastElement(); //destBase.bean.getConnection(); noUserUpdate = true; destBean=destBase.bean; @@ -928,7 +851,28 @@ public class FM2SQL extends JFrame imple for (Iterator iter = databases.iterator(); iter.hasNext();) { Convert.DataBase database = (Convert.DataBase) iter.next(); + + if (database.mode == Convert.DataBase.CONVERT_MODE) + { + convertItem.setSelected(true); + convert.setText("Convert Tables"); + convert.setActionCommand("Convert Tables"); + mode = Convert.DataBase.CONVERT_MODE; + } else if (database.mode == Convert.DataBase.APPEND_MODE) + { + appendItem.setSelected(true); + convert.setText("Append Tables"); + convert.setActionCommand("Append Tables"); + mode = Convert.DataBase.APPEND_MODE; + } else if (database.mode == Convert.DataBase.UPDATE_MODE) + { + updateItem.setSelected(true); + convert.setText("Update Tables"); + convert.setActionCommand("Update Tables"); + mode = Convert.DataBase.UPDATE_MODE; + } database.bean.getConnection(); + bean = database.bean; Object obj =bean.url; ((DefaultComboBoxModel) box3.getModel()).removeElement(obj); @@ -937,6 +881,7 @@ public class FM2SQL extends JFrame imple fillTable(); Vector tables=database.bean.getTableNames(); Collections.sort(tables,String.CASE_INSENSITIVE_ORDER); + int[] indices = new int[database.tables.size()]; for (int i =0;i