endQuote = quotes.end;
initMaps(dbStruct);
if (root.hasChildren() && dbStruct.hasManualSqlStatement()) {
CROM table = root.getChild(0);
table.setName("Manual SQL");
table.setDisplayName("Manual SQL");
((CROM_DB) table.getExtension()).setManualSqlStatement(dbStruct.getManualSqlStatement());
}
Map<String, String> filter_map = Maps.newHashMap();
Map<String, String> order_map = Maps.newHashMap();
filter_map.clear();
order_map.clear();
for(DbTranFilters.Entry entry:dbStruct.getHierarchicalFilters().getAllEntries()){
String[] s2=getOwnerTableName(entry.getTableName());
String sTableName_alias=s2[0];
String sTableName=map_TableAlias.get(sTableName_alias);
if(sTableName==null)sTableName=sTableName_alias;
sTableName=getSqlTableName(sTableName, s2[1]);
String columnName=sTableName+"."+beginQuote+entry.getColumnName()+endQuote;
String condition=entry.getCondition();
String sort_order=entry.getSortOrder().getAbbreviation();
if(sort_order.equals("NONE"))sort_order=null;
if(condition!=null && !condition.isEmpty()){
String tmp=filter_map.get(sTableName_alias);
tmp=(tmp!=null)?(tmp+" AND "):"";
filter_map.put(sTableName_alias, tmp+"("+columnName+" "+condition+")");
}
if(sort_order!=null && !sort_order.isEmpty()){
String tmp=order_map.get(sTableName_alias);
tmp=(tmp!=null)?(tmp+", "):"";
order_map.put(sTableName_alias, tmp+columnName+" "+sort_order);
}
}
addFilterToCrom(root, filter_map, order_map);
if (dbStruct.getRelations().getRelations().size() == 0 && tableNames.size() == 1) {
SqlScript sql_script=dbStruct.getSqlScript();
String sqlFilter = sql_script.getWhereClause();
if(StringUtils.isNotEmpty(sqlFilter)){
CROM table=root.getChild(0);
if(table!=null){
String ORDER_BY="ORDER BY ";
int k=sqlFilter.indexOf(ORDER_BY);
if(k>=0){
String sqlOrderBy=sqlFilter.substring(k+ORDER_BY.length());
table.setSqlOrderBy(sqlOrderBy);
if(k>0)table.setSqlFilter(sqlFilter.substring(0, k));
}
else {
table.setSqlFilter(sqlFilter);
}
}
}
}
return new CromBasedMappingTreeStructure(root, new CROMHeader(CROM_DB.ELEMENT, beginQuote, endQuote));