📄 i18nsqlparser.java
字号:
andPos = temp.toLowerCase().indexOf(" and ");
String strTokenAdd;
if (andPos != -1)
strTokenAdd = temp.substring(0, andPos).trim();
else
strTokenAdd = temp.trim();
int delimiter2 = strTokenAdd.indexOf("=");
if (delimiter2 != -1) {
String valueAdd = strTokenAdd.substring(delimiter2 + 1).trim();
valueAdd = Utils.handleQuotedString(valueAdd);
whereCols.add(strTokenAdd.substring(0, delimiter2).trim());
valueAdd = Utils.replaceAll(valueAdd, COMMA_ESCAPE, ",");
valueAdd = Utils.replaceAll(valueAdd, QUOTE_ESCAPE, "'");
valueAdd = Utils.replaceKeywordsBack(valueAdd, oldValues);
whereValues.add(valueAdd);
}
else {
int delimiter3 = strTokenAdd.toLowerCase().indexOf(" is ");
whereCols.add(strTokenAdd.substring(0, delimiter3).trim());
whereValues.add(null);
}
temp = temp.substring(andPos + 5);
if (temp.toLowerCase().indexOf(" and ") == -1) {
strTokenAdd = temp.trim();
int delimiter4 = strTokenAdd.indexOf("=");
if (delimiter4 != -1) {
String valueAdd = strTokenAdd.substring(delimiter4 + 1).trim();
valueAdd = Utils.handleQuotedString(valueAdd);
whereCols.add(strTokenAdd.substring(0, delimiter4).trim());
valueAdd = Utils.replaceAll(valueAdd, COMMA_ESCAPE, ",");
valueAdd = Utils.replaceAll(valueAdd, QUOTE_ESCAPE, "'");
valueAdd = Utils.replaceKeywordsBack(valueAdd, oldValues);
whereValues.add(valueAdd);
}
else {
int delimiter3 = strTokenAdd.toLowerCase().indexOf(" is ");
whereCols.add(strTokenAdd.substring(0, delimiter3).trim());
whereValues.add(null);
}
break out1;
}
}
while (true);
}
else {
int delimiter = strToken.indexOf("=");
if (delimiter != -1) {
String value = strToken.substring(delimiter + 1).trim();
value = Utils.handleQuotedString(value);
whereCols.add(strToken.substring(0, delimiter).trim());
value = Utils.replaceAll(value, COMMA_ESCAPE, ",");
value = Utils.replaceAll(value, QUOTE_ESCAPE, "'");
value = Utils.replaceKeywordsBack(value, oldValues);
whereValues.add(value);
}
else {
int delimiter1 = strToken.toLowerCase().indexOf(" is ");
whereCols.add(strToken.substring(0, delimiter1).trim());
whereValues.add(null);
}
}
}
columnWhereNames = new String[whereCols.size()];
columnWhereValues = new String[whereValues.size()];
whereCols.copyInto(columnWhereNames);
whereValues.copyInto(columnWhereValues);
}
}
//INSERT
else if ( upperSql.startsWith("INSERT ") ) {
if (upperSql.lastIndexOf(" VALUES") == -1) {
throw new Exception("Malformed SQL. Missing VALUES statement.");
}
sqlType = INSERT;
int intoPos = 0;
if (upperSql.indexOf(" INTO ") != -1)
intoPos = upperSql.indexOf(" INTO ") + 6;
else
intoPos = upperSql.indexOf("INSERT ") + 7;
int bracketPos = upperSql.indexOf("(");
int lastBracketPos = upperSql.indexOf(")");
tableName = sql.substring(intoPos, bracketPos).trim();
Vector cols = new Vector();
StringTokenizer tokenizer = new StringTokenizer(upperSql.substring(
bracketPos + 1, lastBracketPos), ",");
while (tokenizer.hasMoreTokens()) {
cols.add(tokenizer.nextToken().trim());
}
columnNames = new String[cols.size()];
cols.copyInto(columnNames);
int valuesPos = upperSql.indexOf("VALUES");
String endStatement = sql.substring(valuesPos + 6).trim();
bracketPos = endStatement.indexOf("(");
lastBracketPos = endStatement.lastIndexOf(")");
Vector values = new Vector();
StringTokenizer tokenizer2 = new StringTokenizer(endStatement.substring(
bracketPos + 1, lastBracketPos), ",");
while (tokenizer2.hasMoreTokens()) {
String value = tokenizer2.nextToken().trim();
value = Utils.handleQuotedString(value);
value = Utils.replaceAll(value, COMMA_ESCAPE, ",");
value = Utils.replaceAll(value, QUOTE_ESCAPE, "'");
value = Utils.replaceAll(value, "\"", DOUBLE_QUOTE_ESCAPE);
value = Utils.replaceKeywordsBack(value, oldValues);
value = Utils.handleBinaryString(value, this.binaryStreamObjectList);
values.add(value);
}
columnValues = new String[values.size()];
values.copyInto(columnValues);
//replace all line brakes
// columnValues = Utils.replaceLineBrakesAndCarrReturn(
// columnValues,
// ((I18nConnection) statement.getConnection()).getLineBreakEscape(),
// ((I18nConnection) statement.getConnection()).getCarriageReturnEscape()
// );
}
//UPDATE
else if ( upperSql.startsWith("UPDATE ") ) {
if (upperSql.lastIndexOf(" SET ") == -1)
throw new Exception("Malformed SQL. Missing SET statement.");
sqlType = UPDATE;
int updatePos = upperSql.indexOf("UPDATE");
int setPos = upperSql.indexOf(" SET ");
int equalPos = upperSql.indexOf("=");
int wherePos = upperSql.indexOf(" WHERE ");
tableName = sql.substring(updatePos + 6, setPos).trim();
String setString = "";
if (wherePos != -1)
setString = sql.substring(setPos + 5, wherePos);
else
setString = sql.substring(setPos + 5, sql.length());
StringTokenizer tokenizerSet = new StringTokenizer(setString, ",");
Vector setNames = new Vector();
Vector setValues = new Vector();
while (tokenizerSet.hasMoreTokens()) {
String strToken = tokenizerSet.nextToken();
int delimiter = strToken.indexOf("=");
setNames.add(strToken.substring(0, delimiter).trim());
String value = strToken.substring(delimiter + 1).trim();
value = Utils.handleQuotedString(value);
value = Utils.replaceAll(value, COMMA_ESCAPE, ",");
value = Utils.replaceAll(value, QUOTE_ESCAPE, "'");
value = Utils.replaceAll(value, "\"", DOUBLE_QUOTE_ESCAPE);
value = Utils.replaceKeywordsBack(value, oldValues);
value = Utils.handleBinaryString(value, this.binaryStreamObjectList);
setValues.add(value);
}
columnNames = new String[setNames.size()];
columnValues = new String[setValues.size()];
setNames.copyInto(columnNames);
setValues.copyInto(columnValues);
//replace all line brakes
// columnValues = Utils.replaceLineBrakesAndCarrReturn(
// columnValues,
// ((I18nConnection) statement.getConnection()).getLineBreakEscape(),
// ((I18nConnection) statement.getConnection()).getCarriageReturnEscape()
// );
if (wherePos != -1) {
String strWhere = sql.substring(wherePos + 6).trim();
Vector whereCols = new Vector();
Vector whereValues = new Vector();
StringTokenizer tokenizerWhere = new StringTokenizer(strWhere, ",");
while (tokenizerWhere.hasMoreTokens()) {
String strToken = tokenizerWhere.nextToken();
if (strToken.toLowerCase().indexOf(" and ") != -1) {
String temp = strToken;
int andPos = 0;
out:
do {
andPos = temp.toLowerCase().indexOf(" and ");
String strTokenAdd;
if (andPos != -1)
strTokenAdd = temp.substring(0, andPos).trim();
else
strTokenAdd = temp.trim();
int delimiter2 = strTokenAdd.indexOf("=");
if (delimiter2 != -1) {
String valueAdd = strTokenAdd.substring(delimiter2 + 1).trim();
valueAdd = Utils.handleQuotedString(valueAdd);
whereCols.add(strTokenAdd.substring(0, delimiter2).trim());
valueAdd = Utils.replaceAll(valueAdd, COMMA_ESCAPE, ",");
valueAdd = Utils.replaceAll(valueAdd, QUOTE_ESCAPE, "'");
valueAdd = Utils.replaceKeywordsBack(valueAdd, oldValues);
whereValues.add(valueAdd);
}
else {
int delimiter3 = strTokenAdd.toLowerCase().indexOf(" is ");
whereCols.add(strTokenAdd.substring(0, delimiter3).trim());
whereValues.add(null);
}
temp = temp.substring(andPos + 5);
if (temp.toLowerCase().indexOf(" and ") == -1) {
strTokenAdd = temp.trim();
int delimiter4 = strTokenAdd.indexOf("=");
if (delimiter4 != -1) {
String valueAdd = strTokenAdd.substring(delimiter4 + 1).
trim();
valueAdd = Utils.handleQuotedString(valueAdd);
whereCols.add(strTokenAdd.substring(0, delimiter4).trim());
valueAdd = Utils.replaceAll(valueAdd, COMMA_ESCAPE, ",");
valueAdd = Utils.replaceAll(valueAdd, QUOTE_ESCAPE, "'");
valueAdd = Utils.replaceKeywordsBack(valueAdd, oldValues);
whereValues.add(valueAdd);
}
else {
int delimiter3 = strTokenAdd.toLowerCase().indexOf(" is ");
whereCols.add(strTokenAdd.substring(0, delimiter3).trim());
whereValues.add(null);
}
break out;
}
}
while (true);
}
else {
int delimiter = strToken.indexOf("=");
if (delimiter != -1) {
String value = strToken.substring(delimiter + 1).trim();
value = Utils.handleQuotedString(value);
whereCols.add(strToken.substring(0, delimiter).trim());
value = Utils.replaceAll(value, COMMA_ESCAPE, ",");
value = Utils.replaceAll(value, QUOTE_ESCAPE, "'");
value = Utils.replaceKeywordsBack(value, oldValues);
whereValues.add(value);
}
else {
int delimiter1 = strToken.toLowerCase().indexOf(" is ");
whereCols.add(strToken.substring(0, delimiter1).trim());
whereValues.add(null);
}
}
}
columnWhereNames = new String[whereCols.size()];
columnWhereValues = new String[whereValues.size()];
whereCols.copyInto(columnWhereNames);
whereValues.copyInto(columnWhereValues);
}
}
//CREATE TABLE
else if ( upperSql.startsWith("CREATE TABLE ") ) {
sqlType = CREATE_TABLE;
int createPos = upperSql.indexOf("CREATE TABLE");
int tableStartPos = upperSql.indexOf("(");
int tableEndPos = upperSql.lastIndexOf(")");
tableName = sql.substring(createPos + 12, tableStartPos).trim();
String createString = sql.substring(tableStartPos + 1, tableEndPos).
trim();
StringTokenizer tokenizerCreate = new StringTokenizer(createString.
toUpperCase(), "\n");
Vector setColumnNames = new Vector();
while (tokenizerCreate.hasMoreTokens()) {
String strToken = tokenizerCreate.nextToken().trim();
int delimiter = strToken.indexOf(" ");
//find out type of column
String typeOfColumn = "";
StringTokenizer stSpace = new StringTokenizer(strToken, " ");
while (stSpace.hasMoreTokens()) {
String nextStSpace = stSpace.nextToken();
//ZK commented next 2 lines
// if (nextStSpace.equalsIgnoreCase(CsvDriver.BINARY_TYPE))
// typeOfColumn = "-BINARY";
}
if (strToken.toUpperCase().indexOf("CONSTRAINT") == -1) {
String columnName = strToken.substring(0, delimiter).trim();
setColumnNames.add(columnName + typeOfColumn);
}
}
columnNames = new String[setColumnNames.size()];
setColumnNames.copyInto(columnNames);
} else {
throw new Exception("Malformed SQL. Wrong SQL statement.");
}
}
/**
* Set setBinaryStreamList.
* @param list
*/
public void setBinaryStreamList(ArrayList list) {
this.binaryStreamObjectList = list;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -