--- FM2SQL/Attic/FM2SQL.java 2004/02/17 13:16:00 1.17 +++ FM2SQL/Attic/FM2SQL.java 2004/03/02 12:04:26 1.22 @@ -70,7 +70,16 @@ public class FM2SQL extends JFrame imple 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. * @@ -127,6 +136,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; @@ -590,6 +601,7 @@ public class FM2SQL extends JFrame imple 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") @@ -597,6 +609,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") @@ -604,8 +618,18 @@ 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; + } + //writing config if (command.equals("save XML Config")) { @@ -776,6 +800,7 @@ 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, destURLBox.getSelectedItem().toString(), vectors[0], vectors[1], vectors[2], vectors[3],vectors[4], mode); @@ -794,7 +819,7 @@ 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); } @@ -814,7 +839,7 @@ public class FM2SQL extends JFrame imple { fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); fmInstance.setEnabled(false); - Convert.convert(bean.url, destURLBox.getSelectedItem().toString(), vectors[0], vectors[1],vectors[2],vectors[3],vectors[4],mode); + 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(); @@ -924,15 +949,18 @@ 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(idcomboBox!=null)((JComboBox)idcomboBox).setSelectedItem(bean.ids.get(i)); tC.tableModel.fireTableDataChanged(); noDBUpdate = false; noUserUpdate = false; @@ -1165,18 +1193,32 @@ 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 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(),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); } - } /* Statement stm = bean.getConnection().createStatement(); @@ -1264,6 +1306,14 @@ 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); + menubar.add(menu); item.addActionListener(fm); @@ -1486,45 +1536,59 @@ public class FM2SQL extends JFrame imple Vector tableNames = bean.getTableNames(); Collections.sort(tableNames, String.CASE_INSENSITIVE_ORDER); Vector[] data = new Vector[2]; - data[1] = new Vector(); - data[1].add(" source Tablename "); - data[1].add("Layouts"); - data[1].add("select"); - data[1].add("create"); - data[1].add(" id "); + data[1] = new Vector(5); + data[1].setSize(5); + data[1].set(0," source Tablename "); + data[1].set(LAYOUT_INDEX,"Layouts"); + data[1].set(SELECT_INDEX,"select"); + data[1].set(CREATE_INDEX,"create"); + data[1].set(ID_INDEX," id "); data[0] = new Vector(); for (int i = 0; i < tableNames.size(); i++) { String name = tableNames.get(i).toString(); Vector layouts = new Vector(); + Vector idVec = new Vector(); + try { + bean.makeQuery("select * from"+bean.getQC()+name+bean.getQC(),1); layouts = bean.getLayoutNames(name); } catch (SQLException e) { layouts = new Vector(); } - Vector dataRow = new Vector(); - dataRow.add(name); + + idVec = bean.getColumnNames(); + if(idVec==null) idVec=new Vector(); + idVec.add(0,""); + Vector dataRow = new Vector(5); + + dataRow.setSize(5); + dataRow.set(0,name); + + dataRow.set(SELECT_INDEX,new TableComponent.SQLCommand("select * from " + bean.getQC() + name + bean.getQC())); 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); + dataRow.set(LAYOUT_INDEX,new JComboBox(layouts)); + else + dataRow.set(LAYOUT_INDEX,null); + // create row - dataRow.add(new TableComponent.SQLCommand("")); + dataRow.set(CREATE_INDEX,new TableComponent.SQLCommand("")); // id row - dataRow.add(new TableComponent.SQLCommand("")); + dataRow.set(ID_INDEX,new TableComponent.IDComboBox(idVec));//new TableComponent.SQLCommand("")); bean.ids.add(""); + data[0].add(dataRow); + //System.out.println(dataRow); } tC.tableModel.setDataVector(data[0], data[1]); //@TODO new sizeToFit method needed - // tC.sizeToFit(450, 250); + //tC.sizeToFit(450, 250); + Dimension dim=listPanel.getPreferredSize(); + tC.sizeToFit(dim.width,dim.height); tC.revalidate(); tC.tableModel.fireTableDataChanged(); noDBUpdate = false; @@ -1543,12 +1607,14 @@ public class FM2SQL extends JFrame imple { //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)); + JComboBox box = ((JComboBox) tC.tableModel.getValueAt(rows[i], LAYOUT_INDEX)); String layoutName = (box != null) ? box.getSelectedItem().toString() : ""; + + String idName = ((JComboBox)tC.tableModel.getValueAt(rows[i], ID_INDEX)).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()); + vec[2].add(tC.tableModel.getValueAt(rows[i],SELECT_INDEX ).toString()); + vec[3].add(tC.tableModel.getValueAt(rows[i], CREATE_INDEX).toString()); + vec[4].add(idName); } return vec;