1 karl 1.8 //%2006////////////////////////////////////////////////////////////////////////
|
2 chuck 1.2 //
|
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.2 // 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 karl 1.8 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
12 // EMC Corporation; Symantec Corporation; The Open Group.
|
13 chuck 1.2 //
14 // Permission is hereby granted, free of charge, to any person obtaining a copy
15 // of this software and associated documentation files (the "Software"), to
16 // deal in the Software without restriction, including without limitation the
17 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
18 // sell copies of the Software, and to permit persons to whom the Software is
19 // furnished to do so, subject to the following conditions:
20 //
21 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
22 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
23 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
24 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
25 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
26 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
27 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 //
30 //==============================================================================
31 //
32 //%/////////////////////////////////////////////////////////////////////////////
33
34 chuck 1.2 #include <Pegasus/CQL/CQLTerm.h>
35 #include <Pegasus/CQL/CQLTermRep.h>
36 #include <Pegasus/CQL/CQLFactory.h>
37 #include <Pegasus/Query/QueryCommon/QueryContext.h>
38 #include <Pegasus/Query/QueryCommon/QueryException.h>
39 #include <Pegasus/Common/Tracer.h>
40
41 PEGASUS_NAMESPACE_BEGIN
42
43 CQLTermRep::CQLTermRep(){}
44
45 CQLTermRep::CQLTermRep(const CQLFactor& theFactor)
46 {
|
47 karl 1.9 PEG_METHOD_ENTER(TRC_CQL,"CQLTermRep:CQLTermRep()");
48
49 _Factors.append(theFactor);
50
51 PEG_METHOD_EXIT();
|
52 chuck 1.2 }
53
54 CQLTermRep::CQLTermRep(const CQLTermRep& rep){
|
55 karl 1.9 _Factors = rep._Factors;
56 _FactorOperators = rep._FactorOperators;
|
57 chuck 1.2 }
58
59 CQLTermRep::~CQLTermRep(){
60 }
61
|
62 karl 1.9 CQLValue CQLTermRep::resolveValue(const CIMInstance& CI,
63 const QueryContext& QueryCtx)
|
64 chuck 1.2 {
|
65 karl 1.9 PEG_METHOD_ENTER(TRC_CQL,"CQLTermRep:resolveValue()");
66 CQLValue returnVal = _Factors[0].resolveValue(CI,QueryCtx);
67
68 for(Uint32 i = 0; i < _FactorOperators.size(); ++i)
69 {
70 switch(_FactorOperators[i])
71 {
72 /*
73 case mult:
74 returnVal = returnVal *
75 _Factors[i+1].resolveValue(CI,QueryCtx);
76 break;
77 case divide:
78 returnVal = returnVal /
79 _Factors[i+1].resolveValue(CI,QueryCtx);
80 break;
81 */
82 case concat:
83 returnVal = returnVal +
84 _Factors[i+1].resolveValue(CI,QueryCtx);
85 break;
86 karl 1.9
87 default:
88 MessageLoaderParms mload(
|
89 kumpf 1.10 "CQL.CQLTermRep.OPERATION_NOT_SUPPORTED",
90 "Operation is not supported.");
|
91 karl 1.9 throw CQLRuntimeException(mload);
92 }
93 }
94
95 PEG_METHOD_EXIT();
96 return returnVal;
|
97 chuck 1.2 }
98
|
99 karl 1.9 void CQLTermRep::appendOperation(FactorOpType inFactorOpType,
100 const CQLFactor& inFactor)
101 {
102 PEG_METHOD_ENTER(TRC_CQL,"CQLTermRep::appendOperation()");
103
104 _FactorOperators.append(inFactorOpType);
105 _Factors.append(inFactor);
106
107 PEG_METHOD_EXIT();
|
108 chuck 1.2 }
109
110 String CQLTermRep::toString()const
111 {
|
112 karl 1.9 PEG_METHOD_ENTER(TRC_CQL,"CQLTermRep::toString()");
113
114 String returnStr;
115
116 returnStr.append(_Factors[0].toString());
117
118 for(Uint32 i = 0; i < _FactorOperators.size(); ++i)
|
119 chuck 1.2 {
|
120 karl 1.9 /*
121 returnStr.append(_FactorOperators[i] ==
122 mult ? String(" * ") : divide ? String(" / ")
123 : String(" concat "));
124 */
125 if(_FactorOperators[i] == concat)
126 returnStr.append(String(" || "));
127 returnStr.append(_Factors[i+1].toString());
|
128 chuck 1.2 }
|
129 karl 1.9
130 PEG_METHOD_EXIT();
131 return returnStr;
|
132 chuck 1.2 }
133
134 Boolean CQLTermRep::isSimple()const
135 {
|
136 karl 1.9 return (_Factors.size() == 1);
|
137 chuck 1.2 }
138
139 Boolean CQLTermRep::isSimpleValue()const
140 {
|
141 karl 1.9 PEG_METHOD_ENTER(TRC_CQL,"CQLTermRep::isSimpleValue()");
142 if(_Factors.size() == 1)
|
143 chuck 1.2 {
|
144 karl 1.9 PEG_METHOD_EXIT();
145 return _Factors[0].isSimpleValue();
|
146 chuck 1.2 }
|
147 karl 1.9
148 PEG_METHOD_EXIT();
149 return false;
|
150 chuck 1.2 }
151
152 Array<CQLFactor> CQLTermRep::getFactors()const
153 {
|
154 karl 1.9 return _Factors;
|
155 chuck 1.2 }
156
157 Array<FactorOpType> CQLTermRep::getOperators()const
158 {
|
159 karl 1.9 return _FactorOperators;
|
160 chuck 1.2 }
161
|
162 vijay.eli 1.6 void CQLTermRep::applyContext(const QueryContext& inContext,
163 const CQLChainedIdentifier& inCid)
|
164 chuck 1.2 {
|
165 karl 1.9 PEG_METHOD_ENTER(TRC_CQL,"CQLTermRep::applyContext()");
166
167 for(Uint32 i = 0; i < _Factors.size(); ++i)
|
168 chuck 1.2 {
|
169 karl 1.9 _Factors[i].applyContext(inContext, inCid);
|
170 chuck 1.2 }
|
171 karl 1.9
172 PEG_METHOD_EXIT();
|
173 chuck 1.2 }
|
174 humberto 1.4 /*
|
175 chuck 1.2 Boolean CQLTermRep::operator==(const CQLTermRep& rhs)const
176 {
177 PEG_METHOD_ENTER(TRC_CQL,"CQLTermRep::operator==()");
178
179 for(Uint32 i = 0; i < _FactorOperators.size(); ++i)
180 {
181 if(_FactorOperators[i] != rhs._FactorOperators[i])
|
182 karl 1.9 {
183 PEG_METHOD_EXIT();
184 return false;
185 }
|
186 chuck 1.2 }
187
188 for(Uint32 i = 0; i < _Factors.size(); ++i)
189 {
190 if(_Factors[i] != rhs._Factors[i])
|
191 karl 1.9 {
192 PEG_METHOD_EXIT();
193 return false;
194 }
|
195 chuck 1.2 }
196
197 PEG_METHOD_EXIT();
198 return true;
199 }
200
201 Boolean CQLTermRep::operator!=(const CQLTermRep& rhs)const
202 {
203 return (!operator==(rhs));
204 }
|
205 humberto 1.4 */
|
206 chuck 1.2 PEGASUS_NAMESPACE_END
|