--- FM2SQL/Attic/FM2SQL.java 2003/12/05 11:46:39 1.1.1.1
+++ FM2SQL/Attic/FM2SQL.java 2004/03/09 12:34:09 1.28
@@ -1,16 +1,57 @@
-import javax.swing.*;
-import javax.swing.event.*;
-import javax.swing.table.TableModel;
-
-import Convert.DataBase;
-
-import java.awt.event.*;
+import java.awt.Cursor;
import java.awt.Dimension;
-import java.awt.FlowLayout;
-import java.awt.*;
-import java.sql.*;
-import java.util.*;
-import java.io.*;
+import java.awt.Font;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+import java.awt.event.InputEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.PrintStream;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Vector;
+
+import javax.swing.Box;
+import javax.swing.BoxLayout;
+import javax.swing.ButtonGroup;
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.DefaultListModel;
+import javax.swing.JButton;
+import javax.swing.JCheckBoxMenuItem;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JFileChooser;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JMenu;
+import javax.swing.JMenuBar;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPasswordField;
+import javax.swing.JProgressBar;
+import javax.swing.JScrollBar;
+import javax.swing.JScrollPane;
+import javax.swing.JSplitPane;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+import javax.swing.KeyStroke;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
+import javax.swing.table.TableModel;
/**
*
*
@@ -20,12 +61,26 @@ 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 JMenuItem delimiterItem;
+ private JCheckBoxMenuItem convertItem;
+ private JCheckBoxMenuItem appendItem;
+ private JCheckBoxMenuItem updateItem;
+ private JCheckBoxMenuItem deleteItem;
+
+ int mode = -1;
+ final static int ID_INDEX = 1;
+ final static int SELECT_INDEX = 2;
+ final static int CREATE_INDEX = 3;
+ final static int LAYOUT_INDEX = 4;
+
+
+
/**
* The database Bean instance.
*
@@ -37,12 +92,7 @@ public class FM2SQL extends JFrame imple
*/
DBBean destBean;
- /**
- * box - Tablenames
- */
-
- JComboBox box;
- /**
+ /**
* tList - Tablenames to choose from
*/
@@ -50,24 +100,20 @@ public class FM2SQL extends JFrame imple
JList tListDest = new JList(new String[] { "no database connection", "", "" });
/**
- * box2 - Layout names
- */
-
- JComboBox box2;
- /**
- * box3 - Database URLs
+ * sourceUrl - Database URL ComboBox
*/
- JComboBox box3;
+ JComboBox sourceURLBox;
/**
- * box4 - Database URLs
+ * destUrlBox - Database URL ComboBox
*/
- JComboBox box4;
+ JComboBox destURLBox;
TableComponent table, tC;
Vector tables = new Vector();
Vector layouts = new Vector();
JPanel listPanel;
- JPanel topPanel, contentPanel;
+ JPanel topPanel,topPanel2, contentPanel;
+ JScrollPane paneDest;
FM2SQL fm = this;
boolean noDBUpdate = false;
boolean noUserUpdate = false;
@@ -91,6 +137,8 @@ public class FM2SQL extends JFrame imple
int oldWidth = 0, oldHeight = 0;
boolean resize = true;
static FileWriter logFile;
+ String delimiter = "";
+
Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
JFileChooser configExportFileChooser;
JFileChooser configImportFileChooser;
@@ -102,97 +150,119 @@ public class FM2SQL extends JFrame imple
*/
public FM2SQL() throws Exception
{
- Image local = getToolkit().getImage(getClass().getResource("icons/fm.jpg"));
+
+ initializeGUI();
+ }
+ public void initializeGUI() throws Exception
+ {
+ Image local = getToolkit().getImage(FM2SQL.class.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);
+ sourceURLBox = new JComboBox(new String[] { "jdbc:fmpro:http://141.14.237.74:8050", "jdbc:fmpro:http://localhost", "jdbc:postgresql://foxridge/test" });
+ sourceURLBox.setEditable(true);
+ sourceURLBox.setFont(new Font("Times New Roman",Font.PLAIN,14));
+ destURLBox = new JComboBox(new String[] { "jdbc:postgresql://foxridge/test", "jdbc:postgresql://erebos/test1" });
+ destURLBox.setEditable(true);
+ destURLBox.addActionListener(this);
+ destURLBox.setFont(new Font("Times New Roman",Font.PLAIN,14));
table = new TableComponent();
- box = new JComboBox(tables);
- box.addActionListener(this);
- box2.addActionListener(this);
- box3.addActionListener(this);
+ //box = new JComboBox(tables);
+ // box.addActionListener(this);
+ // box2.addActionListener(this);
+ sourceURLBox.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));
+ sourceURLBox.setMinimumSize(new Dimension(450, 25));
+ sourceURLBox.setMaximumSize(new Dimension(550, 25));
+ sourceURLBox.setPreferredSize(new Dimension(450, 25));
+ destURLBox.setMinimumSize(new Dimension(450, 25));
+ destURLBox.setMaximumSize(new Dimension(550, 25));
+ destURLBox.setPreferredSize(new Dimension(450, 25));
+ paneDest = new JScrollPane(tListDest);
+ // tListDest.setPreferredSize(paneDest.getPreferredSize());
+ // paneDest.setPreferredSize(new Dimension(350, 365));
+ Dimension dim = paneDest.getPreferredSize();
+ paneDest.setMinimumSize(dim);
+ //paneDest.setMaximumSize(new Dimension(dim.width + 50, dim.height + 50));
+
tC = new TableComponent();
tC.sizeToFit(450, 250);
tC.tableModel.addTableModelListener(this);
- JPanel dataBasePanel = new JPanel();
- dataBasePanel.setLayout(new FlowLayout(FlowLayout.LEFT, 2, 2));
- 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)));
+ JPanel destPanel = new JPanel();
+ destPanel.setLayout(new java.awt.GridBagLayout());
- 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());
+ tC.tableScroller.setPreferredSize(new Dimension(450, 365));
+ //tC.table.revalidate();
+ tC.tableScroller.setMinimumSize(new Dimension(450, 250));
+ // tC.tableScroller.setMaximumSize(tC.tableScroller.getPreferredSize());
+ topPanel = new JPanel();
+ topPanel.setLayout(new GridBagLayout());
+ topPanel2 = new JPanel();
+ topPanel2.setLayout(new GridBagLayout());
- //gbc.gridx=GridBagConstraints.RELATIVE;
gbc.gridx = 0;
- gbc.weightx = 1.0;
- gbc.weighty = 0.0;
- gbc.gridwidth = 2;
+ gbc.gridy = 0;
+ gbc.weightx = 0.1;
+ gbc.weighty = 0.1;
+ gbc.gridwidth = 1;
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.insets = new Insets(2, 2, 5, 5);
+ gbc.ipadx = 1;
+ gbc.ipady = 1;
gbc.anchor = GridBagConstraints.WEST;
+ listPanel.add(topPanel, gbc);
+ destPanel.add(topPanel2, gbc);
+
+ topPanel.add(new JLabel("Choose src database: ", JLabel.CENTER), gbc);
+ topPanel2.add(new JLabel("Choose dest database : ", JLabel.CENTER), gbc);
+
+ gbc.anchor = GridBagConstraints.NORTHWEST;
+ gbc.gridy = 1;
+ topPanel.add(sourceURLBox, gbc);
+
+ topPanel2.add(destURLBox, gbc);
+
+ //gbc.gridx=GridBagConstraints.RELATIVE;
+ //dataBasePanel.add(new JLabel(" select Tables to Convert ", JLabel.LEFT));
gbc.gridy = 1;
+ gbc.anchor = GridBagConstraints.SOUTHWEST;
+
+ listPanel.add(new JLabel(" select Tables to Convert ", JLabel.LEFT), gbc);
+ destPanel.add(new JLabel(" Tables in database ", JLabel.LEFT), gbc);
+
+ // gbc.anchor = GridBagConstraints.WEST;
+ gbc.gridy = 2;
gbc.gridx = 0;
- gbc.gridwidth = 1;
- gbc.weightx = 0.0;
- listPanel.add(tC, gbc);
- JScrollPane paneDest = new JScrollPane(tListDest);
+ // gbc.weightx = 0.0;
+ //dataBasePanel.add(tC);
+ gbc.anchor = GridBagConstraints.NORTHWEST;
+ gbc.gridheight = 1;
+ gbc.fill = GridBagConstraints.BOTH;
+ listPanel.add(tC.tableScroller, gbc);
+ // gbc.fill = GridBagConstraints.VERTICAL;
+ destPanel.add(paneDest, gbc);
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);
+ // gbc.anchor = GridBagConstraints.NORTH;
+ // gbc.weightx = 0.0;
+ gbc.fill = GridBagConstraints.NONE;
+ gbc.gridheight = 1;
+
+ gbc.gridx = 0;
+ gbc.gridy = 2;
+ // topPanel.add(showTables1, gbc);
JPanel buttonPanel = new JPanel();
- buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.Y_AXIS));
+ buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
+ buttonPanel.setMinimumSize(new Dimension(380, 30));
convert = new JButton("Convert Tables");
showTables = new JButton("show Tables");
dropTables = new JButton("drop Tables");
@@ -212,18 +282,37 @@ public class FM2SQL extends JFrame imple
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");
+ 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;
+ // gbc.weightx = 0.2;
+
+ // gbc.gridx = 3;
+ // gbc.anchor = GridBagConstraints.NORTHWEST;
+ // gbc.gridy = 1;
+ // gbc.weightx = 1.0;
+ //listPanel.add(buttonPanel, gbc);
+ JSplitPane splitter = new JSplitPane();
+ splitter.setTopComponent(listPanel);
+ splitter.setBottomComponent(destPanel);
+
+ // contentPanel.add(dataBasePanel);
+ // contentPanel.add(listPanel);
+ listPanel.setMaximumSize(new Dimension(660, 750));
+ listPanel.setMinimumSize(new Dimension(660, 250));
+ listPanel.setPreferredSize(new Dimension(480, 500));
+ paneDest.setPreferredSize(new Dimension(250, 285));
+
+ getContentPane().add(splitter, "Center");
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
@@ -238,7 +327,7 @@ public class FM2SQL extends JFrame imple
if (oldWidth != getWidth() || oldHeight != getHeight())
{
- table.sizeToFit(getWidth(), getHeight());
+ //table.sizeToFit(getWidth(), getHeight());
Dimension dim = table.table.getPreferredSize();
int size = contentPanel.getPreferredSize().height + new JScrollBar().getPreferredSize().height + new JMenuBar().getPreferredSize().height + 10;
@@ -257,13 +346,26 @@ public class FM2SQL extends JFrame imple
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));
-
+ // listPanel.setMaximumSize(new Dimension(getPreferredSize().width - 5, 550));
+ // listPanel.setMinimumSize(new Dimension(getPreferredSize().width - 5, 200));
+ // listPanel.setPreferredSize(new Dimension(getPreferredSize().width - 5, 370));
+ tC.tableScroller.revalidate();
+ Dimension dim = getSize();
+ tC.tableScroller.setMinimumSize(new Dimension(dim.width-400, dim.height - topPanel.getPreferredSize().height - 100));
+ tC.tableScroller.setMaximumSize(getSize());
+ 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());
+ // @TODO new sizeToFit method for listPanel table!!!
+ tC.sizeToFit(getWidth(), getHeight());
((JPanel) getContentPane()).revalidate();
repaint();
- setTitle("Filemaker To Postgres Conversion Tool ");
+ setTitle("Filemaker 2 SQL Conversion Tool ");
}
});
@@ -339,23 +441,23 @@ public class FM2SQL extends JFrame imple
if (command == "comboBoxEdited")
{
Object src = e.getSource();
- if (src == box3)
+ if (src == sourceURLBox)
{
if (debug)
- System.out.println("hey" + box3.getSelectedItem());
- Object insObj =box3.getSelectedItem();
- ((DefaultComboBoxModel) box3.getModel()).removeElement(insObj);
+ System.out.println("hey" + sourceURLBox.getSelectedItem());
+ Object insObj =sourceURLBox.getSelectedItem();
+ ((DefaultComboBoxModel) sourceURLBox.getModel()).removeElement(insObj);
- ((DefaultComboBoxModel) box3.getModel()).insertElementAt(insObj, 0);
- box3.setSelectedItem(insObj);
- } else if (src == box4)
+ ((DefaultComboBoxModel) sourceURLBox.getModel()).insertElementAt(insObj, 0);
+ sourceURLBox.setSelectedItem(insObj);
+ } else if (src == destURLBox)
{
if (debug)
- System.out.println("hey" + box4.getSelectedItem());
+ System.out.println("hey" + destURLBox.getSelectedItem());
//((DefaultComboBoxModel) box4.getModel()).insertElementAt(box4.getSelectedItem(), 0);
try
{
- String selected = (String) box4.getSelectedItem();
+ String selected = (String) destURLBox.getSelectedItem();
destBean.setConnection(selected);
Vector catalogs = destBean.getCatalogs();
Vector urls = new Vector();
@@ -363,8 +465,8 @@ public class FM2SQL extends JFrame imple
{
urls.add(destBean.url.substring(0, destBean.url.lastIndexOf("/") + 1) + catalogs.get(i));
}
- box4.setModel(new DefaultComboBoxModel(urls));
- box4.setSelectedItem(selected);
+ destURLBox.setModel(new DefaultComboBoxModel(urls));
+ destURLBox.setSelectedItem(selected);
} catch (Exception e5)
{
}
@@ -377,7 +479,7 @@ public class FM2SQL extends JFrame imple
//System.out.println("hallo " + (e.getSource() == box3));
Object src = e.getSource();
- if (src == box3&&!noUserUpdate)
+ if (src == sourceURLBox&&!noUserUpdate)
{
Thread thread = new Thread()
{
@@ -387,12 +489,12 @@ public class FM2SQL extends JFrame imple
try
{
PasswordDialog dialog = new PasswordDialog(fmInstance, bean);
- dialog.setLocationRelativeTo(box3);
+ dialog.setLocationRelativeTo(sourceURLBox);
dialog.thread = Thread.currentThread();
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
fmInstance.setEnabled(false);
dialog.setVisible(true);
- String url = box3.getSelectedItem().toString();
+ String url = sourceURLBox.getSelectedItem().toString();
bean.url = (url != null) ? url : bean.url;
bean.connection = null;
bean.getConnection();
@@ -424,7 +526,7 @@ public class FM2SQL extends JFrame imple
}
};
thread.start();
- } else if (src == box4&&!noUserUpdate)
+ } else if (src == destURLBox&&!noUserUpdate)
{
Thread thread = new Thread()
{
@@ -435,12 +537,12 @@ public class FM2SQL extends JFrame imple
{
PasswordDialog dialog = new PasswordDialog(fmInstance, destBean);
- dialog.setLocationRelativeTo(box4);
+ dialog.setLocationRelativeTo(destURLBox);
dialog.thread = Thread.currentThread();
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
fmInstance.setEnabled(false);
dialog.setVisible(true);
- destBean.setConnection((String) box4.getSelectedItem());
+ destBean.setConnection((String) destURLBox.getSelectedItem());
DefaultListModel model = new DefaultListModel();
Vector tables = destBean.getTableNames();
for (int j = 0; j < tables.size(); ++j)
@@ -468,7 +570,7 @@ public class FM2SQL extends JFrame imple
thread.start();
}
- setTitle("Filemaker To Postgres Conversion Tool ");
+ setTitle("Filemaker 2 SQL Conversion Tool ");
// pack();
} catch (Exception e4)
@@ -495,8 +597,49 @@ public class FM2SQL extends JFrame imple
{
}
}
+ if (command.equals("Delimiter"))
+ {
+ new DelimiterDialog(fmInstance).setVisible(true);
+ //delimiter = JOptionPane.showInputDialog(fmInstance,"Enter delimiter String",delimiter);
+
+ }
+
+ if (command == "Convert Mode")
+ {
+ System.out.println("Convert Mode selected");
+ convert.setText("Convert Tables");
+ convert.setActionCommand("Convert Tables");
+ convert.setToolTipText("Normal table conversion existing table will be deleted");
+ mode = Convert.DataBase.CONVERT_MODE;
+ }
+ if (command == "Append Mode")
+ {
+ System.out.println("Append Mode selected");
+ convert.setText("Append Tables");
+ convert.setActionCommand("Append Tables");
+ convert.setToolTipText("Appends data to an existing table");
+
+ mode = Convert.DataBase.APPEND_MODE;
+ }
+ if (command == "Update Mode")
+ {
+ System.out.println("Update Mode selected");
+ convert.setText("Update Tables");
+ convert.setActionCommand("Update Tables");
+ convert.setToolTipText("Updates data that has been changed in source");
+ mode = Convert.DataBase.UPDATE_MODE;
+ }
+ if (command == "Delete Mode")
+ {
+ System.out.println("Delete Mode selected");
+ convert.setText("Delete Tables");
+ convert.setActionCommand("Delete Tables");
+ convert.setToolTipText("Deletes data that has been deleted in source");
+ mode = Convert.DataBase.DELETE_MODE;
+ }
+
//writing config
- if (command.equals("export XML Config"))
+ if (command.equals("save XML Config"))
{
if (configExportFileChooser == null)
{
@@ -530,7 +673,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)
{
@@ -566,7 +709,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()
@@ -581,6 +724,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()
@@ -628,6 +787,50 @@ 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, destURLBox.getSelectedItem().toString(), vectors[0], vectors[1], vectors[2], vectors[3],vectors[4], mode);
+
+ destBean.setConnection((String) destURLBox.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(), "Update of table failed");
+ fmInstance.setEnabled(true);
+ }
+
}
/**
* Copys the content of source to destination and makes new table if necessary
@@ -644,9 +847,8 @@ 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]);
-
- destBean.setConnection((String) box4.getSelectedItem());
+ Convert.convert(bean.url, destURLBox.getSelectedItem().toString(), vectors[0], vectors[1],vectors[2],vectors[3],vectors[4],mode,delimiter);
+ destBean.setConnection((String) destURLBox.getSelectedItem());
DefaultListModel model = new DefaultListModel();
tables = destBean.getTableNames();
for (int j = 0; j < tables.size(); ++j)
@@ -670,9 +872,15 @@ 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);
+ source.delimiter =delimiter;
try
{
Convert.writeConfig(file,source,destination);
@@ -699,44 +907,78 @@ 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;
Object destObj =destBean.url;
- ((DefaultComboBoxModel) box4.getModel()).removeElement(destObj);
- ((DefaultComboBoxModel) box4.getModel()).insertElementAt(destObj,0);
- box4.setSelectedItem(destObj);
- //@TODO comboBox action Events should do nothing on config file read+combox in table should be updated
+ ((DefaultComboBoxModel) destURLBox.getModel()).removeElement(destObj);
+ ((DefaultComboBoxModel) destURLBox.getModel()).insertElementAt(destObj,0);
+ destURLBox.setSelectedItem(destObj);
databases.remove(destBase);
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;
+ }
+ delimiter=database.delimiter;
database.bean.getConnection();
+
bean = database.bean;
Object obj =bean.url;
- ((DefaultComboBoxModel) box3.getModel()).removeElement(obj);
- ((DefaultComboBoxModel) box3.getModel()).insertElementAt(obj,0);
- box3.setSelectedItem(obj);
+ ((DefaultComboBoxModel) sourceURLBox.getModel()).removeElement(obj);
+ ((DefaultComboBoxModel) sourceURLBox.getModel()).insertElementAt(obj,0);
+ sourceURLBox.setSelectedItem(obj);
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