package org.gcube.informationsystem.types.reference.relations; import java.util.Set; import org.gcube.informationsystem.base.reference.entities.BaseEntity; import org.gcube.informationsystem.base.reference.relations.BaseRelation; import org.gcube.informationsystem.types.annotations.ISProperty; import org.gcube.informationsystem.types.impl.relations.RelationTypeDefinitionImpl; import org.gcube.informationsystem.types.reference.TypeDefinition; import org.gcube.informationsystem.types.reference.entities.EntityTypeDefinition; import org.gcube.informationsystem.types.reference.properties.PropertyDefinition; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; @JsonIgnoreProperties(ignoreUnknown = true) @JsonDeserialize(as = RelationTypeDefinitionImpl.class) public interface RelationTypeDefinition, ET extends EntityTypeDefinition, S extends BaseEntity, T extends BaseEntity> extends TypeDefinition, BaseRelation { public static final String NAME = "RelationTypeDefinition"; // PropertyTypeDefiniton.class.getSimpleName(); /* TypeDefinition is just a Java useful class. The type is not created in the IS. Hence the fields must be redefined */ @Override @ISProperty(name = TypeDefinition.NAME_PROPERTY, readonly = true, mandatory = true, nullable = false) public String getName(); @Override @ISProperty(name = TypeDefinition.DESCRIPTION_PROPERTY, readonly = false, mandatory = true, nullable = false) public String getDescription(); @Override @ISProperty(name = TypeDefinition.ABSTRACT_PROPERTY, readonly = true, mandatory = true, nullable = false) public boolean isAbstract(); @Override @ISProperty(name = TypeDefinition.TYPE_SUPERCLASSES_PROPERTY, readonly = true, mandatory = true, nullable = false) public Set getSuperClasses(); @Override @ISProperty(name = TypeDefinition.PROPERTIES_PROPERTY, readonly = false, mandatory = true, nullable = false) public Set getProperties(); /* @Override @JsonIgnore public Header getHeader(); */ @Override @JsonIgnore public ES getSource(); @Override @JsonIgnore public ET getTarget(); /* TypeDefinition is just a Java useful class. The type is not created in the IS. Hence the fields must be redefined */ public String getSourceType(); public String getTargetType(); }