// --- BEGIN COPYRIGHT BLOCK --- // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; version 2 of the License. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License along // with this program; if not, write to the Free Software Foundation, Inc., // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. // // (C) 2007 Red Hat, Inc. // All rights reserved. // --- END COPYRIGHT BLOCK --- package com.netscape.certsrv.dbs; import netscape.ldap.LDAPAttributeSet; import com.netscape.certsrv.base.EBaseException; import com.netscape.certsrv.base.ISubsystem; /** * A class represents a registry where all the * schema (object classes and attribute) information * is stored. * * Attribute mappers can be registered with this * registry. * * Given the schema information stored, this registry * has knowledge to convert a Java object into a * LDAPAttributeSet or vice versa. * * @version $Revision$, $Date$ */ public interface IDBRegistry extends ISubsystem { /** * Registers object class. * * @param className java class to create for the object classes * @param ldapNames a list of LDAP object classes * @exception EDBException failed to register */ public void registerObjectClass(String className, String ldapNames[]) throws EDBException; /** * See if an object class is registered. * * @param className java class to create * @return true if object class is registered already */ public boolean isObjectClassRegistered(String className); /** * Registers attribute mapper. * * @param ufName LDAP attribute name * @param mapper mapper to invoke for the attribute * @exception EDBException failed to register */ public void registerAttribute(String ufName, IDBAttrMapper mapper) throws EDBException; /** * See if an attribute is registered. * * @param ufName attribute name * @return true if attribute is registered already */ public boolean isAttributeRegistered(String ufName); /** * Registers a dynamic attribute mapper. * * @param mapper The dynamic mapper to register */ public void registerDynamicMapper(IDBDynAttrMapper mapper); /** * Creates LDAP-based search filters with help of * registered mappers. * Parses filter from filter string specified in RFC1558. * *
     *  ::= '('  ')'
     *  ::=  |  |  | 
     *  ::= '&' 
     *  ::= '|' 
     *  ::= '!' 
     *  ::=  |  
     *  ::=  |  | 
     *  ::=   
     *  ::=  |  |  | 
     *  ::= '='
     *  ::= '~='
     *  ::= '>='
     *  ::= '<='
     *  ::=  '=*'
     *  ::=  '='   
     *  ::= NULL | 
     *  ::= '*' 
     *  ::= NULL |  '*' 
     *  ::= NULL | 
     * 
* * @param filter CMS-based filter * @return LDAP-based filter string * @exception EBaseException failed to convert filter */ public String getFilter(String filter) throws EBaseException; /** * Creates LDAP-based search filters with help of * registered mappers. * * @param filter CMS-based filter * @param c filter converter * @return LDAP-based filter string * @exception EBaseException failed to convert filter */ public String getFilter(String filter, IFilterConverter c) throws EBaseException; /** * Maps object into LDAP attribute set. * * @param parent object's parent * @param name name of the object * @param obj object to be mapped * @param attrs LDAP attribute set * @exception EBaseException failed to map object */ public void mapObject(IDBObj parent, String name, Object obj, LDAPAttributeSet attrs) throws EBaseException; /** * Retrieves a list of LDAP attributes that are associated * with the given attributes. * * @param attrs attributes * @return LDAP-based attributes * @exception EBaseException failed to map attributes */ public String[] getLDAPAttributes(String attrs[]) throws EBaseException; /** * Creates attribute set from object. * * @param obj database object * @return LDAP attribute set * @exception EBaseException failed to create set */ public LDAPAttributeSet createLDAPAttributeSet(IDBObj obj) throws EBaseException; /** * Creates object from attribute set. * * @param attrs LDAP attribute set * @return database object * @exception EBaseException failed to create object */ public IDBObj createObject(LDAPAttributeSet attrs) throws EBaseException; }