public class ParseMain {
public static void main(String sql) {
OracleStatementParser parser = new OracleStatementParser(sql);
List<SQLStatement> statementList = parser.parseStatementList();
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
for (SQLStatement statement : statementList) {
statement.accept(visitor);
Set<Relationship> relationships = visitor.getRelationships();
HashMap<String, Set<String>> relation = new HashMap<String, Set<String>>();
for (Relationship rs : relationships) {
TableStat.Column left = rs.getLeft();
TableStat.Column right = rs.getRight();
addValue(relation,left.getTable().toString(),left.getName());
addValue(relation,right.getTable().toString(),right.getName());
System.out.println(String.format("%-30s %-15s %-30s %-15s", left.getTable(), left.getName(), right.getTable(), right.getName()));
// System.out.println(rs);
}
System.out.println("----------------------");
for (Map.Entry entry : relation.entrySet()){
System.out.println(entry);
}
}
}
public static void addValue(HashMap<String, Set<String>> relation,String key,String value){
Set<String> vars = relation.get(key);
if (null == vars){
vars = new HashSet<>();
}
vars.add(value);
relation.put(key,vars);
}
}