version 1.63, 2004/07/27 10:41:36
|
version 1.64, 2004/07/28 11:21:01
|
Line 571 class Convert
|
Line 571 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("("); |
|
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 |
|
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(names.get(tbIndex).toString()); |
|
|
|
// 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]); |
|
} |
|
} |
|
} |
|
if (mode == Convert.DataBase.CONVERT_MODE) |
if (mode == Convert.DataBase.CONVERT_MODE) |
{ |
{ |
|
|
Line 1604 class Convert
|
Line 1533 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 2064 class Convert
|
Line 2014 class Convert
|
Vector deleted = new Vector(vec); |
Vector deleted = new Vector(vec); |
Vector linesToDelete = new Vector(vecDest); |
Vector linesToDelete = new Vector(vecDest); |
|
|
Vector linesToAppend = new Vector(vec); |
TreeSet linesToAppend = new TreeSet(vec); |
// remove all lines that are already in dest database |
// remove all lines that are already in dest database |
linesToAppend.removeAll(vecDest); |
linesToAppend.removeAll(vecDest); |
// remove all lines that should not be deleted |
// remove all lines that should not be deleted |
Line 2079 class Convert
|
Line 2029 class Convert
|
System.out.println("tempQuery is now "+tempQuery+" order by "+tempID); |
System.out.println("tempQuery is now "+tempQuery+" order by "+tempID); |
// bean.makeQuery(tempQuery,vec.size()); |
// bean.makeQuery(tempQuery,vec.size()); |
Vector[] vectors=bean.getQueryData(tempQuery,vec.size()); |
Vector[] vectors=bean.getQueryData(tempQuery,vec.size()); |
System.out.println(vectors[0]); |
int idIndex = vectors[1].indexOf(idField); |
System.out.println( bean.getColumnNames().indexOf(idField)); |
for (Iterator iter = vectors[0].iterator(); iter.hasNext();) |
System.exit(0); |
{ |
|
Vector line = (Vector) iter.next(); |
|
System.out.println("line "+linesToAppend.contains(line.get(idIndex))); |
|
} |
|
System.out.println( ); |
// System.out.println("ID LIST SIZE " + Math.round((double) myIds.size() / (double) numIntervalls) + " " + myIdsDest.size()); |
// 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 |
/// @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()); |
System.out.println("number of lines to be deleted " + linesToDelete.size()); |
deltaID = (int) Math.round((double) myIds.size() / (double) numIntervalls); |
deltaID = (int) Math.round((double) myIds.size() / (double) numIntervalls); |
|
System.out.println("deltaID "+deltaID); |
|
System.exit(0); |
|
|
beanDest.setConnection(destination); |
beanDest.setConnection(destination); |
|
|
Statement stm = beanDest.getConnection().createStatement(); |
Statement stm = beanDest.getConnection().createStatement(); |
Line 2676 class Convert
|
Line 2633 class Convert
|
} |
} |
return buf.toString(); |
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); |
|
} |
} |
} |
|
|