001package gudusoft.gsqlparser.stmt.teradata; 002 003import gudusoft.gsqlparser.EBTEQCmdType; 004import gudusoft.gsqlparser.EDbVendor; 005import gudusoft.gsqlparser.ESqlStatementType; 006import gudusoft.gsqlparser.TCustomSqlStatement; 007import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 008 009public class TTeradataMultiLoadCmd extends TCustomSqlStatement { 010 011 public enum EMultiLoadCmdType { 012 UNKNOWN, 013 LAYOUT, 014 IMPORT, 015 EXPORT, 016 FIELD,// this is sub command of layout 017 } 018 019 public TTeradataMultiLoadCmd(EDbVendor dbvendor) { 020 super(dbvendor); 021 sqlstatementtype = ESqlStatementType.sstteradataMultiLoad; 022 } 023 024 public int doParseStatement(TCustomSqlStatement psql) { 025 // if (rootNode == null) return -1; 026 // super.doParseStatement(psql); 027 028 return 0; 029 } 030 031 protected int dochecksyntax(TCustomSqlStatement psql){ 032 isparsed = true; 033 return 0; //not check syntax of sqlplus cmd ,always ok 034 } 035 036 037 public void accept(TParseTreeVisitor v){ 038 v.preVisit(this); 039 v.postVisit(this); 040 } 041 public void acceptChildren(TParseTreeVisitor v){ 042 v.preVisit(this); 043 v.postVisit(this); 044 } 045 046 private EMultiLoadCmdType cmdType = EMultiLoadCmdType.UNKNOWN; 047 048 public void setCmdType(EMultiLoadCmdType cmdType) 049 { 050 if (cmdType == null) 051 { 052 return; 053 } 054 this.cmdType = cmdType; 055 } 056 057 public EMultiLoadCmdType getCmdType() { 058 return cmdType; 059 } 060 061 private TCustomSqlStatement baseStatement = null; 062 063 public TCustomSqlStatement getBaseStatement() { 064 if (baseStatement != null) { 065 return baseStatement; 066 } 067 068 String sql = this.toString().replaceAll(";$", ""); // Remove trailing semicolon if present; 069 070 switch (cmdType) { 071 case IMPORT: 072 baseStatement = new TTeradataMultiLoadImport(this.dbvendor); 073 ((TTeradataMultiLoadImport)baseStatement).setCommand(sql); 074 ((TTeradataMultiLoadImport)baseStatement).parseImportCommand(); 075 break; 076 case LAYOUT: 077 baseStatement = new TTeradataMultiLoadLayout(this.dbvendor, sql); 078 ((TTeradataMultiLoadLayout)baseStatement).parseLayout(); 079 break; 080 case EXPORT: 081 baseStatement = new TTeradataMultiLoadExport(this.dbvendor, sql); 082 083 break; 084 default: 085 return null; 086 } 087 return baseStatement; 088 } 089}