001package gudusoft.gsqlparser.stmt.sqlite; 002 003import gudusoft.gsqlparser.EDbVendor; 004import gudusoft.gsqlparser.ESqlStatementType; 005import gudusoft.gsqlparser.TCustomSqlStatement; 006import gudusoft.gsqlparser.TVisitorAbs; 007import gudusoft.gsqlparser.nodes.*; 008 009/** 010 * SQLite ATTACH DATABASE statement. 011 * 012 * <p>Two forms:</p> 013 * <ul> 014 * <li>ATTACH DATABASE expr AS schema_name</li> 015 * <li>ATTACH expr AS schema_name (DATABASE keyword is optional)</li> 016 * </ul> 017 */ 018public class TAttachStmt extends TCustomSqlStatement { 019 020 public TAttachStmt(EDbVendor dbvendor) { 021 super(dbvendor); 022 sqlstatementtype = ESqlStatementType.sstSqliteAttach; 023 } 024 025 void buildsql() { 026 } 027 028 void clear() { 029 } 030 031 String getasprettytext() { 032 return ""; 033 } 034 035 void iterate(TVisitorAbs pvisitor) { 036 } 037 038 private TExpression databaseExpr = null; 039 040 /** 041 * Returns the database file expression (e.g., 'file.db'). 042 */ 043 public TExpression getDatabaseExpr() { 044 return databaseExpr; 045 } 046 047 private TObjectName schemaName = null; 048 049 /** 050 * Returns the schema name used with AS clause. 051 */ 052 public TObjectName getSchemaName() { 053 return schemaName; 054 } 055 056 public int doParseStatement(TCustomSqlStatement psql) { 057 if (rootNode == null) return -1; 058 super.doParseStatement(psql); 059 060 TDummy dummySqlNode = (TDummy) rootNode; 061 if (dummySqlNode.node1 != null) { 062 databaseExpr = (TExpression) dummySqlNode.node1; 063 } 064 if (dummySqlNode.node2 != null) { 065 schemaName = (TObjectName) dummySqlNode.node2; 066 } 067 068 return 0; 069 } 070 071 public void accept(TParseTreeVisitor v) { 072 v.preVisit(this); 073 v.postVisit(this); 074 } 075 076 public void acceptChildren(TParseTreeVisitor v) { 077 v.preVisit(this); 078 v.postVisit(this); 079 } 080}