Stabilise entity types.
authorMathieu Baudier <mbaudier@argeo.org>
Sun, 29 Nov 2020 09:28:20 +0000 (10:28 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Sun, 29 Nov 2020 09:28:20 +0000 (10:28 +0100)
org.argeo.entity.api/src/org/argeo/entity/EntityNames.java
org.argeo.entity.api/src/org/argeo/entity/EntityType.java
org.argeo.entity.api/src/org/argeo/entity/entity.cnd
org.argeo.entity.core/src/org/argeo/entity/core/JcrEntityDefinition.java
org.argeo.suite.ui/src/org/argeo/suite/ui/RecentItems.java
org.argeo.suite.ui/src/org/argeo/suite/ui/SuiteApp.java

index 3cd4a73ee1f72159be295a162e233ff9617d7695..fe881ffb5c3963d9794d1c12f56e9f26ecf650f3 100644 (file)
@@ -11,7 +11,7 @@ public interface EntityNames {
        final String TERM = "term";
        final String NAME = "name";
 
-       final String ENTITY_DEFINITIONS_PATH = "/entity";
+//     final String ENTITY_DEFINITIONS_PATH = "/entity";
        @Deprecated
        final String TYPOLOGIES_PATH = "/" + TERM;
        /** Administrative units. */
index 732c9b17139f76a881e0299e2b8040930ef171d8..a5221f26ade3cabc1d4c5feb2c0b1349ddbc3ead 100644 (file)
@@ -3,7 +3,7 @@ package org.argeo.entity;
 /** Types related to entities. */
 public enum EntityType implements JcrName {
        // entity
-       entity, definition,
+       entity, local,
        // typology
        typologies, terms, term,
        // form
index cd6952a589e75d8cd6a294ed779812459331d982..baed374e72aade6644fb707cfeb08c449bdf0748 100644 (file)
 
 [entity:entity] > mix:created, mix:referenceable
 mixin
-//- entity:uid (String) m // an implementation dependent UID for each entity
-//- entity:type (String) // the type of this entity
+
+[entity:local] > entity:entity
+mixin
+- entity:type (String) m
 
 //
 // ENTITY DEFINITION
 //
-[entity:definition] > entity:composite, mix:created, mix:lastModified, mix:referenceable
+//[entity:definition] > entity:composite, mix:created, mix:lastModified, mix:referenceable
 //- entity:type (String) multiple
 
 //[entity:part]
 
 //[entity:reference]
 
-[entity:composite]
-orderable
+//[entity:composite]
+//orderable
 //+ * (entity:part)
 //+ * (entity:reference)
 //+ * (entity:composite)
index f76eb63fa96491b4df5874f246ff896de56cdfa1..7fd26d1c078de79409d456fb6cc2984baa642071 100644 (file)
@@ -10,10 +10,7 @@ import javax.jcr.Session;
 import org.argeo.api.NodeUtils;
 import org.argeo.entity.EntityConstants;
 import org.argeo.entity.EntityDefinition;
-import org.argeo.entity.EntityNames;
-import org.argeo.entity.EntityTypes;
 import org.argeo.jcr.Jcr;
-import org.argeo.jcr.JcrUtils;
 import org.osgi.framework.BundleContext;
 
 /** An entity definition based on a JCR data structure. */
@@ -30,12 +27,12 @@ public class JcrEntityDefinition implements EntityDefinition {
                        if (type == null)
                                throw new IllegalArgumentException("Entity type property " + EntityConstants.TYPE + " must be set.");
                        defaultEditoryId = properties.get(EntityConstants.DEFAULT_EDITORY_ID);
-                       String definitionPath = EntityNames.ENTITY_DEFINITIONS_PATH + '/' + type;
-                       if (!adminSession.itemExists(definitionPath)) {
-                               Node entityDefinition = JcrUtils.mkdirs(adminSession, definitionPath, EntityTypes.ENTITY_DEFINITION);
-//                             entityDefinition.addMixin(EntityTypes.ENTITY_DEFINITION);
-                               adminSession.save();
-                       }
+//                     String definitionPath = EntityNames.ENTITY_DEFINITIONS_PATH + '/' + type;
+//                     if (!adminSession.itemExists(definitionPath)) {
+//                             Node entityDefinition = JcrUtils.mkdirs(adminSession, definitionPath, EntityTypes.ENTITY_DEFINITION);
+////                           entityDefinition.addMixin(EntityTypes.ENTITY_DEFINITION);
+//                             adminSession.save();
+//                     }
                        initJcr(adminSession);
                } finally {
                        Jcr.logout(adminSession);
index bbe53b77c26af3aba62ff1f82afaa8601a5357ea..b9aa5b721784ecc309dcd943ff2a495d4eb94fe8 100644 (file)
@@ -20,7 +20,6 @@ import org.argeo.cms.ui.CmsUiProvider;
 import org.argeo.cms.ui.CmsView;
 import org.argeo.cms.ui.util.CmsUiUtils;
 import org.argeo.eclipse.ui.EclipseUiUtils;
-import org.argeo.entity.EntityConstants;
 import org.argeo.entity.EntityType;
 import org.argeo.jcr.Jcr;
 import org.argeo.jcr.JcrUtils;
@@ -61,6 +60,10 @@ public class RecentItems implements CmsUiProvider {
 
        private String entityType;
 
+       static enum Property {
+               entityTypes;
+       }
+
        @Override
        public Control createUi(Composite parent, Node context) throws RepositoryException {
                theme = CmsTheme.getCmsTheme(parent);
@@ -129,7 +132,7 @@ public class RecentItems implements CmsUiProvider {
 
        public void init(Map<String, String> properties) {
                // TODO manage multiple entities
-               entityType = properties.get(EntityConstants.TYPE);
+               entityType = properties.get(Property.entityTypes.name());
        }
 
        class SingleEntityViewer {
index db8a8dc17e0d589d01d2ae0de04580bfe0e7744d..ead041ca99f8032f5176fd071ad7ca82f084a4c8 100644 (file)
@@ -323,17 +323,21 @@ public class SuiteApp extends AbstractCmsApp implements EventHandler {
                // Specific UI related events
                SuiteUi ui = getRelatedUi(event);
                try {
-                       String currentLayerId = ui.getCurrentLayerId();
-                       SuiteLayer currentLayer = currentLayerId != null ? layersByPid.get(currentLayerId).get() : null;
+//                     String currentLayerId = ui.getCurrentLayerId();
+//                     SuiteLayer currentLayer = currentLayerId != null ? layersByPid.get(currentLayerId).get() : null;
                        if (isTopic(event, SuiteEvent.refreshPart)) {
                                Node node = getNode(ui, event);
                                CmsUiProvider uiProvider = findByType(uiProvidersByType, node);
-                               currentLayer.view(uiProvider, ui.getCurrentWorkArea(), node);
+                               SuiteLayer layer = findByType(layersByType, node);
+                               ui.switchToLayer(layer, node);
+                               layer.view(uiProvider, ui.getCurrentWorkArea(), node);
                                ui.getCmsView().stateChanged(nodeToState(node), Jcr.getTitle(node));
                        } else if (isTopic(event, SuiteEvent.openNewPart)) {
                                Node node = getNode(ui, event);
                                CmsUiProvider uiProvider = findByType(uiProvidersByType, node);
-                               currentLayer.open(uiProvider, ui.getCurrentWorkArea(), node);
+                               SuiteLayer layer = findByType(layersByType, node);
+                               ui.switchToLayer(layer, node);
+                               layer.open(uiProvider, ui.getCurrentWorkArea(), node);
                                ui.getCmsView().stateChanged(nodeToState(node), Jcr.getTitle(node));
                        } else if (isTopic(event, SuiteEvent.switchLayer)) {
                                String layerId = get(event, SuiteEvent.LAYER);