001package gudusoft.gsqlparser.sqlcmds; 002 003import gudusoft.gsqlparser.*; 004 005/** 006 * Adapter class that wraps the monolithic TSqlCmds for gradual migration. 007 * This allows us to migrate vendors one at a time while maintaining compatibility. 008 * 009 * @since 3.1.0.9 010 */ 011public class TSqlCmdsAdapter implements ISqlCmds { 012 013 private final EDbVendor vendor; 014 private final TSqlCmds monolithicCmds; 015 016 017 public TSqlCmdsAdapter(EDbVendor vendor) { 018 this.vendor = vendor; 019 this.monolithicCmds = new TSqlCmds(); 020 } 021 022 @Override 023 public TCustomSqlStatement issql(TSourceToken token, EFindSqlStateType state, TCustomSqlStatement currentStatement) { 024 // Delegate to monolithic implementation with vendor parameter 025 return monolithicCmds.issql(token, vendor, state, currentStatement); 026 } 027 028 @Override 029 public ESqlStatementType getStatementTypeForToken(TSourceToken token) { 030 // Delegate to vendor-specific method based on vendor type 031 switch (vendor) { 032 case dbvmssql: 033 return monolithicCmds.findmssqlcmdusedbyyacc(token); 034 case dbvsybase: 035 return monolithicCmds.findsybasecmdusedbyyacc(token); 036 // For vendors without specific yacc methods, use generic find 037 default: 038 TSqlCmdList cmdList = monolithicCmds.getSqlCmdList(vendor); 039 if (cmdList == null || cmdList.size() == 0) { 040 return ESqlStatementType.sstunknown; 041 } 042 // Use reflection or direct call to find method 043 // For now, return unknown (will be implemented per vendor) 044 return ESqlStatementType.sstunknown; 045 } 046 } 047 048 @Override 049 public EDbVendor getVendor() { 050 return vendor; 051 } 052 053 054 @Override 055 public TSqlCmdList getSqlCmdList() { 056 return null;//monolithicCmds.getSqlCmdList(vendor); 057 } 058 059 /** 060 * Internal helper for Sybase to find command type. 061 * Called by TSqlCmdsSybase.findCmdUsedByYacc() until Sybase is fully migrated. 062 */ 063 public ESqlStatementType findSybaseCmdInternal(TSourceToken token) { 064 return monolithicCmds.findsybasecmd(token); 065 } 066}