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

  1 a.dunfey 1.2.16.1 //%2006////////////////////////////////////////////////////////////////////////
  2 chuck    1.1      //
  3 karl     1.2      // 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.1      // IBM Corp.; EMC Corporation, The Open Group.
  7 karl     1.2      // 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 a.dunfey 1.2.16.1 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 12                   // EMC Corporation; Symantec Corporation; The Open Group.
 13 chuck    1.1      //
 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                   // Authors: David Rosckes (rosckes@us.ibm.com)
 33                   //          Bert Rivero (hurivero@us.ibm.com)
 34 chuck    1.1      //          Chuck Carmack (carmack@us.ibm.com)
 35                   //          Brian Lucier (lucier@us.ibm.com)
 36                   //
 37                   // Modified By: 
 38                   //
 39                   //%/////////////////////////////////////////////////////////////////////////////
 40                   
 41                   #include "RepositoryQueryContext.h"
 42                   
 43                   PEGASUS_NAMESPACE_BEGIN
 44                         
 45                   RepositoryQueryContext::RepositoryQueryContext(const CIMNamespaceName& inNS, CIMRepository* inCIMRep)
 46                     :QueryContext(inNS),
 47                      _CIMRep(inCIMRep)
 48                   {
 49                   }
 50                   
 51                   RepositoryQueryContext::RepositoryQueryContext(const RepositoryQueryContext& ctx)
 52                     :QueryContext(ctx),
 53                      _CIMRep(ctx._CIMRep)
 54                   {
 55 chuck    1.1       
 56                   }  
 57                   
 58                   RepositoryQueryContext::~RepositoryQueryContext()
 59                   {
 60                   }
 61                   
 62                   RepositoryQueryContext& RepositoryQueryContext::operator=(const RepositoryQueryContext& rhs)
 63                   {
 64                     if (this == &rhs)
 65                       return *this;
 66                   
 67                     QueryContext::operator=(rhs);
 68                     
 69                     _CIMRep = rhs._CIMRep;
 70                   
 71                     return *this;
 72                   }
 73                   
 74                   CIMClass RepositoryQueryContext::getClass(const CIMName& inClassName)const
 75                   {
 76 chuck    1.1        /* Hardcoded defaults */
 77                     Boolean localOnly = false;
 78                     Boolean includeQualifiers = true;
 79                     Boolean includeClassOrigin = false;
 80                     CIMPropertyList _emptyCIMPropertyList;
 81                             
 82                     CIMClass _class = _CIMRep->getClass(
 83                   				      getNamespace(),
 84                   				      inClassName,
 85                   				      localOnly,
 86                   				      includeQualifiers,
 87                   				      includeClassOrigin,
 88                   				      _emptyCIMPropertyList);
 89                     return _class;
 90                   }
 91                     
 92                   Array<CIMName> RepositoryQueryContext::enumerateClassNames(const CIMName& inClassName)const
 93                   {
 94                     return _CIMRep->enumerateClassNames(getNamespace(),
 95                   				      inClassName,
 96                   				      true);          // deepInheritance
 97 chuck    1.1      }
 98                   
 99                   Boolean RepositoryQueryContext::isSubClass(const CIMName& baseClass,
100                                                              const CIMName& derivedClass)const
101                   {
102                     if (baseClass == derivedClass)
103                     {
104                       return false;
105                     }
106                   
107                     Array<CIMName> subClasses = enumerateClassNames(baseClass);
108                     for (Uint32 i = 0; i < subClasses.size(); i++)
109                     {
110                       if (subClasses[i] == derivedClass)
111                       {
112                         return true;
113                       }   
114                     }
115                     
116                     return false;  
117                   }
118 chuck    1.1      
119                   QueryContext::ClassRelation RepositoryQueryContext::getClassRelation(const CIMName& anchorClass,
120                                                                                        const CIMName& relatedClass)const
121                   {
122                     if (anchorClass == relatedClass)
123                     {
124                       return SAMECLASS;
125                     }
126                   
127                     if (isSubClass(anchorClass, relatedClass))
128                     {
129                       return SUBCLASS;
130                     }
131                   
132                     if (isSubClass(relatedClass, anchorClass))
133                     {
134                       return SUPERCLASS;
135                     }
136                   
137                     return NOTRELATED;  
138                   }
139 chuck    1.1      
140                   QueryContext* RepositoryQueryContext::clone()
141                   {
142                     return new RepositoryQueryContext(*this);
143                   }
144                   
145                   PEGASUS_NAMESPACE_END
146                   

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2