X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.suite.core%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fpeople%2FPeopleSuiteServiceImpl.java;fp=org.argeo.suite.core%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fpeople%2FPeopleSuiteServiceImpl.java;h=0000000000000000000000000000000000000000;hb=e51dee49ebe0d118c9ce3a5cbf06054e7e2df516;hp=1aaf15b68f5aa1ceeb4c17cd2b327a091445ece7;hpb=6fcadd5457518ce2e3aa05bdfd1cbc874ed8deab;p=gpl%2Fargeo-suite.git diff --git a/org.argeo.suite.core/src/org/argeo/suite/people/PeopleSuiteServiceImpl.java b/org.argeo.suite.core/src/org/argeo/suite/people/PeopleSuiteServiceImpl.java deleted file mode 100644 index 1aaf15b..0000000 --- a/org.argeo.suite.core/src/org/argeo/suite/people/PeopleSuiteServiceImpl.java +++ /dev/null @@ -1,179 +0,0 @@ -package org.argeo.suite.people; - -import java.net.URI; -import java.util.Map; - -import javax.jcr.Repository; -import javax.jcr.RepositoryException; -import javax.jcr.Session; -import javax.jcr.nodetype.NodeType; -import javax.jcr.security.Privilege; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.argeo.connect.people.PeopleConstants; -import org.argeo.connect.people.PeopleService; -import org.argeo.connect.people.core.PeopleServiceImpl; -import org.argeo.connect.resources.ResourcesService; -import org.argeo.jcr.JcrUtils; -import org.argeo.node.NodeConstants; -import org.argeo.suite.ArgeoSuiteRole; -import org.argeo.suite.SuiteException; - -/** - * Default implementation of an Argeo Suite specific People Backend - * - * TODO refactor and clean init process and service dependencies - */ -public class PeopleSuiteServiceImpl extends PeopleServiceImpl implements PeopleService, PeopleConstants { - private final static Log log = LogFactory.getLog(PeopleSuiteServiceImpl.class); - - /* DEPENDENCY INJECTION */ - private Repository repository; - private String workspaceName; - private ResourcesService resourceService; - private Map initResources = null; - private Map legacyResources = null; - - public void init() { - super.init(); - Session adminSession = null; - try { - adminSession = repository.login(workspaceName); - initialiseModel(adminSession); - initModelResources(adminSession); - } catch (Exception e) { - throw new SuiteException("Cannot initialise model", e); - } finally { - JcrUtils.logoutQuietly(adminSession); - } - } - - // TODO Hard-coded model initialisation - // To be cleaned once first init and config mechanisms have been implemented - private final static String publicPath = "/public"; - // FIXME Users must have read access on the jcr:system/jcr:versionStorage - // node under JackRabbit to be able to manage versions - private final static String jackRabbitVersionSystemPath = "/jcr:system"; - - @Override - protected void initialiseModel(Session adminSession) throws RepositoryException { - super.initialiseModel(adminSession); - - JcrUtils.mkdirs(adminSession, publicPath, NodeType.NT_UNSTRUCTURED); - if (adminSession.hasPendingChanges()) { - adminSession.save(); - configureACL(adminSession); - log.info("Repository has been initialised with Argeo Suite model"); - } - } - - // First draft of configuration of the people specific rights - private void configureACL(Session session) throws RepositoryException { - - // Initialise people - JcrUtils.addPrivilege(session, getBasePath(null), ArgeoSuiteRole.coworker.dn(), Privilege.JCR_ALL); - JcrUtils.addPrivilege(session, jackRabbitVersionSystemPath, ArgeoSuiteRole.coworker.dn(), Privilege.JCR_READ); - - // Default configuration of the workspace - JcrUtils.addPrivilege(session, "/", NodeConstants.ROLE_ADMIN, Privilege.JCR_ALL); - JcrUtils.addPrivilege(session, publicPath, NodeConstants.ROLE_USER, Privilege.JCR_READ); - JcrUtils.addPrivilege(session, publicPath, "anonymous", Privilege.JCR_READ); - JcrUtils.addPrivilege(session, publicPath, NodeConstants.ROLE_ANONYMOUS, Privilege.JCR_READ); - - session.save(); - log.info("Access control configured"); - } - - /** - * Initialises People resource model and optionally imports legacy resources - */ - protected void initModelResources(Session adminSession) { - // try { - // // initialisation - // resourceService.initialiseResources(adminSession); - // - // Resource resource = initResources.get("Countries"); - // if (resourceService.getTagLikeResourceParent(adminSession, - // PeopleConstants.RESOURCE_COUNTRY) == null - // && resource != null) { - // resourceService.createTagLikeResourceParent(adminSession, - // PeopleConstants.RESOURCE_COUNTRY, - // PeopleTypes.PEOPLE_TAG_ENCODED_INSTANCE, PeopleNames.PEOPLE_CODE, - // getBasePath(null), - // ConnectJcrUtils.getLocalJcrItemName(NodeType.NT_UNSTRUCTURED), new - // ArrayList()); - // String EN_SHORT_NAME = "English short name (upper-lower case)"; - // String ISO_CODE = "Alpha-2 code"; - // new EncodedTagCsvFileParser(resourceService, adminSession, - // PeopleConstants.RESOURCE_COUNTRY, ISO_CODE, - // EN_SHORT_NAME).parse(resource.getInputStream(), "UTF-8"); - // } - // - // resource = initResources.get("Languages"); - // if (resourceService.getTagLikeResourceParent(adminSession, - // PeopleConstants.RESOURCE_LANG) == null - // && resource != null) { - // resourceService.createTagLikeResourceParent(adminSession, - // PeopleConstants.RESOURCE_LANG, - // PeopleTypes.PEOPLE_TAG_ENCODED_INSTANCE, PeopleNames.PEOPLE_CODE, - // getBasePath(null), - // ConnectJcrUtils.getLocalJcrItemName(NodeType.NT_UNSTRUCTURED), new - // ArrayList()); - // String EN_SHORT_NAME = "Language name"; - // String ISO_CODE = "639-1"; - // new EncodedTagCsvFileParser(resourceService, adminSession, - // PeopleConstants.RESOURCE_LANG, ISO_CODE, - // EN_SHORT_NAME).parse(resource.getInputStream(), "UTF-8"); - // } - // - // // Create tag & mailing list parents - // if (resourceService.getTagLikeResourceParent(adminSession, - // PeopleConstants.RESOURCE_TAG) == null) - // resourceService.createTagLikeResourceParent(adminSession, - // PeopleConstants.RESOURCE_TAG, - // PeopleTypes.PEOPLE_TAG_INSTANCE, null, getBasePath(null), - // PeopleTypes.PEOPLE_ENTITY, - // PeopleNames.PEOPLE_TAGS); - // if (resourceService.getTagLikeResourceParent(adminSession, - // PeopleTypes.PEOPLE_MAILING_LIST) == null) - // resourceService.createTagLikeResourceParent(adminSession, null, - // PeopleTypes.PEOPLE_MAILING_LIST, null, - // getBasePath(null), PeopleTypes.PEOPLE_ENTITY, - // PeopleNames.PEOPLE_MAILING_LISTS); - // - // // Initialise catalogues - // importCatalogue(adminSession, initResources.get("SimpleTasks"), - // PeopleTypes.PEOPLE_TASK); - // - // if (adminSession.hasPendingChanges()) { - // adminSession.save(); - // log.info("Resources have been added to Argeo Suite model"); - // } - // } catch (IOException | RepositoryException e) { - // throw new SuiteException("Cannot initialise resources ", e); - // } - } - - /** Give access to the repository to extending classes */ - protected Repository getRepository() { - return repository; - } - - protected String getWorkspaceName() { - return workspaceName; - } - - /* DEPENDENCY INJECTION */ - public void setRepository(Repository repository) { - this.repository = repository; - } - - public void setWorkspaceName(String workspaceName) { - this.workspaceName = workspaceName; - } - - public void setInitResources(Map initResources) { - this.initResources = initResources; - } -}