]> git.sur5r.net Git - openldap/commitdiff
add wrapper methods to add/replace Attributes
authorRalf Haferkamp <ralf@openldap.org>
Tue, 22 Jan 2008 14:14:39 +0000 (14:14 +0000)
committerRalf Haferkamp <ralf@openldap.org>
Tue, 22 Jan 2008 14:14:39 +0000 (14:14 +0000)
contrib/ldapc++/src/LDAPAttributeList.cpp
contrib/ldapc++/src/LDAPAttributeList.h
contrib/ldapc++/src/LDAPEntry.cpp
contrib/ldapc++/src/LDAPEntry.h

index 25fee71a96d6f55ef341f2f9f44e4fbc085c8165..ebb41e37f33d0ac1f3c6c7d1ed1e8788779da598 100644 (file)
@@ -139,6 +139,24 @@ void LDAPAttributeList::addAttribute(const LDAPAttribute& attr){
     }
 }
 
+void LDAPAttributeList::replaceAttribute(const LDAPAttribute& attr)
+{
+    DEBUG(LDAP_DEBUG_TRACE,"LDAPAttribute::replaceAttribute()" << endl);
+    DEBUG(LDAP_DEBUG_TRACE | LDAP_DEBUG_PARAMETER,
+            "   attr:" << attr << endl);
+    
+    LDAPAttributeList::iterator i;
+    for( i = m_attrs.begin(); i != m_attrs.end(); i++){
+       if(attr.getName().size() == i->getName().size()){
+           if(equal(attr.getName().begin(), attr.getName().end(), i->getName().begin(),
+                   nocase_compare)){
+                m_attrs.erase(i);
+                break;
+            }
+        }
+    }
+    m_attrs.push_back(attr);
+}
 
 LDAPMod** LDAPAttributeList::toLDAPModArray() const{
     DEBUG(LDAP_DEBUG_TRACE,"LDAPAttribute::toLDAPModArray()" << endl);
index 283ad60c68115b77e4277c20c82fb8eb6a4112d1..30ec6691f4cea1ad22550b14daa9fa78af129a2f 100644 (file)
@@ -84,13 +84,18 @@ class LDAPAttributeList{
         */
        const LDAPAttribute* getAttributeByName(const std::string& name) const;
 
-
         /**
          * Adds one element to the end of the list.
          * @param attr The attribute to add to the list.
          */
         void addAttribute(const LDAPAttribute& attr);
 
+        /**
+         * Replace an Attribute in the List
+         * @param attr The attribute to add to the list.
+         */
+        void replaceAttribute(const LDAPAttribute& attr);
+
         /**
          * Translates the list of Attributes to a 0-terminated array of
          * LDAPMod-structures as needed by the C-API
index a4dbb79a3b64b23ad6bd02764cea0e4c75918e6b..6084b100888d6e281bfffc6b992364a784e7ec25 100644 (file)
@@ -67,6 +67,21 @@ const LDAPAttributeList* LDAPEntry::getAttributes() const{
     return m_attrs;
 }
 
+const LDAPAttribute* LDAPEntry::getAttributeByName(const std::string& name) const 
+{
+    return m_attrs->getAttributeByName(name);
+}
+
+void LDAPEntry::addAttribute(const LDAPAttribute& attr)
+{
+    m_attrs->addAttribute(attr);
+}
+
+void LDAPEntry::replaceAttribute(const LDAPAttribute& attr)
+{
+    m_attrs->replaceAttribute(attr); 
+}
+
 ostream& operator << (ostream& s, const LDAPEntry& le){
     s << "DN: " << le.m_dn << ": " << *(le.m_attrs); 
     return s;
index 03c35138e49e802486a6d8b786d2ca3236047f09..a385b177180da6cd482913a898862d1eecb2ad12 100644 (file)
@@ -17,11 +17,11 @@ class LDAPAsynConnection;
  */
 class LDAPEntry{
 
-       public :
+    public :
         /**
          * Copy-constructor
          */
-               LDAPEntry(const LDAPEntry& entry);
+        LDAPEntry(const LDAPEntry& entry);
 
         /**
          * Constructs a new entry (also used as standard constructor).
@@ -29,7 +29,7 @@ class LDAPEntry{
          * @param dn    The Distinguished Name for the new entry.
          * @param attrs The attributes for the new entry.
          */
-               LDAPEntry(const std::string& dn=std::string(), 
+        LDAPEntry(const std::string& dn=std::string(), 
                 const LDAPAttributeList *attrs=new LDAPAttributeList());
 
         /**
@@ -38,44 +38,66 @@ class LDAPEntry{
          * The constructor is used internally to create a LDAPEntry from
          * the C-API's data structurs.
          */ 
-               LDAPEntry(const LDAPAsynConnection *ld, LDAPMessage *msg);
+        LDAPEntry(const LDAPAsynConnection *ld, LDAPMessage *msg);
 
         /**
          * Destructor
          */
-               ~LDAPEntry();
+        ~LDAPEntry();
         
         /**
          * Sets the DN-attribute.
          * @param dn: The new DN for the entry.
          */
-               void setDN(const std::string& dn);
+        void setDN(const std::string& dn);
 
         /**
          * Sets the attributes of the entry.
          * @param attr: A pointer to a std::list of the new attributes.
          */
-               void setAttributes(LDAPAttributeList *attrs);
+        void setAttributes(LDAPAttributeList *attrs);
+
+       /**
+        * Get an Attribute by its AttributeType (simple wrapper around
+         * LDAPAttributeList::getAttributeByName() )
+        * @param name The name of the Attribute to look for
+        * @return a pointer to the LDAPAttribute with the AttributeType 
+        *      "name" or 0, if there is no Attribute of that Type
+        */
+       const LDAPAttribute* getAttributeByName(const std::string& name) const;
+
+        /**
+         * Adds one Attribute to the List of Attributes (simple wrapper around
+         * LDAPAttributeList::addAttribute() ).
+         * @param attr The attribute to add to the list.
+         */
+        void addAttribute(const LDAPAttribute& attr);
+
+        /**
+         * Replace an Attribute in the List of Attributes (simple wrapper
+         * around LDAPAttributeList::replaceAttribute() ).
+         * @param attr The attribute to add to the list.
+         */
+        void replaceAttribute(const LDAPAttribute& attr);
 
         /**
          * @returns The current DN of the entry.
          */
-               const std::string& getDN() const ;
+        const std::string& getDN() const ;
 
         /**
          * @returns A const pointer to the attributes of the entry.  
          */
-               const LDAPAttributeList* getAttributes() const;
+        const LDAPAttributeList* getAttributes() const;
 
         /**
          * This method can be used to dump the data of a LDAPResult-Object.
          * It is only useful for debugging purposes at the moment
          */
-               friend std::ostream& operator << (std::ostream& s, const LDAPEntry& le);
+        friend std::ostream& operator << (std::ostream& s, const LDAPEntry& le);
        
     private :
-
-               LDAPAttributeList *m_attrs;
-               std::string m_dn;
+        LDAPAttributeList *m_attrs;
+        std::string m_dn;
 };
 #endif  //LDAP_ENTRY_H