(file) Return to CQLFactory.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / CQL

  1 karl  1.5 //%2005////////////////////////////////////////////////////////////////////////
  2 chuck 1.3 //
  3 karl  1.5 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
  4           // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
  5           // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
  6 chuck 1.3 // IBM Corp.; EMC Corporation, The Open Group.
  7 karl  1.5 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
  8           // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
  9           // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 10           // EMC Corporation; VERITAS Software Corporation; The Open Group.
 11 chuck 1.3 //
 12           // Permission is hereby granted, free of charge, to any person obtaining a copy
 13           // of this software and associated documentation files (the "Software"), to
 14           // deal in the Software without restriction, including without limitation the
 15           // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 16           // sell copies of the Software, and to permit persons to whom the Software is
 17           // furnished to do so, subject to the following conditions:
 18           // 
 19           // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
 20           // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
 21           // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 22           // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 23           // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 24           // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 25           // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 26           // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 27           //
 28           //==============================================================================
 29           //
 30           // Authors: David Rosckes (rosckes@us.ibm.com)
 31           //          Bert Rivero (hurivero@us.ibm.com)
 32 chuck 1.3 //          Chuck Carmack (carmack@us.ibm.com)
 33           //          Brian Lucier (lucier@us.ibm.com)
 34           //
 35           // Modified By: 
 36           //
 37           //%/////////////////////////////////////////////////////////////////////////////
 38           
 39 humberto 1.1 #include "CQLFactory.h"
 40 david.dillard 1.9 #include "CQLValueRep.h"
 41                   #include "CQLFactorRep.h"
 42                   #include "CQLSimplePredicateRep.h"
 43                   #include "CQLPredicateRep.h"
 44                   #include "CQLExpressionRep.h"
 45                   #include "CQLTermRep.h"
 46 humberto      1.4 #include <Pegasus/Common/Tracer.h>
 47 humberto      1.1 
 48                   PEGASUS_NAMESPACE_BEGIN
 49                   
 50 chuck         1.3 CQLOBJECTPTR _CQLObjectPtr;
 51                   
 52                   /*
 53                   #define PEGASUS_ARRAY_T CQLObjectPtr
 54                   #include <Pegasus/Common/ArrayImpl.h>
 55                   #undef PEGASUS_ARRAY_T
 56                   */
 57                   
 58                   /*
 59                   CQLFactory::CQLFactory(){
 60                   
 61                   }
 62                   */
 63                   CQLFactory::~CQLFactory(){
 64                   	cleanup();
 65                   }
 66                   
 67                   void CQLFactory::cleanup(){
 68 humberto      1.4 PEG_METHOD_ENTER(TRC_CQL, "CQLFactory::cleanup");
 69 chuck         1.3 	cleanupArray(_makeObjectIdentifiers, Identifier);
 70                   	cleanupArray(_makeObjectChainedIdentifiers, ChainedIdentifier);
 71                   	cleanupArray(_makeObjectValues, Value);
 72                   	cleanupArray(_makeObjectFunctions, Function);
 73                   	cleanupArray(_makeObjectFactors, Factor);
 74                   	cleanupArray(_makeObjectTerms, Term);
 75                   	cleanupArray(_makeObjectExpressions, Expression);
 76                   	cleanupArray(_makeObjectSimplePredicates, SimplePredicate);
 77                   	cleanupArray(_makeObjectPredicates, Predicate);
 78                   	cleanupArray(_getObjectIdentifiers, Identifier);
 79                           cleanupArray(_getObjectChainedIdentifiers, ChainedIdentifier);
 80                           cleanupArray(_getObjectValues, Value);
 81                           cleanupArray(_getObjectFunctions, Function);
 82                           cleanupArray(_getObjectFactors, Factor);
 83                           cleanupArray(_getObjectTerms, Term);
 84                           cleanupArray(_getObjectExpressions, Expression);
 85                           cleanupArray(_getObjectSimplePredicates, SimplePredicate);
 86                           cleanupArray(_getObjectPredicates, Predicate);
 87 humberto      1.4 PEG_METHOD_EXIT();
 88 chuck         1.3 }
 89                   void CQLFactory::cleanupArray(Array<CQLObjectPtr>& arr, FactoryType type){
 90                   	for(Uint32 i=0;i < arr.size(); i++){
 91                   		if(arr[i]._ptr){
 92                   			switch(type){
 93                   			   case Predicate:
 94                   				delete (CQLPredicate*)(arr[i]._ptr);
 95                   				break;
 96                   			   case SimplePredicate:
 97                                                   delete (CQLSimplePredicate*)(arr[i]._ptr);
 98                                                   break;
 99                   			   case Expression:
100                                                   delete (CQLExpression*)(arr[i]._ptr);
101                                                   break;
102                   			   case Term:
103                                                   delete (CQLTerm*)(arr[i]._ptr);
104                                                   break;
105                   			   case Factor:
106                                                   delete (CQLFactor*)(arr[i]._ptr);
107                                                   break;
108                   			   case Function:
109 chuck         1.3                                 delete (CQLFunction*)(arr[i]._ptr);
110                                                   break;
111                   			   case Value:
112                                                   delete (CQLValue*)(arr[i]._ptr);
113                                                   break;
114                   			   case ChainedIdentifier:
115                                                   delete (CQLChainedIdentifier*)(arr[i]._ptr);
116                                                   break;
117                   			   case Identifier:
118                                                   delete (CQLIdentifier*)(arr[i]._ptr);
119                                                   break;
120                   			}
121                   		}
122                   	}
123                   }
124                   
125 humberto      1.1 void* CQLFactory::makeObject(CQLIdentifier* obj, FactoryType target){
126 chuck         1.3   //printf("CQLFactory::makeObject(identifier)\n");
127 humberto      1.4 PEG_METHOD_ENTER(TRC_CQL, "CQLFactory::makeObject,CQLIdentifier");
128 chuck         1.3 	_CQLObjectPtr._ptr = new CQLChainedIdentifier(*obj);
129                           _makeObjectChainedIdentifiers.append(_CQLObjectPtr);
130 humberto      1.1 	switch(target){
131                   	  case ChainedIdentifier:
132 chuck         1.3 		return _makeObjectChainedIdentifiers[_makeObjectChainedIdentifiers.size()-1]._ptr;
133 humberto      1.1 		break;
134                   	  case Identifier:
135                   		return NULL;
136                   		break;
137                             default:
138 chuck         1.3 		return makeObject((CQLChainedIdentifier*)(_CQLObjectPtr._ptr), target);
139 humberto      1.1 		break;
140                           }
141 humberto      1.4 PEG_METHOD_EXIT();
142 humberto      1.1 }
143                   void* CQLFactory::makeObject(CQLChainedIdentifier* obj, FactoryType target){
144 chuck         1.3 //printf("CQLFactory::makeObject(chainedidentifier)\n");
145 humberto      1.4 PEG_METHOD_ENTER(TRC_CQL, "CQLFactory::makeObject,CQLChainedIdentifier");
146 chuck         1.3 	_CQLObjectPtr._ptr = new CQLValue(*obj);
147                   	CQLValue* _val = (CQLValue*)_CQLObjectPtr._ptr;
148                           _makeObjectValues.append(_CQLObjectPtr);
149 humberto      1.1 	switch(target){
150                             case Value:
151 chuck         1.3                 return _makeObjectValues[_makeObjectValues.size()-1]._ptr;
152 humberto      1.1                 break;
153                             case ChainedIdentifier:
154                                   return NULL;
155                                   break;
156                             default:
157 chuck         1.3                 return makeObject((CQLValue*)(_CQLObjectPtr._ptr), target);
158 humberto      1.1                 break;
159                           }
160 humberto      1.4 PEG_METHOD_EXIT();
161 humberto      1.1 }
162                   void* CQLFactory::makeObject(CQLValue* obj, FactoryType target){
163 chuck         1.3 //printf("CQLFactory::makeObject(value)\n");
164 humberto      1.4 PEG_METHOD_ENTER(TRC_CQL, "CQLFactory::makeObject,CQLValue");
165 chuck         1.3 	_CQLObjectPtr._ptr = new CQLFactor(*obj);
166                           _makeObjectFactors.append(_CQLObjectPtr);
167 humberto      1.1 	switch(target){
168                             case Factor:
169 chuck         1.3                 return _makeObjectFactors[_makeObjectFactors.size()-1]._ptr;
170 humberto      1.1                 break;
171                             case Value:
172                                   return NULL;
173                                   break;
174                             default:
175 chuck         1.3                 return makeObject((CQLFactor*)(_CQLObjectPtr._ptr), target);
176 humberto      1.1                 break;
177                           }
178 humberto      1.4 PEG_METHOD_EXIT();
179 humberto      1.1 }
180 chuck         1.3 void* CQLFactory::makeObject(CQLFunction* obj, FactoryType target){
181                   //printf("CQLFactory::makeObject(function)\n");
182 humberto      1.4 PEG_METHOD_ENTER(TRC_CQL, "CQLFactory::makeObject,CQLFunction");
183 chuck         1.3 	_CQLObjectPtr._ptr = new CQLFactor(*obj);
184                           _makeObjectFactors.append(_CQLObjectPtr);
185                           switch(target){
186                             case Factor:
187                                   return _makeObjectFactors[_makeObjectFactors.size()-1]._ptr;
188                                   break;
189                             default:
190                                   return makeObject((CQLFactor*)(_CQLObjectPtr._ptr), target);
191                                   break;
192                           }
193 humberto      1.4 PEG_METHOD_EXIT();
194 chuck         1.3 }
195 humberto      1.1 void* CQLFactory::makeObject(CQLFactor* obj, FactoryType target){
196 chuck         1.3 //printf("CQLFactory::makeObject(factor)\n");
197 humberto      1.4 PEG_METHOD_ENTER(TRC_CQL, "CQLFactory::makeObject,CQLFactor");
198 chuck         1.3 	_CQLObjectPtr._ptr = new CQLTerm(*obj);
199                           _makeObjectTerms.append(_CQLObjectPtr);
200 humberto      1.1 	switch(target){
201                             case Term:
202 chuck         1.3                 return _makeObjectTerms[_makeObjectTerms.size()-1]._ptr;
203 humberto      1.1                 break;
204                             case Factor:
205                                   return NULL;
206                                   break;
207                             default:
208 chuck         1.3                 return makeObject((CQLTerm*)(_CQLObjectPtr._ptr), target);
209 humberto      1.1                 break;
210                           }
211 carson.hovey  1.7 PEG_METHOD_EXIT();
212 humberto      1.1 }
213                   void* CQLFactory::makeObject(CQLTerm* obj, FactoryType target){
214 chuck         1.3 //printf("CQLFactory::makeObject(term)\n");
215 humberto      1.4 PEG_METHOD_ENTER(TRC_CQL, "CQLFactory::makeObject,CQLTerm");
216 chuck         1.3 	_CQLObjectPtr._ptr = new CQLExpression(*obj);
217                           _makeObjectExpressions.append(_CQLObjectPtr);
218 humberto      1.1 	switch(target){
219                             case Expression:
220 chuck         1.3                 return _makeObjectExpressions[_makeObjectExpressions.size()-1]._ptr;
221 humberto      1.1                 break;
222                             case Term:
223                                   return NULL;
224                                   break;
225                             default:
226 chuck         1.3                 return makeObject((CQLExpression*)(_CQLObjectPtr._ptr), target);
227 humberto      1.1                 break;
228                           }
229 humberto      1.4 PEG_METHOD_EXIT();
230 humberto      1.1 }
231                   void* CQLFactory::makeObject(CQLExpression* obj, FactoryType target){
232 chuck         1.3 //printf("CQLFactory::makeObject(expression)\n");
233 humberto      1.4 PEG_METHOD_ENTER(TRC_CQL, "CQLFactory::makeObject,CQLExpression");
234 chuck         1.3 	_CQLObjectPtr._ptr = new CQLSimplePredicate(*obj);
235                   	_makeObjectSimplePredicates.append(_CQLObjectPtr);
236 humberto      1.1 	switch(target){
237                             case SimplePredicate:
238 chuck         1.3                 return _makeObjectSimplePredicates[_makeObjectSimplePredicates.size()-1]._ptr;
239 humberto      1.1                 break;
240                             case Expression:
241                                   return NULL;
242                                   break;
243                             default:
244 chuck         1.3                 return makeObject((CQLSimplePredicate*)(_CQLObjectPtr._ptr), target);
245 humberto      1.1                 break;
246                           }
247 humberto      1.4 PEG_METHOD_EXIT();
248 humberto      1.1 }
249                   void* CQLFactory::makeObject(CQLSimplePredicate* obj, FactoryType target){
250 chuck         1.3 //printf("CQLFactory::makeObject(simplepredicate)\n");
251 humberto      1.4 PEG_METHOD_ENTER(TRC_CQL, "CQLFactory::makeObject,CQLSimplePredicate");
252 chuck         1.3 	_CQLObjectPtr._ptr = new CQLPredicate(*obj);
253                   	_makeObjectPredicates.append(_CQLObjectPtr);
254 humberto      1.1 	switch(target){
255                             case Predicate:
256 chuck         1.3                 return _makeObjectPredicates[_makeObjectPredicates.size()-1]._ptr;
257                                   break;
258                             default:
259                                   return NULL;
260                                   break;
261                           }
262 humberto      1.4 PEG_METHOD_EXIT();
263 chuck         1.3 }
264                   
265                   void* CQLFactory::getObject(void* inObject, FactoryType inObjectType, FactoryType targetType){
266 carson.hovey  1.8 
267 humberto      1.4 PEG_METHOD_ENTER(TRC_CQL, "CQLFactory::getObject");
268 carson.hovey  1.8 
269                   void * obj = NULL;
270                   
271 chuck         1.3 	switch(inObjectType){
272                   		case Predicate:
273 carson.hovey  1.8                         obj = getObject(((CQLPredicate*)inObject),targetType);
274                                           break;
275 chuck         1.3 		case SimplePredicate:
276 carson.hovey  1.8                         obj = getObject(((CQLSimplePredicate*)inObject),targetType);
277                                           break;
278 chuck         1.3 		case Expression:
279 carson.hovey  1.8                         obj = getObject(((CQLExpression*)inObject),targetType);
280                                           break;
281 chuck         1.3 		case Term:
282 carson.hovey  1.8                         obj = getObject(((CQLTerm*)inObject),targetType);
283                                           break;
284 chuck         1.3 		case Factor:
285 carson.hovey  1.8                         obj = getObject(((CQLFactor*)inObject),targetType);
286                                           break;
287 chuck         1.3 		case Function:
288 carson.hovey  1.8                         obj = NULL;
289                                           break;
290 chuck         1.3 		case Value:
291 carson.hovey  1.8                         obj = getObject(((CQLValue*)inObject),targetType);
292                                           break;
293 chuck         1.3 		case ChainedIdentifier:
294 carson.hovey  1.8                         obj = getObject(((CQLChainedIdentifier*)inObject),targetType);
295                                           break;
296 chuck         1.3 		default:
297 carson.hovey  1.8                         obj = NULL;
298                                           break;
299 chuck         1.3 	}
300 carson.hovey  1.8 
301                   PEG_METHOD_EXIT();
302                   return obj;
303 chuck         1.3 }
304                   
305                   void* CQLFactory::getObject(CQLChainedIdentifier* obj, FactoryType target){
306                   //	printf("CQLFactory::getObject(CQLChainedIdentifier* obj)\n");
307                      Array<CQLIdentifier> cqlIds;
308                   
309                   	switch(target){
310                             case Identifier:
311                               //if(obj->_rep->_subIdentifiers.size() > 0){
312                            cqlIds = obj->getSubIdentifiers();
313                            if(cqlIds.size() > 0){
314                   
315                              //	_CQLObjectPtr._ptr = new CQLIdentifier(obj->_rep->_subIdentifiers[0]);
316                   			_CQLObjectPtr._ptr = new CQLIdentifier(cqlIds[0]);
317                   			_getObjectIdentifiers.append(_CQLObjectPtr);
318                                   	return _getObjectIdentifiers[_getObjectIdentifiers.size()-1]._ptr;
319                            }
320                   		return NULL;
321                             default:
322                                   return NULL;
323                           }
324 chuck         1.3 }
325                   
326                   void* CQLFactory::getObject(CQLValue* obj, FactoryType target){
327                   //	printf("CQLFactory::getObject(CQLValue* obj)\n");
328                   	switch(target){
329                             case ChainedIdentifier:
330                   		_CQLObjectPtr._ptr = new CQLChainedIdentifier(obj->_rep->_CQLChainId);
331                   		_getObjectChainedIdentifiers.append(_CQLObjectPtr);
332                   		return _getObjectChainedIdentifiers[_getObjectChainedIdentifiers.size()-1]._ptr;
333                   	  case Identifier:
334                   		return getObject(&(obj->_rep->_CQLChainId),target);
335                             default:
336                                   return NULL;
337                                   break;
338                           }
339                   }
340                   
341                   void* CQLFactory::getObject(CQLFactor* obj, FactoryType target){
342                   //	printf("CQLFactory::getObject(CQLFactor* obj)\n");
343                           switch(target){
344                             case Function:
345 chuck         1.3 		_CQLObjectPtr._ptr = new CQLFunction(obj->_rep->_CQLFunct);
346                                   _getObjectFunctions.append(_CQLObjectPtr);
347                   		return _getObjectFunctions[_getObjectFunctions.size()-1]._ptr;
348                   	  case Value:
349                   		_CQLObjectPtr._ptr = new CQLValue(obj->_rep->_CQLVal);
350                                   _getObjectValues.append(_CQLObjectPtr);
351                   		return _getObjectValues[_getObjectValues.size()-1]._ptr;
352                             case ChainedIdentifier:
353                             case Identifier:
354                   		return getObject(&(obj->_rep->_CQLVal),target);
355                             default:
356                                   return NULL;
357 humberto      1.1                 break;
358 chuck         1.3         }                                                                                                                                                    
359                   }
360                   
361                   
362                   void* CQLFactory::getObject(CQLTerm* obj, FactoryType target){
363                   //	printf("CQLFactory::getObject(CQLTerm* obj)\n");
364                           switch(target){
365                   	  case Factor:
366                   		_CQLObjectPtr._ptr = new CQLFactor(obj->getFactors()[0]);
367                                   _getObjectFactors.append(_CQLObjectPtr);
368                   		return _getObjectFactors[_getObjectFactors.size()-1]._ptr;
369                             case Function:
370                   	  case Value:
371                             case ChainedIdentifier:
372                             case Identifier:
373                   		return getObject(&(obj->getFactors()[0]),target);
374 humberto      1.1           default:
375                                   return NULL;
376                                   break;
377                           }
378 chuck         1.3 }
379 humberto      1.1 
380 chuck         1.3 void* CQLFactory::getObject(CQLExpression* obj, FactoryType target){
381                   //	printf("CQLFactory::getObject(CQLExpression* obj)\n");
382                           switch(target){
383                   	  case Term:
384                   		_CQLObjectPtr._ptr = new CQLTerm(obj->getTerms()[0]);
385                                   _getObjectTerms.append(_CQLObjectPtr);
386                                   return _getObjectTerms[_getObjectTerms.size()-1]._ptr;
387                             case Factor:
388                             case Function:
389                   	  case Value:
390                             case ChainedIdentifier:
391                             case Identifier:
392                   		return getObject(&(obj->getTerms()[0]), target);
393                             default:
394                   		return NULL;
395                                   break;
396                           }                                                                                                                                                    
397 humberto      1.1 }
398                   
399 chuck         1.3 void* CQLFactory::getObject(CQLSimplePredicate* obj, FactoryType target){
400                   //	printf("CQLFactory::getObject(CQLSimplePredicate* obj)\n");
401                           switch(target){
402                   	  case Expression:
403                   		_CQLObjectPtr._ptr = new CQLExpression(obj->_rep->_leftSide);
404                                   _getObjectExpressions.append(_CQLObjectPtr);
405                                   return _getObjectExpressions[_getObjectExpressions.size()-1]._ptr;
406                             case Term:
407                             case Factor:
408                             case Function:
409                   	  case Value:
410                             case ChainedIdentifier:
411                             case Identifier:
412                   		return getObject(&(obj->_rep->_leftSide), target);
413                             default:
414                                   return NULL;
415                                   break;
416                           }
417                   }
418 humberto      1.1 
419 chuck         1.3 void* CQLFactory::getObject(CQLPredicate* obj, FactoryType target){
420                   //	printf("CQLFactory::getObject(CQLPredicate* obj)\n");
421                           switch(target){
422                             case SimplePredicate:
423                   		_CQLObjectPtr._ptr = new CQLSimplePredicate(obj->_rep->_simplePredicate);
424                                   _getObjectSimplePredicates.append(_CQLObjectPtr);
425                                   return _getObjectSimplePredicates[_getObjectSimplePredicates.size()-1]._ptr;
426                   	  case Expression:
427                   	  case Term:
428                   	  case Factor:
429                   	  case Function:
430                   	  case Value:
431                   	  case ChainedIdentifier:
432                   	  case Identifier:
433                   		return getObject(&(obj->_rep->_simplePredicate), target);
434                             default:
435                                   return NULL;
436                                   break;
437                           }
438                   }
439                   
440 chuck         1.3 void CQLFactory::setObject(CQLPredicate* predicate, void* obj, FactoryType objType){
441 humberto      1.4 PEG_METHOD_ENTER(TRC_CQL, "CQLFactory::setObject");
442 chuck         1.3 	switch(objType){
443                   	  case SimplePredicate:
444                   		predicate->_rep->_simplePredicate = *((CQLSimplePredicate*)obj);
445                   		break;
446                   	  case Expression:
447                   		predicate->_rep->_simplePredicate._rep->_leftSide = *((CQLExpression*)obj);
448                   		break;
449                             case Term:
450                             	predicate->_rep->_simplePredicate._rep->_leftSide._rep->_CQLTerms[0] =  
451                   			*((CQLTerm*)obj);
452                   		break;
453                             case Factor:
454                   		predicate->_rep->_simplePredicate._rep->_leftSide._rep->_CQLTerms[0]._rep->_Factors[0] = 
455                   			*((CQLFactor*)obj);
456                   		break;
457                             case Function:
458                   		predicate->_rep->_simplePredicate._rep->_leftSide._rep->_CQLTerms[0]._rep->_Factors[0]._rep->_CQLFunct =
459                                           *((CQLFunction*)obj);
460                   		break;
461                   	  case Value:
462                   		predicate->_rep->_simplePredicate._rep->_leftSide._rep->_CQLTerms[0]._rep->_Factors[0]._rep->_CQLVal =
463 chuck         1.3                         *((CQLValue*)obj);
464                   		break;
465                   	  case ChainedIdentifier:
466                   		predicate->_rep->_simplePredicate._rep->_leftSide._rep->_CQLTerms[0]._rep->_Factors[0]._rep->_CQLVal._rep->_CQLChainId = *((CQLChainedIdentifier*)obj);
467                   		break;
468                   	  case Identifier:
469                   		break;
470                   	  default:
471                   		break;
472                   	}
473 humberto      1.4 PEG_METHOD_EXIT();
474 chuck         1.3 } 
475 humberto      1.1 PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2