--- FM2SQL/Attic/FM2SQL.java 2004/01/19 08:24:37 1.13
+++ FM2SQL/Attic/FM2SQL.java 2004/06/22 10:33:53 1.39
@@ -1,13 +1,72 @@
-import javax.swing.*;
-import javax.swing.event.*;
-import javax.swing.table.TableModel;
+/*
+ * FM2SQL.java -- Main program Filemaker to SQL Converter
+ * Copyright (C) 2003 Robert Gordesch (rogo@mpiwg-berlin.mpg.de)
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version. Please read license.txt for the full details. A copy of
+ * the GPL may be found at http://www.gnu.org/copyleft/lgpl.html You should
+ * have received a copy of the GNU General Public License along with this
+ * program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA Created on 15.09.2003 by
+ * rogo
+ */
-import java.awt.event.*;
+import java.awt.Cursor;
import java.awt.Dimension;
-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.text.ParseException;
+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;
/**
*
*
@@ -23,10 +82,22 @@ import java.io.*;
*/
public class FM2SQL extends JFrame implements ActionListener, TableModelListener
{
+ private JMenuItem delimiterItem;
private JCheckBoxMenuItem convertItem;
private JCheckBoxMenuItem appendItem;
private JCheckBoxMenuItem updateItem;
+ private JCheckBoxMenuItem deleteItem;
+ private JCheckBoxMenuItem useNormanToUnicodeMapper;
int mode = -1;
+ final static int STATUS_INDEX = 0;
+ final static int NAME_INDEX = 1;
+ final static int ID_INDEX = 2;
+ final static int SELECT_INDEX = 3;
+ final static int CREATE_INDEX = 4;
+ final static int LAYOUT_INDEX = 5;
+
+
+
/**
* The database Bean instance.
*
@@ -38,12 +109,7 @@ public class FM2SQL extends JFrame imple
*/
DBBean destBean;
- /**
- * box - Tablenames
- */
-
- JComboBox box;
- /**
+ /**
* tList - Tablenames to choose from
*/
@@ -51,18 +117,13 @@ 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();
@@ -93,6 +154,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;
@@ -109,32 +172,33 @@ public class FM2SQL extends JFrame imple
}
public void initializeGUI() throws Exception
{
- Image local = getToolkit().getImage(getClass().getResource("icons/fm.jpg"));
+ 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));
- box3.setMinimumSize(new Dimension(450, 20));
- box3.setMaximumSize(new Dimension(550, 20));
- box3.setPreferredSize(new Dimension(450, 20));
- box4.setMinimumSize(new Dimension(450, 20));
- box4.setMaximumSize(new Dimension(550, 20));
- box4.setPreferredSize(new Dimension(450, 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));
@@ -180,9 +244,9 @@ public class FM2SQL extends JFrame imple
gbc.anchor = GridBagConstraints.NORTHWEST;
gbc.gridy = 1;
- topPanel.add(box3, gbc);
+ topPanel.add(sourceURLBox, gbc);
- topPanel2.add(box4, gbc);
+ topPanel2.add(destURLBox, gbc);
//gbc.gridx=GridBagConstraints.RELATIVE;
//dataBasePanel.add(new JLabel(" select Tables to Convert ", JLabel.LEFT));
@@ -280,7 +344,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;
@@ -314,6 +378,7 @@ public class FM2SQL extends JFrame imple
paneDest.validate();
// tC.tableScroller.setPreferredSize(getSize());
+ // @TODO new sizeToFit method for listPanel table!!!
tC.sizeToFit(getWidth(), getHeight());
((JPanel) getContentPane()).revalidate();
repaint();
@@ -393,23 +458,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();
@@ -417,8 +482,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)
{
}
@@ -431,7 +496,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()
{
@@ -441,12 +506,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();
@@ -478,7 +543,7 @@ public class FM2SQL extends JFrame imple
}
};
thread.start();
- } else if (src == box4&&!noUserUpdate)
+ } else if (src == destURLBox&&!noUserUpdate)
{
Thread thread = new Thread()
{
@@ -489,12 +554,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)
@@ -549,11 +614,19 @@ 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")
@@ -561,6 +634,8 @@ public class FM2SQL extends JFrame imple
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")
@@ -568,8 +643,21 @@ public class FM2SQL extends JFrame imple
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;
+ }
+if(command.equals("use NormanToUnicodeMapper"))
+{
+ if(bean!=null) bean.setUseNormanToUnicodeMapper(useNormanToUnicodeMapper.isSelected());
+}
//writing config
if (command.equals("save XML Config"))
{
@@ -671,6 +759,21 @@ public class FM2SQL extends JFrame imple
};
thread.start();
}
+ if (command.equals("Delete Tables"))
+ {
+
+ Thread thread = new Thread()
+ {
+ public void run()
+ {
+ setEnabled(false);
+ delete();
+ setEnabled(true);
+ }
+
+ };
+ thread.start();
+ }
if (command.equals("show Tables"))
{
@@ -740,11 +843,12 @@ public class FM2SQL extends JFrame imple
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);
+ Convert.update(bean.url, destURLBox.getSelectedItem().toString(), vectors[0], vectors[1], vectors[2], vectors[3],vectors[4], mode);
- destBean.setConnection((String) box4.getSelectedItem());
+ destBean.setConnection((String) destURLBox.getSelectedItem());
DefaultListModel model = new DefaultListModel();
tables = destBean.getTableNames();
for (int j = 0; j < tables.size(); ++j)
@@ -758,11 +862,45 @@ public class FM2SQL extends JFrame imple
ByteArrayOutputStream b = new ByteArrayOutputStream();
PrintStream stream = new PrintStream(b);
e4.printStackTrace(stream);
- showErrorDialog(b.toString(), "Conversion of table failed");
+ showErrorDialog(b.toString(), "Update of table failed");
fmInstance.setEnabled(true);
}
}
+ public void delete()
+ {
+ 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.delete(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(), "Delete of table failed");
+ fmInstance.setEnabled(true);
+ }
+
+ }
+
/**
* Copys the content of source to destination and makes new table if necessary
*/
@@ -778,9 +916,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],mode);
-
- 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)
@@ -809,10 +946,14 @@ public class FM2SQL extends JFrame imple
if(appendItem.isSelected()) mode = Convert.DataBase.APPEND_MODE;
else
if(updateItem.isSelected()) mode = Convert.DataBase.UPDATE_MODE;
+ else
+ if(deleteItem.isSelected()) mode = Convert.DataBase.DELETE_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;
+ source.useNormanToUnicodeMapper=useNormanToUnicodeMapper.isSelected();
try
{
Convert.writeConfig(file,source,destination);
@@ -844,9 +985,9 @@ public class FM2SQL extends JFrame imple
noUserUpdate = true;
destBean=destBase.bean;
Object destObj =destBean.url;
- ((DefaultComboBoxModel) box4.getModel()).removeElement(destObj);
- ((DefaultComboBoxModel) box4.getModel()).insertElementAt(destObj,0);
- box4.setSelectedItem(destObj);
+ ((DefaultComboBoxModel) destURLBox.getModel()).removeElement(destObj);
+ ((DefaultComboBoxModel) destURLBox.getModel()).insertElementAt(destObj,0);
+ destURLBox.setSelectedItem(destObj);
databases.remove(destBase);
for (Iterator iter = databases.iterator(); iter.hasNext();)
{
@@ -854,30 +995,26 @@ public class FM2SQL extends JFrame imple
if (database.mode == Convert.DataBase.CONVERT_MODE)
{
- convertItem.setSelected(true);
- convert.setText("Convert Tables");
- convert.setActionCommand("Convert Tables");
- mode = Convert.DataBase.CONVERT_MODE;
+ convertItem.doClick();
} else if (database.mode == Convert.DataBase.APPEND_MODE)
{
- appendItem.setSelected(true);
- convert.setText("Append Tables");
- convert.setActionCommand("Append Tables");
- mode = Convert.DataBase.APPEND_MODE;
+ appendItem.doClick();
} else if (database.mode == Convert.DataBase.UPDATE_MODE)
{
- updateItem.setSelected(true);
- convert.setText("Update Tables");
- convert.setActionCommand("Update Tables");
- mode = Convert.DataBase.UPDATE_MODE;
+ updateItem.doClick();
+ } else if (database.mode == Convert.DataBase.DELETE_MODE)
+ {
+ deleteItem.doClick();
}
+ delimiter=database.delimiter;
database.bean.getConnection();
-
+
bean = database.bean;
+ if(bean.isUseNormanToUnicodeMapper()) useNormanToUnicodeMapper.setSelected(true);
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);
@@ -888,15 +1025,33 @@ public class FM2SQL extends JFrame imple
int index=tables.indexOf(table);
if(index<0) throw new RuntimeException("Error table \""+table+"\" does no longer exist\n at server "+bean.url +"\n or you mispelled the tablename.");
noDBUpdate = true;
- tC.tableModel.setValueAt(new TableComponent.SQLCommand(database.selects.get(i).toString()),index,2);
+ tC.tableModel.setValueAt(new TableComponent.SQLCommand(database.selects.get(i).toString()),index,SELECT_INDEX);
String create =database.creates.get(i).toString();
- tC.tableModel.setValueAt(new TableComponent.SQLCommand(create.equals("") ? create:" "+create),index,3);
- tC.tableModel.setValueAt(new TableComponent.SQLCommand(bean.ids.get(i).toString()),index,4);
+ tC.tableModel.setValueAt(new TableComponent.SQLCommand(create.equals("") ? create:" "+create),index,CREATE_INDEX);
+ // tC.tableModel.setValueAt(new TableComponent.SQLCommand(bean.ids.get(i).toString()),index,ID_INDEX);
- Object comboBox=tC.tableModel.getValueAt(index,1);
+ Object comboBox=tC.tableModel.getValueAt(index,LAYOUT_INDEX);
+ Object idcomboBox=tC.tableModel.getValueAt(index,ID_INDEX);
+
indices[i] = index;
- if(comboBox!=null) ((JComboBox)comboBox).setSelectedItem(database.layouts.get(i));
+ if (comboBox != null)
+ {
+ String layout = database.layouts.get(i).toString();
+ ((JComboBox) comboBox).setSelectedItem(layout);
+ if (layout != "")
+ {
+ bean.makeQuery("select * from" + bean.getQC() + table + bean.getQC() + " layout " + bean.getQC() + layout + bean.getQC(), 1);
+
+ Vector idVec = bean.getColumnNames();
+ if (idVec == null)
+ idVec = new Vector();
+ idVec.add(0, "");
+ ((JComboBox) idcomboBox).setModel(new DefaultComboBoxModel(idVec));
+ }
+
+ }
+ if(idcomboBox!=null)((JComboBox)idcomboBox).setSelectedItem(bean.ids.get(i));
tC.tableModel.fireTableDataChanged();
noDBUpdate = false;
noUserUpdate = false;
@@ -905,8 +1060,10 @@ public class FM2SQL extends JFrame imple
// add Selections
ListSelectionModel lm = tC.table.getSelectionModel();
for(int i=0;i 0) ? destBean.getQueryData(query, dialog, 50) : bean.getQueryData(query, dialog, 50);
+ Vector[] vecs = (list > 0) ? destBean.getQueryData(query, dialog, 0) : bean.getQueryData(query, dialog, 0);
if (vecs[1].isEmpty())
throw new Exception("Wrong columnname or Empty Layout");
window.updateResult(vecs[0], vecs[1]);
@@ -1090,7 +1247,7 @@ public class FM2SQL extends JFrame imple
} // to for
try
{
- destBean.setConnection((String) box4.getSelectedItem());
+ destBean.setConnection((String) destURLBox.getSelectedItem());
DefaultListModel model = new DefaultListModel();
tables = destBean.getTableNames();
for (int j = 0; j < tables.size(); ++j)
@@ -1128,19 +1285,35 @@ public class FM2SQL extends JFrame imple
{
if(columnName.equals("select")||columnName.equals("Layouts"))
{
- String table = model.getValueAt(row,0).toString();
- String layout = (model.getValueAt(row,1)!=null) ?((JComboBox)model.getValueAt(row,1)).getSelectedItem().toString():"";
- String query = model.getValueAt(row,2).toString();
- String create = model.getValueAt(row,3).toString();
+ String table = model.getValueAt(row,NAME_INDEX).toString();
+ String layout = (model.getValueAt(row,LAYOUT_INDEX)!=null) ?((JComboBox)model.getValueAt(row,LAYOUT_INDEX)).getSelectedItem().toString():"";
+ String query = model.getValueAt(row,SELECT_INDEX).toString();
+ String create = model.getValueAt(row,CREATE_INDEX).toString();
+ String id = (model.getValueAt(row,ID_INDEX)!=null) ?((JComboBox)model.getValueAt(row,ID_INDEX)).getSelectedItem().toString():"";
+
System.out.println("table" +table+" layout "+layout+" query "+query);
if(!create.equals(""))
{
Object[] options = { "Yes","No"};
int option=showDialog("Create Statement not empty! Do you want to overwrite?","create statement",options );
if(option==0)
- model.setValueAt(createStatement(table,destBean,layout,query),row,3);
+ model.setValueAt(createStatement(table,destBean,layout,query),row,CREATE_INDEX);
+ }
+ if (columnName.equals("Layouts"))
+ {
+
+ bean.makeQuery("select * from"+bean.getQC()+table+bean.getQC()+" layout "+bean.getQC()+layout+bean.getQC(),1);
+
+ Vector idVec = bean.getColumnNames();
+ if (idVec == null)
+ idVec = new Vector();
+ idVec.add(0, "");
+ JComboBox box = ((JComboBox) model.getValueAt(row, ID_INDEX));
+ box.setModel(new DefaultComboBoxModel(idVec));
+ box.setSelectedItem(id);
+
+ tC.tableModel.fireTableCellUpdated(row,ID_INDEX);
}
-
}
/* Statement stm = bean.getConnection().createStatement();
@@ -1196,12 +1369,6 @@ public class FM2SQL extends JFrame imple
menu = new JMenu("Options");
menu.setMnemonic('O');
- item = new JMenuItem("show Driver features");
- item.setToolTipText("shows the features of the selected driver");
- item.addActionListener(fm);
- menu.add(item);
- menubar.add(menu);
-
ButtonGroup bgrp = new ButtonGroup();
convertItem = new JCheckBoxMenuItem("Convert Mode");
convertItem.setToolTipText("Normal table conversion existing table will be deleted");
@@ -1228,10 +1395,32 @@ public class FM2SQL extends JFrame imple
bgrp.add(updateItem);
menu.add(updateItem);
+ deleteItem = new JCheckBoxMenuItem("Delete Mode");
+ deleteItem.setToolTipText("Deletes data in an existing table \n that has been deleted in source table");
+ deleteItem.addActionListener(fm);
+
+ bgrp.add(deleteItem);
+
+ menu.add(deleteItem);
+ useNormanToUnicodeMapper = new JCheckBoxMenuItem("use NormanToUnicodeMapper");
+ useNormanToUnicodeMapper.setToolTipText("maps characters in norman encoding to unicode characters");
+ useNormanToUnicodeMapper.addActionListener(fm);
+ menu.add(useNormanToUnicodeMapper);
+
menubar.add(menu);
-
+ item = new JMenuItem("show Driver features");
+ item.setToolTipText("shows the features of the selected driver");
item.addActionListener(fm);
menu.add(item);
+ menubar.add(menu);
+ delimiterItem = new JMenuItem("Delimiter");
+ delimiterItem.setToolTipText("Delimiter for FM Arrayfields");
+ delimiterItem.addActionListener(fm);
+ menu.add(delimiterItem);
+ menubar.add(menu);
+
+ // item.addActionListener(fm);
+// menu.add(item);
menubar.add(menu);
@@ -1311,9 +1500,12 @@ public class FM2SQL extends JFrame imple
JProgressBar progress = new JProgressBar();
JButton cancel = new JButton("Cancel");
Thread thread;
- public ProgressDialog(JFrame frame)
+ DBBean bean;
+ public ProgressDialog(JFrame frame,DBBean bean)
{
super(frame);
+ this.bean = bean;
+
content = new JPanel(true);
//content.setBorder(BorderFactory.createRaisedBevelBorder());
content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
@@ -1348,6 +1540,18 @@ public class FM2SQL extends JFrame imple
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
fmInstance.setEnabled(true);
setVisible(false);
+ try
+ {
+ ProgressDialog.this.bean.getConnection().close();
+ } catch (SQLException e1)
+ {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ } catch (Exception e1)
+ {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
thread.stop();
}
});
@@ -1356,6 +1560,117 @@ public class FM2SQL extends JFrame imple
}
}
+ public static class DelimiterDialog extends JDialog
+ {
+ JLabel table = new JLabel(" ");
+ JLabel status = new JLabel(" ");
+ JLabel title = new JLabel(" ");
+ JPanel content = new JPanel();
+ JPanel titlePanel = new JPanel();
+ JPanel delimiterPanel = new JPanel();
+ JPanel buttonPanel = new JPanel();
+ JTextField delimiter = new JTextField(10);
+
+ JButton cancel = new JButton("Cancel");
+ JButton ok = new JButton("Ok");
+ Thread thread;
+ public DelimiterDialog(JFrame frame)
+ {
+ super(frame);
+ setTitle("Delimiter Editor");
+ setModal(true);
+ content = new JPanel(true);
+ delimiter.setText(fmInstance.delimiter);
+ ActionListener al = new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ fmInstance.delimiter=parseDelimiter(delimiter.getText());
+ setVisible(false);
+ }
+
+ };
+ this.addWindowListener(new WindowAdapter()
+ {
+ public void windowClosing(WindowEvent e)
+ {
+ cancel.doClick();
+ }
+ });
+
+ //delimiter.setText(fmInstance.delimiter);
+ delimiter.addActionListener(al);
+ content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
+ title = new JLabel("Enter Delimiter ");
+ title.setHorizontalTextPosition(title.CENTER);
+ titlePanel.add(title);
+ buttonPanel.add(ok);
+ buttonPanel.add(cancel);
+ content.add(titlePanel);
+ content.add(Box.createRigidArea(new java.awt.Dimension(0, 15)));
+
+ content.add(new JLabel(""));
+ content.add(delimiterPanel);
+ content.add(buttonPanel);
+ content.add(Box.createRigidArea(new java.awt.Dimension(0, 15)));
+
+ delimiterPanel.add(new JLabel("Delimiter: "));
+ delimiterPanel.add(delimiter);
+ getContentPane().add(titlePanel, "North");
+ getContentPane().add(content, "Center");
+ ok.addActionListener(al);
+ cancel.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+ fmInstance.setEnabled(true);
+ setVisible(false);
+ // thread.stop();
+ }
+
+ });
+ pack();
+ setLocationRelativeTo(fmInstance);
+ }
+ public String parseDelimiter(Object o)
+ {
+ String str = o.toString();
+ StringBuffer sbuff = new StringBuffer();
+ int length = str.length();
+ for(int i = 0;i