00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00036 #ifndef OW_INSTANCEREPOSITORY_HPP_INCLUDE_GUARD_
00037 #define OW_INSTANCEREPOSITORY_HPP_INCLUDE_GUARD_
00038 #include "OW_config.h"
00039 #include "OW_GenericHDBRepository.hpp"
00040 #include "OW_CIMFwd.hpp"
00041 #include "OW_ResultHandlerIFC.hpp"
00042 #include "OW_WBEMFlags.hpp"
00043 
00044 namespace OW_NAMESPACE
00045 {
00046 
00047 class OW_HDB_API InstanceRepository : public GenericHDBRepository
00048 {
00049 public:
00053    InstanceRepository() {}
00054 
00055    void getCIMInstances(
00056       const String& ns,
00057       const String& className,
00058       const CIMClass& requestedClass,
00059       const CIMClass& theClass,
00060       CIMInstanceResultHandlerIFC& result,
00061       WBEMFlags::EDeepFlag deep, WBEMFlags::ELocalOnlyFlag localOnly, WBEMFlags::EIncludeQualifiersFlag includeQualifiers, WBEMFlags::EIncludeClassOriginFlag includeClassOrigin,
00062       const StringArray* propertyList=NULL);
00063    void getInstanceNames(const String& ns, const CIMClass& theClass,
00064       CIMObjectPathResultHandlerIFC& result);
00076    CIMInstance getCIMInstance(const String& ns,
00077       const CIMObjectPath& instanceName,
00078       const CIMClass& theClass, WBEMFlags::ELocalOnlyFlag localOnly,
00079       WBEMFlags::EIncludeQualifiersFlag includeQualifiers, WBEMFlags::EIncludeClassOriginFlag includeClassOrigin,
00080       const StringArray* propertyList);
00081 #ifndef OW_DISABLE_INSTANCE_MANIPULATION
00082 
00091    void deleteInstance(const String& ns, const CIMObjectPath& cop,
00092       const CIMClass& theClass);
00104    void createInstance(const String& ns, const CIMClass& theClass,
00105       const CIMInstance& ci);
00116    void modifyInstance(const String& ns, const CIMObjectPath& cop,
00117       const CIMClass& theClass, const CIMInstance& ci,
00118       const CIMInstance& oldInst,
00119       WBEMFlags::EIncludeQualifiersFlag includeQualifiers,
00120       const StringArray* propertyList);
00126    bool classHasInstances(const CIMObjectPath& classPath);
00127 #endif // #ifndef OW_DISABLE_INSTANCE_MANIPULATION
00128 
00129 #if !defined(OW_DISABLE_INSTANCE_MANIPULATION) && !defined(OW_DISABLE_NAMESPACE_MANIPULATION)
00130 
00134    void deleteNameSpace(const String& nsName);
00142    virtual int createNameSpace(const String& ns);
00143 #endif // #ifndef OW_DISABLE_INSTANCE_MANIPULATION
00144 #ifndef OW_DISABLE_SCHEMA_MANIPULATION
00145 
00151    void createClass(const String& ns, const CIMClass& cimClass);
00157    void deleteClass(const String& ns, const String& className);
00158 #endif // #ifndef OW_DISABLE_SCHEMA_MANIPULATION
00159 private:
00160    String makeClassKey(const String& ns, const String& className);
00161    String makeInstanceKey(const String& ns, const CIMObjectPath& cop,
00162       const CIMClass& theClass);
00163 #ifndef OW_DISABLE_INSTANCE_MANIPULATION
00164    void _removeDuplicatedQualifiers(CIMInstance& inst, const CIMClass& theClass);
00165 #endif
00166 };
00167 
00168 } 
00169 
00170 #endif