1// $OpenLDAP$ 2/* 3 * Copyright 2003-2011 The OpenLDAP Foundation, All Rights Reserved. 4 * COPYING RESTRICTIONS APPLY, see COPYRIGHT file 5 */ 6 7#include "LDAPSchema.h" 8 9#include <ctype.h> 10#include <ldap.h> 11 12#include "debug.h" 13#include "StringList.h" 14 15 16using namespace std; 17 18LDAPSchema::LDAPSchema(){ 19 DEBUG(LDAP_DEBUG_CONSTRUCT, 20 "LDAPSchema::LDAPSchema( )" << endl); 21} 22 23LDAPSchema::~LDAPSchema() { 24 DEBUG(LDAP_DEBUG_DESTROY,"LDAPSchema::~LDAPSchema()" << endl); 25} 26 27void LDAPSchema::setObjectClasses (const StringList &ocs) { 28 DEBUG(LDAP_DEBUG_TRACE,"LDAPSchema::setObjectClasses()" << endl); 29 30 // parse the stringlist and save it to global map... 31 StringList::const_iterator i,j; 32 for (i = ocs.begin(); i != ocs.end(); i++) { 33 LDAPObjClass oc ( (*i) ); 34 StringList names = oc.getNames(); 35 // there could be more names for one object... 36 for (j = names.begin(); j != names.end(); j++) { 37 string lc_name = *j; 38 string::iterator k; 39 for ( k = lc_name.begin(); k != lc_name.end(); k++ ) { 40 (*k) = tolower(*k); 41 } 42 object_classes [lc_name] = LDAPObjClass (oc); 43 } 44 } 45} 46 47void LDAPSchema::setAttributeTypes (const StringList &ats) { 48 DEBUG(LDAP_DEBUG_TRACE,"LDAPSchema::setAttributeTypes()" << endl); 49 50 // parse the stringlist and save it to global map... 51 StringList::const_iterator i,j; 52 for (i = ats.begin(); i != ats.end(); i++) { 53 LDAPAttrType at ( (*i) ); 54 StringList names = at.getNames(); 55 // there could be more names for one object... 56 for (j = names.begin(); j != names.end(); j++) { 57 string lc_name = *j; 58 string::iterator k; 59 for ( k = lc_name.begin(); k != lc_name.end(); k++ ) { 60 (*k) = tolower(*k); 61 } 62 attr_types [lc_name] = LDAPAttrType (at); 63 } 64 } 65} 66 67LDAPObjClass LDAPSchema::getObjectClassByName (string name) { 68 string lc_name = name; 69 string::iterator k; 70 for ( k = lc_name.begin(); k != lc_name.end(); k++ ) { 71 (*k) = tolower(*k); 72 } 73 return object_classes [lc_name]; 74} 75 76LDAPAttrType LDAPSchema::getAttributeTypeByName (string name) { 77 string lc_name = name; 78 string::iterator k; 79 for ( k = lc_name.begin(); k != lc_name.end(); k++ ) { 80 (*k) = tolower(*k); 81 } 82 83 return attr_types [lc_name]; 84} 85