version 1.16, 2002/09/12 17:27:01
|
version 1.22, 2002/09/20 19:40:11
|
|
|
#include <Pegasus/Common/Config.h> | #include <Pegasus/Common/Config.h> |
#include <cctype> | #include <cctype> |
#include <cstring> | #include <cstring> |
|
#include <iostream> |
#include "HashTable.h" | #include "HashTable.h" |
#include "CIMObjectPath.h" | #include "CIMObjectPath.h" |
#include "Indentor.h" | #include "Indentor.h" |
|
|
{ | { |
for (Uint32 j = 0; j < n - 1; j++) | for (Uint32 j = 0; j < n - 1; j++) |
{ | { |
if (String::compareNoCase(x[j].getName(), x[j+1].getName()) > 0) |
if (String::compareNoCase(x[j].getName().getString(), |
|
x[j+1].getName().getString()) > 0) |
{ | { |
CIMKeyBinding t = x[j]; | CIMKeyBinding t = x[j]; |
x[j] = x[j+1]; | x[j] = x[j+1]; |
|
|
_rep = new CIMKeyBindingRep(name, value, type); | _rep = new CIMKeyBindingRep(name, value, type); |
} | } |
| |
|
CIMKeyBinding::CIMKeyBinding(const CIMName& name, const CIMValue& value) |
|
{ |
|
if (value.isArray()) |
|
{ |
|
throw TypeMismatchException(); |
|
} |
|
|
|
String kbValue = value.toString(); |
|
Type kbType; |
|
|
|
switch (value.getType()) |
|
{ |
|
case CIMTYPE_BOOLEAN: |
|
kbType = BOOLEAN; |
|
break; |
|
case CIMTYPE_CHAR16: |
|
case CIMTYPE_STRING: |
|
case CIMTYPE_DATETIME: |
|
kbType = STRING; |
|
break; |
|
case CIMTYPE_REFERENCE: |
|
kbType = REFERENCE; |
|
break; |
|
default: |
|
kbType = NUMERIC; |
|
break; |
|
} |
|
|
|
_rep = new CIMKeyBindingRep(name, kbValue, kbType); |
|
} |
|
|
CIMKeyBinding::~CIMKeyBinding() | CIMKeyBinding::~CIMKeyBinding() |
{ | { |
delete _rep; | delete _rep; |
|
|
_rep->_type = type; | _rep->_type = type; |
} | } |
| |
|
Boolean CIMKeyBinding::equal(CIMValue value) |
|
{ |
|
if (value.isArray()) |
|
{ |
|
return false; |
|
} |
|
|
|
CIMValue kbValue; |
|
|
|
try |
|
{ |
|
switch (value.getType()) |
|
{ |
|
case CIMTYPE_CHAR16: |
|
if (getType() != STRING) return false; |
|
kbValue.set(getValue()[0]); |
|
break; |
|
case CIMTYPE_DATETIME: |
|
if (getType() != STRING) return false; |
|
kbValue.set(CIMDateTime(getValue())); |
|
break; |
|
case CIMTYPE_STRING: |
|
if (getType() != STRING) return false; |
|
kbValue.set(getValue()); |
|
break; |
|
case CIMTYPE_REFERENCE: |
|
if (getType() != REFERENCE) return false; |
|
kbValue.set(CIMObjectPath(getValue())); |
|
break; |
|
case CIMTYPE_BOOLEAN: |
|
if (getType() != BOOLEAN) return false; |
|
kbValue = XmlReader::stringToValue(0, getValue().getCString(), |
|
value.getType()); |
|
break; |
|
default: // Numerics |
|
if (getType() != NUMERIC) return false; |
|
kbValue = XmlReader::stringToValue(0, getValue().getCString(), |
|
value.getType()); |
|
break; |
|
} |
|
} |
|
catch (Exception&) |
|
{ |
|
return false; |
|
} |
|
|
|
return value.equal(kbValue); |
|
} |
|
|
Boolean operator==(const CIMKeyBinding& x, const CIMKeyBinding& y) | Boolean operator==(const CIMKeyBinding& x, const CIMKeyBinding& y) |
{ | { |
return | return |
|
|
setKeyBindings(keyBindings); | setKeyBindings(keyBindings); |
} | } |
| |
Boolean CIMObjectPath::_parseHostElement( |
Boolean _parseHostElement( |
const String& objectName, | const String& objectName, |
char*& p, | char*& p, |
String& host) | String& host) |
|
|
return true; | return true; |
} | } |
| |
Boolean CIMObjectPath::_parseNamespaceElement( |
Boolean _parseNamespaceElement( |
const String& objectName, | const String& objectName, |
char*& p, | char*& p, |
CIMNamespaceName& nameSpace) | CIMNamespaceName& nameSpace) |
|
|
operation of retrieving the class definition to determine | operation of retrieving the class definition to determine |
the key property types. | the key property types. |
*/ | */ |
void CIMObjectPath::_parseKeyBindingPairs( |
void _parseKeyBindingPairs( |
const String& objectName, | const String& objectName, |
char*& p, | char*& p, |
Array<CIMKeyBinding>& keyBindings) | Array<CIMKeyBinding>& keyBindings) |
|
|
} | } |
| |
*equalsign = 0; | *equalsign = 0; |
CIMName keyString(p); |
|
| |
if (!CIMName::legal(keyString)) |
if (!CIMName::legal(p)) |
throw MalformedObjectNameException(objectName); | throw MalformedObjectNameException(objectName); |
| |
|
CIMName keyName (p); |
|
|
// Get the value part: | // Get the value part: |
| |
String valueString; | String valueString; |
|
|
p = p + n; | p = p + n; |
} | } |
| |
keyBindings.append(CIMKeyBinding(keyString, valueString, type)); |
keyBindings.append(CIMKeyBinding(keyName.getString (), valueString, |
|
type)); |
| |
if (*p) | if (*p) |
{ | { |
|
|
// ATTN: remove this later: a reference should only be able to hold | // ATTN: remove this later: a reference should only be able to hold |
// an instance name. | // an instance name. |
| |
_rep->_className = p; |
_rep->_className = CIMName (p); |
return; | return; |
} | } |
| |
|
|
| |
if (!_rep->_nameSpace.isNull() || _rep->_host.size()) | if (!_rep->_nameSpace.isNull() || _rep->_host.size()) |
{ | { |
objectName.append(_rep->_nameSpace); |
objectName.append(_rep->_nameSpace.getString ()); |
objectName.append(":"); | objectName.append(":"); |
} | } |
| |
// Get the class name: | // Get the class name: |
| |
objectName.append(getClassName()); |
objectName.append(getClassName().getString ()); |
| |
// | // |
// ATTN-CAKG-P2-20020726: The following condition does not correctly | // ATTN-CAKG-P2-20020726: The following condition does not correctly |
|
|
| |
for (Uint32 i = 0, n = keyBindings.size(); i < n; i++) | for (Uint32 i = 0, n = keyBindings.size(); i < n; i++) |
{ | { |
objectName.append(keyBindings[i].getName()); |
objectName.append(keyBindings[i].getName().getString ()); |
objectName.append('='); | objectName.append('='); |
| |
const String& value = _escapeSpecialCharacters( | const String& value = _escapeSpecialCharacters( |
|
|
| |
// ATTN-RK-P2-20020510: Need to make hostname and namespace lower case? | // ATTN-RK-P2-20020510: Need to make hostname and namespace lower case? |
| |
String classNameLower = ref._rep->_className; |
String classNameLower = ref._rep->_className.getString (); |
classNameLower.toLower(); | classNameLower.toLower(); |
ref._rep->_className = classNameLower; | ref._rep->_className = classNameLower; |
| |
for (Uint32 i = 0, n = ref._rep->_keyBindings.size(); i < n; i++) | for (Uint32 i = 0, n = ref._rep->_keyBindings.size(); i < n; i++) |
{ | { |
String keyBindingNameLower = ref._rep->_keyBindings[i]._rep->_name; |
String keyBindingNameLower = |
|
ref._rep->_keyBindings[i]._rep->_name.getString (); |
keyBindingNameLower.toLower(); | keyBindingNameLower.toLower(); |
ref._rep->_keyBindings[i]._rep->_name = keyBindingNameLower; | ref._rep->_keyBindings[i]._rep->_name = keyBindingNameLower; |
} | } |
|
|
return !operator==(x, y); | return !operator==(x, y); |
} | } |
| |
|
#ifndef PEGASUS_REMOVE_DEPRECATED |
PEGASUS_STD(ostream)& operator<<( | PEGASUS_STD(ostream)& operator<<( |
PEGASUS_STD(ostream)& os, | PEGASUS_STD(ostream)& os, |
const CIMObjectPath& x) | const CIMObjectPath& x) |
{ | { |
return os << x.toString(); | return os << x.toString(); |
} | } |
|
#endif |
| |
PEGASUS_NAMESPACE_END | PEGASUS_NAMESPACE_END |