--- FM2SQL/Attic/FM2SQL.java 2003/12/10 12:24:41 1.2
+++ FM2SQL/Attic/FM2SQL.java 2004/01/28 12:22:35 1.14
@@ -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],vectors[4],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