001package gudusoft.gsqlparser; 002 003public class TSingletonParser { 004 private static volatile TSingletonParser instance; 005 private TSingletonParser(){} 006 007 public static TSingletonParser getInstance() { 008 009 if (instance == null) { 010 synchronized (TSingletonParser.class) { 011 if (instance == null) 012 instance = new TSingletonParser(); 013 } 014 } 015 return instance; 016 } 017 018 public synchronized TStatementList getStmts(EDbVendor dbVendor, String str){ 019 TStatementList statements = new TStatementList(); 020 TGSqlParser sqlParser = this.getParser(dbVendor); 021 sqlParser.sqltext = str; 022 int i = sqlParser.parse(); 023 if (i == 0){ 024 for(int j=0;j<sqlParser.getSqlstatements().size();j++){ 025 statements.add(sqlParser.getSqlstatements().get(j)); 026 } 027 } 028 return statements; 029 } 030 031 public synchronized TSourceTokenList getTokens(EDbVendor dbVendor, String str){ 032 TSourceTokenList stList = new TSourceTokenList(); 033 TGSqlParser sqlParser = this.getParser(dbVendor); 034 sqlParser.sqltext = str; 035 sqlParser.tokenizeSqltext(); 036 for(int i=0;i<sqlParser.sourcetokenlist.size();i++){ 037 stList.add(sqlParser.sourcetokenlist.get(i)); 038 } 039 return stList; 040 } 041 042 private static TGSqlParser gOracleParser = null, gSQLServerParer = null, gSybaseParser = null,gInformixParser = null, 043 gDb2Parser = null,gMySQLParser = null, gTeradataParser = null, gPostgresParser = null, gRedshiftParser = null, 044 gGreenplumParser = null, gMdxParser = null, gNetezzaParser = null, gHiveParser = null, gImpalaParser = null, 045 gHanaParser = null, gDaxParser = null, gOdbcParser = null,gVerticalParser = null, gOpenedgeParser = null, 046 gCouchbaseParser = null, gSnowflakeParser = null,gBigqueryParser = null, gSoqlParser = null, gSparksqlParser = null, 047 gAthenaParser = null, gPrestoParser = null, gTrinoParser = null, gGaussDBParser = null; 048 049 050 private synchronized TGSqlParser getParser(EDbVendor dbVendor) { 051 052 TGSqlParser ret = null; 053 054 switch(dbVendor){ 055 case dbvmssql : 056 case dbvaccess: 057 case dbvazuresql: 058 { 059 if (gSQLServerParer == null){ 060 gSQLServerParer = new TGSqlParser(dbVendor); 061 } 062 ret = gSQLServerParer; 063 break; 064 } 065 case dbvsybase:{ 066 if (gSybaseParser == null){ 067 gSybaseParser = new TGSqlParser(dbVendor); 068 } 069 ret = gSybaseParser; 070 break; 071 } 072 case dbvinformix:{ 073 if (gInformixParser == null){ 074 gInformixParser = new TGSqlParser(dbVendor); 075 } 076 ret = gInformixParser; 077 break; 078 } 079 case dbvoracle :{ 080 if (gOracleParser == null){ 081 gOracleParser = new TGSqlParser(dbVendor); 082 } 083 ret = gOracleParser; 084 break; 085 } 086 case dbvdb2 :{ 087 if (gDb2Parser == null){ 088 gDb2Parser = new TGSqlParser(dbVendor); 089 } 090 ret = gDb2Parser; 091 break; 092 } 093 case dbvmysql :{ 094 if (gMySQLParser == null){ 095 gMySQLParser = new TGSqlParser(dbVendor); 096 } 097 ret = gMySQLParser; 098 break; 099 } 100 case dbvteradata :{ 101 if (gTeradataParser == null){ 102 gTeradataParser = new TGSqlParser(dbVendor); 103 } 104 ret = gTeradataParser; 105 break; 106 } 107 case dbvpostgresql:{ 108 if (gPostgresParser == null){ 109 gPostgresParser = new TGSqlParser(dbVendor); 110 } 111 ret = gPostgresParser; 112 break; 113 } 114 case dbvredshift:{ 115 if (gRedshiftParser == null){ 116 gRedshiftParser = new TGSqlParser(dbVendor); 117 } 118 ret = gRedshiftParser; 119 break; 120 } 121 case dbvgreenplum:{ 122 if (gGreenplumParser == null){ 123 gGreenplumParser = new TGSqlParser(dbVendor); 124 } 125 ret = gGreenplumParser; 126 break; 127 } 128 case dbvmdx:{ 129 if (gMdxParser == null){ 130 gMdxParser = new TGSqlParser(dbVendor); 131 } 132 ret = gMdxParser; 133 break; 134 } 135 case dbvnetezza:{ 136 if (gNetezzaParser == null){ 137 gNetezzaParser = new TGSqlParser(dbVendor); 138 } 139 ret = gNetezzaParser; 140 break; 141 } 142 case dbvhive:{ 143 if (gHiveParser == null){ 144 gHiveParser = new TGSqlParser(dbVendor); 145 } 146 ret = gHiveParser; 147 break; 148 } 149 case dbvimpala:{ 150 if (gImpalaParser == null){ 151 gImpalaParser = new TGSqlParser(dbVendor); 152 } 153 ret = gImpalaParser; 154 break; 155 } 156 case dbvhana:{ 157 if (gHanaParser == null){ 158 gHanaParser = new TGSqlParser(dbVendor); 159 } 160 ret = gHanaParser; 161 break; 162 } 163 case dbvdax:{ 164 if (gDaxParser == null){ 165 gDaxParser = new TGSqlParser(dbVendor); 166 } 167 ret = gDaxParser; 168 break; 169 } 170 case dbvodbc:{ 171 if (gOdbcParser == null){ 172 gOdbcParser = new TGSqlParser(dbVendor); 173 } 174 ret = gOdbcParser; 175 break; 176 } 177 case dbvvertica:{ 178 if (gVerticalParser == null){ 179 gVerticalParser = new TGSqlParser(dbVendor); 180 } 181 ret = gVerticalParser; 182 break; 183 } 184 case dbvopenedge:{ 185 if (gOpenedgeParser == null){ 186 gOpenedgeParser = new TGSqlParser(dbVendor); 187 } 188 ret = gOpenedgeParser; 189 break; 190 } 191 case dbvcouchbase:{ 192 if (gCouchbaseParser == null){ 193 gCouchbaseParser = new TGSqlParser(dbVendor); 194 } 195 ret = gCouchbaseParser; 196 break; 197 } 198 case dbvsnowflake:{ 199 if (gSnowflakeParser == null){ 200 gSnowflakeParser = new TGSqlParser(dbVendor); 201 } 202 ret = gSnowflakeParser; 203 break; 204 } 205 case dbvbigquery:{ 206 if (gBigqueryParser == null){ 207 gBigqueryParser = new TGSqlParser(dbVendor); 208 } 209 ret = gBigqueryParser; 210 break; 211 } 212 case dbvansi: 213 case dbvgeneric: { 214 if (gSQLServerParer == null){ 215 gSQLServerParer = new TGSqlParser(dbVendor); 216 } 217 ret = gSQLServerParer; 218 break; 219 } 220 case dbvsoql:{ 221 if (gSoqlParser == null){ 222 gSoqlParser = new TGSqlParser(dbVendor); 223 } 224 ret = gSoqlParser; 225 break; 226 } 227 case dbvsparksql:{ 228 if (gSparksqlParser == null){ 229 gSparksqlParser = new TGSqlParser(dbVendor); 230 } 231 ret = gSparksqlParser; 232 break; 233 } 234 case dbvathena: 235 { 236 if (gAthenaParser == null){ 237 gAthenaParser = new TGSqlParser(dbVendor); 238 } 239 ret = gAthenaParser; 240 break; 241 } 242 case dbvpresto: 243 { 244 if (gPrestoParser == null){ 245 gPrestoParser = new TGSqlParser(dbVendor); 246 } 247 ret = gPrestoParser; 248 break; 249 } 250 case dbvtrino: 251 { 252 if (gTrinoParser == null){ 253 gTrinoParser = new TGSqlParser(dbVendor); 254 } 255 ret = gTrinoParser; 256 break; 257 } 258 case dbvgaussdb: 259 if (gGaussDBParser == null){ 260 gGaussDBParser = new TGSqlParser(dbVendor); 261 } 262 ret = gGaussDBParser; 263 break; 264 default: { 265 if (gSQLServerParer == null){ 266 gSQLServerParer = new TGSqlParser(dbVendor); 267 } 268 ret = gSQLServerParer; 269 break; 270 } 271 } 272 273 return ret; 274 275 } 276 277}