JNDI 작업 LDAP 서버에 대한 도구 클래스 캡슐화(3)

17716 단어 DAOlog4j

package com.common.ldapconnection; 

import java.util.List; 
import java.util.Vector; 

/** 
 * 
 * <p>    :ldap    ,       ldap   。</p> 
 * @author liaowufeng 
 * @version 1.0 
 */ 
public class LdapOperUtils { 

    //   log4j   ,     
    private static Logger log = Logger.getLogger(LdapOperUtils.class.getName()); 

    /** 
     *     Env  ,  Ldap DirContext 
     * @param env   Env      
     * @return Ldap   DirContext 
     * @throws BaseException 
     */ 
    private static DirContext getLdapDirContext(Env env) throws BaseException { 
        //      
        if (env == null) { 
            String[] args = { 
                            "env"}; 
            //        
            StringBuffer msglog = new StringBuffer( 
                    "empty invoke parameter env NULL "); 
            log.error(msglog.toString()); 
            throw new BaseException("error.common.parameter.empty", args); 

        } 
        //   DirContext 
        DirContext dirContext = null; 
        //  Ldap     ,  Ldap   
        dirContext = LdapConnectionFactory.getDirContext(env); 
        return dirContext; 
    } 

    /** 
     *    ldappool.properties     Ldap DirContext  ,  Ldap DirContext 
     * @param dirContextName Ldap DirContext   
     * @return     Ldap   DirContext 
     * @throws BaseException 
     */ 
     private static DirContext getLdapDirContext(String dirContextName,Env env) 
      throws BaseException { 
            //      
            if (StringUtils.isEmpty(dirContextName)) { 
                String[] args = { 
                                "dirContextName"}; 
                //        
                StringBuffer msglog = new StringBuffer( 
                        "empty invoke parameter dirContextName NULL "); 
                log.error(msglog.toString()); 
                throw new BaseException("error.common.parameter.empty", args); 

            } 
            //   DirContext 
            DirContext dirContext = null; 
            //  Ldap     ,  Ldap   
            dirContext = LdapConnectionFactory.getDirContext(dirContextName,env); 

            return dirContext; 

        } 

        /** 
         *   LDAP   
         * @param dirContext DirContext 
         * @throws BaseException 
         */ 
        public static void closeEnvLdapDirContext(DirContext dirContext) 
        throws BaseException { 
            //   LDAP   
            closeLdapDirContext(dirContext); 
    } 

    /** 
    *   Ldap  DirContext 
    * @param dirContext   Ldap DirContext 
    * @throws BaseException 
    */ 
   private static void closeLdapDirContext(DirContext dirContext) throws 
           BaseException { 
       //      NULL 
       if (dirContext == null) { 
           String[] args = { 
                           "dirContext"}; 
           //        
           StringBuffer msglog = new StringBuffer( 
                   "empty invoke parameter conn NULL "); 
           log.error(msglog.toString()); 
           throw new BaseException("error.common.parameter.empty", args); 
       } 

       try { 
           //    
           dirContext.close(); 
       } catch (NamingException ex) { 
           //      ,     
           if (log.isDebugEnabled()) { 
               log.debug("Not close DirContext " + ex); 
           } 
           //      
           log.error("Not close DirContext " + ex); 
           ex.printStackTrace(); 
           try { 
               //     
               dirContext.close(); 
           } catch (NamingException ex1) { 
               //        
               if (log.isDebugEnabled()) { 
                   log.debug("Not again close DirContext " + ex); 
               } 
               //      
               log.error("Not again close DirContext " + ex); 
               ex.printStackTrace(); 
               //      
               throw new BaseException("error.common.dao.ldap.closedircontext", null); 
           } 
       } 
   } 


    /** 
     *       ,      
     */ 
    private LdapOperUtils() { 
    } 

    /** 
     *     Context      Context 
     * @param context   DirContext 
     * @param cn     Context 
     * @param attMap Context    ,Map    List ,key =    , 
     *         , list,    , String 
     * @throws NamingException 
     * @throws BaseException 
     */ 
    public static void addContext(DirContext context, String cn, Map attMap) throws 
            NamingException, BaseException { 

        //      
        if (context == null) { 
            String[] args = { 
                            "context"}; 
            //        
            StringBuffer msglog = new StringBuffer( 
                    "empty invoke parameter context NULL "); 
            log.error(msglog.toString()); 
            throw new BaseException("error.common.parameter.empty", args); 
        } 

        //      
        if (StringUtils.isEmpty(cn)) { 
            String[] args = { 
                            "cn"}; 
            //        
            StringBuffer msglog = new StringBuffer( 
                    "empty invoke parameter cn NULL "); 
            log.error(msglog.toString()); 
            throw new BaseException("error.common.parameter.empty", args); 
        } 

        //      
        if (attMap == null) { 
            String[] args = { 
                            "attMap"}; 
            //        
            StringBuffer msglog = new StringBuffer( 
                    "empty invoke parameter attMap NULL "); 
            log.error(msglog.toString()); 
            throw new BaseException("error.common.parameter.empty", args); 
        } 

        //   ,    
        if (attMap.isEmpty()) { 
            return; 
        } 

        //       key 
        Set keySet = attMap.keySet(); 
        Iterator keyIterator = keySet.iterator(); 
        Attributes attrs = new BasicAttributes(); 
        //        key 
        while (keyIterator.hasNext()) { 

            //        
            String key = (String) keyIterator.next(); 
            Attribute att = null; 
            Object valueObj = attMap.get(key); 
            //        
            if (valueObj instanceof String) { 
                //     ,      
                att = new BasicAttribute(key, valueObj); 
            } else if (valueObj instanceof List) { 
                //  List ,      
                att = new BasicAttribute(key); 
                List valueList = (List) valueObj; 
                //        
                for (int i = 0; i < valueList.size(); i++) { 
                    att.add(valueList.get(i)); 
                } 
            } else { 
                //     ,   ,      (  ) 
                att = new BasicAttribute(key,valueObj); 
            } 
            //    
            attrs.put(att); 
        } 
        //    Context 
        context.createSubcontext(cn, attrs); 
        // context.close(); 
    } 

    /** 
     *     Context      Context 
     * @param context    DirContext 
     * @param cn       Context    
     * @throws NamingException 
     * @throws BaseException 
     */ 
    public static void deleteContext(DirContext context, String cn) throws 
            NamingException, BaseException { 

        //      
        if (context == null) { 
            String[] args = { 
                            "context"}; 
            //        
            StringBuffer msglog = new StringBuffer( 
                    "empty invoke parameter context NULL "); 
            log.error(msglog.toString()); 
            throw new BaseException("error.common.parameter.empty", args); 
        } 

        //      
        if (StringUtils.isEmpty(cn)) { 
            String[] args = { 
                            "cn"}; 
            //        
            StringBuffer msglog = new StringBuffer( 
                    "empty invoke parameter cn NULL "); 
            log.error(msglog.toString()); 
            throw new BaseException("error.common.parameter.empty", args); 
        } 

        //      Context 
        context.destroySubcontext(cn); 
        //   context.close(); 

    } 

    /** 
     *        DirContext    Context 
     * @param context     DirContext 
     * @param cn     Context    
     * @param newCn   Context   
     * @throws NamingException 
     * @throws BaseException 
     */ 
    public static void reNameContext(DirContext context, String cn, 
                                     String newCn) throws NamingException, 
            BaseException { 

        //      
        if (context == null) { 
            String[] args = { 
                            "context"}; 
            //        
            StringBuffer msglog = new StringBuffer( 
                    "empty invoke parameter context NULL "); 
            log.error(msglog.toString()); 
            throw new BaseException("error.common.parameter.empty", args); 
        } 

        //      
        if (StringUtils.isEmpty(cn)) { 
            String[] args = { 
                            "cn"}; 
            //        
            StringBuffer msglog = new StringBuffer( 
                    "empty invoke parameter cn NULL "); 
            log.error(msglog.toString()); 
            throw new BaseException("error.common.parameter.empty", args); 
        } 

        //      
        if (context == null) { 
            String[] args = { 
                            "context"}; 
            //        
            StringBuffer msglog = new StringBuffer( 
                    "empty invoke parameter context NULL "); 
            log.error(msglog.toString()); 
            throw new BaseException("error.common.parameter.empty", args); 
        } 

        //      
        if (StringUtils.isEmpty(newCn)) { 
            String[] args = { 
                            "newCn"}; 
            //        
            StringBuffer msglog = new StringBuffer( 
                    "empty invoke parameter newCn NULL "); 
            log.error(msglog.toString()); 
            throw new BaseException("error.common.parameter.empty", args); 
        } 
        context.rename(cn, newCn); 
        // context.close(); 
    } 

    /** 
     *       DirContext    Context      /      
     * @param context    DirContext 
     * @param cn        Context 
     * @param attMap Map    List ,key     , 
     * value    ,      ,  List,     , String   
     * @throws BaseException 
     * @throws NamingException 
     */ 
    public static void addAttributes(DirContext context, String cn, Map attMap) throws 
            BaseException, NamingException { 

        //      
        if (context == null) { 
            String[] args = { 
                            "context"}; 
            //        
            StringBuffer msglog = new StringBuffer( 
                    "empty invoke parameter context NULL "); 
            log.error(msglog.toString()); 
            throw new BaseException("error.common.parameter.empty", args); 
        } 

        //      
        if (attMap == null) { 
            String[] args = { 
                            "attMap"}; 
            //        
            StringBuffer msglog = new StringBuffer( 
                    "empty invoke parameter attMap NULL "); 
            log.error(msglog.toString()); 
            throw new BaseException("error.common.parameter.empty", args); 
        } 
        //      
        if (StringUtils.isEmpty(cn)) { 
            String[] args = { 
                            "cn"}; 
            //        
            StringBuffer msglog = new StringBuffer( 
                    "empty invoke parameter cn NULL "); 
            log.error(msglog.toString()); 
            throw new BaseException("error.common.parameter.empty", args); 
        } 

        //   ,   
        if (attMap.isEmpty()) { 
            return; 
        } 

        //       key 
        Set keySet = attMap.keySet(); 
        Iterator keyIterator = keySet.iterator(); 
        Attributes attrs = new BasicAttributes(); 
        //        key 
        while (keyIterator.hasNext()) { 

            //        
            String key = (String) keyIterator.next(); 
            Attribute att = null; 
            Object valueObj = attMap.get(key); 
            //        
            if (valueObj instanceof String) { 
                //     ,      
                att = new BasicAttribute(key, valueObj); 
            } else if (valueObj instanceof List) { 
                //  List ,      
                att = new BasicAttribute(key); 
                List valueList = (List) valueObj; 
                //        
                for (int i = 0; i < valueList.size(); i++) { 
                    att.add(valueList.get(i)); 
                } 
            } 
            //    
            attrs.put(att); 
        } 

        context.modifyAttributes(cn, DirContext.ADD_ATTRIBUTE, attrs); 
        // context.close(); 
    } 

    /** 
     *       DirContext      Context       /      
     * @param context     DirContext 
     * @param cn   Context    
     * @param attList            , List   
     * @throws BaseException 
     * @throws NamingException 
     */ 
    public static void deleteAttributes(DirContext context, String cn, 
                                        List attList) throws BaseException, 
            NamingException { 
        //      
        if (context == null) { 
            String[] args = { 
                            "context"}; 
            //        
            StringBuffer msglog = new StringBuffer( 
                    "empty invoke parameter context NULL "); 
            log.error(msglog.toString()); 
            throw new BaseException("error.common.parameter.empty", args); 
        } 

        //      
        if (attList == null) { 
            String[] args = { 
                            "attList"}; 
            //        
            StringBuffer msglog = new StringBuffer( 
                    "empty invoke parameter attList NULL "); 
            log.error(msglog.toString()); 
            throw new BaseException("error.common.parameter.empty", args); 
        } 
        //      
        if (StringUtils.isEmpty(cn)) { 
            String[] args = { 
                            "cn"}; 
            //        
            StringBuffer msglog = new StringBuffer( 
                    "empty invoke parameter cn NULL "); 
            log.error(msglog.toString()); 
            throw new BaseException("error.common.parameter.empty", args); 
        } 

        //   ,   
        if (attList.isEmpty()) { 
            return; 
        } 

        Attributes attrs = new BasicAttributes(); 

        for (int i = 0; i < attList.size(); i++) { 
            Attribute att = null; 
            att = new BasicAttribute((String) attList.get(i)); 
            //    
            attrs.put(att); 
        } 
        context.modifyAttributes(cn, DirContext.REMOVE_ATTRIBUTE, attrs); 
        // context.close(); 
    } 
   } 



좋은 웹페이지 즐겨찾기