in HSQL/src/org/hsqldb1/util/TransferSQLText.java [435:619]
void parseFileForTheRest(TransferTable TTable,
DataAccessPoint Dest)
throws DataAccessPointException {
StringTokenizer Tokenizer;
StructureAlreadyParsed = true;
if (WTextRead == null) {
try {
WTextRead = new BufferedReader(new FileReader(sFileName));
} catch (IOException e) {
throw new DataAccessPointException(e.getMessage());
}
}
String currentLine = "";
String Token = "";
String name = "";
TransferTable relatedTable = null;
try {
while ((currentLine = WTextRead.readLine()) != null) {
currentLine = currentLine.trim() + ";";
Tokenizer = new StringTokenizer(currentLine);
try {
Token = Tokenizer.nextToken();
} catch (NoSuchElementException NSE) {
continue;
}
if (Token == null) {
continue;
}
if (Token.toUpperCase().equals("INSERT")) {
try {
if (!Tokenizer.nextToken().toUpperCase().equals(
"INTO")) {
throw new DataAccessPointException(
"Error in INSERT statement: no INTO found");
}
Token = Tokenizer.nextToken();
if ((relatedTable =
(TransferTable) DbStmts.get(Token)) != null) {
relatedTable.Stmts.bDelete = true;
relatedTable.Stmts.bInsert = true;
relatedTable.Stmts.sDestInsert = currentLine;
relatedTable.Stmts.sDestDelete =
"DELETE FROM "
+ relatedTable.Stmts.sSourceTable + ";";
}
continue;
} catch (NoSuchElementException NSE) {
continue;
}
} else if (Token.toUpperCase().equals("ALTER")) {
try {
if (!Tokenizer.nextToken().toUpperCase().equals(
"TABLE")) {
continue;
}
name = Tokenizer.nextToken();
Token = Tokenizer.nextToken().toUpperCase();
if (!Token.equals("ADD")) {
continue;
}
do {
Token = Tokenizer.nextToken().toUpperCase();
} while (!Token.equals("CONSTRAINT"));
if ((relatedTable = (TransferTable) DbStmts.get(name))
!= null) {
if (relatedTable.Stmts.sDestAlter == null) {
relatedTable.Stmts.sDestAlter = "";
}
relatedTable.Stmts.bAlter = true;
relatedTable.Stmts.sDestAlter += currentLine;
} else {
throw new DataAccessPointException(
"table not found");
}
Token = Tokenizer.nextToken();
if (relatedTable.Stmts.sDestDrop == null) {
relatedTable.Stmts.sDestDrop = "";
}
relatedTable.Stmts.bDrop = true;
relatedTable.Stmts.sDestDrop =
"ALTER TABLE " + name + " DROP CONSTRAINT "
+ Token + ";" + relatedTable.Stmts.sDestDrop;
continue;
} catch (NoSuchElementException NSE) {
continue;
}
} else if (!Token.toUpperCase().equals("CREATE")) {
continue;
}
Token = Tokenizer.nextToken().toUpperCase();
if (Token.equals("TABLE") || Token.equals("VIEW")) {
try {
name = Tokenizer.nextToken(" (;");
if (!DbStmts.containsKey(name)) {
throw new DataAccessPointException(
"error: index is created before the table");
}
relatedTable = (TransferTable) DbStmts.get(name);
relatedTable.Stmts.bCreate = true;
relatedTable.Stmts.bDrop = true;
// relatedTable.Stmts.sDestCreate = currentLine;
relatedTable.Stmts.sDestCreate =
translateTypes(currentLine, TTable, Dest);
relatedTable.Stmts.sDestDrop =
"DROP " + relatedTable.Stmts.sType + " " + name
+ ";";
DbStmts.put(relatedTable.Stmts.sSourceTable,
relatedTable);
} catch (NoSuchElementException NSE) {
continue;
}
}
if (Token.equals("INDEX") || Token.equals("UNIQUE")) {
try {
while ((Token =
Tokenizer.nextToken()).toUpperCase().equals(
"INDEX")) {
;
}
String IndexdropCommand = "DROP INDEX " + Token
+ " ;";
while ((Token = Tokenizer.nextToken(
" (")).toUpperCase().equals("ON")) {
;
}
name = Token;
if (!DbStmts.containsKey(Token)) {
throw new DataAccessPointException(
"error: index is created before the table");
}
relatedTable = (TransferTable) DbStmts.get(Token);
if (relatedTable.Stmts.sDestCreateIndex == null) {
relatedTable.Stmts.sDestCreateIndex = "";
}
if (relatedTable.Stmts.sDestDropIndex == null) {
relatedTable.Stmts.sDestDropIndex = "";
}
relatedTable.Stmts.bCreateIndex = true;
relatedTable.Stmts.bDropIndex = true;
relatedTable.Stmts.sDestCreateIndex += currentLine;
relatedTable.Stmts.sDestDropIndex += IndexdropCommand;
} catch (NoSuchElementException NSE) {
continue;
}
}
}
} catch (IOException IOe) {
throw new DataAccessPointException(IOe.getMessage());
}
}