package myProj;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import java.util.TreeSet;
import com.foundationdb.sql.*;
import com.foundationdb.sql.parser.*;
import com.foundationdb.sql.unparser.*;
public class TestC {
public static void main(String[] args) throws StandardException {
SQLParser parser = new SQLParser();
String s="SELECT MIRL.INVOICE_REQ_LINE_ID, MIRL.COLLECTION_OFFICE , MIRL.PREPAID_COLLECT, MIRL.ITEM_CODE , MIRL.LINE_AMOUNT_QUOTED, MIRL.CURRENCY_CODE , MIRL.UNIT_PRICE_QUOTED , MIRL.QUANTITY, MIRL.OWNER_OF_INCOME FROM CODSBRK.MLIS_INVOICE MIR INNER JOIN CODSBRK.MLIS_INVOICE_LINE MIRL ON MIR.TPDOC_NO = MIRL.TPDOC_NO AND MIR.INVOICE_REQ_ID = MIRL.INVOICE_REQ_ID WHERE MIR.TPDOC_NO =? AND MIR.INVOICE_STATUS = ? WITH UR";
StatementNode stmt = parser.parseStatement(s);
NodeToString nodeToString = new NodeToString();
//stmt.treePrint();
String s1="SELECT LINK.INSTANCE_ID, LINK.FK_RTE_PNT_START, LINK.FK_RTE_PNT_END, LINK.DEPART_TIME_LOCAL_EXPECT, LINK.ARRVL_TIME_LOCAL_EXPECT, LINK.DEPART_TIME_UTC_EXPCTD, LINK.ARRVL_TIME_UTC_EXPCTD, LINK.FK_MEPC_TRNSPRT_MODE, LINK.MEPC_LINK_ID, LINK.RKST_CARRIER_CD, LINK.WATER_LAND_MODE, LINK.FK_RKSTVES_PART_VEHICLE, LINK.RKSTVES_PART_VEHICLE, LINK.VEHICLE_VOYG_NUM, LINK.FK_ROUTE, LINK.ROUTNG_TYPE, LINK.IS_OUT_OF_CNTRCT_SCOPE, STRT.POINT_SEQ, STRT.FK_GEO_SITE DEP_SITE_CD, ENDP.FK_GEO_SITE ARR_SITE_CD, STRT.GEO_SITE DEP_SITE_CD_X, ENDP.GEO_SITE ARR_SITE_CD_X FROM (SELECT INSTANCE_ID, FK_RTE_PNT_START, FK_RTE_PNT_END, DEPART_TIME_LOCAL_EXPECT, ARRVL_TIME_LOCAL_EXPECT, DEPART_TIME_UTC_EXPCTD, ARRVL_TIME_UTC_EXPCTD, FK_MEPC_TRNSPRT_MODE, MEPC_LINK_ID, RKST_CARRIER_CD, WATER_LAND_MODE, FK_RKSTVES_PART_VEHICLE, RKSTVES_PART_VEHICLE, VEHICLE_VOYG_NUM, FK_ROUTE, ROUTNG_TYPE, IS_OUT_OF_CNTRCT_SCOPE FROM CODSBRK.GCSS_ROUTE_LINK WHERE FK_ROUTE = ?) LINK LEFT OUTER JOIN CODSBRK.GCSS_ROUTE_POINT STRT ON STRT.INSTANCE_ID = LINK.FK_RTE_PNT_START LEFT OUTER JOIN CODSBRK.GCSS_ROUTE_POINT ENDP ON ENDP.INSTANCE_ID = LINK.FK_RTE_PNT_END ORDER BY STRT.POINT_SEQ WITH UR";
stmt = parser.parseStatement(s1);
//stmt.treePrint();
TableFinder finder = new TableFinder();
stmt.accept(finder);
for(TableName tn : finder.tableNames) {
System.out.println("table " + tn);
}
}
private static class TableFinder implements Visitor
{
public List<TableName> tableNames = new ArrayList<>();
public Visitable visit(Visitable node) throws StandardException {
if(node instanceof FromList) {
FromList fl = (FromList)node;
for(int i = 0; i < fl.size(); ++i) {
tableNames.add(fl.get(i).getTableName());
}
}
return node;
}
public boolean visitChildrenFirst(Visitable node) {
return false;
}
public boolean stopTraversal() {
return false;
}
public boolean skipChildren(Visitable node) throws StandardException {
return false;
}
}
}
Comments