1 mike 1.1 //BEGIN_LICENSE
2 //
3 // Copyright (c) 2000 The Open Group, BMC Software, Tivoli Systems, IBM
4 //
5 // Permission is hereby granted, free of charge, to any person obtaining a
6 // copy of this software and associated documentation files (the "Software"),
7 // to deal in the Software without restriction, including without limitation
8 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 // and/or sell copies of the Software, and to permit persons to whom the
10 // Software is furnished to do so, subject to the following conditions:
11 //
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
15 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
17 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
18 // DEALINGS IN THE SOFTWARE.
19 //
20 //END_LICENSE
21 //BEGIN_HISTORY
22 mike 1.1 //
23 // Author:
24 //
|
25 mike 1.2 // $Log: Repository.h,v $
|
26 mike 1.9 // Revision 1.8 2001/02/16 02:06:09 mike
27 // Renamed many classes and headers.
28 //
|
29 mike 1.8 // Revision 1.7 2001/02/13 07:00:18 mike
30 // Added partial createInstance() method to repository.
31 //
|
32 mike 1.7 // Revision 1.6 2001/02/11 05:45:33 mike
33 // Added case insensitive logic for files in Repository
34 //
|
35 mike 1.6 // Revision 1.5 2001/02/08 00:31:51 mike
|
36 mike 1.8 // Clean up on CIMOperations class.
|
37 mike 1.6 // Reformmatted documentation.
38 //
|
39 mike 1.5 // Revision 1.4 2001/02/06 17:04:03 karl
40 // add documentation
41 //
|
42 karl 1.4 // Revision 1.3 2001/01/31 08:20:51 mike
43 // Added dispatcher framework.
44 // Added enumerateInstanceNames.
45 //
|
46 mike 1.3 // Revision 1.2 2001/01/28 04:11:03 mike
47 // fixed qualifier resolution
48 //
|
49 mike 1.2 // Revision 1.1.1.1 2001/01/14 19:53:56 mike
50 // Pegasus import
51 //
|
52 mike 1.1 //
53 //END_HISTORY
54
55 #ifndef PegasusRepository_Repository_h
56 #define PegasusRepository_Repository_h
57
58 #include <Pegasus/Common/Config.h>
|
59 mike 1.8 #include <Pegasus/Common/CIMClass.h>
60 #include <Pegasus/Common/CIMInstance.h>
61 #include <Pegasus/Common/CIMQualifierDecl.h>
62 #include <Pegasus/Common/CIMOperations.h>
|
63 mike 1.1
64 PEGASUS_NAMESPACE_BEGIN
65
66 class RepositoryDeclContext;
|
67 mike 1.7
|
68 mike 1.8 /** This class derives from the CIMOperations class and provides a simple
|
69 mike 1.7 implementation of a CIM repository. It only implements the methods
70 for manipulating classes and instances. The others throw this exception:
71
72 <pre>
73 CimException(CimException::NOT_SUPPORTED)
74 </pre>
|
75 karl 1.4 */
|
76 mike 1.1
|
77 mike 1.8 class PEGASUS_REPOSITORY_LINKAGE Repository : public CIMOperations
|
78 mike 1.1 {
79 public:
|
80 mike 1.6
|
81 karl 1.4 /// Constructor
|
82 mike 1.1 Repository(const String& path);
|
83 mike 1.6
|
84 karl 1.4 /// Descructor
|
85 mike 1.1 virtual ~Repository();
|
86 mike 1.6
|
87 mike 1.8 /// virtual class CIMClass. From the operations class
88 virtual CIMClass getClass(
|
89 mike 1.1 const String& nameSpace,
90 const String& className,
91 Boolean localOnly = true,
92 Boolean includeQualifiers = true,
93 Boolean includeClassOrigin = false,
|
94 mike 1.9 const Array<String>& propertyList = StringArray());
|
95 mike 1.6
|
96 karl 1.4 /// getInstance
|
97 mike 1.8 virtual CIMInstance getInstance(
|
98 mike 1.1 const String& nameSpace,
|
99 mike 1.8 const CIMReference& instanceName,
|
100 mike 1.1 Boolean localOnly = true,
101 Boolean includeQualifiers = false,
102 Boolean includeClassOrigin = false,
|
103 mike 1.9 const Array<String>& propertyList = StringArray());
|
104 mike 1.6
|
105 karl 1.4 /// deleteClass
|
106 mike 1.1 virtual void deleteClass(
107 const String& nameSpace,
108 const String& className);
|
109 mike 1.6
|
110 karl 1.4 /// deleteInstance
|
111 mike 1.1 virtual void deleteInstance(
112 const String& nameSpace,
|
113 mike 1.8 const CIMReference& instanceName);
|
114 mike 1.6
|
115 karl 1.4 /// createClass
|
116 mike 1.1 virtual void createClass(
117 const String& nameSpace,
|
118 mike 1.8 CIMClass& newClass);
|
119 mike 1.6
|
120 karl 1.4 /// createInstance
|
121 mike 1.1 virtual void createInstance(
122 const String& nameSpace,
|
123 mike 1.8 CIMInstance& newInstance);
|
124 mike 1.6
|
125 mike 1.1 virtual void modifyClass(
126 const String& nameSpace,
|
127 mike 1.8 CIMClass& modifiedClass);
|
128 mike 1.6
|
129 karl 1.4 /// modifyInstance
|
130 mike 1.1 virtual void modifyInstance(
131 const String& nameSpace,
|
132 mike 1.8 const CIMInstance& modifiedInstance);
|
133 mike 1.6
|
134 karl 1.4 /// enumerateClasses
|
135 mike 1.8 virtual Array<CIMClass> enumerateClasses(
|
136 mike 1.1 const String& nameSpace,
137 const String& className = String::EMPTY,
138 Boolean deepInheritance = false,
139 Boolean localOnly = true,
140 Boolean includeQualifiers = true,
141 Boolean includeClassOrigin = false);
|
142 mike 1.6
|
143 karl 1.4 /// enumerateClassNames
|
144 mike 1.1 virtual Array<String> enumerateClassNames(
145 const String& nameSpace,
146 const String& className = String::EMPTY,
147 Boolean deepInheritance = false);
|
148 mike 1.6
|
149 karl 1.4 /// enumerateInstances
|
150 mike 1.8 virtual Array<CIMInstance> enumerateInstances(
|
151 mike 1.1 const String& nameSpace,
152 const String& className,
153 Boolean deepInheritance = true,
154 Boolean localOnly = true,
155 Boolean includeQualifiers = false,
156 Boolean includeClassOrigin = false,
|
157 mike 1.9 const Array<String>& propertyList = StringArray());
|
158 mike 1.6
|
159 karl 1.4 /// enumerateInstanceNames
|
160 mike 1.8 virtual Array<CIMReference> enumerateInstanceNames(
|
161 mike 1.1 const String& nameSpace,
162 const String& className);
|
163 mike 1.6
|
164 karl 1.4 /// execQuery
|
165 mike 1.8 virtual Array<CIMInstance> execQuery(
|
166 mike 1.1 const String& queryLanguage,
167 const String& query) ;
|
168 mike 1.6
|
169 karl 1.4 /// associators
|
170 mike 1.8 virtual Array<CIMInstance> associators(
|
171 mike 1.1 const String& nameSpace,
|
172 mike 1.8 const CIMReference& objectName,
|
173 mike 1.1 const String& assocClass = String::EMPTY,
174 const String& resultClass = String::EMPTY,
175 const String& role = String::EMPTY,
176 const String& resultRole = String::EMPTY,
177 Boolean includeQualifiers = false,
178 Boolean includeClassOrigin = false,
|
179 mike 1.9 const Array<String>& propertyList = StringArray());
|
180 mike 1.6
|
181 karl 1.4 /// associateNames
|
182 mike 1.8 virtual Array<CIMReference> associatorNames(
|
183 mike 1.1 const String& nameSpace,
|
184 mike 1.8 const CIMReference& objectName,
|
185 mike 1.1 const String& assocClass = String::EMPTY,
186 const String& resultClass = String::EMPTY,
187 const String& role = String::EMPTY,
188 const String& resultRole = String::EMPTY);
|
189 mike 1.6
|
190 karl 1.4 /// references
|
191 mike 1.8 virtual Array<CIMInstance> references(
|
192 mike 1.1 const String& nameSpace,
|
193 mike 1.8 const CIMReference& objectName,
|
194 mike 1.1 const String& resultClass = String::EMPTY,
195 const String& role = String::EMPTY,
196 Boolean includeQualifiers = false,
197 Boolean includeClassOrigin = false,
|
198 mike 1.9 const Array<String>& propertyList = StringArray());
|
199 mike 1.6
|
200 karl 1.4 /// referenceNames
|
201 mike 1.8 virtual Array<CIMReference> referenceNames(
|
202 mike 1.1 const String& nameSpace,
|
203 mike 1.8 const CIMReference& objectName,
|
204 mike 1.1 const String& resultClass = String::EMPTY,
205 const String& role = String::EMPTY);
|
206 mike 1.6
|
207 karl 1.4 /// getProperty
|
208 mike 1.8 virtual CIMValue getProperty(
|
209 mike 1.1 const String& nameSpace,
|
210 mike 1.8 const CIMReference& instanceName,
|
211 mike 1.1 const String& propertyName);
|
212 mike 1.6
|
213 karl 1.4 /// setProperty
|
214 mike 1.1 virtual void setProperty(
215 const String& nameSpace,
|
216 mike 1.8 const CIMReference& instanceName,
|
217 mike 1.1 const String& propertyName,
|
218 mike 1.8 const CIMValue& newValue = CIMValue());
|
219 mike 1.6
|
220 karl 1.4 /// getQualifier
|
221 mike 1.8 virtual CIMQualifierDecl getQualifier(
|
222 mike 1.1 const String& nameSpace,
223 const String& qualifierName);
|
224 mike 1.6
|
225 karl 1.4 /// setQualifier
|
226 mike 1.1 virtual void setQualifier(
227 const String& nameSpace,
|
228 mike 1.8 const CIMQualifierDecl& qualifierDecl);
|
229 mike 1.6
|
230 karl 1.4 /// virtual deleteQualifier
|
231 mike 1.1 virtual void deleteQualifier(
232 const String& nameSpace,
233 const String& qualifierName);
|
234 mike 1.6
|
235 karl 1.4 /// enumerateQualifiers
|
236 mike 1.8 virtual Array<CIMQualifierDecl> enumerateQualifiers(
|
237 mike 1.1 const String& nameSpace);
|
238 mike 1.6
|
239 karl 1.4 /// Virtual value
|
240 mike 1.8 virtual CIMValue invokeMethod(
|
241 mike 1.1 const String& nameSpace,
|
242 mike 1.8 const CIMReference& instanceName,
|
243 mike 1.1 const String& methodName,
|
244 mike 1.8 const Array<CIMValue>& inParameters,
245 Array<CIMValue>& outParameters);
|
246 mike 1.1
|
247 mike 1.8 /** CIMMethod createNameSpace - Creates a new namespace in the repository
|
248 mike 1.6 @param String with the name of the namespace
249 @exception - ???
250 ATTN: What happens if the namespace already exists.
|
251 karl 1.4 */
|
252 mike 1.1 void createNameSpace(const String& nameSpace);
253
|
254 mike 1.8 /** CIMMethod enumerateNameSpaces - Get all of the namespaces in the
|
255 mike 1.6 repository. \Ref{NAMESPACE}
256 @return Array of strings with the namespaces
|
257 karl 1.4 */
|
258 mike 1.1 virtual Array<String> enumerateNameSpaces() const;
|
259 mike 1.2
|
260 mike 1.8 /** CIMMethod createMetaQualifiers - ATTN:
|
261 mike 1.2 This method must be invoked to create the appropriate meta-qualifiers
262 required by CIM (they are not part of the CIM schema; rather they are
263 part of the meta-schema).
264 */
265 void createMetaQualifiers(const String& nameSpace);
|
266 mike 1.1
267 private:
268
269 String _root;
270 RepositoryDeclContext* _context;
271 };
272
273 PEGASUS_NAMESPACE_END
274
275 #endif /* PegasusRepository_Repository_h */
|
276 karl 1.4
|