diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/context/IsParentOfManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/context/IsParentOfManagement.java index ab2e05e..c964f98 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/context/IsParentOfManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/context/IsParentOfManagement.java @@ -3,6 +3,7 @@ package org.gcube.informationsystem.resourceregistry.context; import java.util.UUID; import org.codehaus.jettison.json.JSONObject; +import org.gcube.informationsystem.impl.embedded.PropagationConstraintImpl; import org.gcube.informationsystem.model.AccessType; import org.gcube.informationsystem.model.embedded.PropagationConstraint; import org.gcube.informationsystem.model.embedded.PropagationConstraint.AddConstraint; @@ -31,8 +32,16 @@ import com.tinkerpop.blueprints.impls.orient.OrientGraph; @SuppressWarnings("rawtypes") public class IsParentOfManagement extends RelationManagement { + public static final PropagationConstraint DEFAULT_IS_PARENT_OF_PC; + + static { + DEFAULT_IS_PARENT_OF_PC = new PropagationConstraintImpl(); + DEFAULT_IS_PARENT_OF_PC.setRemoveConstraint(RemoveConstraint.keep); + DEFAULT_IS_PARENT_OF_PC.setAddConstraint(AddConstraint.unpropagate); + } + public IsParentOfManagement() { - super(AccessType.IS_PARENT_OF); + super(AccessType.IS_PARENT_OF, DEFAULT_IS_PARENT_OF_PC); } public IsParentOfManagement(OrientGraph orientGraph) throws ResourceRegistryException { diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/er/ERManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/er/ERManagement.java index 2d6e705..975a131 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/er/ERManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/er/ERManagement.java @@ -21,7 +21,6 @@ import org.gcube.informationsystem.model.ER; import org.gcube.informationsystem.model.ISManageable; import org.gcube.informationsystem.model.embedded.Header; import org.gcube.informationsystem.model.entity.Context; -import org.gcube.informationsystem.model.entity.Entity; import org.gcube.informationsystem.resourceregistry.api.exceptions.AlreadyPresentException; import org.gcube.informationsystem.resourceregistry.api.exceptions.AvailableInAnotherContextException; import org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException; @@ -251,7 +250,7 @@ public abstract class ERManagement { Header entityHeader = HeaderUtility.getHeader(jsonNode, true); if(entityHeader != null) { - element.setProperty(Entity.HEADER_PROPERTY, entityHeader); + element.setProperty(ER.HEADER_PROPERTY, entityHeader); } else { entityHeader = HeaderUtility.addHeader(element, null); } diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/er/relation/ConsistsOfManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/er/relation/ConsistsOfManagement.java index 566753f..381e480 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/er/relation/ConsistsOfManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/er/relation/ConsistsOfManagement.java @@ -1,6 +1,10 @@ package org.gcube.informationsystem.resourceregistry.er.relation; +import org.gcube.informationsystem.impl.embedded.PropagationConstraintImpl; import org.gcube.informationsystem.model.AccessType; +import org.gcube.informationsystem.model.embedded.PropagationConstraint; +import org.gcube.informationsystem.model.embedded.PropagationConstraint.AddConstraint; +import org.gcube.informationsystem.model.embedded.PropagationConstraint.RemoveConstraint; import org.gcube.informationsystem.model.relation.ConsistsOf; import org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; @@ -19,12 +23,20 @@ import com.tinkerpop.blueprints.impls.orient.OrientGraph; @SuppressWarnings("rawtypes") public class ConsistsOfManagement extends RelationManagement { + public static final PropagationConstraint DEFAULT_CONSISTS_OF_PC; + + static { + DEFAULT_CONSISTS_OF_PC = new PropagationConstraintImpl(); + DEFAULT_CONSISTS_OF_PC.setRemoveConstraint(RemoveConstraint.cascadeWhenOrphan); + DEFAULT_CONSISTS_OF_PC.setAddConstraint(AddConstraint.propagate); + } + public ConsistsOfManagement() { - super(AccessType.CONSISTS_OF); + super(AccessType.CONSISTS_OF, DEFAULT_CONSISTS_OF_PC); } public ConsistsOfManagement(SecurityContext workingContext, OrientGraph orientGraph) { - super(AccessType.CONSISTS_OF, workingContext, orientGraph); + super(AccessType.CONSISTS_OF, workingContext, orientGraph, DEFAULT_CONSISTS_OF_PC); } @Override diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/er/relation/IsRelatedToManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/er/relation/IsRelatedToManagement.java index 44075a8..0c44339 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/er/relation/IsRelatedToManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/er/relation/IsRelatedToManagement.java @@ -1,6 +1,10 @@ package org.gcube.informationsystem.resourceregistry.er.relation; +import org.gcube.informationsystem.impl.embedded.PropagationConstraintImpl; import org.gcube.informationsystem.model.AccessType; +import org.gcube.informationsystem.model.embedded.PropagationConstraint; +import org.gcube.informationsystem.model.embedded.PropagationConstraint.AddConstraint; +import org.gcube.informationsystem.model.embedded.PropagationConstraint.RemoveConstraint; import org.gcube.informationsystem.model.relation.IsRelatedTo; import org.gcube.informationsystem.resourceregistry.api.exceptions.NotFoundException; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; @@ -18,12 +22,20 @@ import com.tinkerpop.blueprints.impls.orient.OrientGraph; @SuppressWarnings("rawtypes") public class IsRelatedToManagement extends RelationManagement { + public static final PropagationConstraint DEFAULT_IS_RELATED_TO_PC; + + static { + DEFAULT_IS_RELATED_TO_PC = new PropagationConstraintImpl(); + DEFAULT_IS_RELATED_TO_PC.setRemoveConstraint(RemoveConstraint.keep); + DEFAULT_IS_RELATED_TO_PC.setAddConstraint(AddConstraint.unpropagate); + } + public IsRelatedToManagement() { - super(AccessType.IS_RELATED_TO); + super(AccessType.IS_RELATED_TO,DEFAULT_IS_RELATED_TO_PC); } public IsRelatedToManagement(SecurityContext workingContext, OrientGraph orientGraph) { - super(AccessType.IS_RELATED_TO, workingContext, orientGraph); + super(AccessType.IS_RELATED_TO, workingContext, orientGraph, DEFAULT_IS_RELATED_TO_PC); } @Override diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/er/relation/RelationManagement.java b/src/main/java/org/gcube/informationsystem/resourceregistry/er/relation/RelationManagement.java index 98d304e..12fe200 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/er/relation/RelationManagement.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/er/relation/RelationManagement.java @@ -8,6 +8,7 @@ import java.util.UUID; import org.codehaus.jettison.json.JSONArray; import org.codehaus.jettison.json.JSONObject; +import org.gcube.informationsystem.impl.utils.ISMapper; import org.gcube.informationsystem.model.AccessType; import org.gcube.informationsystem.model.embedded.PropagationConstraint; import org.gcube.informationsystem.model.embedded.PropagationConstraint.AddConstraint; @@ -29,14 +30,18 @@ import org.gcube.informationsystem.resourceregistry.er.ERManagementUtility; import org.gcube.informationsystem.resourceregistry.er.entity.EntityManagement; import org.gcube.informationsystem.resourceregistry.er.entity.FacetManagement; import org.gcube.informationsystem.resourceregistry.er.entity.ResourceManagement; +import org.gcube.informationsystem.resourceregistry.utils.PropagationConstraintOrient; import org.gcube.informationsystem.resourceregistry.utils.Utility; import com.fasterxml.jackson.databind.JsonNode; +import com.orientechnologies.orient.core.metadata.schema.OType; +import com.orientechnologies.orient.core.record.impl.ODocument; import com.tinkerpop.blueprints.Direction; import com.tinkerpop.blueprints.Edge; import com.tinkerpop.blueprints.Vertex; import com.tinkerpop.blueprints.impls.orient.OrientBaseGraph; import com.tinkerpop.blueprints.impls.orient.OrientEdge; +import com.tinkerpop.blueprints.impls.orient.OrientElement; import com.tinkerpop.blueprints.impls.orient.OrientGraph; /** @@ -51,7 +56,9 @@ public abstract class RelationManagement