version 1.13, 2006/01/30 16:16:38
|
version 1.14, 2007/04/18 20:14:35
|
|
|
// | // |
//============================================================================== | //============================================================================== |
// | // |
// Authors: David Rosckes (rosckes@us.ibm.com) |
|
// Bert Rivero (hurivero@us.ibm.com) |
|
// Chuck Carmack (carmack@us.ibm.com) |
|
// Brian Lucier (lucier@us.ibm.com) |
|
// |
|
// Modified By: Aruran, IBM(ashanmug@in.ibm.com) for Bug# 3589 |
|
// |
|
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
| |
//#include "CQLIdentifier.h" | //#include "CQLIdentifier.h" |
|
|
| |
Uint32 index; | Uint32 index; |
Boolean hasCIMName = true; | Boolean hasCIMName = true; |
if(identifier == String::EMPTY){ |
if(identifier == String::EMPTY) |
|
{ |
_name = CIMName(); | _name = CIMName(); |
return; | return; |
} | } |
// basic error check | // basic error check |
if((index = identifier.find(HASH)) != PEG_NOT_FOUND){ |
if((index = identifier.find(HASH)) != PEG_NOT_FOUND) |
|
{ |
if(((index = identifier.find(RBRKT)) != PEG_NOT_FOUND) || | if(((index = identifier.find(RBRKT)) != PEG_NOT_FOUND) || |
((index = identifier.find(LBRKT)) != PEG_NOT_FOUND)) | ((index = identifier.find(LBRKT)) != PEG_NOT_FOUND)) |
{ | { |
//error | //error |
MessageLoaderParms parms(String("CQL.CQLIdentifier.HASH_ARRAY_SYMBOL_MISMATCH"), |
MessageLoaderParms parms( |
String("The identifier contains a mismatched symbolic constant symbol and an array symbol: $0"), |
String("CQL.CQLIdentifier.HASH_ARRAY_SYMBOL_MISMATCH"), |
|
String("The identifier contains a mismatched symbolic" |
|
" constant symbol and an array symbol: $0"), |
identifier); | identifier); |
throw CQLIdentifierParseException(parms); | throw CQLIdentifierParseException(parms); |
} | } |
} | } |
| |
String _SCOPE(SCOPE); | String _SCOPE(SCOPE); |
if((index = identifier.find(_SCOPE)) != PEG_NOT_FOUND){ |
if((index = identifier.find(_SCOPE)) != PEG_NOT_FOUND) |
|
{ |
_scope = identifier.subString(0,index); | _scope = identifier.subString(0,index); |
identifier = identifier.subString(index+2); | identifier = identifier.subString(index+2); |
} | } |
| |
if((index = identifier.find(RBRKT)) != PEG_NOT_FOUND){ |
if((index = identifier.find(RBRKT)) != PEG_NOT_FOUND) |
if((index = identifier.find(LBRKT)) != PEG_NOT_FOUND){ |
{ |
|
if((index = identifier.find(LBRKT)) != PEG_NOT_FOUND) |
|
{ |
// found array index, parse for ',' | // found array index, parse for ',' |
String range = identifier.subString(index); | String range = identifier.subString(index); |
range = range.subString(1,range.size()-2); // remove left and right bracket |
// remove left and right bracket |
|
range = range.subString(1,range.size()-2); |
while(index != PEG_NOT_FOUND){ | while(index != PEG_NOT_FOUND){ |
if((index = range.find(',')) != PEG_NOT_FOUND){ |
if((index = range.find(',')) != PEG_NOT_FOUND) |
|
{ |
// Basic query error | // Basic query error |
MessageLoaderParms parms(String("CQL.CQLIdentifier.TOO_MANY_ARRAY_INDICES"), |
MessageLoaderParms parms( |
String("The identifier contains one or more commas which is not allowed in CQL Basic query: $0"), |
String("CQL.CQLIdentifier.TOO_MANY_ARRAY_INDICES"), |
|
String("The identifier contains one or more commas which" |
|
" is not allowed in CQL Basic query: $0"), |
identifier); | identifier); |
throw CQLIdentifierParseException(parms); | throw CQLIdentifierParseException(parms); |
// | // |
|
|
// | // |
//_indices.append(SubRange(range.subString(0,index))); | //_indices.append(SubRange(range.subString(0,index))); |
//range = range.subString(index+1); | //range = range.subString(index+1); |
}else{ |
}else |
|
{ |
_indices.append(SubRange(range)); | _indices.append(SubRange(range)); |
} | } |
} | } |
// remove ranges from identifier | // remove ranges from identifier |
identifier = identifier.subString(0,identifier.find(LBRKT)); | identifier = identifier.subString(0,identifier.find(LBRKT)); |
}else{ |
} |
|
else |
|
{ |
// error | // error |
MessageLoaderParms parms(String("CQL.CQLIdentifier.ARRAY_SYMBOL_MISMATCH"), |
MessageLoaderParms parms( |
|
String("CQL.CQLIdentifier.ARRAY_SYMBOL_MISMATCH"), |
String("The identifier contains a mismatched array symbol: $0"), | String("The identifier contains a mismatched array symbol: $0"), |
identifier); | identifier); |
throw CQLIdentifierParseException(parms); | throw CQLIdentifierParseException(parms); |
} | } |
}else if((index = identifier.find(STAR)) != PEG_NOT_FOUND){ |
} |
|
else if((index = identifier.find(STAR)) != PEG_NOT_FOUND) |
|
{ |
// wildcard | // wildcard |
_isWildcard = true; | _isWildcard = true; |
}else if((index = identifier.find(HASH)) != PEG_NOT_FOUND){ |
} |
|
else if((index = identifier.find(HASH)) != PEG_NOT_FOUND) |
|
{ |
// symbolic constant | // symbolic constant |
| |
// check if we only have a symbolic constant without a leading identifier |
// check if only have a symbolic constant without a leading identifier |
if(index == 0) hasCIMName = false; | if(index == 0) hasCIMName = false; |
| |
_isSymbolicConstant = true; | _isSymbolicConstant = true; |
|
|
} | } |
| |
// name | // name |
if(!_isWildcard){ |
if(!_isWildcard) |
try{ |
{ |
|
try |
|
{ |
if(hasCIMName) | if(hasCIMName) |
_name = CIMName(identifier); | _name = CIMName(identifier); |
}catch(Exception e){ |
} |
MessageLoaderParms parms(String("CQL.CQLIdentifier.INVALID_CIMNAME"), |
catch(Exception e) |
|
{ |
|
MessageLoaderParms parms( |
|
String("CQL.CQLIdentifier.INVALID_CIMNAME"), |
String("The identifier contains an invalid CIMName: $0."), | String("The identifier contains an invalid CIMName: $0."), |
identifier); | identifier); |
throw CQLIdentifierParseException(parms); | throw CQLIdentifierParseException(parms); |
|
|
} | } |
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
|
|
} | } |
| |
PEGASUS_NAMESPACE_END | PEGASUS_NAMESPACE_END |