in tools/src/main/java/org/apache/tuscany/das/rdb/util/SchemaFileToXSD.java [40:113]
protected static DBSchema read(XMLStreamReader reader) throws Exception {
DBSchema dbSchema = new DBSchema();
Table table = null;
Column column = null;
ForeignKey fk = null;
ForeignKeyRef fkRef = null;
while (true) {
int event = reader.next();
if(javax.xml.stream.XMLStreamConstants.END_DOCUMENT == event) {
break;
}
switch (event) {
case javax.xml.stream.XMLStreamConstants.START_ELEMENT:
if (reader.getName().getLocalPart().equals("table")) {
table = new Table();
table.setName(reader.getAttributeValue(null, "name"));
} else if (reader.getName().getLocalPart().equals("column")) {
column = new Column();
column.setName(reader.getAttributeValue(null, "name"));
column.setPK(Boolean.getBoolean(reader.getAttributeValue(null, "primaryKey")));
column.setRequired(Boolean.getBoolean(reader.getAttributeValue(null, "required")));
column.setType(reader.getAttributeValue(null, "type"));
}
else if (reader.getName().getLocalPart().equals("foreign-key")) {
fk = new ForeignKey();
fk.setForeignTableName(reader.getAttributeValue(null,"foreignTable"));
}
else if (reader.getName().getLocalPart().equals("reference")) {
fkRef = new ForeignKeyRef();
fkRef.setForeign(reader.getAttributeValue(null,"foreign"));
fkRef.setLocal(reader.getAttributeValue(null,"local"));
}
else if (reader.getName().getLocalPart().equals("database")) {
//ignore
} else {
throw new RuntimeException("not valid element:"+reader.getName()+":");
}
break;
case javax.xml.stream.XMLStreamConstants.END_ELEMENT:
if (reader.getName().getLocalPart().equals("table")) {
dbSchema.getTables().add(table);
}
if (reader.getName().getLocalPart().equals("column")) {
if(table != null) {
table.getColumns().add(column);
}
}
if (reader.getName().getLocalPart().equals("reference")) {
if(fk != null) {
fk.getFkRefs().add(fkRef);
}
}
if (reader.getName().getLocalPart().equals("foreign-key")) {
if(table != null) {
table.getFks().add(fk);
}
}
break;
}
}
if (logger.isDebugEnabled()) {
logger.debug(dbSchema);
}
return dbSchema;
}