/* Index ECM Engine - A system for managing the capture (when created * or received), classification (cataloguing), storage, retrieval, * revision, sharing, reuse and disposition of documents. * * Copyright (C) 2008 Regione Piemonte * Copyright (C) 2008 Provincia di Torino * Copyright (C) 2008 Comune di Torino * * 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; either version 2, * or (at your option) any later version. * * 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ package it.doqui.index.ecmengine.business.foundation.security; import it.doqui.index.ecmengine.business.foundation.EcmEngineWrapperBean; import it.doqui.index.ecmengine.business.foundation.util.FoundationErrorCodes; import it.doqui.index.ecmengine.exception.security.PersonRuntimeException; import it.doqui.index.ecmengine.util.EcmEngineConstants; import java.io.Serializable; import java.util.Map; import java.util.Set; import org.alfresco.service.cmr.repository.DuplicateChildNodeNameException; import org.alfresco.service.cmr.repository.InvalidNodeRefException; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.security.NoSuchPersonException; import org.alfresco.service.namespace.QName; public class PersonSvcBean extends EcmEngineWrapperBean implements EcmEngineConstants { private static final long serialVersionUID = -132202770052778654L; public boolean createMissingPeople() throws PersonRuntimeException { boolean createMissing = false; logger.debug("[PersonSvcBean::createMissingPeople] BEGIN"); try { logger.debug("[PersonSvcBean::createMissingPeople] Retrieving createMissingPeople flag."); createMissing = serviceRegistry.getPersonService().createMissingPeople(); } catch (Exception e) { handlePersonServiceException("createMissingPeople", e); } finally { logger.debug("[PersonSvcBean::createMissingPeople] END"); } return createMissing; } public NodeRef createPerson(Map<QName, Serializable> properties) throws PersonRuntimeException { NodeRef newPerson = null; logger.debug("[PersonSvcBean::createPerson] BEGIN"); try { logger.debug("[PersonSvcBean::createPerson] Creating new person with properties: " + properties); newPerson = serviceRegistry.getPersonService().createPerson(properties); } catch (Exception e) { handlePersonServiceException("createPerson", e); } finally { logger.debug("[PersonSvcBean::createPerson] END"); } return newPerson; } public void deletePerson(String userName) throws PersonRuntimeException { logger.debug("[PersonSvcBean::deletePerson] BEGIN"); try { logger.debug("[PersonSvcBean::deletePerson] Deleting person by username: " + userName); serviceRegistry.getPersonService().deletePerson(userName); } catch (Exception e) { handlePersonServiceException("deletePerson", e); } finally { logger.debug("[PersonSvcBean::deletePerson] END"); } } public Set<NodeRef> getAllPeople() throws PersonRuntimeException { Set<NodeRef> allPeople = null; logger.debug("[PersonSvcBean::getAllPeople] BEGIN"); try { logger.debug("[PersonSvcBean::getAllPeople] Retrieving all people."); allPeople = serviceRegistry.getPersonService().getAllPeople(); } catch (Exception e) { handlePersonServiceException("getAllPeople", e); } finally { logger.debug("[PersonSvcBean::getAllPeople] END"); } return allPeople; } public Set<QName> getMutableProperties() throws PersonRuntimeException { Set<QName> properties = null; logger.debug("[PersonSvcBean::getMutableProperties] BEGIN"); try { logger.debug("[PersonSvcBean::getMutableProperties] Retrieving mutable properties."); properties = serviceRegistry.getPersonService().getMutableProperties(); } catch (Exception e) { handlePersonServiceException("getMutableProperties", e); } finally { logger.debug("[PersonSvcBean::getMutableProperties] END"); } return properties; } public NodeRef getPeopleContainer() throws PersonRuntimeException { NodeRef container = null; logger.debug("[PersonSvcBean::getPeopleContainer] BEGIN"); try { logger.debug("[PersonSvcBean::getPeopleContainer] Retrieving people container NodeRef."); container = serviceRegistry.getPersonService().getPeopleContainer(); } catch (Exception e) { handlePersonServiceException("getPeopleContainer", e); } finally { logger.debug("[PersonSvcBean::getPeopleContainer] END"); } return container; } public NodeRef getPerson(String userName) throws PersonRuntimeException { NodeRef person = null; boolean createMissingPeople = false; logger.debug("[PersonSvcBean::getPerson] BEGIN"); try { logger.debug("[PersonSvcBean::getPerson] Checking createMissingPeople flag..."); createMissingPeople = serviceRegistry.getPersonService().createMissingPeople(); logger.debug("[PersonSvcBean::getPerson] " + "Missing people " + ((createMissingPeople) ? "will" : "won't") + " be created " + "(createMissingPeople = " + createMissingPeople + ")"); logger.debug("[PersonSvcBean::getPerson] Retrieving person by username: " + userName); person = serviceRegistry.getPersonService().getPerson(userName); } catch (Exception e) { handlePersonServiceException("getPerson", e); } finally { logger.debug("[PersonSvcBean::getPerson] END"); } return person; } public String getUserIdentifier(String caseSensitiveUserName) throws PersonRuntimeException { String id = null; logger.debug("[PersonSvcBean::getUserIdentifier] BEGIN"); try { logger.debug("[PersonSvcBean::getUserIdentifier] " + "Retrieving user identifier by username: " + caseSensitiveUserName); id = serviceRegistry.getPersonService().getUserIdentifier(caseSensitiveUserName); } catch (Exception e) { handlePersonServiceException("getUserIdentifier", e); } finally { logger.debug("[PersonSvcBean::getUserIdentifier] END"); } return id; } public boolean getUserNamesAreCaseSensitive() throws PersonRuntimeException { boolean caseSensitive = false; logger.debug("[PersonSvcBean::getUserNamesAreCaseSensitive] BEGIN"); try { logger.debug("[PersonSvcBean::getUserNamesAreCaseSensitive] Retrieving userNamesAreCaseSensitive flag."); caseSensitive = serviceRegistry.getPersonService().getUserNamesAreCaseSensitive(); } catch (Exception e) { handlePersonServiceException("getUserNamesAreCaseSensitive", e); } finally { logger.debug("[PersonSvcBean::getUserNamesAreCaseSensitive] END"); } return caseSensitive; } public boolean isMutable() throws PersonRuntimeException { boolean mutable = false; logger.debug("[PersonSvcBean::isMutable] BEGIN"); try { logger.debug("[PersonSvcBean::isMutable] Retrieving mutable flag."); mutable = serviceRegistry.getPersonService().isMutable(); } catch (Exception e) { handlePersonServiceException("isMutable", e); } finally { logger.debug("[PersonSvcBean::isMutable] END"); } return mutable; } public boolean personExists(String userName) throws PersonRuntimeException { boolean personExists = false; logger.debug("[PersonSvcBean::personExists] BEGIN"); try { logger.debug("[PersonSvcBean::personExists] Checking if person exists: " + userName); personExists = serviceRegistry.getPersonService().personExists(userName); } catch (Exception e) { handlePersonServiceException("personExists", e); } finally { logger.debug("[PersonSvcBean::personExists] END"); } return personExists; } public void setCreateMissingPeople(boolean createMissing) throws PersonRuntimeException { logger.debug("[PersonSvcBean::setCreateMissingPeople] BEGIN"); try { logger.debug("[PersonSvcBean::setCreateMissingPeople] Setting createMissingPeople flag: " + createMissing); serviceRegistry.getPersonService().setCreateMissingPeople(createMissing); } catch (Exception e) { handlePersonServiceException("setCreateMissingPeople", e); } finally { logger.debug("[PersonSvcBean::setCreateMissingPeople] END"); } } public void setPersonProperties(String userName, Map<QName, Serializable> properties) throws PersonRuntimeException { logger.debug("[PersonSvcBean::setPersonProperties] BEGIN"); try { logger.debug("[PersonSvcBean::setPersonProperties] Setting person properties by username: " + userName + " (properties: " + properties + ")"); serviceRegistry.getPersonService().setPersonProperties(userName, properties); } catch (Exception e) { handlePersonServiceException("setPersonProperties", e); } finally { logger.debug("[PersonSvcBean::setPersonProperties] END"); } } private void handlePersonServiceException(String methodName, Throwable e) throws PersonRuntimeException { logger.warn("[PersonSvcBean::handlePersonServiceException] Exception in method '" + methodName + "': " + e.getMessage(), e); if (e instanceof org.alfresco.repo.security.permissions.AccessDeniedException) { throw new PersonRuntimeException(FoundationErrorCodes.ACCESS_DENIED_ERROR); } else if (e instanceof InvalidNodeRefException) { throw new PersonRuntimeException(FoundationErrorCodes.INVALID_NODE_REF_ERROR); } else if (e instanceof DuplicateChildNodeNameException) { throw new PersonRuntimeException(FoundationErrorCodes.DUPLICATE_CHILD_ERROR); } else if (e instanceof NoSuchPersonException) { throw new PersonRuntimeException(FoundationErrorCodes.NO_SUCH_PERSON_ERROR); } else { throw new PersonRuntimeException(FoundationErrorCodes.GENERIC_PERSON_SERVICE_ERROR); } } }