Author: rhafer Date: Wed Aug 13 20:33:15 2008 New Revision: 50046 URL: http://svn.opensuse.org/viewcvs/yast?rev=50046&view=rev Log: Renumber databases if a new one needs to be inserted (not appended) Modified: trunk/ldap-server/src/agent/SlapdConfigAgent.cc Modified: trunk/ldap-server/src/agent/SlapdConfigAgent.cc URL: http://svn.opensuse.org/viewcvs/yast/trunk/ldap-server/src/agent/SlapdConfigAgent.cc?rev=50046&r1=50045&r2=50046&view=diff ============================================================================== --- trunk/ldap-server/src/agent/SlapdConfigAgent.cc (original) +++ trunk/ldap-server/src/agent/SlapdConfigAgent.cc Wed Aug 13 20:33:15 2008 @@ -949,7 +949,39 @@ } } } - databases.push_back(db); + // find insert position + OlcDatabaseList::iterator i,k; + bool inserted = false; + for ( i = databases.begin(); i != databases.end() ; i++ ) + { + if ( (*i)->getEntryIndex() == dbIndex ) + { + k = databases.insert(i, db ); + inserted=true; + } + } + if ( inserted ) + { + k++; + // renumber remaining databases + for( ; k != databases.end(); k++ ) + { + y2milestone("%s needs to be renumbered", (*k)->getSuffix().c_str() ); + (*k)->setIndex( (*k)->getEntryIndex() + 1, true ); + + // update the overlays' DNs accordingly + OlcOverlayList overlays = (*k)->getOverlays(); + OlcOverlayList::const_iterator l = overlays.begin(); + for (; l != overlays.end(); l++ ) + { + (*l)->newParentDn( (*k)->getUpdatedDn() ); + } + } + } + else + { + databases.push_back(db); + } ret = true; } else @@ -1058,6 +1090,7 @@ y2milestone("New Overlay added"); boost::shared_ptr<OlcOverlay> tmp(new OlcOverlay("ppolicy", (*i)->getUpdatedDn())); ppolicyOlc = tmp; + ppolicyOlc->setIndex( overlays.size() ); (*i)->addOverlay(ppolicyOlc); } else -- To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org For additional commands, e-mail: yast-commit+help@opensuse.org