Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment