![]() |
|||
Query.javaGo to the documentation of this file.00001 /* 00002 * Query.java 00003 * 00004 * Copyright (C) 2003 Alain MENSEGUEN 00005 * www.net2map.org 00006 * 00007 * This program is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU General Public License 00009 * as published by the Free Software Foundation; either version 2 00010 * of the License, or (at your option) any later version. 00011 * 00012 * This program is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 * GNU Lesser General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU General Public License 00018 * along with this program; if not, write to the Free Software 00019 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00020 */ 00021 package org.net2map.pov.server; 00022 00023 import java.util.LinkedList; 00024 00038 public class Query extends java.lang.Object 00039 { 00043 public Query( ParameterSet params ) 00044 { 00045 pParameters = params; 00046 } 00047 00052 public Query( String name, ParameterSet params ) 00053 { 00054 sName = name; 00055 pParameters = params; 00056 } 00057 00061 public String getName() 00062 { 00063 return sName; 00064 } 00065 00069 public String getSelect() 00070 { 00071 return sSelect; 00072 } 00073 00077 public String getFrom() 00078 { 00079 return sFrom; 00080 } 00081 00085 public String getWhere() 00086 { 00087 return sWhere; 00088 } 00089 00093 public String getGroup() 00094 { 00095 return sGroup; 00096 } 00097 00101 public String getHaving() 00102 { 00103 return sHaving; 00104 } 00105 00109 public String getOrder() 00110 { 00111 return sOrder; 00112 } 00113 00117 public void setName( String name ) 00118 { 00119 sName = name; 00120 } 00121 00125 public void setSelect( String select ) 00126 { 00127 sSelect = select; 00128 } 00129 00133 public void setFrom( String from ) 00134 { 00135 sFrom = from; 00136 } 00137 00141 public void setWhere( String where ) 00142 { 00143 sWhere = where; 00144 } 00145 00149 public void setGroup( String group ) 00150 { 00151 sGroup = group; 00152 } 00153 00157 public void setHaving( String having ) 00158 { 00159 sHaving = having; 00160 } 00161 00165 public void setOrder( String order ) 00166 { 00167 sOrder = order; 00168 } 00169 00173 public String getFieldToJoin() 00174 { 00175 return sFieldToJoin; 00176 } 00177 00181 public void setFieldToJoin( String field ) 00182 { 00183 sFieldToJoin = field; 00184 } 00185 00189 public DimensionFieldList getDimensionFields() 00190 { 00191 return pDimensionFields; 00192 } 00193 00197 public DimensionTableList getDimensionTables() 00198 { 00199 return pDimensionTables; 00200 } 00201 00206 public String toString() 00207 { 00208 String sResult = ""; 00209 sResult = "SELECT " + sSelect.trim() + " FROM " + sFrom.trim(); 00210 if ( sWhere.trim() != "" ) sResult += " WHERE " + sWhere.trim(); 00211 if ( sGroup.trim() != "" ) sResult += " GROUP BY " + sGroup.trim(); 00212 if ( sHaving.trim() != "" ) sResult += " HAVING " + sHaving.trim(); 00213 if ( sOrder.trim() != "" ) sResult += " ORDER BY " + sOrder.trim(); 00214 return sResult; 00215 } 00216 00220 public boolean isEmpty() 00221 { 00222 return ( sSelect.trim() == "" ); 00223 } 00224 00228 public void joinTo( Query qtoadd ) 00229 { 00230 int i = 0; 00231 boolean bFlag = false; 00232 00233 if ( pParameters.DEBUG > 2 ) System.out.println( "Query before joining : " + this.toString() ); 00234 00235 //Query qResult = new Query( pParameters ); 00236 00237 if ( !this.isEmpty() ) 00238 { 00240 //qResult.setSelect ( this.getSelect() ); 00241 /*For each dimension name in query to add...*/ 00242 for ( i = 0; i < qtoadd.getDimensionFields().count(); i++ ) 00243 { 00245 if ( !qtoadd.getDimensionFields().getDimensionField( i ).isKey() ) 00246 { 00248 if ( qtoadd.getDimensionFields().getDimensionField( i ).getName() != qtoadd.getDimensionFields().getDimensionField( i ).getValue() ) 00249 { 00250 this.setSelect ( this.getSelect() + "," + (String)qtoadd.getDimensionFields().getDimensionField( i ).getValue() + " as " + (String)qtoadd.getDimensionFields().getDimensionField( i ).getName() ); 00251 } 00252 else 00253 { 00254 this.setSelect ( this.getSelect() + "," + (String)qtoadd.getDimensionFields().getDimensionField( i ).getValue() ); 00255 } 00256 } 00257 } 00258 00260 //this.setFrom ( this.getFrom() ); 00265 for ( i = 0; i < qtoadd.getDimensionTables().count(); i++ ) 00266 { 00267 if ( !this.getDimensionTables().isDimensionTable( qtoadd.getDimensionTables().getDimensionTable( i ).getName() ) ) 00268 { 00270 if ( qtoadd.getDimensionTables().getDimensionTable( i ).getName() != qtoadd.getDimensionTables().getDimensionTable( i ).getValue() ) 00271 { 00272 this.setFrom ( this.getFrom() + "," + qtoadd.getDimensionTables().getDimensionTable( i ).getValue() + " as " + (String)qtoadd.getDimensionTables().getDimensionTable( i ).getName() ); 00273 } 00274 else 00275 { 00276 this.setFrom ( this.getFrom() + "," + qtoadd.getDimensionTables().getDimensionTable( i ).getValue() ); 00277 } 00278 } 00279 } 00280 00283 bFlag = true; 00284 i = 0; 00285 if (sFieldToJoin != qtoadd.getFieldToJoin() ) 00286 { 00287 while ( bFlag ) 00288 { 00289 if ( i >= qtoadd.getDimensionFields().count() ) 00290 { 00291 bFlag = false; 00292 } 00293 else 00294 { 00295 if ( qtoadd.getDimensionFields().getDimensionField( i ).isKey() ) 00296 { 00297 if ( this.getWhere() != "" ) 00298 { 00299 this.setWhere( this.getWhere() + " and " + sFieldToJoin + "=" + qtoadd.getFieldToJoin() ); 00300 } 00301 else 00302 { 00303 this.setWhere( sFieldToJoin + "=" + qtoadd.getFieldToJoin() ); 00304 } 00305 bFlag = false; 00306 00307 } 00308 } 00309 i++; 00310 } 00311 } 00312 00313 if ( this.getWhere() != "" ) 00314 { 00315 if ( qtoadd.getWhere() != "" ) 00316 { 00317 this.setWhere( this.getWhere() + " and " + qtoadd.getWhere() ); 00318 } 00319 } 00320 else 00321 { 00322 if ( qtoadd.getWhere() != "" ) 00323 { 00324 this.setWhere( qtoadd.getWhere() ); 00325 } 00326 } 00327 00331 if ( this.getGroup() != "" ) 00332 { 00333 this.setGroup ( this.getGroup() ); 00334 for ( i = 0; i < qtoadd.getDimensionFields().count(); i++ ) 00335 { 00336 if ( !qtoadd.getDimensionFields().getDimensionField( i ).mustGroup() && !qtoadd.getDimensionFields().getDimensionField( i ).isKey() ) 00337 { 00338 this.setGroup ( this.getGroup() + "," + qtoadd.getDimensionFields().getDimensionField( i ).getName() ); 00339 } 00340 } 00341 } 00342 else 00343 { 00344 if ( qtoadd.getGroup() != "" ) 00345 { 00346 for ( i = 0; i < this.getDimensionFields().count(); i++ ) 00347 { 00348 this.setGroup ( this.getGroup() + "," + this.getDimensionFields().getDimensionField( i ).getName() ); 00349 } 00350 this.setGroup( this.getGroup() + "," + qtoadd.getGroup() ); 00351 } 00352 } 00353 00355 if ( this.getHaving() != "" ) 00356 { 00357 this.setHaving ( this.getHaving() ); 00358 if ( qtoadd.getHaving() != "" ) 00359 { 00360 this.setHaving( this.getHaving() + " and " + qtoadd.getHaving() ); 00361 } 00362 } 00363 else 00364 { 00365 if ( qtoadd.getHaving() != "" ) 00366 { 00367 this.setHaving( this.getHaving() ); 00368 } 00369 } 00370 00372 if ( this.getOrder() != "" ) 00373 { 00374 this.setOrder ( this.getOrder() ); 00375 if ( qtoadd.getOrder() != "" ) 00376 { 00377 this.setOrder( this.getOrder() + "," + qtoadd.getOrder() ); 00378 } 00379 } 00380 else 00381 { 00382 if ( qtoadd.getOrder() != "" ) 00383 { 00384 this.setOrder( qtoadd.getOrder() ); 00385 } 00386 } 00387 } 00388 else 00389 { 00390 sSelect = qtoadd.getSelect(); 00391 sFrom = qtoadd.getFrom(); 00392 sWhere = qtoadd.getWhere(); 00393 sGroup = qtoadd.getGroup(); 00394 sHaving = qtoadd.getHaving(); 00395 sOrder = qtoadd.getOrder(); 00396 } 00397 00398 for ( i = 0; i < qtoadd.getDimensionFields().count(); i++ ) 00399 { 00400 pDimensionFields.addDimensionField( qtoadd.getDimensionFields().getDimensionField( i ) ); 00401 } 00402 00403 for ( i = 0; i < qtoadd.getDimensionTables().count(); i++ ) 00404 { 00405 pDimensionTables.addDimensionTable( qtoadd.getDimensionTables().getDimensionTable( i ) ); 00406 } 00407 00408 if ( pParameters.DEBUG > 2 ) System.out.println( "Query after joining : " + this.toString() ); 00409 } 00410 00411 private String sName = ""; 00412 private String sSelect = ""; 00413 private String sFrom = ""; 00414 private String sWhere = ""; 00415 private String sGroup = ""; 00416 private String sHaving = ""; 00417 private String sOrder = ""; 00418 00419 private String sFieldToJoin; 00420 private DimensionFieldList pDimensionFields = new DimensionFieldList(); 00421 private DimensionTableList pDimensionTables = new DimensionTableList(); 00422 00423 private ParameterSet pParameters; 00424 } |
|||
|
Accueil | Téléchargement | Manuel
| Doc. technique | Sources CVS |
Faq | Nous contacter
©2003 - All Rights Reserved |
|||