protected static DBSchema read()

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;
    }