|
|
| version 1.53, 2004/04/05 10:14:01 | version 1.65, 2004/08/02 11:39:23 |
|---|---|
| Line 12 | Line 12 |
| * rogo | * rogo |
| */ | */ |
| import java.util.*; | |
| import java.sql.*; | |
| import java.awt.Cursor; | import java.awt.Cursor; |
| import java.io.BufferedReader; | import java.io.BufferedReader; |
| import java.io.BufferedWriter; | import java.io.BufferedWriter; |
| Line 21 import java.io.File; | Line 19 import java.io.File; |
| import java.io.FileInputStream; | import java.io.FileInputStream; |
| import java.io.FileNotFoundException; | import java.io.FileNotFoundException; |
| import java.io.FileOutputStream; | import java.io.FileOutputStream; |
| import java.io.InputStream; | |
| import java.io.InputStreamReader; | import java.io.InputStreamReader; |
| import java.io.OutputStreamWriter; | import java.io.OutputStreamWriter; |
| import java.io.PrintStream; | import java.io.PrintStream; |
| import java.io.UnsupportedEncodingException; | import java.io.UnsupportedEncodingException; |
| import java.net.URL; | |
| import java.sql.PreparedStatement; | |
| import java.sql.SQLException; | |
| import java.sql.Statement; | |
| import java.sql.Types; | |
| import java.util.ArrayList; | |
| import java.util.Iterator; | |
| import java.util.List; | |
| import java.util.Properties; | |
| import java.util.StringTokenizer; | |
| import java.util.TreeSet; | |
| import java.util.Vector; | |
| import com.exploringxml.xml.Node; | import com.exploringxml.xml.Node; |
| import com.exploringxml.xml.Xparse; | import com.exploringxml.xml.Xparse; |
| Line 57 class Convert | Line 68 class Convert |
| System.out.println("Usage: java Convert <xml config file>"); | System.out.println("Usage: java Convert <xml config file>"); |
| System.exit(-1); | System.exit(-1); |
| } | } |
| if (!(new File(args[0]).exists())) | |
| System.exit(0); | |
| try | try |
| { | { |
| file = new FileOutputStream("./log.txt"); | file = new FileOutputStream("./log.txt"); |
| Line 67 class Convert | Line 76 class Convert |
| e1.printStackTrace(); | e1.printStackTrace(); |
| } | } |
| PrintStream stream = new PrintStream(file); | PrintStream stream = new PrintStream(file); |
| System.setOut(stream); | // System.setOut(stream); |
| System.setErr(stream); | //System.setErr(stream); |
| readXMLFile(args[0]); | readXMLFile(args[0]); |
| if (!(new File(args[0]).exists())) | |
| System.exit(0); | |
| System.out.println("Finished!"); | System.out.println("Finished!"); |
| //convert("jdbc:fmpro:http://141.14.237.74:8050","jdbc:postgresql://erebos/test",null,null); | //convert("jdbc:fmpro:http://141.14.237.74:8050","jdbc:postgresql://erebos/test",null,null); |
| } | } |
| Line 78 class Convert | Line 91 class Convert |
| bean = source; | bean = source; |
| beanDest = destination; | beanDest = destination; |
| convert(null,null,names,layouts,selects,creates,ids,mode,delimiter); | convert(null,null,names,layouts,selects,creates,ids,mode,delimiter); |
| if(true) return; | if (true) |
| return; | |
| StringBuffer command = null; | StringBuffer command = null; |
| try | try |
| { | { |
| Line 462 class Convert | Line 476 class Convert |
| * @throws Exception | * @throws Exception |
| */ | */ |
| public static void convert(String source, String destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode,String delimiter) throws Exception | public static void convert(String source, String destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode,String delimiter) throws Exception |
| { | { |
| Line 483 class Convert | Line 496 class Convert |
| int deltaID = 1; | int deltaID = 1; |
| String idField = ""; | String idField = ""; |
| String destTableName = ""; | String destTableName = ""; |
| String[] fieldNames = null; | |
| if (source != null && destination != null) | if (source != null && destination != null) |
| { | { |
| // setting user and passwd | // setting user and passwd |
| Line 558 class Convert | Line 572 class Convert |
| // System.exit(0); | // System.exit(0); |
| // determine destTableName from createStatement or from source table name | // determine destTableName from createStatement or from source table name |
| if(!creates.get(tbIndex).equals("")) | ConversionProperties prop = getFieldNamesAndDestTableName(creates.get(tbIndex).toString(), query, names.get(tbIndex).toString()); |
| { | destTableName = prop.destTableName; |
| String create =creates.get(tbIndex).toString().toLowerCase(); | fieldNames = prop.fieldNames; |
| int fromIndex = create.indexOf("table")+5; | |
| int toIndex = create.indexOf("("); | |
| destTableName = create.substring(fromIndex,toIndex).replaceAll(beanDest.getQC(),"").trim(); | |
| System.out.println("destTable "+destTableName); | |
| } else | |
| destTableName = convertText(names.get(tbIndex).toString()); | |
| if (mode == Convert.DataBase.CONVERT_MODE) | if (mode == Convert.DataBase.CONVERT_MODE) |
| { | { |
| Line 644 class Convert | Line 650 class Convert |
| command.append(beanDest.getQC()); | command.append(beanDest.getQC()); |
| command.append(destTableName); //convertText((String) names.get(tbIndex))); | command.append(destTableName); //convertText((String) names.get(tbIndex))); |
| command.append(beanDest.getQC()); | command.append(beanDest.getQC()); |
| command.append(" ("); | |
| for (int i = 0; i < fieldNames.length; i++) | |
| { | |
| command.append(fieldNames[i]); | |
| if (i < fieldNames.length - 1) | |
| command.append(","); | |
| } | |
| command.append(") "); | |
| command.append(" values ( "); | command.append(" values ( "); |
| Line 668 class Convert | Line 682 class Convert |
| ++counter; | ++counter; |
| if (counter == 0&&dialog!=null) | if (counter == 0&&dialog!=null) |
| dialog.title.setText("Check if data is available"); | dialog.title.setText("Check if data is available"); |
| else | else if (dialog != null) |
| if(dialog!=null) | |
| dialog.title.setText("Check if more data is available"); | dialog.title.setText("Check if more data is available"); |
| myIds = bean.getIDVector(ids.get(tbIndex).toString(), (String) names.get(tbIndex), tempQuery, numHits); | myIds = bean.getIDVector(ids.get(tbIndex).toString(), (String) names.get(tbIndex), tempQuery, numHits); |
| if (myIds.isEmpty()) | if (myIds.isEmpty()) |
| Line 824 class Convert | Line 837 class Convert |
| for (int k = 0; k < row.size(); ++k) | for (int k = 0; k < row.size(); ++k) |
| { | { |
| obj = row.get(k); | obj = row.get(k); |
| if (obj instanceof ArrayList) | |
| if (obj instanceof ArrayList) | if (obj instanceof ArrayList) |
| obj = formatFileMakerArray((List) obj,delimiter); | obj = formatFileMakerArray((List) obj,delimiter); |
| String str = (obj == null) ? "NULL" : obj.toString(); | String str = (obj == null) ? "NULL" : obj.toString(); |
| if (!str.equals("NULL")) | if (obj instanceof Double) |
| { | |
| pstm.setDouble(k + 1, ((Double) obj).doubleValue()); | |
| } else if (!str.equals("NULL")) | |
| pstm.setString(k + 1, str); | pstm.setString(k + 1, str); |
| else | else |
| pstm.setNull(k + 1, Types.NULL); | pstm.setNull(k + 1, Types.NULL); |
| Line 1136 class Convert | Line 1152 class Convert |
| Node node3 = root.find("convert/source/database", new int[] { 1, 1, i }); | Node node3 = root.find("convert/source/database", new int[] { 1, 1, i }); |
| Node nodeMode = root.find("convert/source/database/mode", new int[] { 1, 1, i, 1, 1 }); | Node nodeMode = root.find("convert/source/database/mode", new int[] { 1, 1, i, 1, 1 }); |
| Node delimiterNode =root.find("convert/source/database/delimiter", new int[] { 1, 1, i, 1, 1 }); | Node delimiterNode =root.find("convert/source/database/delimiter", new int[] { 1, 1, i, 1, 1 }); |
| Node useNormanToUnicodeMapper = root.find("convert/source/database/usenormantounicodemapper", new int[] { 1, 1, i, 1, 1 }); | |
| if (node3 == null) | if (node3 == null) |
| throw new Error("parse error database tag missing"); | throw new Error("parse error database tag missing"); |
| if (node == null) | if (node == null) |
| Line 1144 class Convert | Line 1162 class Convert |
| throw new Error("parse error user tag missing"); | throw new Error("parse error user tag missing"); |
| if (node2 == null) | if (node2 == null) |
| throw new Error("parse error password tag missing"); | throw new Error("parse error password tag missing"); |
| if(delimiterNode!=null) delimiter = delimiterNode.getCharacters(); | if (delimiterNode != null) |
| delimiter = delimiterNode.getCharacters(); | |
| if (useNormanToUnicodeMapper != null) | |
| { | |
| database.setUseNormanToUnicodeMapper(Boolean.valueOf(useNormanToUnicodeMapper.getCharacters()).booleanValue()); | |
| System.out.println("useMapper " + Boolean.valueOf(useNormanToUnicodeMapper.getCharacters().trim()).booleanValue()); | |
| } | |
| String url = node.getCharacters(); | String url = node.getCharacters(); |
| String user = node1.getCharacters(); | String user = node1.getCharacters(); |
| String password = node2.getCharacters(); | String password = node2.getCharacters(); |
| Line 1166 class Convert | Line 1191 class Convert |
| mode = DataBase.UPDATE_MODE; | mode = DataBase.UPDATE_MODE; |
| else if (modeString.equals("delete")) | else if (modeString.equals("delete")) |
| mode = DataBase.DELETE_MODE; | mode = DataBase.DELETE_MODE; |
| else if (modeString.equals("synchronize")) | |
| mode = DataBase.SYNCHRONIZE_MODE; | |
| // if(node3!=null) | // if(node3!=null) |
| // System.out.println(node3.name); | // System.out.println(node3.name); |
| Line 1234 class Convert | Line 1261 class Convert |
| for (Iterator iter = databases.iterator(); iter.hasNext();) | for (Iterator iter = databases.iterator(); iter.hasNext();) |
| { | { |
| DataBase db = (DataBase) iter.next(); | DataBase db = (DataBase) iter.next(); |
| if (mode != DataBase.UPDATE_MODE) | if (mode == DataBase.CONVERT_MODE || mode == DataBase.APPEND_MODE) |
| convertBatch(db.bean, database, db.tables, db.layouts, db.selects, db.creates, db.ids,mode,db.delimiter); | convertBatch(db.bean, database, db.tables, db.layouts, db.selects, db.creates, db.ids,mode,db.delimiter); |
| else | else if (mode == DataBase.UPDATE_MODE) |
| update(db.bean.url, database.url, db.tables, db.layouts, db.selects, db.creates, db.ids, mode); | update(db.bean.url, database.url, db.tables, db.layouts, db.selects, db.creates, db.ids, mode); |
| else if (mode == DataBase.SYNCHRONIZE_MODE) | |
| { | |
| user = bean.user; | |
| passwd = bean.passwd; | |
| userDest = database.user; | |
| passwdDest = database.passwd; | |
| synchronize(db.bean.url, database.url, db.tables, db.layouts, db.selects, db.creates, db.ids, mode); | |
| } | |
| } | } |
| // printContents(node3); | // printContents(node3); |
| // FM2SQL.fmInstance=new FM2SQL(); | // FM2SQL.fmInstance=new FM2SQL(); |
| Line 1246 class Convert | Line 1281 class Convert |
| { | { |
| e.printStackTrace(); | e.printStackTrace(); |
| } finally | |
| { | |
| bean.closeAllConnections(); | |
| beanDest.closeAllConnections(); | |
| } | } |
| } | } |
| public static Vector getXMLConfig(String xmlFile) | public static Vector getXMLConfig(String xmlFile) |
| Line 1308 class Convert | Line 1348 class Convert |
| Node node3 = root.find("convert/source/database", new int[] { 1, 1, i }); | Node node3 = root.find("convert/source/database", new int[] { 1, 1, i }); |
| Node nodeMode = root.find("convert/source/database/mode", new int[] { 1, 1, i, 1, 1 }); | Node nodeMode = root.find("convert/source/database/mode", new int[] { 1, 1, i, 1, 1 }); |
| Node delimiterNode =root.find("convert/source/database/delimiter", new int[] { 1, 1, i, 1, 1 }); | Node delimiterNode =root.find("convert/source/database/delimiter", new int[] { 1, 1, i, 1, 1 }); |
| Node useNormanToUnicodeMapper = root.find("convert/source/database/usenormantounicodemapper", new int[] { 1, 1, i, 1, 1 }); | |
| if (delimiterNode != null) | if (delimiterNode != null) |
| delimiter = delimiterNode.getCharacters(); | delimiter = delimiterNode.getCharacters(); |
| if (useNormanToUnicodeMapper != null) | |
| { | |
| database.setUseNormanToUnicodeMapper(Boolean.valueOf(useNormanToUnicodeMapper.getCharacters()).booleanValue()); | |
| System.out.println("useMapper " + Boolean.valueOf(useNormanToUnicodeMapper.getCharacters().trim()).booleanValue()); | |
| } | |
| if (node3 == null) | if (node3 == null) |
| throw new Error("parse error database tag missing"); | throw new Error("parse error database tag missing"); |
| if (node == null) | if (node == null) |
| Line 1465 class Convert | Line 1512 class Convert |
| { | { |
| try | try |
| { | { |
| InputStream stream = null; | |
| if (xmlFile.indexOf("file://") >= 0 || xmlFile.indexOf("http://") >= 0) | |
| { | |
| URL url = new URL(xmlFile); | |
| stream = url.openStream(); | |
| } else | |
| // read XML Metadata from a file | // read XML Metadata from a file |
| FileInputStream fi = new FileInputStream(xmlFile); | stream = new FileInputStream(xmlFile); |
| InputStreamReader isr = new InputStreamReader(fi, "UTF-8"); | InputStreamReader isr = new InputStreamReader(stream, "UTF-8"); |
| BufferedReader buffr = new BufferedReader(isr); | BufferedReader buffr = new BufferedReader(isr); |
| StringBuffer sb = new StringBuffer(); | StringBuffer sb = new StringBuffer(); |
| int c = 0; | int c = 0; |
| Line 1483 class Convert | Line 1537 class Convert |
| e.printStackTrace(); | e.printStackTrace(); |
| } | } |
| } | } |
| /** | |
| * Helper class for Conversion etc | |
| * Holds the some data | |
| * @author rogo | |
| * | |
| */ | |
| public static class ConversionProperties | |
| { | |
| String destTableName; | |
| String[] fieldNames; | |
| public ConversionProperties() | |
| { | |
| } | |
| public ConversionProperties(String destTableName, String[] fieldNames) | |
| { | |
| this.destTableName = destTableName; | |
| this.fieldNames = fieldNames; | |
| } | |
| } | |
| /** | /** |
| * Helper class for XML-File parsing | * Helper class for XML-File parsing |
| * Holds the parsed data | * Holds the parsed data |
| Line 1499 class Convert | Line 1574 class Convert |
| Vector tables; | Vector tables; |
| Vector ids; | Vector ids; |
| String delimiter = "//"; | String delimiter = "//"; |
| boolean useNormanToUnicodeMapper = false; | |
| final static int CONVERT_MODE = 1; | final static int CONVERT_MODE = 1; |
| final static int APPEND_MODE = 2; | final static int APPEND_MODE = 2; |
| final static int UPDATE_MODE = 3; | final static int UPDATE_MODE = 3; |
| final static int DELETE_MODE = 4; | final static int DELETE_MODE = 4; |
| final static int SYNCHRONIZE_MODE = 5; | |
| int mode = -1; | int mode = -1; |
| Line 1541 class Convert | Line 1619 class Convert |
| modeString = "delete"; | modeString = "delete"; |
| buffr.write(" <mode>" + modeString + "</mode>\n"); | buffr.write(" <mode>" + modeString + "</mode>\n"); |
| buffr.write(" <usenormantounicodemapper>" + useNormanToUnicodeMapper + "</usenormantounicodemapper>\n"); | |
| int index = 0; | int index = 0; |
| while (index < tables.size()) | while (index < tables.size()) |
| { | { |
| Line 1801 class Convert | Line 1881 class Convert |
| } | } |
| } // to method | } // to method |
| /** | |
| * synchronize method based on delete method code | |
| * | |
| * @param source | |
| * @param destination | |
| * @param names | |
| * @param layouts | |
| * @param selects | |
| * @param creates | |
| * @param ids | |
| * @param mode | |
| * @throws Exception | |
| */ | |
| // TODO implement append,update and delete in one method | |
| // TODO using id based algorithm | |
| public static void synchronize(String source, String destination, Vector names, Vector layouts, Vector selects, Vector creates, Vector ids, int mode) throws Exception | |
| { | |
| System.out.println(" bin in synchronize!!!"); | |
| FM2SQL.ProgressDialog dialog = null; | |
| if (FM2SQL.fmInstance != null) | |
| { | |
| dialog = new FM2SQL.ProgressDialog(FM2SQL.fmInstance, bean); | |
| dialog.setTitle("Synchronize running ..."); | |
| dialog.title.setText("Getting table data ..."); | |
| dialog.setLocation(FM2SQL.fmInstance.getLocationOnScreen().x + (FM2SQL.fmInstance.getWidth() - 400) / 2, FM2SQL.fmInstance.getLocationOnScreen().y + (FM2SQL.fmInstance.getHeight() - 250) / 2); | |
| dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); | |
| FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); | |
| dialog.thread = Thread.currentThread(); | |
| } | |
| // setting user and passwd | |
| bean.setUserAndPasswd(user, passwd); | |
| // setting user and passwd | |
| beanDest.setUserAndPasswd(userDest, passwdDest); | |
| if (dialog != null) | |
| dialog.setSize(400, 250); | |
| StringBuffer command = null; | |
| String query = null; | |
| try | |
| { | |
| //bean.setConnection("jdbc:fmpro:http://141.14.237.74:8050"); | |
| //bean.setConnection("jdbc:postgresql://erebos/test","postgres","rogo"); | |
| bean.setConnection(source); | |
| if (names == null) | |
| names = bean.getTableNames(); | |
| // Collections.sort(names); | |
| int tbIndex = 1; | |
| // System.out.println("Start at "+names.indexOf("archimedes_facsimiles")); | |
| for (tbIndex = 0; tbIndex < names.size(); ++tbIndex) | |
| { | |
| Vector[] result = null; | |
| java.util.TreeSet myIds = new TreeSet(); | |
| java.util.TreeSet myIdsDest = new TreeSet(); | |
| int deltaID = 1; | |
| String idField = ""; | |
| String destTableName = ""; | |
| try | |
| { | |
| query = "select * from " + bean.getQC() + names.get(tbIndex).toString() + bean.getQC(); | |
| String layout = (layouts.isEmpty()) ? "" : layouts.get(tbIndex).toString(); | |
| query = (selects != null) ? selects.get(tbIndex).toString() : query; | |
| //if vectors[1].get(i) != null) | |
| if (!layout.equals("")) | |
| { | |
| layout = " layout " + bean.getQC() + layout + bean.getQC(); | |
| String name = names.get(tbIndex).toString(); | |
| StringBuffer queryLayout = new StringBuffer(query); | |
| queryLayout.insert(queryLayout.indexOf(name) + name.length() + 1, " " + layout); | |
| query = queryLayout.toString(); | |
| System.out.println("added layout " + query); | |
| } | |
| if (dialog != null) | |
| { | |
| dialog.title.setText("Getting table data ..."); | |
| dialog.table.setText(names.get(tbIndex).toString()); | |
| dialog.status.setText("Table " + (tbIndex + 1) + " of " + names.size()); | |
| dialog.show(); | |
| } | |
| bean.getConnection(); | |
| bean.makeQuery(query, 50); | |
| idField = ids.get(tbIndex).toString(); | |
| } catch (Exception e) | |
| { | |
| continue; | |
| } | |
| // determine destTableName from createStatement or from source table name | |
| if (!creates.get(tbIndex).equals("")) | |
| { | |
| String create = creates.get(tbIndex).toString().toLowerCase(); | |
| int fromIndex = create.indexOf("table") + 5; | |
| int toIndex = create.indexOf("("); | |
| destTableName = create.substring(fromIndex, toIndex).replaceAll(beanDest.getQC(), "").trim(); | |
| System.out.println("destTable " + destTableName); | |
| } else | |
| destTableName = convertText(names.get(tbIndex).toString()); | |
| // for id kram | |
| Vector vec = null; | |
| Vector vecDest = null; | |
| // tempo | |
| beanDest.setConnection(destination); | |
| int rowCount = (idField != "") ? myIds.size() : bean.getRowCount(query); | |
| String tempID = bean.getQC() + idField + bean.getQC(); | |
| String tempIDdest = beanDest.getQC() + convertText(idField) + beanDest.getQC(); | |
| int endIndex = -1; | |
| String tempQuery = query; | |
| String destQuery = query.replaceAll(names.get(tbIndex).toString(), destTableName); | |
| String tempQueryDest = destQuery; | |
| // remove extra query parts destQuery.substring(0,destQuery.lastIndexOf(destTableName)+destTableName.length()+1); | |
| System.out.println("new Query " + tempQueryDest); | |
| if (!idField.equals("")) | |
| { | |
| long startTime = System.currentTimeMillis(); | |
| int counter = -1; | |
| while (true) | |
| { | |
| ++counter; | |
| if (counter == 0 && dialog != null) | |
| dialog.title.setText("Check if data is available"); | |
| else if (dialog != null) | |
| dialog.title.setText("Check if more data is available"); | |
| myIds = bean.getIDVector(ids.get(tbIndex).toString(), (String) names.get(tbIndex), tempQuery, numHits); | |
| myIdsDest = beanDest.getIDVector(convertText(idField), destTableName, tempQueryDest, numHits); | |
| if (myIds.isEmpty()) | |
| break; | |
| vec = new Vector(myIds); | |
| vecDest = new Vector(myIdsDest); | |
| rowCount = vec.size(); | |
| // Deletion will work this way | |
| Vector deleted = new Vector(vec); | |
| TreeSet linesToDelete = new TreeSet(vecDest); | |
| TreeSet linesToAppend = new TreeSet(vec); | |
| // remove all lines that are already in dest database | |
| linesToAppend.removeAll(vecDest); | |
| // remove all lines that should not be deleted | |
| linesToDelete.removeAll(deleted); | |
| System.out.println("linesToAppend " + linesToAppend + " " + vecDest + " " + destTableName); | |
| System.out.println("linesToDelete " + linesToDelete + " " + vecDest + " " + destTableName); | |
| // prepare new query for next chunk | |
| if (query.indexOf("where") > 0) | |
| tempQuery = query + " and " + tempID + ">='" + vec.firstElement() + "' and " + tempID + "<='" + vec.lastElement() + "' order by " + tempID; | |
| else | |
| tempQuery = query + " where " + tempID + ">='" + vec.firstElement() + "' and " + tempID + "<='" + vec.lastElement() + "'"; // order by "+tempID; | |
| System.out.println("tempQuery is now " + tempQuery + " order by " + tempID); | |
| // bean.makeQuery(tempQuery,vec.size()); | |
| ConversionProperties prop = getFieldNamesAndDestTableName(creates.get(tbIndex).toString(), query, names.get(tbIndex).toString()); | |
| StringBuffer insCommand = createInsertCommand(prop.destTableName, prop.fieldNames); | |
| StringBuffer updCommand = createUpdateCommand(prop.destTableName, prop.fieldNames, tempID); | |
| StringBuffer delCommand = createDeleteCommand(destTableName,tempID); | |
| PreparedStatement insPst = beanDest.getConnection().prepareStatement(insCommand.toString()); | |
| PreparedStatement updPst = beanDest.getConnection().prepareStatement(updCommand.toString()); | |
| PreparedStatement delPSt = beanDest.getConnection().prepareStatement(delCommand.toString()); | |
| Vector[] vectors = bean.getQueryData(tempQuery, vec.size()); | |
| int idIndex = vectors[1].indexOf(idField); | |
| // todo arraylist code has to be added | |
| for (Iterator iter = vectors[0].iterator(); iter.hasNext();) | |
| { | |
| Vector line = (Vector) iter.next(); | |
| Object lineIDIndex = line.get(idIndex); | |
| System.out.println("line " + linesToDelete.contains(line.get(idIndex))+" "+lineIDIndex); | |
| if (linesToAppend.contains(lineIDIndex)) | |
| { | |
| for (int l = 0; l < line.size(); ++l) | |
| { | |
| Object obj = line.get(l); | |
| if (obj != null) | |
| insPst.setString(l + 1, obj.toString()); | |
| else | |
| insPst.setNull(l + 1, Types.NULL); | |
| } | |
| insPst.execute(); | |
| } | |
| else // update | |
| { | |
| for (int l = 0; l < line.size(); ++l) | |
| { | |
| Object obj = line.get(l); | |
| if (obj != null) | |
| updPst.setString(l + 1, obj.toString()); | |
| else | |
| updPst.setNull(l + 1, Types.NULL); | |
| } | |
| updPst.setString(line.size()+1,line.get(idIndex).toString()); | |
| updPst.execute(); | |
| } | |
| } | |
| // delPSt.setString(1,"6"); | |
| // delPSt.setString(1,"7"); | |
| // delPSt.setString(1,"8"); | |
| //delPSt.execute(); | |
| System.out.println(); | |
| // System.out.println("ID LIST SIZE " + Math.round((double) myIds.size() / (double) numIntervalls) + " " + myIdsDest.size()); | |
| /// @TODO complete delete task remove query show lines to be deleted let user choose if he wants that | |
| System.out.println("number of lines to be deleted " + linesToDelete.size()); | |
| deltaID = (int) Math.round((double) myIds.size() / (double) numIntervalls); | |
| System.out.println("deltaID " + deltaID); | |
| //System.out.println(); | |
| if (true) | |
| return; | |
| beanDest.setConnection(destination); | |
| Statement stm = beanDest.getConnection().createStatement(); | |
| Vector tables = beanDest.getTableNames(); | |
| // Collections.sort(tables); | |
| System.out.println(names.get(tbIndex) + " " + tables.indexOf(convertText((String) names.get(tbIndex)))); // "//beanDest.getTypeNames()); | |
| tables = beanDest.getTableNames(); | |
| // System.out.println(beanDest.getTableNames(beanDest.getCatalogs().get(2).toString())); | |
| stm = beanDest.getConnection().createStatement(); | |
| if (dialog != null) | |
| dialog.title.setText(" Deleting table data ..."); | |
| int j = -1; | |
| Vector row = null; | |
| command = new StringBuffer(); | |
| command.append("DELETE FROM"); | |
| command.append(beanDest.getQC()); | |
| command.append(destTableName); | |
| //command.append(convertText((String) names.get(tbIndex))); | |
| command.append(beanDest.getQC()); | |
| int size = bean.getColumnNames().size(); | |
| command.append("WHERE " + convertText(ids.get(tbIndex).toString()) + " = ?"); | |
| PreparedStatement pstm = beanDest.getConnection().prepareStatement(command.toString()); | |
| System.out.println(command + " " + tbIndex); | |
| //int rowCount = bean.getRowCount(query); | |
| // int idIndex = bean.getColumnNames().indexOf(ids.get(tbIndex)); | |
| /* while (true) | |
| { | |
| ++j; | |
| if (j == linesToDelete.size()) | |
| break; | |
| //print rows | |
| pstm.setString(1, linesToDelete.get(j).toString()); | |
| System.out.println(pstm.toString()); | |
| pstm.execute(); | |
| if (dialog != null) | |
| dialog.progress.setValue((int) (((double) (j + 1) / (double) rowCount) * 100.0)); | |
| command = null; | |
| } | |
| // prepare new query for next chunk | |
| if (query.indexOf("where") > 0) | |
| tempQuery = query + " and " + tempID + ">'" + vec.lastElement() + "'"; | |
| else | |
| tempQuery = query + " where " + tempID + ">'" + vec.lastElement() + "'"; | |
| */ | |
| } //to outer while | |
| } // to idfield if | |
| } // table loop | |
| } catch (Exception e) | |
| { | |
| System.out.println("Error while connecting to database " + e); | |
| if (dialog != null) | |
| { | |
| dialog.setVisible(false); | |
| dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); | |
| FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); | |
| } | |
| java.io.ByteArrayOutputStream b = new java.io.ByteArrayOutputStream(); | |
| java.io.PrintStream stream = new java.io.PrintStream(b); | |
| stream.print(command + "\n\n"); | |
| e.printStackTrace(stream); | |
| FM2SQL.showErrorDialog(b.toString(), "Error occured !"); | |
| } | |
| if (dialog != null) | |
| { | |
| dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); | |
| FM2SQL.fmInstance.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); | |
| dialog.setVisible(false); | |
| } | |
| } // to method | |
| /** | |
| * Converts input String in norman encoding to unicode | |
| * @param inp | |
| * @return converted String | |
| */ | |
| static public String normanToUnicode(String inp) | |
| { | |
| StringBuffer buf = new StringBuffer(); | |
| for (int i = 0; i < inp.length(); i++) | |
| { | |
| char c = inp.charAt(i); | |
| // System.out.println("char "+c+" "+(int)c); | |
| switch (c) | |
| { | |
| case 1 : | |
| buf.append("\u00d0"); | |
| break; // Eth | |
| case 2 : | |
| buf.append("\u00f0"); | |
| break; // eth | |
| case 3 : | |
| buf.append("\u0141"); | |
| break; // Lslash | |
| case 4 : | |
| buf.append("\u0142"); | |
| break; // lslash | |
| case 5 : | |
| buf.append("\u0160"); | |
| break; // S caron | |
| case 6 : | |
| buf.append("\u0161"); | |
| break; // s caron | |
| case 7 : | |
| buf.append("\u00dd"); | |
| break; // Y acute | |
| case 8 : | |
| buf.append("\u00fd"); | |
| break; // y acute | |
| case 11 : | |
| buf.append("\u00de"); | |
| break; // Thorn | |
| case 12 : | |
| buf.append("\u00fe"); | |
| break; // thorn | |
| case 14 : | |
| buf.append("\u017d"); | |
| break; // Z caron | |
| case 15 : | |
| buf.append("\u017e"); | |
| break; // z caron | |
| case 17 : | |
| buf.append("\u0073"); | |
| break; // asciitilde | |
| case 18 : | |
| buf.append("j\u0305"); | |
| break; // j macron [does a single char exist?] | |
| case 19 : | |
| buf.append("^"); | |
| break; // circumflex | |
| case 20 : | |
| buf.append("\u0303"); | |
| break; // tilde | |
| case 21 : | |
| buf.append("\u00bd"); | |
| break; // onehalf | |
| case 22 : | |
| buf.append("\u00bc"); | |
| break; // onequarter | |
| case 23 : | |
| buf.append("\u00b9"); | |
| break; // onesuperior | |
| case 24 : | |
| buf.append("\u00be"); | |
| break; // threequarters | |
| case 25 : | |
| buf.append("\u00b3"); | |
| break; // threesuperior | |
| case 26 : | |
| buf.append("\u00b2"); | |
| break; // twosuperior | |
| case 27 : | |
| buf.append("\u00a6"); | |
| break; // brokenbar | |
| case 28 : | |
| buf.append("-"); | |
| break; // minus | |
| case 29 : | |
| buf.append("\u00d7"); | |
| break; // multiply | |
| case 39 : | |
| buf.append("'"); | |
| break; // quotesingle | |
| case 94 : | |
| buf.append("\u0302"); | |
| break; // circumflex | |
| case 96 : | |
| buf.append("\u0300"); | |
| break; // grave | |
| case 196 : | |
| buf.append("\u00c4"); | |
| break; // A dieresis | |
| case 197 : | |
| buf.append("\u00c5"); | |
| break; // A ring | |
| case 201 : | |
| buf.append("\u00c9"); | |
| break; // E acute | |
| case 209 : | |
| buf.append("\u00d1"); | |
| break; // N tilde | |
| case 214 : | |
| buf.append("\u00d6"); | |
| break; // O dieresis | |
| case 220 : | |
| buf.append("\u00dc"); | |
| break; // U dieresis | |
| case 225 : | |
| buf.append("\u00e1"); | |
| break; // a acute | |
| case 224 : | |
| buf.append("\u00e0"); | |
| break; // a grave | |
| case 226 : | |
| buf.append("\u00e2"); | |
| break; // a circumflex | |
| case 228 : | |
| buf.append("\u00e4"); | |
| break; // a dieresis | |
| case 227 : | |
| buf.append("\u00e3"); | |
| break; // a tilde | |
| case 229 : | |
| buf.append("\u0101"); | |
| break; // a macron | |
| case 231 : | |
| buf.append("\u00e7"); | |
| break; // c cedilla | |
| case 233 : | |
| buf.append("\u00e9"); | |
| break; // e acute | |
| case 232 : | |
| buf.append("\u00e8"); | |
| break; // e grave | |
| case 234 : | |
| buf.append("\u00ea"); | |
| break; // e circumflex | |
| case 235 : | |
| buf.append("\u00eb"); | |
| break; // e dieresis | |
| case 237 : | |
| buf.append("\u00ed"); | |
| break; // i acute | |
| case 236 : | |
| buf.append("\u00ec"); | |
| break; // i grave | |
| case 238 : | |
| buf.append("\u00ee"); | |
| break; // i circumflex | |
| case 239 : | |
| buf.append("\u00ef"); | |
| break; // i dieresis | |
| case 241 : | |
| buf.append("\u00f1"); | |
| break; // n tilde | |
| case 243 : | |
| buf.append("\u00f3"); | |
| break; // o acute | |
| case 242 : | |
| buf.append("\u00f2"); | |
| break; // o grave | |
| case 244 : | |
| buf.append("\u00f4"); | |
| break; // o circumflex | |
| case 246 : | |
| buf.append("\u00f6"); | |
| break; // o dieresis | |
| case 245 : | |
| buf.append("\u00f5"); | |
| break; // o tilde | |
| case 250 : | |
| buf.append("\u00fa"); | |
| break; // u acute | |
| case 249 : | |
| buf.append("\u00f9"); | |
| break; // u grave | |
| case 251 : | |
| buf.append("\u00fb"); | |
| break; // u circumflex | |
| case 252 : | |
| buf.append("\u00fc"); | |
| break; // u dieresis | |
| case 8224 : | |
| buf.append("\u1e6d"); | |
| break; // t underdot | |
| case 176 : | |
| buf.append("\u00b0"); | |
| break; // degree | |
| case 162 : | |
| buf.append("\u1ebd"); | |
| break; // e tilde | |
| case 163 : | |
| buf.append("\u00a3"); | |
| break; // sterling | |
| case 167 : | |
| buf.append("\u00a7"); | |
| break; // section | |
| case 182 : | |
| buf.append("\u00b6"); | |
| break; // paragraph | |
| case 223 : | |
| buf.append("\u015b"); | |
| break; // s acute | |
| case 174 : | |
| buf.append("\u1e5b"); | |
| break; // r underdot | |
| case 169 : | |
| buf.append("\u1e45"); | |
| break; // n overdot | |
| case 353 : | |
| buf.append("\u1e45"); | |
| break; // n overdot | |
| case 180 : | |
| buf.append("\u0301"); | |
| break; // acute | |
| case 168 : | |
| buf.append("\u0308"); | |
| break; // dieresis | |
| case 8800 : | |
| buf.append("\u1e6d"); | |
| break; // t underdot | |
| case 198 : | |
| buf.append("\u00c6"); | |
| break; // AE | |
| case 216 : | |
| buf.append("\u014d"); | |
| break; // o macron | |
| case 8734 : | |
| buf.append("\u0129"); | |
| break; // i tilde | |
| case 177 : | |
| buf.append("\u00b1"); | |
| break; // plusminus | |
| case 165 : | |
| buf.append("\u012b"); | |
| break; // i macron | |
| case 181 : | |
| buf.append("\u1e43"); | |
| break; // m underdot | |
| case 8706 : | |
| buf.append("\u1e0d"); | |
| break; // d underdot | |
| case 240 : | |
| buf.append("\u1e0d"); | |
| break; // d underdot | |
| case 8721 : | |
| buf.append("\u1e63"); | |
| break; // s underdot | |
| case 960 : | |
| buf.append("\u017a"); | |
| break; // z acute | |
| case 8747 : | |
| buf.append("\u1e45"); | |
| break; // n overdot | |
| case 937 : | |
| buf.append("\u0169"); | |
| break; // u tilde | |
| case 230 : | |
| buf.append("\u00e6"); | |
| break; // ae | |
| case 248 : | |
| buf.append("\u00f8"); | |
| break; // oslash | |
| case 191 : | |
| buf.append("\u0304\u0306"); | |
| break; // macron breve | |
| case 172 : | |
| buf.append("\u1e37"); | |
| break; // | |
| case 8730 : | |
| buf.append("j\u0305"); | |
| break; // j macron [does a single char exist?] | |
| case 402 : | |
| buf.append("\u0103"); | |
| break; // a breve | |
| case 8776 : | |
| buf.append("\u016d"); | |
| break; // u breve | |
| case 187 : | |
| buf.append("\u1e42"); | |
| break; // M underdot | |
| case 8230 : | |
| buf.append("\u2026"); | |
| break; // ellipsis | |
| case 192 : | |
| buf.append("\u00c0"); | |
| break; // A grave | |
| case 195 : | |
| buf.append("\u00c3"); | |
| break; // A tilde | |
| case 213 : | |
| buf.append("\u00d5"); | |
| break; // O tilde | |
| case 338 : | |
| buf.append("m\u0306"); | |
| break; // m breve | |
| case 339 : | |
| buf.append("\u0153"); | |
| break; // oe | |
| case 8211 : | |
| buf.append("\u2013"); | |
| break; // endash | |
| case 8212 : | |
| buf.append("\u2014"); | |
| break; // emdash | |
| case 8220 : | |
| buf.append("\u201c"); | |
| break; // quotedblleft | |
| case 8221 : | |
| buf.append("\u201d"); | |
| break; // quotedblright | |
| case 8216 : | |
| buf.append("\u2018"); | |
| break; // quoteleft | |
| case 8217 : | |
| buf.append("\u2019"); | |
| break; // quoteright | |
| case 247 : | |
| buf.append("\u1e37"); | |
| break; // l underring [actually underdot] | |
| case 9674 : | |
| buf.append("\u1e41"); | |
| break; // m overdot | |
| case 255 : | |
| buf.append("n\u0306"); | |
| break; // n breve | |
| case 376 : | |
| buf.append("\u00d7"); | |
| break; // multiply | |
| case 8364 : | |
| buf.append("\u1e5b"); | |
| break; // r underring [actually underdot] | |
| case 8249 : | |
| buf.append("\u1e44"); | |
| break; // N overdot | |
| case 8250 : | |
| buf.append("\u1e62"); | |
| break; // S underdot | |
| case 64257 : | |
| buf.append("\u1e24"); | |
| break; // H underdot | |
| case 64258 : | |
| buf.append("\u1e0c"); | |
| break; // D underdot | |
| case 8225 : | |
| buf.append("\u2021"); | |
| break; // daggerdbl | |
| case 8218 : | |
| buf.append("\u1e36"); | |
| break; // L underdot | |
| case 8222 : | |
| buf.append("\u0113"); | |
| break; // e macron | |
| case 194 : | |
| buf.append("\u1e5f"); | |
| break; // r underbar | |
| case 202 : | |
| buf.append("r\u0324"); | |
| break; // r underdieresis | |
| case 193 : | |
| buf.append("\u012a"); | |
| break; // I macron | |
| case 8486 : | |
| case 203 : | |
| buf.append("\u016b"); | |
| break; // u macron | |
| case 200 : | |
| buf.append("\u1e6c"); | |
| break; // T underdot | |
| case 205 : | |
| buf.append("\u1e64"); | |
| break; // S acute | |
| case 206 : | |
| buf.append("\u2020"); | |
| break; // dagger | |
| case 207 : | |
| buf.append("\u0115"); | |
| break; // e breve | |
| case 204 : | |
| buf.append("\u014f"); | |
| break; // o breve | |
| case 211 : | |
| buf.append("\u0100"); | |
| break; // A macron | |
| case 212 : | |
| buf.append("\u1e46"); | |
| break; // N underdot | |
| case 210 : | |
| buf.append("\u1e3b"); | |
| break; // l underbar | |
| case 218 : | |
| buf.append("\u016a"); | |
| break; // U macron | |
| case 219 : | |
| buf.append("\u0179"); | |
| break; // Z acute | |
| case 217 : | |
| buf.append("\u1e5a"); | |
| break; // R underdot | |
| case 305 : | |
| buf.append("\u0131"); | |
| break; // dotlessi | |
| case 710 : | |
| buf.append("\u1e47"); | |
| break; // n underdot | |
| case 732 : | |
| buf.append("\u1e49"); | |
| break; // n underbar | |
| case 175 : | |
| buf.append("\u0304"); | |
| break; // macron | |
| case 728 : | |
| buf.append("\u0306"); | |
| break; // breve | |
| case 729 : | |
| case 215 : | |
| buf.append("\u1e25"); | |
| break; // h underdot | |
| case 730 : | |
| buf.append("\u012d"); | |
| break; // i breve | |
| case 184 : | |
| buf.append("\u0327"); | |
| break; // cedilla | |
| case 733 : | |
| buf.append("\u030b"); | |
| break; // hungarumlaut | |
| case 731 : | |
| buf.append("\u0328"); | |
| break; // ogonek | |
| case 711 : | |
| buf.append("\u030c"); | |
| break; // caron | |
| case 199 : | |
| buf.append("\u012b\u0303"); | |
| break; // imacron tilde | |
| case 8226 : | |
| buf.append("\u1e5d"); | |
| break; // runderdot macron | |
| case 8482 : | |
| buf.append("\u016b\0306"); | |
| break; // umacron breve | |
| case 8804 : | |
| buf.append("\u0101\u0301"); | |
| break; // amacron acute | |
| case 8805 : | |
| buf.append("\u016b\u0301"); | |
| break; // umacron acute | |
| case 8719 : | |
| buf.append("\u0113\u0301"); | |
| break; // emacron acute | |
| case 170 : | |
| buf.append("\u0113\u0300"); | |
| break; // emacron breve | |
| case 186 : | |
| buf.append("\u014d\u0300"); | |
| break; // omacron breve | |
| case 161 : | |
| buf.append("\u0101\u0306"); | |
| break; // amacron breve | |
| case 8710 : | |
| buf.append("\u0101\u0303"); | |
| break; // amacron tilde | |
| case 171 : | |
| buf.append("\u012b\u0301"); | |
| break; // imacron acute | |
| case 8260 : | |
| buf.append("\u1e00"); | |
| break; // runderdotmacron acute | |
| case 183 : | |
| buf.append("\u1e5b\u0301"); | |
| break; // runderdot acute | |
| case 8240 : | |
| buf.append("\u012b\u0306"); | |
| break; // imacron breve | |
| case 63743 : | |
| buf.append("\u016b\u0303"); | |
| break; // umacron tilde | |
| default : | |
| buf.append(c); | |
| if ((int) c > 127) | |
| System.out.println("char " + c + " " + (int) c); | |
| break; | |
| } | |
| } | |
| return buf.toString(); | |
| } | |
| static public String normanToUnicodeOld(String inp) | |
| { | |
| StringBuffer buf = new StringBuffer(); | |
| for (int i = 0; i < inp.length(); i++) | |
| { | |
| char c = inp.charAt(i); | |
| switch (c) | |
| { | |
| case 1 : | |
| buf.append("\u00d0"); | |
| break; // Eth | |
| case 2 : | |
| buf.append("\u00f0"); | |
| break; // eth | |
| case 3 : | |
| buf.append("\u0141"); | |
| break; // Lslash | |
| case 4 : | |
| buf.append("\u0142"); | |
| break; // lslash | |
| case 5 : | |
| buf.append("\u0160"); | |
| break; // S caron | |
| case 6 : | |
| buf.append("\u0161"); | |
| break; // s caron | |
| case 7 : | |
| buf.append("\u00dd"); | |
| break; // Y acute | |
| case 8 : | |
| buf.append("\u00fd"); | |
| break; // y acute | |
| case 11 : | |
| buf.append("\u00de"); | |
| break; // Thorn | |
| case 12 : | |
| buf.append("\u00fe"); | |
| break; // thorn | |
| case 14 : | |
| buf.append("\u017d"); | |
| break; // Z caron | |
| case 15 : | |
| buf.append("\u017e"); | |
| break; // z caron | |
| case 17 : | |
| buf.append("\u0073"); | |
| break; // asciitilde | |
| case 18 : | |
| buf.append("j\u0305"); | |
| break; // j macron [does a single char exist?] | |
| case 19 : | |
| buf.append("^"); | |
| break; // circumflex | |
| case 20 : | |
| buf.append("\u0303"); | |
| break; // tilde | |
| case 21 : | |
| buf.append("\u00bd"); | |
| break; // onehalf | |
| case 22 : | |
| buf.append("\u00bc"); | |
| break; // onequarter | |
| case 23 : | |
| buf.append("\u00b9"); | |
| break; // onesuperior | |
| case 24 : | |
| buf.append("\u00be"); | |
| break; // threequarters | |
| case 25 : | |
| buf.append("\u00b3"); | |
| break; // threesuperior | |
| case 26 : | |
| buf.append("\u00b2"); | |
| break; // twosuperior | |
| case 27 : | |
| buf.append("\u00a6"); | |
| break; // brokenbar | |
| case 28 : | |
| buf.append("-"); | |
| break; // minus | |
| case 29 : | |
| buf.append("\u00d7"); | |
| break; // multiply | |
| case 39 : | |
| buf.append("'"); | |
| break; // quotesingle | |
| case 94 : | |
| buf.append("\u0302"); | |
| break; // circumflex | |
| case 96 : | |
| buf.append("\u0300"); | |
| break; // grave | |
| case 128 : | |
| buf.append("\u00c4"); | |
| break; // A dieresis | |
| case 129 : | |
| buf.append("\u00c5"); | |
| break; // A ring | |
| case 131 : | |
| buf.append("\u00c9"); | |
| break; // E acute | |
| case 132 : | |
| buf.append("\u00d1"); | |
| break; // N tilde | |
| case 133 : | |
| buf.append("\u00d6"); | |
| break; // O dieresis | |
| case 134 : | |
| buf.append("\u00dc"); | |
| break; // U dieresis | |
| case 135 : | |
| buf.append("\u00e1"); | |
| break; // a acute | |
| case 136 : | |
| buf.append("\u00e0"); | |
| break; // a grave | |
| case 137 : | |
| buf.append("\u00e2"); | |
| break; // a circumflex | |
| case 138 : | |
| buf.append("\u00e4"); | |
| break; // a dieresis | |
| case 139 : | |
| buf.append("\u00e3"); | |
| break; // a tilde | |
| case 140 : | |
| buf.append("\u0101"); | |
| break; // a macron | |
| case 141 : | |
| buf.append("\u00e7"); | |
| break; // c cedilla | |
| case 142 : | |
| buf.append("\u00e9"); | |
| break; // e acute | |
| case 143 : | |
| buf.append("\u00e8"); | |
| break; // e grave | |
| case 144 : | |
| buf.append("\u00ea"); | |
| break; // e circumflex | |
| case 145 : | |
| buf.append("\u00eb"); | |
| break; // e dieresis | |
| case 146 : | |
| buf.append("\u00ed"); | |
| break; // i acute | |
| case 147 : | |
| buf.append("\u00ec"); | |
| break; // i grave | |
| case 148 : | |
| buf.append("\u00ee"); | |
| break; // i circumflex | |
| case 149 : | |
| buf.append("\u00ef"); | |
| break; // i dieresis | |
| case 150 : | |
| buf.append("\u00f1"); | |
| break; // n tilde | |
| case 151 : | |
| buf.append("\u00f3"); | |
| break; // o acute | |
| case 152 : | |
| buf.append("\u00f2"); | |
| break; // o grave | |
| case 153 : | |
| buf.append("\u00f4"); | |
| break; // o circumflex | |
| case 154 : | |
| buf.append("\u00f6"); | |
| break; // o dieresis | |
| case 155 : | |
| buf.append("\u00f5"); | |
| break; // o tilde | |
| case 156 : | |
| buf.append("\u00fa"); | |
| break; // u acute | |
| case 157 : | |
| buf.append("\u00f9"); | |
| break; // u grave | |
| case 158 : | |
| buf.append("\u00fb"); | |
| break; // u circumflex | |
| case 159 : | |
| buf.append("\u00fc"); | |
| break; // u dieresis | |
| case 160 : | |
| buf.append("\u1e6d"); | |
| break; // t underdot | |
| case 161 : | |
| buf.append("\u00b0"); | |
| break; // degree | |
| case 162 : | |
| buf.append("\u1ebd"); | |
| break; // e tilde | |
| case 163 : | |
| buf.append("\u00a3"); | |
| break; // sterling | |
| case 164 : | |
| buf.append("\u00a7"); | |
| break; // section | |
| case 166 : | |
| buf.append("\u00b6"); | |
| break; // paragraph | |
| case 167 : | |
| buf.append("\u015b"); | |
| break; // s acute | |
| case 168 : | |
| buf.append("\u1e5b"); | |
| break; // r underdot | |
| case 169 : | |
| buf.append("\u1e67"); | |
| break; // s caron | |
| case 171 : | |
| buf.append("\u0301"); | |
| break; // acute | |
| case 172 : | |
| buf.append("\u0308"); | |
| break; // dieresis | |
| case 173 : | |
| buf.append("\u1e6d"); | |
| break; // t underdot | |
| case 174 : | |
| buf.append("\u00c6"); | |
| break; // AE | |
| case 175 : | |
| buf.append("\u014d"); | |
| break; // o macron | |
| case 176 : | |
| buf.append("\u0129"); | |
| break; // i tilde | |
| case 177 : | |
| buf.append("\u00b1"); | |
| break; // plusminus | |
| case 180 : | |
| buf.append("\u012b"); | |
| break; // i macron | |
| case 181 : | |
| buf.append("\u1e43"); | |
| break; // m underdot | |
| case 182 : | |
| buf.append("\u1e0d"); | |
| break; // d underdot | |
| case 183 : | |
| buf.append("\u1e63"); | |
| break; // s underdot | |
| case 185 : | |
| buf.append("\u017a"); | |
| break; // z acute | |
| case 186 : | |
| buf.append("\u1e45"); | |
| break; // n overdot | |
| case 189 : | |
| buf.append("\u0169"); | |
| break; // u tilde | |
| case 190 : | |
| buf.append("\u00e6"); | |
| break; // ae | |
| case 191 : | |
| buf.append("\u00f8"); | |
| break; // oslash | |
| case 192 : | |
| buf.append("\u0304\u0306"); | |
| break; // macron breve | |
| case 194 : | |
| buf.append("\u1e37"); | |
| break; // | |
| case 195 : | |
| buf.append("j\u0305"); | |
| break; // j macron [does a single char exist?] | |
| case 196 : | |
| buf.append("\u0103"); | |
| break; // a breve | |
| case 197 : | |
| buf.append("\u016d"); | |
| break; // u breve | |
| case 200 : | |
| buf.append("\u1e42"); | |
| break; // M underdot | |
| case 201 : | |
| buf.append("\u2026"); | |
| break; // ellipsis | |
| case 203 : | |
| buf.append("\u00c0"); | |
| break; // A grave | |
| case 204 : | |
| buf.append("\u00c3"); | |
| break; // A tilde | |
| case 205 : | |
| buf.append("\u00d5"); | |
| break; // O tilde | |
| case 206 : | |
| buf.append("m\u0306"); | |
| break; // m breve | |
| case 207 : | |
| buf.append("\u0153"); | |
| break; // oe | |
| case 208 : | |
| buf.append("\u2013"); | |
| break; // endash | |
| case 209 : | |
| buf.append("\u2014"); | |
| break; // emdash | |
| case 210 : | |
| buf.append("\u201c"); | |
| break; // quotedblleft | |
| case 211 : | |
| buf.append("\u201d"); | |
| break; // quotedblright | |
| case 212 : | |
| buf.append("\u2018"); | |
| break; // quoteleft | |
| case 213 : | |
| buf.append("\u2019"); | |
| break; // quoteright | |
| case 214 : | |
| buf.append("\u1e37"); | |
| break; // l underring [actually underdot] | |
| case 215 : | |
| buf.append("\u1e41"); | |
| break; // m overdot | |
| case 216 : | |
| buf.append("n\u0306"); | |
| break; // n breve | |
| case 217 : | |
| buf.append("\u00d7"); | |
| break; // multiply | |
| case 219 : | |
| buf.append("\u1e5b"); | |
| break; // r underring [actually underdot] | |
| case 220 : | |
| buf.append("\u1e44"); | |
| break; // N overdot | |
| case 221 : | |
| buf.append("\u1e62"); | |
| break; // S underdot | |
| case 222 : | |
| buf.append("\u1e24"); | |
| break; // H underdot | |
| case 223 : | |
| buf.append("\u1e0c"); | |
| break; // D underdot | |
| case 224 : | |
| buf.append("\u2021"); | |
| break; // daggerdbl | |
| case 226 : | |
| buf.append("\u1e36"); | |
| break; // L underdot | |
| case 227 : | |
| buf.append("\u0113"); | |
| break; // e macron | |
| case 229 : | |
| buf.append("\u1e5f"); | |
| break; // r underbar | |
| case 230 : | |
| buf.append("r\u0324"); | |
| break; // r underdieresis | |
| case 231 : | |
| buf.append("\u012a"); | |
| break; // I macron | |
| case 232 : | |
| buf.append("\u016b"); | |
| break; // u macron | |
| case 233 : | |
| buf.append("\u01e6c"); | |
| break; // T underdot | |
| case 234 : | |
| buf.append("\u1e64"); | |
| break; // S acute | |
| case 235 : | |
| buf.append("\u2020"); | |
| break; // dagger | |
| case 236 : | |
| buf.append("\u0115"); | |
| break; // e breve | |
| case 237 : | |
| buf.append("\u014f"); | |
| break; // o breve | |
| case 238 : | |
| buf.append("\u0100"); | |
| break; // A macron | |
| case 239 : | |
| buf.append("\u1e46"); | |
| break; // N underdot | |
| case 241 : | |
| buf.append("\u1e3b"); | |
| break; // l underbar | |
| case 242 : | |
| buf.append("\u016a"); | |
| break; // U macron | |
| case 243 : | |
| buf.append("\u0179"); | |
| break; // Z acute | |
| case 244 : | |
| buf.append("\u1e5a"); | |
| break; // R underdot | |
| case 245 : | |
| buf.append("\u0131"); | |
| break; // dotlessi | |
| case 246 : | |
| buf.append("\u1e47"); | |
| break; // n underdot | |
| case 247 : | |
| buf.append("\u1e49"); | |
| break; // n underbar | |
| case 248 : | |
| buf.append("\u0304"); | |
| break; // macron | |
| case 249 : | |
| buf.append("\u0306"); | |
| break; // breve | |
| case 250 : | |
| buf.append("\u1e25"); | |
| break; // h underdot | |
| case 251 : | |
| buf.append("\u012d"); | |
| break; // i breve | |
| case 252 : | |
| buf.append("\u0327"); | |
| break; // cedilla | |
| case 253 : | |
| buf.append("\u030b"); | |
| break; // hungarumlaut | |
| case 254 : | |
| buf.append("\u0328"); | |
| break; // ogonek | |
| case 255 : | |
| buf.append("\u030c"); | |
| break; // caron | |
| case 130 : | |
| buf.append("\u012b\u0303"); | |
| break; // imacron tilde | |
| case 165 : | |
| buf.append("\u1e5d"); | |
| break; // runderdot macron | |
| case 170 : | |
| buf.append("\u016b\0306"); | |
| break; // umacron breve | |
| case 178 : | |
| buf.append("\u0101\u0301"); | |
| break; // amacron acute | |
| case 179 : | |
| buf.append("\u016b\u0301"); | |
| break; // umacron acute | |
| case 184 : | |
| buf.append("\u0113\u0301"); | |
| break; // emacron acute | |
| case 187 : | |
| buf.append("\u0113\u0300"); | |
| break; // emacron breve | |
| case 188 : | |
| buf.append("\u014d\u0300"); | |
| break; // omacron breve | |
| case 193 : | |
| buf.append("\u0101\u0306"); | |
| break; // amacron breve | |
| case 198 : | |
| buf.append("\u0101\u0303"); | |
| break; // amacron tilde | |
| case 199 : | |
| buf.append("\u012b\u0301"); | |
| break; // imacron acute | |
| case 218 : | |
| buf.append("\u1e00"); | |
| break; // runderdotmacron acute | |
| case 225 : | |
| buf.append("\u1e5b\u0301"); | |
| break; // runderdot acute | |
| case 228 : | |
| buf.append("\u012b\u0306"); | |
| break; // imacron breve | |
| case 240 : | |
| buf.append("\u016b\u0303"); | |
| break; // umacron tilde | |
| default : | |
| buf.append(c); | |
| break; | |
| } | |
| } | |
| return buf.toString(); | |
| } | |
| static public String normanToUnicodeNew(String inp) | |
| { | |
| StringBuffer buf = new StringBuffer(); | |
| for (int i = 0; i < inp.length(); i++) | |
| { | |
| char c = inp.charAt(i); | |
| switch (c) | |
| { | |
| case 1 : | |
| buf.append("\u00d0"); | |
| break; // Eth | |
| case 2 : | |
| buf.append("\u00f0"); | |
| break; // eth | |
| case 3 : | |
| buf.append("\u0141"); | |
| break; // Lslash | |
| case 4 : | |
| buf.append("\u0142"); | |
| break; // lslash | |
| case 5 : | |
| buf.append("\u0160"); | |
| break; // S caron | |
| case 6 : | |
| buf.append("\u0161"); | |
| break; // s caron | |
| case 7 : | |
| buf.append("\u00dd"); | |
| break; // Y acute | |
| case 8 : | |
| buf.append("\u00fd"); | |
| break; // y acute | |
| case 11 : | |
| buf.append("\u00de"); | |
| break; // Thorn | |
| case 12 : | |
| buf.append("\u00fe"); | |
| break; // thorn | |
| case 14 : | |
| buf.append("\u017d"); | |
| break; // Z caron | |
| case 15 : | |
| buf.append("\u017e"); | |
| break; // z caron | |
| case 17 : | |
| buf.append("\u0073"); | |
| break; // asciitilde | |
| case 18 : | |
| buf.append("j\u0305"); | |
| break; // j macron [does a single char exist?] | |
| case 19 : | |
| buf.append("^"); | |
| break; // circumflex | |
| case 20 : | |
| buf.append("\u0303"); | |
| break; // tilde | |
| case 21 : | |
| buf.append("\u00bd"); | |
| break; // onehalf | |
| case 22 : | |
| buf.append("\u00bc"); | |
| break; // onequarter | |
| case 23 : | |
| buf.append("\u00b9"); | |
| break; // onesuperior | |
| case 24 : | |
| buf.append("\u00be"); | |
| break; // threequarters | |
| case 25 : | |
| buf.append("\u00b3"); | |
| break; // threesuperior | |
| case 26 : | |
| buf.append("\u00b2"); | |
| break; // twosuperior | |
| case 27 : | |
| buf.append("\u00a6"); | |
| break; // brokenbar | |
| case 28 : | |
| buf.append("-"); | |
| break; // minus | |
| case 29 : | |
| buf.append("\u00d7"); | |
| break; // multiply | |
| case 39 : | |
| buf.append("'"); | |
| break; // quotesingle | |
| case 94 : | |
| buf.append("\u0302"); | |
| break; // circumflex | |
| case 96 : | |
| buf.append("\u0300"); | |
| break; // grave | |
| case 196 : | |
| buf.append("\u00c4"); | |
| break; // A dieresis | |
| case 197 : | |
| buf.append("\u00c5"); | |
| break; // A ring | |
| case 201 : | |
| buf.append("\u00c9"); | |
| break; // E acute | |
| case 209 : | |
| buf.append("\u00d1"); | |
| break; // N tilde | |
| case 214 : | |
| buf.append("\u00d6"); | |
| break; // O dieresis | |
| case 220 : | |
| buf.append("\u00dc"); | |
| break; // U dieresis | |
| case 225 : | |
| buf.append("\u00e1"); | |
| break; // a acute | |
| case 224 : | |
| buf.append("\u00e0"); | |
| break; // a grave | |
| case 226 : | |
| buf.append("\u00e2"); | |
| break; // a circumflex | |
| case 228 : | |
| buf.append("\u00e4"); | |
| break; // a dieresis | |
| case 227 : | |
| buf.append("\u00e3"); | |
| break; // a tilde | |
| case 229 : | |
| buf.append("\u0101"); | |
| break; // a macron | |
| case 231 : | |
| buf.append("\u00e7"); | |
| break; // c cedilla | |
| case 233 : | |
| buf.append("\u00e9"); | |
| break; // e acute | |
| case 232 : | |
| buf.append("\u00e8"); | |
| break; // e grave | |
| case 234 : | |
| buf.append("\u00ea"); | |
| break; // e circumflex | |
| case 235 : | |
| buf.append("\u00eb"); | |
| break; // e dieresis | |
| case 237 : | |
| buf.append("\u00ed"); | |
| break; // i acute | |
| case 236 : | |
| buf.append("\u00ec"); | |
| break; // i grave | |
| case 238 : | |
| buf.append("\u00ee"); | |
| break; // i circumflex | |
| case 239 : | |
| buf.append("\u00ef"); | |
| break; // i dieresis | |
| case 241 : | |
| buf.append("\u00f1"); | |
| break; // n tilde | |
| case 243 : | |
| buf.append("\u00f3"); | |
| break; // o acute | |
| case 242 : | |
| buf.append("\u00f2"); | |
| break; // o grave | |
| case 244 : | |
| buf.append("\u00f4"); | |
| break; // o circumflex | |
| case 246 : | |
| buf.append("\u00f6"); | |
| break; // o dieresis | |
| case 245 : | |
| buf.append("\u00f5"); | |
| break; // o tilde | |
| case 250 : | |
| buf.append("\u00fa"); | |
| break; // u acute | |
| case 249 : | |
| buf.append("\u00f9"); | |
| break; // u grave | |
| case 251 : | |
| buf.append("\u00fb"); | |
| break; // u circumflex | |
| case 252 : | |
| buf.append("\u00fc"); | |
| break; // u dieresis | |
| case 8224 : | |
| buf.append("\u1e6d"); | |
| break; // t underdot | |
| case 176 : | |
| buf.append("\u00b0"); | |
| break; // degree | |
| case 162 : | |
| buf.append("\u1ebd"); | |
| break; // e tilde | |
| case 163 : | |
| buf.append("\u00a3"); | |
| break; // sterling | |
| case 167 : | |
| buf.append("\u00a7"); | |
| break; // section | |
| case 182 : | |
| buf.append("\u00b6"); | |
| break; // paragraph | |
| case 223 : | |
| buf.append("\u015b"); | |
| break; // s acute | |
| case 174 : | |
| buf.append("\u1e5b"); | |
| break; // r underdot | |
| case 169 : | |
| buf.append("\u1e45"); | |
| break; // n overdot | |
| case 180 : | |
| buf.append("\u0301"); | |
| break; // acute | |
| case 168 : | |
| buf.append("\u0308"); | |
| break; // dieresis | |
| case 8800 : | |
| buf.append("\u1e6d"); | |
| break; // t underdot | |
| case 198 : | |
| buf.append("\u00c6"); | |
| break; // AE | |
| case 216 : | |
| buf.append("\u014d"); | |
| break; // o macron | |
| case 8734 : | |
| buf.append("\u0129"); | |
| break; // i tilde | |
| case 177 : | |
| buf.append("\u00b1"); | |
| break; // plusminus | |
| case 165 : | |
| buf.append("\u012b"); | |
| break; // i macron | |
| case 181 : | |
| buf.append("\u1e43"); | |
| break; // m underdot | |
| case 8706 : | |
| buf.append("\u1e0d"); | |
| break; // d underdot | |
| case 8721 : | |
| buf.append("\u1e63"); | |
| break; // s underdot | |
| case 960 : | |
| buf.append("\u017a"); | |
| break; // z acute | |
| case 8747 : | |
| buf.append("\u1e45"); | |
| break; // n overdot | |
| case 937 : | |
| buf.append("\u0169"); | |
| break; // u tilde | |
| case 230 : | |
| buf.append("\u00e6"); | |
| break; // ae | |
| case 248 : | |
| buf.append("\u00f8"); | |
| break; // oslash | |
| case 191 : | |
| buf.append("\u0304\u0306"); | |
| break; // macron breve | |
| case 172 : | |
| buf.append("\u1e37"); | |
| break; // | |
| case 8730 : | |
| buf.append("j\u0305"); | |
| break; // j macron [does a single char exist?] | |
| case 402 : | |
| buf.append("\u0103"); | |
| break; // a breve | |
| case 8776 : | |
| buf.append("\u016d"); | |
| break; // u breve | |
| case 187 : | |
| buf.append("\u1e42"); | |
| break; // M underdot | |
| case 8230 : | |
| buf.append("\u2026"); | |
| break; // ellipsis | |
| case 192 : | |
| buf.append("\u00c0"); | |
| break; // A grave | |
| case 195 : | |
| buf.append("\u00c3"); | |
| break; // A tilde | |
| case 213 : | |
| buf.append("\u00d5"); | |
| break; // O tilde | |
| case 338 : | |
| buf.append("m\u0306"); | |
| break; // m breve | |
| case 339 : | |
| buf.append("\u0153"); | |
| break; // oe | |
| case 8211 : | |
| buf.append("\u2013"); | |
| break; // endash | |
| case 8212 : | |
| buf.append("\u2014"); | |
| break; // emdash | |
| case 8220 : | |
| buf.append("\u201c"); | |
| break; // quotedblleft | |
| case 8221 : | |
| buf.append("\u201d"); | |
| break; // quotedblright | |
| case 8216 : | |
| buf.append("\u2018"); | |
| break; // quoteleft | |
| case 8217 : | |
| buf.append("\u2019"); | |
| break; // quoteright | |
| case 247 : | |
| buf.append("\u1e37"); | |
| break; // l underring [actually underdot] | |
| case 9674 : | |
| buf.append("\u1e41"); | |
| break; // m overdot | |
| case 255 : | |
| buf.append("n\u0306"); | |
| break; // n breve | |
| case 376 : | |
| buf.append("\u00d7"); | |
| break; // multiply | |
| case 8364 : | |
| buf.append("\u1e5b"); | |
| break; // r underring [actually underdot] | |
| case 8249 : | |
| buf.append("\u1e44"); | |
| break; // N overdot | |
| case 8250 : | |
| buf.append("\u1e62"); | |
| break; // S underdot | |
| case 64257 : | |
| buf.append("\u1e24"); | |
| break; // H underdot | |
| case 64258 : | |
| buf.append("\u1e0c"); | |
| break; // D underdot | |
| case 8225 : | |
| buf.append("\u2021"); | |
| break; // daggerdbl | |
| case 8218 : | |
| buf.append("\u1e36"); | |
| break; // L underdot | |
| case 8222 : | |
| buf.append("\u0113"); | |
| break; // e macron | |
| case 194 : | |
| buf.append("\u1e5f"); | |
| break; // r underbar | |
| case 202 : | |
| buf.append("r\u0324"); | |
| break; // r underdieresis | |
| case 193 : | |
| buf.append("\u012a"); | |
| break; // I macron | |
| case 203 : | |
| buf.append("\u016b"); | |
| break; // u macron | |
| case 200 : | |
| buf.append("\u1e6c"); | |
| break; // T underdot | |
| case 205 : | |
| buf.append("\u1e64"); | |
| break; // S acute | |
| case 206 : | |
| buf.append("\u2020"); | |
| break; // dagger | |
| case 207 : | |
| buf.append("\u0115"); | |
| break; // e breve | |
| case 204 : | |
| buf.append("\u014f"); | |
| break; // o breve | |
| case 211 : | |
| buf.append("\u0100"); | |
| break; // A macron | |
| case 212 : | |
| buf.append("\u1e46"); | |
| break; // N underdot | |
| case 210 : | |
| buf.append("\u1e3b"); | |
| break; // l underbar | |
| case 218 : | |
| buf.append("\u016a"); | |
| break; // U macron | |
| case 219 : | |
| buf.append("\u0179"); | |
| break; // Z acute | |
| case 217 : | |
| buf.append("\u1e5a"); | |
| break; // R underdot | |
| case 305 : | |
| buf.append("\u0131"); | |
| break; // dotlessi | |
| case 710 : | |
| buf.append("\u1e47"); | |
| break; // n underdot | |
| case 732 : | |
| buf.append("\u1e49"); | |
| break; // n underbar | |
| case 175 : | |
| buf.append("\u0304"); | |
| break; // macron | |
| case 728 : | |
| buf.append("\u0306"); | |
| break; // breve | |
| case 729 : | |
| buf.append("\u1e25"); | |
| break; // h underdot | |
| case 730 : | |
| buf.append("\u012d"); | |
| break; // i breve | |
| case 184 : | |
| buf.append("\u0327"); | |
| break; // cedilla | |
| case 733 : | |
| buf.append("\u030b"); | |
| break; // hungarumlaut | |
| case 731 : | |
| buf.append("\u0328"); | |
| break; // ogonek | |
| case 711 : | |
| buf.append("\u030c"); | |
| break; // caron | |
| case 199 : | |
| buf.append("\u012b\u0303"); | |
| break; // imacron tilde | |
| case 8226 : | |
| buf.append("\u1e5d"); | |
| break; // runderdot macron | |
| case 8482 : | |
| buf.append("\u016b\0306"); | |
| break; // umacron breve | |
| case 8804 : | |
| buf.append("\u0101\u0301"); | |
| break; // amacron acute | |
| case 8805 : | |
| buf.append("\u016b\u0301"); | |
| break; // umacron acute | |
| case 8719 : | |
| buf.append("\u0113\u0301"); | |
| break; // emacron acute | |
| case 170 : | |
| buf.append("\u0113\u0300"); | |
| break; // emacron breve | |
| case 186 : | |
| buf.append("\u014d\u0300"); | |
| break; // omacron breve | |
| case 161 : | |
| buf.append("\u0101\u0306"); | |
| break; // amacron breve | |
| case 8710 : | |
| buf.append("\u0101\u0303"); | |
| break; // amacron tilde | |
| case 171 : | |
| buf.append("\u012b\u0301"); | |
| break; // imacron acute | |
| case 8260 : | |
| buf.append("\u1e00"); | |
| break; // runderdotmacron acute | |
| case 183 : | |
| buf.append("\u1e5b\u0301"); | |
| break; // runderdot acute | |
| case 8240 : | |
| buf.append("\u012b\u0306"); | |
| break; // imacron breve | |
| case 63743 : | |
| buf.append("\u016b\u0303"); | |
| break; // umacron tilde | |
| default : | |
| buf.append(c); | |
| break; | |
| } | |
| } | |
| return buf.toString(); | |
| } | |
| public static ConversionProperties getFieldNamesAndDestTableName(String create, String query, String tableName) | |
| { | |
| String[] fieldNames = null; | |
| String destTableName = null; | |
| // determine destTableName from createStatement or from source table name | |
| if (!create.equals("")) | |
| { | |
| int fromIndex = create.toLowerCase().indexOf("table") + 5; | |
| int toIndex = create.indexOf("("); | |
| int endIndex = create.indexOf(")", toIndex); | |
| destTableName = create.substring(fromIndex, toIndex).replaceAll(beanDest.getQC(), "").trim(); | |
| System.out.println("destTable " + destTableName); | |
| // retrieve field_names from select statement | |
| // TODO problem with different fieldNames in create statement will overwrite them | |
| if (query.indexOf("*") < 0) | |
| { | |
| int selectEndIndex = query.indexOf("from"); | |
| StringTokenizer tokenizer = new StringTokenizer(query.substring(6, selectEndIndex), ","); | |
| int numFields = tokenizer.countTokens(); | |
| fieldNames = new String[numFields]; | |
| int fieldIndex = 0; | |
| while (tokenizer.hasMoreTokens()) | |
| { | |
| String fieldName = tokenizer.nextToken().trim(); | |
| fieldNames[fieldIndex] = convertText(fieldName); | |
| System.out.println(fieldNames[fieldIndex]); | |
| fieldIndex++; | |
| } | |
| } else | |
| { | |
| // use create statement for field names | |
| StringTokenizer tokenizer = new StringTokenizer(create.substring(toIndex + 1, endIndex), ","); | |
| int numFields = tokenizer.countTokens(); | |
| fieldNames = new String[numFields]; | |
| int fieldIndex = 0; | |
| while (tokenizer.hasMoreTokens()) | |
| { | |
| String fieldName = tokenizer.nextToken().trim(); | |
| int index = fieldName.lastIndexOf(" "); | |
| fieldNames[fieldIndex] = fieldName.substring(0, index); | |
| System.out.println(fieldNames[fieldIndex]); | |
| fieldIndex++; | |
| } | |
| } | |
| } else | |
| { | |
| destTableName = convertText(tableName); | |
| // retrieve field_names from select statement | |
| if (query.indexOf("*") < 0) | |
| { | |
| int selectEndIndex = query.indexOf("from"); | |
| StringTokenizer tokenizer = new StringTokenizer(query.substring(6, selectEndIndex), ","); | |
| int numFields = tokenizer.countTokens(); | |
| fieldNames = new String[numFields]; | |
| int fieldIndex = 0; | |
| while (tokenizer.hasMoreTokens()) | |
| { | |
| String fieldName = tokenizer.nextToken().trim(); | |
| fieldNames[fieldIndex] = convertText(fieldName); | |
| // System.out.println("field "+ fieldNames[fieldIndex]); | |
| fieldIndex++; | |
| } | |
| } else | |
| { | |
| Vector fieldNamesVec = bean.getColumnNames(); | |
| fieldNames = new String[fieldNamesVec.size()]; | |
| int fieldIndex = -1; | |
| for (Iterator iter = fieldNamesVec.iterator(); iter.hasNext();) | |
| { | |
| String element = (String) iter.next(); | |
| fieldNames[++fieldIndex] = bean.getQC() + convertText(element) + bean.getQC(); | |
| // System.out.println("field " + fieldNames[fieldIndex]); | |
| } | |
| } | |
| } | |
| return new ConversionProperties(destTableName, fieldNames); | |
| } | |
| /** | |
| * creates an insert into statement for the specified table and given | |
| * field names | |
| * @param destTableName | |
| * @param fieldNames | |
| * @return | |
| */ | |
| public static StringBuffer createInsertCommand(String destTableName, String[] fieldNames) | |
| { | |
| StringBuffer command = new StringBuffer(); | |
| command.append("INSERT INTO "); | |
| command.append(beanDest.getQC()); | |
| command.append(destTableName); //convertText((String) names.get(tbIndex))); | |
| command.append(beanDest.getQC()); | |
| command.append(" ("); | |
| for (int i = 0; i < fieldNames.length; i++) | |
| { | |
| command.append(fieldNames[i]); | |
| if (i < fieldNames.length - 1) | |
| command.append(","); | |
| } | |
| command.append(") "); | |
| command.append(" values ( "); | |
| // add a question marks for every field | |
| for (int i = 0; i < bean.getColumnNames().size() - 1; ++i) | |
| command.append("?,"); | |
| command.append("?)"); | |
| return command; | |
| } | |
| public static StringBuffer createUpdateCommand(String destTableName, String[] fieldNames, String id) | |
| { | |
| StringBuffer command = new StringBuffer(); | |
| command.append("UPDATE "); | |
| command.append(beanDest.getQC()); | |
| command.append(destTableName); | |
| //command.append(convertText((String) names.get(tbIndex))); | |
| command.append(beanDest.getQC()); | |
| command.append(" SET "); | |
| int size = bean.getColumnNames().size(); | |
| for (int i = 0; i < size - 1; ++i) | |
| command.append(fieldNames[i] + " = ? ,"); | |
| command.append(fieldNames[size - 1] + " = ? "); | |
| command.append("WHERE " + id + " = ?"); | |
| return command; | |
| } | |
| public static StringBuffer createDeleteCommand(String destTableName, String idField) | |
| { | |
| StringBuffer command = new StringBuffer(); | |
| command.append("DELETE FROM"); | |
| command.append(beanDest.getQC()); | |
| command.append(destTableName); | |
| //command.append(convertText((String) names.get(tbIndex))); | |
| command.append(beanDest.getQC()); | |
| command.append("WHERE " + idField + " = ?"); | |
| return command; | |
| } | |
| } | } |