import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.TableModel;
import java.awt.event.*;
import java.awt.Dimension;
import java.awt.*;
import java.sql.*;
import java.util.*;
import java.io.*;
/**
*
* <br>
* <h2>FileMaker Test (JDBC Database Driver Test)</h2>
* Main class :
* contains the main Frame, all event handlers etc
* <br>
* The Database access is made over DBBean class
* all other classes are just for the visualization of the data
* @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.
*
*/
DBBean bean;
/**
* The database destination Bean instance.
*
*/
DBBean destBean;
/**
* box - Tablenames
*/
JComboBox box;
/**
* tList - Tablenames to choose from
*/
JList tList = new JList(new String[] { "no database", "connection", "" });
JList tListDest = new JList(new String[] { "no database connection", "", "" });
/**
* box2 - Layout names
*/
JComboBox box2;
/**
* box3 - Database URLs
*/
JComboBox box3;
/**
* box4 - Database URLs
*/
JComboBox box4;
TableComponent table, tC;
Vector tables = new Vector();
Vector layouts = new Vector();
JPanel listPanel;
JPanel topPanel,topPanel2, contentPanel;
JScrollPane paneDest;
FM2SQL fm = this;
boolean noDBUpdate = false;
boolean noUserUpdate = false;
int id = 0;
static boolean debug = false;
/**
* The result window used for query results
*/
MultiResultWindow window;
/**
* The result window used for query results
*/
MultiResultWindow windowDest;
static FM2SQL fmInstance;
static String url = "jdbc:fmpro:http://141.14.237.42";
JButton showTables = new JButton(), showTables1 = new JButton();
JButton convert = new JButton();
JButton dropTables = new JButton();
int oldWidth = 0, oldHeight = 0;
boolean resize = true;
static FileWriter logFile;
Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
JFileChooser configExportFileChooser;
JFileChooser configImportFileChooser;
/**
* tries to connect to database specified in url-Variable.
* initializes all GUI components, then fails throws an exception
*
*/
public FM2SQL() throws Exception
{
initializeGUI();
}
public void initializeGUI() throws Exception
{
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));
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));
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 destPanel = new JPanel();
destPanel.setLayout(new java.awt.GridBagLayout());
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, 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 = 0;
gbc.gridy = 0;
gbc.weightx = 0.1;
gbc.weighty = 0.1;
gbc.gridwidth = 1;
gbc.gridheight = 1;
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(box3, gbc);
topPanel2.add(box4, 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.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.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.X_AXIS));
buttonPanel.setMinimumSize(new Dimension(380, 30));
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);
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)
{
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));
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());
tC.sizeToFit(getWidth(), getHeight());
((JPanel) getContentPane()).revalidate();
repaint();
setTitle("Filemaker 2 SQL Conversion Tool ");
}
});
setMenu();
//setSize(800, 600);
pack();
setLocation((screenSize.width - getWidth()) / 2, (screenSize.height - getHeight()) / 2);
//setVisible(true);
validate();
// repaint();
}
/**
*
*/
public static void main(String[] args)
{
try
{
System.setErr(System.out);
// Properties prop = System.getProperties();
// Enumeration enum= prop.keys();
// while(enum.hasMoreElements())
//System.out.println(enum.nextElement());
if (System.getProperty("os.name").startsWith("W"))
// javax.swing.UIManager.setLookAndFeel(
// new com.sun.java.swing.plaf.windows.WindowsLookAndFeel());
javax.swing.UIManager.put("Table.focusCellHighlightBorder", new javax.swing.border.LineBorder(java.awt.Color.black));
javax.swing.UIManager.put("Table.focusCellBackground", new java.awt.Color(227, 227, 227, 127));
fmInstance = new FM2SQL();
fmInstance.table.tableModel.addTableModelListener(fmInstance);
fmInstance.setVisible(true);
/* if (!new File("./html").exists())
new File("./html").mkdirs();
logFile = new FileWriter("./html/index.html");
openLog();
*/
} catch (Exception e)
{
JOptionPane pane = new JOptionPane(e.getMessage() + " \n URL: " + url, JOptionPane.ERROR_MESSAGE);
JDialog dialog = pane.createDialog(null, " Exception occured while connecting");
e.printStackTrace();
dialog.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
dialog.addComponentListener(new ComponentAdapter()
{
public void componentHidden(ComponentEvent e)
{
System.exit(0);
}
});
dialog.show();
}
}
public void actionPerformed(ActionEvent e)
{
String command = e.getActionCommand();
if (debug)
System.out.println("command " + command);
if (command == "comboBoxEdited")
{
Object src = e.getSource();
if (src == box3)
{
if (debug)
System.out.println("hey" + box3.getSelectedItem());
Object insObj =box3.getSelectedItem();
((DefaultComboBoxModel) box3.getModel()).removeElement(insObj);
((DefaultComboBoxModel) box3.getModel()).insertElementAt(insObj, 0);
box3.setSelectedItem(insObj);
} else if (src == box4)
{
if (debug)
System.out.println("hey" + box4.getSelectedItem());
//((DefaultComboBoxModel) box4.getModel()).insertElementAt(box4.getSelectedItem(), 0);
try
{
String selected = (String) box4.getSelectedItem();
destBean.setConnection(selected);
Vector catalogs = destBean.getCatalogs();
Vector urls = new Vector();
for (int i = 0; i < catalogs.size(); ++i)
{
urls.add(destBean.url.substring(0, destBean.url.lastIndexOf("/") + 1) + catalogs.get(i));
}
box4.setModel(new DefaultComboBoxModel(urls));
box4.setSelectedItem(selected);
} catch (Exception e5)
{
}
}
}
if (command == "comboBoxChanged")
{
try
{
//System.out.println("hallo " + (e.getSource() == box3));
Object src = e.getSource();
if (src == box3&&!noUserUpdate)
{
Thread thread = new Thread()
{
public void run()
{
try
{
PasswordDialog dialog = new PasswordDialog(fmInstance, bean);
dialog.setLocationRelativeTo(box3);
dialog.thread = Thread.currentThread();
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
fmInstance.setEnabled(false);
dialog.setVisible(true);
String url = box3.getSelectedItem().toString();
bean.url = (url != null) ? url : bean.url;
bean.connection = null;
bean.getConnection();
tables = bean.getTableNames();
fillTable();
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
fmInstance.setEnabled(true);
// System.out.println("hallo" + tables + " ");
} catch (Exception e5)
{
ByteArrayOutputStream b = new ByteArrayOutputStream();
PrintStream stream = new PrintStream(b);
e5.printStackTrace(stream);
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
fmInstance.setEnabled(true);
Vector header = new Vector();
header.add("no database");
header.add("connection");
Vector rows = new Vector();
//rows.add(header);
noDBUpdate=true;
tC.tableModel.setDataVector(rows, header);
tC.tableModel.setRowCount(20);
tC.revalidate();
tC.tableModel.fireTableDataChanged();
noDBUpdate=false;
showErrorDialog(b.toString(), "Error occured !");
}
}
};
thread.start();
} else if (src == box4&&!noUserUpdate)
{
Thread thread = new Thread()
{
public void run()
{
try
{
PasswordDialog dialog = new PasswordDialog(fmInstance, destBean);
dialog.setLocationRelativeTo(box4);
dialog.thread = Thread.currentThread();
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
fmInstance.setEnabled(false);
dialog.setVisible(true);
destBean.setConnection((String) box4.getSelectedItem());
DefaultListModel model = new DefaultListModel();
Vector tables = destBean.getTableNames();
for (int j = 0; j < tables.size(); ++j)
model.addElement(tables.get(j));
// System.out.println("hallo" + tables + " ");
tListDest.setModel(model);
// System.out.println("hallo" + tables + " ");
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
fmInstance.setEnabled(true);
} catch (Exception e5)
{
ByteArrayOutputStream b = new ByteArrayOutputStream();
PrintStream stream = new PrintStream(b);
e5.printStackTrace(stream);
fmInstance.setEnabled(true);
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
DefaultListModel model = new DefaultListModel();
model.addElement("no database connection");
tListDest.setModel(model);
showErrorDialog(b.toString(), "Error occured !");
}
}
};
thread.start();
}
setTitle("Filemaker 2 SQL Conversion Tool ");
// pack();
} catch (Exception e4)
{
ByteArrayOutputStream b = new ByteArrayOutputStream();
PrintStream stream = new PrintStream(b);
e4.printStackTrace(stream);
showErrorDialog(b.toString(), "Open of table failed");
}
}
if (command == "show Driver features")
{
ResultWindow result = new ResultWindow(this);
try
{
Vector[] vecs = bean.TestDB(bean.getConnection().getMetaData());
result.updateResult(vecs[0], vecs[1]);
// result.pack();
result.title = "Database features";
result.setVisible(true);
String name = result.writeResult();
} catch (Exception e2)
{
}
}
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("save XML Config"))
{
if (configExportFileChooser == null)
{
configExportFileChooser = new JFileChooser();
configExportFileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
configExportFileChooser.setFileFilter(new XMLFilter());
configExportFileChooser.setDialogType(JFileChooser.SAVE_DIALOG);
configExportFileChooser.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e2)
{
System.out.println(e2.getActionCommand());
if (!e2.getActionCommand().toString().equals("ApproveSelection"))
return;
Thread thread = new Thread()
{
public void run()
{
File configFile = configExportFileChooser.getSelectedFile();
writeConfig(configFile.toString());
}
};
thread.start();
}
});
}
configExportFileChooser.rescanCurrentDirectory();
configExportFileChooser.showDialog(fmInstance, " Save ");
}
if (command.equals("open XML Config"))
{
if (configImportFileChooser == null)
{
configImportFileChooser = new JFileChooser();
configImportFileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
configImportFileChooser.setFileFilter(new XMLFilter());
configImportFileChooser.setDialogType(JFileChooser.OPEN_DIALOG);
configImportFileChooser.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e2)
{
System.out.println(e2.getActionCommand());
if (!e2.getActionCommand().toString().equals("ApproveSelection"))
return;
Thread thread = new Thread()
{
public void run()
{
File configFile = configImportFileChooser.getSelectedFile();
readXMLConfig(configFile.toString());
}
};
thread.start();
}
});
}
configImportFileChooser.rescanCurrentDirectory();
configImportFileChooser.showDialog(fmInstance, " Open ");
}
if (command.equals("Convert Tables")||command.equals("Append Tables"))
{
Thread thread = new Thread()
{
public void run()
{
setEnabled(false);
convert();
setEnabled(true);
}
};
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()
{
public void run()
{
fmInstance.setEnabled(false);
boolean visible = showTable(1);
window.validate();
window.setVisible(visible);
fmInstance.setEnabled(true);
}
};
thread.start();
// System.out.println("hello");
}
if (command.equals("show Tables source"))
{
Thread thread = new Thread()
{
public void run()
{
fmInstance.setEnabled(false);
boolean visible = showTable(0);
window.validate();
window.setVisible(visible);
fmInstance.setEnabled(true);
}
};
thread.start();
// System.out.println("hello"+thread);
}
if (command.equals("drop Tables"))
{
Thread thread = new Thread()
{
public void run()
{
dropTable();
}
};
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
*/
public void convert()
{
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.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();
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);
}
}
public void writeConfig(String file)
{
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
fmInstance.setEnabled(false);
Vector vectors[] = getListFromTable();
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
{
Convert.writeConfig(file,source,destination);
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
fmInstance.setEnabled(true);
} catch (Exception e)
{
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
fmInstance.setEnabled(true);
ByteArrayOutputStream b = new ByteArrayOutputStream();
PrintStream stream = new PrintStream(b);
e.printStackTrace(stream);
showErrorDialog(b.toString(), "Error while writing xml config !");
}
}
public void readXMLConfig(String file)
{
try
{
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
fmInstance.setEnabled(false);
Vector databases = Convert.getXMLConfig(file);
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);
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;
}
database.bean.getConnection();
bean = database.bean;
Object obj =bean.url;
((DefaultComboBoxModel) box3.getModel()).removeElement(obj);
((DefaultComboBoxModel) box3.getModel()).insertElementAt(obj,0);
box3.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<database.tables.size();++i)
{
String table = (String) database.tables.get(i);
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);
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);
Object comboBox=tC.tableModel.getValueAt(index,1);
indices[i] = index;
if(comboBox!=null) ((JComboBox)comboBox).setSelectedItem(database.layouts.get(i));
tC.tableModel.fireTableDataChanged();
noDBUpdate = false;
noUserUpdate = false;
}
// add Selections
ListSelectionModel lm = tC.table.getSelectionModel();
for(int i=0;i<indices.length;++i)
lm.addSelectionInterval(indices[i],indices[i]);
destBean.getConnection();
DefaultListModel model = new DefaultListModel();
tables = destBean.getTableNames();
for (int j = 0; j < tables.size(); ++j)
model.addElement(tables.get(j));
// System.out.println("hallo" + tables + " ");
tListDest.setModel(model);
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
fmInstance.setEnabled(true);
}
} catch (Exception e)
{
noUserUpdate = false;
noDBUpdate = false;
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
fmInstance.setEnabled(true);
ByteArrayOutputStream b = new ByteArrayOutputStream();
PrintStream stream = new PrintStream(b);
e.printStackTrace(stream);
showErrorDialog(b.toString(), "Error while reading xml config !");
}
}
public boolean showTable(int list)
{
ProgressDialog dialog = new ProgressDialog(fm);
dialog.setTitle("Preparing tables to be displayed");
dialog.thread = Thread.currentThread();
dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
String query = new String();
Object[] objs = tListDest.getSelectedValues();
Vector[] vectors = getListFromTable();
Vector tables = (list == 0) ? vectors[0] : new Vector();
if (list > 0)
for (int i = 0; i < objs.length; ++i)
{
if (debug)
System.out.println(objs[i]);
tables.add(objs[i]);
}
if (window != null)
window.dispose();
if (windowDest != null)
windowDest.dispose();
window = new MultiResultWindow(fm);
if (list > 0)
{
windowDest = new MultiResultWindow(fm);
window = windowDest;
}
dialog.setLocation(FM2SQL.fmInstance.getLocationOnScreen().x + (FM2SQL.fmInstance.getWidth() - 500) / 2, FM2SQL.fmInstance.getLocationOnScreen().y + (FM2SQL.fmInstance.getHeight() - 250) / 2);
dialog.setSize(500, 250);
if (!tables.isEmpty())
dialog.show();
dialog.title.setText("Preparing tables to be diplayed");
for (int i = 0; i < tables.size(); ++i)
{
dialog.table.setText("Getting table " + tables.get(i));
dialog.status.setText("Table " + (i + 1) + " of " + tables.size());
if(list==0)
query = "select * from " + bean.getQC() +tables.get(i).toString() + bean.getQC();
else
query = "select * from " + destBean.getQC() +tables.get(i).toString() + destBean.getQC();
if(list==0) query = vectors[2].get(i).toString();
if (list == 0 && vectors[1].get(i) != null)
if (vectors[1].get(i).toString() != "")
{
String layout =" layout " + bean.getQC() + vectors[1].get(i).toString() + bean.getQC();
String name = tables.get(i).toString();
StringBuffer queryLayout=new StringBuffer(query);
queryLayout.insert(queryLayout.indexOf(name)+name.length()+1," "+layout);
query=queryLayout.toString();
}
if(debug)
showErrorDialog("query in show tables is "+query,"Hello");
window.title = " Table ;-) " + (String) tables.get(i);
// break;
// } else
// window.title = "Error! - No valid tablename found";
try
{
if ((query.toLowerCase().indexOf("insert") >= 0)
|| (query.toLowerCase().indexOf("delete") >= 0)
|| (query.toLowerCase().indexOf("alter") >= 0)
|| (query.toLowerCase().indexOf("update") >= 0))
{
Statement stm = (list > 0) ? destBean.getConnection().createStatement() : bean.getConnection().createStatement();
stm.executeUpdate(query);
Vector vec = new Vector();
Vector vec2 = new Vector();
Vector vec3 = new Vector();
vec2.add(query);
vec3.add(vec2);
vec.add("Insert, update, etc done! No results available");
// vec.add("no Results were produced");
window.updateResult(vec3, vec);
//window.pack();
// window.setVisible(true);
} else
{
Vector[] vecs = (list > 0) ? destBean.getQueryData(query, dialog, 50) : bean.getQueryData(query, dialog, 50);
if (vecs[1].isEmpty())
throw new Exception("Wrong columnname or Empty Layout");
window.updateResult(vecs[0], vecs[1]);
//window.pack();
//String name = window.writeResult();
//appendLog(window.title, name);
}
//window.setVisible(true);
} catch (Exception e)
{
System.out.println("Exception occured");
e.printStackTrace();
Vector vec = new Vector();
Vector vec2 = new Vector();
Vector vec3 = new Vector();
vec2.add(e.getMessage());
vec3.add(vec2);
vec.add("Exception occured! No results available");
//vec.add("no Results were produced");
window.updateResult(vec3, vec);
//window.pack();
// window.setVisible(true);
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
} // to for
window.pack();
window.setSize(700, 600);
window.oldTabCount = 10000;
dialog.dispose();
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
return !tables.isEmpty();
}
public void dropTable()
{
String query = new String();
Object[] objs = tListDest.getSelectedValues();
Vector tables = new Vector();
for (int i = 0; i < objs.length; ++i)
{
System.out.println(objs[i]);
tables.add(objs[i]);
}
for (int i = 0; i < tables.size(); ++i)
{
query = "drop table "+destBean.getQC() + tables.get(i) + destBean.getQC();
try
{
Statement stm = destBean.getConnection().createStatement();
stm.executeUpdate(query);
} catch (Exception e)
{
ByteArrayOutputStream b = new ByteArrayOutputStream();
PrintStream stream = new PrintStream(b);
e.printStackTrace(stream);
showErrorDialog(b.toString(), "Open of table failed");
}
} // to for
try
{
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));
System.out.println("hallo" + tables + " ");
tListDest.setModel(model);
} catch (Exception e4)
{
}
}
/**
* invoked then the user changes the table or the tableModel changes
*/
public void tableChanged(TableModelEvent e)
{
// if (e.getType() == e.INSERT)
//System.out.println("Insert done");
// if (e.getType() == e.UPDATE)
// System.out.println("Update done");
//if (e.getType() == e.DELETE)
// System.out.println("Delete done");
if (e.getType() == e.UPDATE && !noDBUpdate)
{
int row = e.getFirstRow(), col = e.getColumn();
System.out.println("Got in " + row + " " + col );
TableModel model = (TableModel)e.getSource();
String columnName = model.getColumnName(col);
Object test = model.getValueAt(row, col);
String idVal = (test == null) ? "" : test.toString();
String value = (test == null) ? "" : test.toString();;
System.out.println("Got in " + columnName +" "+idVal);
try
{
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();
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);
}
}
/* Statement stm = bean.getConnection().createStatement();
// stm.executeUpdate("DELETE FROM \""+fm.tables.get(0)+"\" WHERE \"erstellt von\"='rogo') ");
if (idVal == "")
stm.executeUpdate("INSERT INTO " + DBBean.quoteChar + box.getSelectedItem() + DBBean.quoteChar + " (" + DBBean.quoteChar + columnName + DBBean.quoteChar + ") VALUES ('" + value + "') ");
else
stm.executeUpdate(
"UPDATE " + DBBean.quoteChar + box.getSelectedItem() + DBBean.quoteChar + " SET " + DBBean.quoteChar + columnName + DBBean.quoteChar + "='" + value + "' WHERE ID='" + idVal + "' ");
*/
} catch (Exception e2)
{
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
ByteArrayOutputStream b = new ByteArrayOutputStream();
PrintStream stream = new PrintStream(b);
e2.printStackTrace(stream);
showErrorDialog(b.toString(), "Error while updating table !");
}
}
}
/**
* initialize the menubar
*/
private void setMenu()
{
JMenuBar menubar = new JMenuBar();
JMenu menu = new JMenu("File");
menu.setMnemonic('F');
JMenuItem item = new JMenuItem("open XML Config");
item.setToolTipText("opens a XML config file for batch conversion");
item.setMnemonic('i');
item.setAccelerator(KeyStroke.getKeyStroke('O',InputEvent.CTRL_DOWN_MASK));
item.addActionListener(fm);
menu.add(item);
item = new JMenuItem("save XML Config");
item.setToolTipText("saves the current selections in an XML config file for batch conversion");
item.setAccelerator(KeyStroke.getKeyStroke('S',InputEvent.CTRL_DOWN_MASK));
item.setMnemonic('x');
item.addActionListener(fm);
menu.add(item);
item = new JMenuItem("Quit");
item.setMnemonic('Q');
item.setToolTipText("Quits the application");
item.setAccelerator(KeyStroke.getKeyStroke('Q',InputEvent.CTRL_DOWN_MASK));
item.addActionListener(fm);
menu.add(item);
menubar.add(menu);
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");
convertItem.addActionListener(fm);
bgrp.add(convertItem);
menu.add(convertItem);
menubar.add(menu);
appendItem = new JCheckBoxMenuItem("Append Mode");
appendItem.setToolTipText("Appends data to an existing table");
appendItem.addActionListener(fm);
bgrp.add(appendItem);
menu.add(appendItem);
menubar.add(menu);
updateItem = new JCheckBoxMenuItem("Update Mode");
updateItem.setToolTipText("Updates data in an existing table");
updateItem.addActionListener(fm);
bgrp.add(updateItem);
menu.add(updateItem);
menubar.add(menu);
item.addActionListener(fm);
menu.add(item);
menubar.add(menu);
menu.setBackground(fm.getBackground());
menubar.setBackground(fm.getBackground());
convertItem.doClick();
setJMenuBar(menubar);
}
/**
* open the log file (index.html)
*/
public static void openLog() throws Exception
{
StringBuffer buff = new StringBuffer();
buff.append("<html>");
buff.append("<head>");
buff.append("\n<title>");
buff.append("FileMaker Test");
buff.append("</title>\n");
buff.append("</head>\n");
buff.append("<body>\n");
buff.append("<center>\n");
buff.append("\n<h3>");
buff.append("FileMaker Test");
buff.append("</h3>\n");
logFile.write(TableComponent.convertUml(buff).toString());
logFile.flush();
}
/**
* Append one entry to the log file(index.html)
*/
public static void appendLog(String entry, String name) throws Exception
{
logFile.write("<a href=\"./" + name.substring(name.lastIndexOf("/") + 1) + "\">");
logFile.write(entry + "</a>");
logFile.write("<br>\n<br>\n");
logFile.flush();
}
/**
* closes the log file invoked then the application closes
*/
public static void closeLog() throws Exception
{
logFile.write("\n</body>");
logFile.write("\n</html>");
logFile.close();
}
public static void showErrorDialog(String message, String title)
{
JDialog dialog = new JDialog(fmInstance);
dialog.setTitle(title);
JTextArea text = new JTextArea();
JScrollPane scroller = new JScrollPane(text);
dialog.getContentPane().add(scroller);
text.append(message);
dialog.setSize(600, 300);
dialog.setLocationRelativeTo(fmInstance);
dialog.show();
//JOptionPane.showMessageDialog(null, message, title, JOptionPane.ERROR_MESSAGE);
}
public static class ProgressDialog extends JDialog
{
JLabel table = new JLabel(" ");
JLabel status = new JLabel(" ");
JLabel title = new JLabel(" ");
JPanel content = new JPanel();
JPanel titlePanel = new JPanel();
JPanel labelPanel = new JPanel();
JPanel statusPanel = new JPanel();
JPanel buttonPanel = new JPanel();
JProgressBar progress = new JProgressBar();
JButton cancel = new JButton("Cancel");
Thread thread;
public ProgressDialog(JFrame frame)
{
super(frame);
content = new JPanel(true);
//content.setBorder(BorderFactory.createRaisedBevelBorder());
content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
title = new JLabel("Progress of conversion");
title.setHorizontalTextPosition(title.CENTER);
titlePanel.add(title);
buttonPanel.add(cancel);
// content.add(titlePanel);
content.add(Box.createRigidArea(new java.awt.Dimension(0, 15)));
content.add(labelPanel);
content.add(new JLabel(""));
content.add(progress);
content.add(statusPanel);
content.add(buttonPanel);
content.add(Box.createRigidArea(new java.awt.Dimension(0, 15)));
labelPanel.add(table);
statusPanel.add(status);
getContentPane().add(titlePanel, "North");
getContentPane().add(content, "Center");
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
cancel.doClick();
}
});
cancel.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
fmInstance.setEnabled(true);
setVisible(false);
thread.stop();
}
});
pack();
}
}
public static class PasswordDialog extends JDialog
{
JLabel table = new JLabel(" ");
JLabel status = new JLabel(" ");
JLabel title = new JLabel(" ");
JPanel content = new JPanel();
JPanel titlePanel = new JPanel();
JPanel userPanel = new JPanel();
JPanel passwordPanel = new JPanel();
JPanel buttonPanel = new JPanel();
JTextField user = new JTextField(10);
JTextField passwd = new JPasswordField(10);
JButton cancel = new JButton("Cancel");
JButton ok = new JButton("Ok");
DBBean bean = null;
Thread thread;
public PasswordDialog(JFrame frame, DBBean localBean)
{
super(frame);
setTitle("PasswordDialog");
setModal(true);
content = new JPanel(true);
this.bean = localBean;
//content.setBorder(BorderFactory.createRaisedBevelBorder());
ActionListener al = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
bean.setUserAndPasswd(user.getText(), passwd.getText());
setVisible(false);
}
};
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
cancel.doClick();
}
});
user.setText(localBean.user);
passwd.setText(localBean.passwd);
user.addActionListener(al);
passwd.addActionListener(al);
content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
title = new JLabel("Enter user and password ");
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(labelPanel);
content.add(new JLabel(""));
content.add(userPanel);
content.add(passwordPanel);
content.add(buttonPanel);
content.add(Box.createRigidArea(new java.awt.Dimension(0, 15)));
//labelPanel.add(table);
userPanel.add(new JLabel("Username: "));
userPanel.add(user);
passwordPanel.add(new JLabel("Password: "));
passwordPanel.add(passwd);
passwd.setPreferredSize(user.getPreferredSize());
passwd.setMinimumSize(passwd.getPreferredSize());
passwd.setMaximumSize(passwd.getPreferredSize());
passwd.setSize(passwd.getPreferredSize());
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();
}
}
public void fillTable()
{
noDBUpdate = true;
Vector tableNames = bean.getTableNames();
Collections.sort(tableNames, String.CASE_INSENSITIVE_ORDER);
Vector[] data = new Vector[2];
data[1] = new Vector();
data[1].add("Table");
data[1].add("Layouts");
data[1].add("select");
data[1].add("create");
data[1].add(" id ");
// TODO add id vector DBBean
data[0] = new Vector();
for (int i = 0; i < tableNames.size(); i++)
{
String name = tableNames.get(i).toString();
Vector layouts = new Vector();
try
{
layouts = bean.getLayoutNames(name);
} catch (SQLException e)
{
layouts = new Vector();
}
Vector dataRow = new Vector();
dataRow.add(name);
if (!layouts.isEmpty())
dataRow.add(new JComboBox(layouts));
else
dataRow.add(null);
dataRow.add(new TableComponent.SQLCommand("select * from "+bean.getQC()+name+bean.getQC()));
data[0].add(dataRow);
// create row
dataRow.add(new TableComponent.SQLCommand(""));
// id row
dataRow.add(new TableComponent.SQLCommand(""));
bean.ids.add("");
//System.out.println(dataRow);
}
tC.tableModel.setDataVector(data[0], data[1]);
tC.revalidate();
tC.tableModel.fireTableDataChanged();
noDBUpdate = false;
}
public Vector[] getListFromTable()
{
Vector[] vec = new Vector[5];
vec[0] = new Vector();
vec[1] = new Vector();
vec[2] = new Vector();
vec[3] = new Vector();
vec[4] = new Vector();
int[] rows = tC.table.getSelectedRows();
for (int i = 0; i < rows.length; i++)
{
//System.out.println(tC.tableModel.getValueAt(rows[i],1));
vec[0].add(tC.tableModel.getValueAt(rows[i], 0));
JComboBox box = ((JComboBox) tC.tableModel.getValueAt(rows[i], 1));
String layoutName = (box != null) ? box.getSelectedItem().toString() : "";
vec[1].add(layoutName);
vec[2].add(tC.tableModel.getValueAt(rows[i], 2).toString());
vec[3].add(tC.tableModel.getValueAt(rows[i], 3).toString());
vec[4].add(tC.tableModel.getValueAt(rows[i], 4).toString());
}
return vec;
}
public void setEnabled(boolean state)
{
showTables.setEnabled(state);
showTables1.setEnabled(state);
convert.setEnabled(state);
dropTables.setEnabled(state);
box3.setEnabled(state);
box4.setEnabled(state);
}
public TableComponent.SQLCommand createStatement(String table,DBBean beanDest,String layout,String query) throws SQLException
{
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
if(beanDest.url.equals("")) beanDest.url=box4.getSelectedItem().toString();
StringBuffer command = new StringBuffer(50);
command.append("\n CREATE TABLE ");
command.append(beanDest.getQC());
command.append(Convert.convertText(table));
command.append(beanDest.getQC());
command.append("\n ( ");
String type = null;
// String query = "select * from " + bean.getQC() +table + bean.getQC();
if (!layout.equals(""))
{
layout = " layout " + bean.getQC() + layout + bean.getQC();
StringBuffer queryLayout = new StringBuffer(query);
queryLayout.insert(queryLayout.indexOf(table) + table.length() + 1, " " + layout);
query = queryLayout.toString();
System.out.println("added layout "+ query);
}
Vector[] result=bean.getQueryData(query,1);
for (int i = 0; i < result[1].size() - 1; ++i)
{
type = bean.metaData.getColumnTypeName(i + 1);
// System.out.println(i+" "+result[1].get(i)+" "+type);
type = (type.equals("NUMBER")) ? "INT4" : type;
type = (type.equals("CONTAINER")) ? "TEXT" : type;
type = type.toUpperCase();
if(i==0)
command.append(beanDest.getQC() + Convert.convertText((String) result[1].get(i)) + beanDest.getQC() + " " + type + ", ");
else
command.append(" "+beanDest.getQC() + Convert.convertText((String) result[1].get(i)) + beanDest.getQC() + " " + type + ", ");
command.append("\n");
}
type = bean.metaData.getColumnTypeName(result[1].size());
type = (type.equals("NUMBER")) ? "INT4" : type;
type = (type.equals("CONTAINER")) ? "TEXT" : type;
type = type.toUpperCase();
command.append(" "+beanDest.getQC() + Convert.convertText((String) result[1].get(result[1].size() - 1)) + beanDest.getQC() + " " + type);
command.append("\n )\n");
fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
return new TableComponent.SQLCommand(command.toString());
}
static class XMLFilter extends javax.swing.filechooser.FileFilter
{
public boolean accept(java.io.File file)
{
if (file.getName().toLowerCase().endsWith(".xml") || file.isDirectory())
return true;
else
return false;
}
public String getDescription()
{
return "Batch Convert XML File";
}
}
public static int showDialog(String message, String title, Object[] options)
{
int option = JOptionPane.showOptionDialog(null, message, title, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]);
return option;
}
}
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>