X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.suite.core%2Fsrc%2Forg%2Fargeo%2Fsuite%2FSuiteMaintenanceService.java;fp=org.argeo.suite.core%2Fsrc%2Forg%2Fargeo%2Fsuite%2FSuiteMaintenanceService.java;h=0000000000000000000000000000000000000000;hb=be7cb3f18ce76bde064cbbc2a38de6386f3498d2;hp=ef1ade057c06da70e96e601aeac1b792d989e272;hpb=aa4589e3623bd00210ce1a9f56153beee45e6c1d;p=gpl%2Fargeo-suite.git diff --git a/org.argeo.suite.core/src/org/argeo/suite/SuiteMaintenanceService.java b/org.argeo.suite.core/src/org/argeo/suite/SuiteMaintenanceService.java deleted file mode 100644 index ef1ade0..0000000 --- a/org.argeo.suite.core/src/org/argeo/suite/SuiteMaintenanceService.java +++ /dev/null @@ -1,115 +0,0 @@ -package org.argeo.suite; - -import java.net.URI; -import java.util.List; -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.AppMaintenanceService; -import org.argeo.connect.resources.ResourceService; -import org.argeo.jcr.JcrUtils; -import org.argeo.node.NodeConstants; - -/** Make the DJay-ing to provide a full running Suite platform */ -public class SuiteMaintenanceService implements AppMaintenanceService { - private final static Log log = LogFactory.getLog(SuiteMaintenanceService.class); - - /* DEPENDENCY INJECTION */ - private Repository repository; - private String workspaceName; - private ResourceService resourceService; - private List maintenanceServices; - private Map initResources = null; - private Map legacyResources = null; - - public void init() { - Session adminSession = null; - try { - adminSession = repository.login(workspaceName); - if (prepareJcrTree(adminSession)) { - configurePrivileges(adminSession); - importResources(adminSession, null); - } - } 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 - public boolean prepareJcrTree(Session session) { - boolean hasCHanged = false; - try { - JcrUtils.mkdirs(session, publicPath, NodeType.NT_UNSTRUCTURED); - if (session.hasPendingChanges()) { - session.save(); - hasCHanged = true; - } - } catch (RepositoryException e) { - throw new SuiteException("Cannot build model", e); - } - for (AppMaintenanceService service : maintenanceServices) - hasCHanged |= service.prepareJcrTree(session); - log.info("Repository has been initialised with Argeo Suite model"); - return hasCHanged; - } - - @Override - public void configurePrivileges(Session session) { - // TODO check if first init. - try { - 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(); - } catch (RepositoryException e) { - throw new SuiteException("Cannot build model", e); - } - for (AppMaintenanceService service : maintenanceServices) - service.configurePrivileges(session); - log.info("Access control configured"); - } - - @Override - public void importResources(Session session, Map initialResources) { - for (AppMaintenanceService service : maintenanceServices) - service.prepareJcrTree(session); - } - - @Override - public void importData(Session session, URI uri, Map resources) { - for (AppMaintenanceService service : maintenanceServices) - service.prepareJcrTree(session); - - } - - @Override - public void doBackup(Session session, URI uri, Object resource) { - for (AppMaintenanceService service : maintenanceServices) - service.prepareJcrTree(session); - } - - /* DEPENDENCY INJECTION */ - public void setMaintenanceServices(List maintenanceServices) { - this.maintenanceServices = maintenanceServices; - } -}