1 kumpf 1.1 //%2006////////////////////////////////////////////////////////////////////////
2 //
3 // 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 // IBM Corp.; EMC Corporation, The Open Group.
7 // 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 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
12 // EMC Corporation; Symantec Corporation; The Open Group.
13 //
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 kumpf 1.1 // 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 #ifndef Pegasus_SQLiteStore_h
35 #define Pegasus_SQLiteStore_h
36
37 #include <Pegasus/Common/Config.h>
38 #include <Pegasus/Common/CommonUTF.h>
|
140 kumpf 1.1 void modifyNameSpace(
141 const CIMNamespaceName& nameSpace,
142 Boolean shareable,
143 Boolean updatesAllowed);
144 void deleteNameSpace(const CIMNamespaceName& nameSpace);
145 Boolean isNameSpaceEmpty(const CIMNamespaceName& nameSpace);
146
147 Array<CIMQualifierDecl> enumerateQualifiers(
148 const CIMNamespaceName& nameSpace);
149 /**
150 Gets a qualifier declaration for a specified qualifier name in a
151 specified namespace. Returns an uninitialized object if the qualifier
152 is not found.
153 */
154 CIMQualifierDecl getQualifier(
155 const CIMNamespaceName& nameSpace,
156 const CIMName& qualifierName);
157 void setQualifier(
158 const CIMNamespaceName& nameSpace,
159 const CIMQualifierDecl& qualifierDecl);
160 void deleteQualifier(
161 kumpf 1.1 const CIMNamespaceName& nameSpace,
162 const CIMName& qualifierName);
163
164 Array<Pair<String, String> > enumerateClassNames(
165 const CIMNamespaceName& nameSpace);
166 CIMClass getClass(
167 const CIMNamespaceName& nameSpace,
168 const CIMName& className,
169 const CIMName& superClassName);
170 void createClass(
171 const CIMNamespaceName& nameSpace,
172 const CIMClass& newClass,
173 const Array<ClassAssociation>& classAssocEntries);
174 void modifyClass(
175 const CIMNamespaceName& nameSpace,
176 const CIMClass& modifiedClass,
177 const CIMName& oldSuperClassName,
178 Boolean isAssociation,
179 const Array<ClassAssociation>& classAssocEntries);
180 void deleteClass(
181 const CIMNamespaceName& nameSpace,
182 kumpf 1.1 const CIMName& className,
183 const CIMName& superClassName,
184 Boolean isAssociation,
185 const Array<CIMNamespaceName>& dependentNameSpaceNames);
186 Array<CIMObjectPath> enumerateInstanceNamesForClass(
187 const CIMNamespaceName& nameSpace,
188 const CIMName& className);
189 Array<CIMInstance> enumerateInstancesForClass(
190 const CIMNamespaceName& nameSpace,
191 const CIMName& className);
192 CIMInstance getInstance(
193 const CIMNamespaceName& nameSpace,
194 const CIMObjectPath& instanceName);
195 void createInstance(
196 const CIMNamespaceName& nameSpace,
197 const CIMObjectPath& instanceName,
198 const CIMInstance& cimInstance,
199 const Array<InstanceAssociation>& instAssocEntries);
200 void modifyInstance(
201 const CIMNamespaceName& nameSpace,
202 const CIMObjectPath& instanceName,
203 kumpf 1.1 const CIMInstance& cimInstance);
204 void deleteInstance(
205 const CIMNamespaceName& nameSpace,
206 const CIMObjectPath& instanceName);
207 Boolean instanceExists(
208 const CIMNamespaceName& nameSpace,
209 const CIMObjectPath& instanceName);
210
211 void getClassAssociatorNames(
212 const CIMNamespaceName& nameSpace,
213 const Array<CIMName>& classList,
214 const Array<CIMName>& assocClassList,
215 const Array<CIMName>& resultClassList,
216 const String& role,
217 const String& resultRole,
218 Array<String>& associatorNames);
219 void getClassReferenceNames(
220 const CIMNamespaceName& nameSpace,
221 const Array<CIMName>& classList,
222 const Array<CIMName>& resultClassList,
223 const String& role,
224 kumpf 1.1 Array<String>& referenceNames);
225
226 void getInstanceAssociatorNames(
227 const CIMNamespaceName& nameSpace,
228 const CIMObjectPath& instanceName,
229 const Array<CIMName>& assocClassList,
230 const Array<CIMName>& resultClassList,
231 const String& role,
232 const String& resultRole,
233 Array<String>& associatorNames);
234 void getInstanceReferenceNames(
235 const CIMNamespaceName& nameSpace,
236 const CIMObjectPath& instanceName,
237 const Array<CIMName>& resultClassList,
238 const String& role,
239 Array<String>& referenceNames);
240
241 private:
242
243 void _execDbStatement(
244 sqlite3* db,
245 kumpf 1.1 const char* sqlStatement);
246
247 void _initSchema(sqlite3* db);
248
249 void _beginTransaction(sqlite3* db);
250 void _commitTransaction(sqlite3* db);
251
252 String _getNormalizedName(const CIMName& className)
253 {
254 String cn = className.getString();
255 cn.toLower();
256 return cn;
257 }
258
259 void _addClassAssociationEntries(
260 sqlite3* db,
261 const CIMNamespaceName& nameSpace,
262 const Array<ClassAssociation>& classAssocEntries);
263 void _removeClassAssociationEntries(
264 sqlite3* db,
265 const CIMNamespaceName& nameSpace,
266 kumpf 1.1 const CIMName& assocClassName);
267
268 void _addInstanceAssociationEntries(
269 sqlite3* db,
270 const CIMNamespaceName& nameSpace,
271 const Array<InstanceAssociation>& instanceAssocEntries);
272 void _removeInstanceAssociationEntries(
273 sqlite3* db,
274 const CIMNamespaceName& nameSpace,
275 const CIMObjectPath& assocInstanceName);
276
277 String _repositoryRoot;
|