diff --git a/pom.xml b/pom.xml index 4f16782..1e256ed 100644 --- a/pom.xml +++ b/pom.xml @@ -17,6 +17,7 @@ UTF-8 ${project.basedir}/distro InformationSystem + 2.2.3 @@ -26,6 +27,21 @@ + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-annotations + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + org.slf4j diff --git a/src/main/java/org/gcube/informationsystem/impl/entity/EntityImpl.java b/src/main/java/org/gcube/informationsystem/impl/entity/EntityImpl.java new file mode 100644 index 0000000..fe85208 --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/impl/entity/EntityImpl.java @@ -0,0 +1,32 @@ +/** + * + */ +package org.gcube.informationsystem.impl.entity; + +import org.gcube.informationsystem.model.entity.Entity; +import org.gcube.informationsystem.model.entity.Header; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + +/** + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + * + */ +public abstract class EntityImpl implements Entity { + + @JsonDeserialize(as = HeaderImpl.class) + protected Header header; + + @SuppressWarnings("unused") + private EntityImpl(){} + + protected EntityImpl(String name, String description, String version){ + this.header = new HeaderImpl(name, description, version); + } + + @Override + public Header getHeader() { + return this.header; + } + +} diff --git a/src/main/java/org/gcube/informationsystem/impl/entity/FacetImpl.java b/src/main/java/org/gcube/informationsystem/impl/entity/FacetImpl.java new file mode 100644 index 0000000..ca7f2fe --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/impl/entity/FacetImpl.java @@ -0,0 +1,24 @@ +/** + * + */ +package org.gcube.informationsystem.impl.entity; + +import org.gcube.informationsystem.model.entity.Facet; + +/** + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + * + */ +public abstract class FacetImpl extends EntityImpl implements Facet { + + /** + * @param name + * @param description + * @param version + */ + protected FacetImpl(String name, String description, String version) { + super(name, description, version); + } + + +} diff --git a/src/main/java/org/gcube/informationsystem/impl/entity/HeaderImpl.java b/src/main/java/org/gcube/informationsystem/impl/entity/HeaderImpl.java new file mode 100644 index 0000000..8140a09 --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/impl/entity/HeaderImpl.java @@ -0,0 +1,79 @@ +/** + * + */ +package org.gcube.informationsystem.impl.entity; + +import java.util.Calendar; + +import org.gcube.informationsystem.model.entity.Header; + +/** + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + * + */ +public class HeaderImpl implements Header { + + protected String id; + protected String creator; + protected Calendar creationTime; + protected Calendar lastUpdateTime; + protected String name; + protected String description; + protected String version; + + @SuppressWarnings("unused") + private HeaderImpl(){ + + } + + protected HeaderImpl(String name, String description, String version){ + this.name = name; + this.description = description; + this.version = version; + } + + @Override + public String getID() { + return this.id; + } + + protected void setID(String id){ + this.id = id; + } + + @Override + public String getCreator() { + return this.creator; + } + + protected void setCreator(String creator){ + this.creator = creator; + } + + @Override + public Calendar getCreationTime() { + return creationTime; + } + + @Override + public Calendar getLastUpdateTime() { + return lastUpdateTime; + } + + @Override + public String getName() { + return this.name; + } + + @Override + public String getDescription() { + return this.description; + } + + + @Override + public String getVersion() { + return this.version; + } + +} diff --git a/src/main/java/org/gcube/informationsystem/impl/entity/ResourceImpl.java b/src/main/java/org/gcube/informationsystem/impl/entity/ResourceImpl.java new file mode 100644 index 0000000..d4b6f9e --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/impl/entity/ResourceImpl.java @@ -0,0 +1,87 @@ +/** + * + */ +package org.gcube.informationsystem.impl.entity; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.gcube.informationsystem.model.entity.Facet; +import org.gcube.informationsystem.model.entity.Resource; +import org.gcube.informationsystem.model.relation.RelationProperty; + +/** + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + * + */ +public abstract class ResourceImpl extends EntityImpl implements Resource { + + protected Map addedFacets; + protected Map attachedFacets; + protected List detachedFacets; + + + protected Map attachedResourceProfiles; + protected List detachedResourceProfiles; + + /** + * @param name + * @param description + * @param version + */ + protected ResourceImpl(String name, String description, String version) { + super(name, description, version); + addedFacets = new HashMap(); + attachedFacets = new HashMap(); + detachedFacets = new ArrayList<>(); + + + + } + + @Override + public void addFacet(Facet facet) { + addedFacets.put(facet, null); + + } + + @Override + public void addFacet(Facet facet, RelationProperty relationProperty) { + addedFacets.put(facet, relationProperty); + } + + @Override + public void attachFacet(Facet facet) { + attachedFacets.put(facet, null); + } + + @Override + public void attachFacet(Facet facet, RelationProperty relationProperty) { + attachedFacets.put(facet, relationProperty); + } + + @Override + public void detachFacet(Facet facet) { + detachedFacets.add(facet); + attachedFacets.remove(facet); + } + + @Override + public void attachResource(Resource resource) { + + } + + @Override + public void attachResource(Resource resource, + RelationProperty relationProperty) { + + } + + @Override + public void detachResource(Resource resource) { + + } + +} diff --git a/src/main/java/org/gcube/informationsystem/impl/relation/ConsistOfImpl.java b/src/main/java/org/gcube/informationsystem/impl/relation/ConsistOfImpl.java new file mode 100644 index 0000000..a4d3030 --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/impl/relation/ConsistOfImpl.java @@ -0,0 +1,28 @@ +/** + * + */ +package org.gcube.informationsystem.impl.relation; + +import org.gcube.informationsystem.model.entity.Facet; +import org.gcube.informationsystem.model.entity.Resource; +import org.gcube.informationsystem.model.relation.ConsistOf; +import org.gcube.informationsystem.model.relation.RelationProperty; + +/** + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + * + */ +public class ConsistOfImpl extends + RelationImpl implements ConsistOf { + + /** + * @param source + * @param target + * @param relationProperty + */ + public ConsistOfImpl(Out source, In target, + RelationProperty relationProperty) { + super(source, target, relationProperty); + } + +} diff --git a/src/main/java/org/gcube/informationsystem/impl/relation/RelatedToImpl.java b/src/main/java/org/gcube/informationsystem/impl/relation/RelatedToImpl.java new file mode 100644 index 0000000..9386e97 --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/impl/relation/RelatedToImpl.java @@ -0,0 +1,27 @@ +/** + * + */ +package org.gcube.informationsystem.impl.relation; + +import org.gcube.informationsystem.model.entity.Resource; +import org.gcube.informationsystem.model.relation.RelatedTo; +import org.gcube.informationsystem.model.relation.RelationProperty; + +/** + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + * + */ +public class RelatedToImpl extends + RelationImpl implements RelatedTo { + + /** + * @param source + * @param target + * @param relationProperty + */ + public RelatedToImpl(Out source, In target, + RelationProperty relationProperty) { + super(source, target, relationProperty); + } + +} diff --git a/src/main/java/org/gcube/informationsystem/impl/relation/RelationImpl.java b/src/main/java/org/gcube/informationsystem/impl/relation/RelationImpl.java new file mode 100644 index 0000000..fbe60bf --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/impl/relation/RelationImpl.java @@ -0,0 +1,44 @@ +/** + * + */ +package org.gcube.informationsystem.impl.relation; + +import org.gcube.informationsystem.model.entity.Entity; +import org.gcube.informationsystem.model.relation.Relation; +import org.gcube.informationsystem.model.relation.RelationProperty; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + +/** + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + * + */ +public abstract class RelationImpl implements Relation { + + protected Out source; + protected In target; + @JsonDeserialize(as = RelationPropertyImpl.class) + protected RelationProperty relationProperty; + + protected RelationImpl(Out source, In target, RelationProperty relationProperty){ + this.source = source; + this.target = target; + this.relationProperty = relationProperty; + } + + @Override + public Out getSource() { + return null; + } + + @Override + public In getTarget() { + return null; + } + + @Override + public RelationProperty getRelationProperty() { + return this.relationProperty; + } + +} diff --git a/src/main/java/org/gcube/informationsystem/impl/relation/RelationPropertyImpl.java b/src/main/java/org/gcube/informationsystem/impl/relation/RelationPropertyImpl.java new file mode 100644 index 0000000..f51a102 --- /dev/null +++ b/src/main/java/org/gcube/informationsystem/impl/relation/RelationPropertyImpl.java @@ -0,0 +1,53 @@ +/** + * + */ +package org.gcube.informationsystem.impl.relation; + +import org.gcube.informationsystem.impl.AccessPolicyImpl; +import org.gcube.informationsystem.model.AccessPolicy; +import org.gcube.informationsystem.model.relation.RelationProperty; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + +/** + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + * + */ +public class RelationPropertyImpl implements RelationProperty { + + protected String purpose; + protected ReferentiaIntegrity referentiaIntegrity; + @JsonDeserialize(as = AccessPolicyImpl.class) + protected AccessPolicy accessPolicy; + + @Override + public String getPurpose() { + return this.purpose; + } + + @Override + public void setPurpose(String purpose) { + this.purpose = purpose; + } + + @Override + public ReferentiaIntegrity getReferentialIntegrity() { + return this.referentiaIntegrity; + } + + @Override + public void setReferentialIntegrity(ReferentiaIntegrity referentialIntegrity) { + this.referentiaIntegrity = referentialIntegrity; + } + + @Override + public AccessPolicy getPolicy() { + return this.accessPolicy; + } + + @Override + public void setPolicy(AccessPolicy accessPolicy) { + this.accessPolicy = accessPolicy; + } + +} diff --git a/src/main/java/org/gcube/informationsystem/model/entity/Entity.java b/src/main/java/org/gcube/informationsystem/model/entity/Entity.java index 5fe7405..0dc9f0f 100644 --- a/src/main/java/org/gcube/informationsystem/model/entity/Entity.java +++ b/src/main/java/org/gcube/informationsystem/model/entity/Entity.java @@ -3,7 +3,6 @@ */ package org.gcube.informationsystem.model.entity; -import org.gcube.informationsystem.model.Header; diff --git a/src/main/java/org/gcube/informationsystem/model/Header.java b/src/main/java/org/gcube/informationsystem/model/entity/Header.java similarity index 89% rename from src/main/java/org/gcube/informationsystem/model/Header.java rename to src/main/java/org/gcube/informationsystem/model/entity/Header.java index 8f95aad..2bb6bd1 100644 --- a/src/main/java/org/gcube/informationsystem/model/Header.java +++ b/src/main/java/org/gcube/informationsystem/model/entity/Header.java @@ -1,7 +1,7 @@ /** * */ -package org.gcube.informationsystem.model; +package org.gcube.informationsystem.model.entity; import java.util.Calendar;