/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package org.dataone.cn.ldap; import java.util.Date; import java.util.Map; import javax.naming.directory.DirContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.dataone.service.exceptions.ServiceFailure; import org.dataone.service.types.v1.NodeReference; /** * Extend the NodeFacade class in d1_cn_noderegistery to allow * for log aggregation specific behavior * * Expose public access to protected methods in NodeAccess * * The public methods will also control the borrowing and returning of LDAPContexts to the LDAP Pool * * @author waltz */ public class NodeRegistryLogAggregationFacade extends NodeFacade { public static Log log = LogFactory.getLog(NodeRegistryLogAggregationFacade.class); public Date getLogLastAggregated(NodeReference nodeIdentifier) throws ServiceFailure { DirContext dirContext = null; Date logLastAggregated; try { dirContext = getDirContextProvider().borrowDirContext(); } catch (Exception ex) { log.error(ex.getMessage(), ex); throw new ServiceFailure("16805", ex.getMessage()); } if (dirContext == null) { throw new ServiceFailure("16805", "Context is null.Unable to retrieve LDAP Directory Context from pool. Please try again."); } try { logLastAggregated = getNodeAccess().getLogLastAggregated(dirContext, nodeIdentifier); } finally { getDirContextProvider().returnDirContext(dirContext); } return logLastAggregated; } public void setLogLastAggregated(NodeReference nodeIdentifier, Date logAggregationDate) throws ServiceFailure { DirContext dirContext = null; try { dirContext = getDirContextProvider().borrowDirContext(); } catch (Exception ex) { log.error(ex.getMessage(), ex); throw new ServiceFailure("16803", ex.getMessage()); } if (dirContext == null) { throw new ServiceFailure("16803", "Context is null.Unable to retrieve LDAP Directory Context from pool. Please try again."); } try { getNodeAccess().setLogLastAggregated(dirContext, nodeIdentifier, logAggregationDate); } finally { getDirContextProvider().returnDirContext(dirContext); } } public Boolean getAggregateLogs(NodeReference nodeIdentifier) throws ServiceFailure { DirContext dirContext = null; Boolean aggregateLogs = null; try { dirContext = getDirContextProvider().borrowDirContext(); } catch (Exception ex) { log.error(ex.getMessage(), ex); throw new ServiceFailure("16806", ex.getMessage()); } if (dirContext == null) { throw new ServiceFailure("16806", "Context is null. Unable to retrieve LDAP Directory Context from pool. Please try again."); } try { aggregateLogs = getNodeAccess().getAggregateLogs(dirContext, nodeIdentifier); } finally { getDirContextProvider().returnDirContext(dirContext); } return aggregateLogs; } public void setAggregateLogs(NodeReference nodeIdentifier, Boolean aggregateLogs) throws ServiceFailure { DirContext dirContext = null; try { dirContext = getDirContextProvider().borrowDirContext(); } catch (Exception ex) { log.error(ex.getMessage(), ex); throw new ServiceFailure("16804", ex.getMessage()); } if (dirContext == null) { throw new ServiceFailure("16804", "Context is null. Unable to retrieve LDAP Directory Context from pool. Please try again."); } try { getNodeAccess().setAggregateLogs(dirContext, nodeIdentifier, aggregateLogs); } finally { getDirContextProvider().returnDirContext(dirContext); } } }