information-system-model/src/main/java/org/gcube/informationsystem/model/reference/relations/Relation.java

71 lines
2.4 KiB
Java
Raw Normal View History

/**
*
*/
package org.gcube.informationsystem.model.reference.relations;
import java.util.Map;
2020-07-07 17:04:25 +02:00
import org.gcube.com.fasterxml.jackson.annotation.JsonAnyGetter;
import org.gcube.com.fasterxml.jackson.annotation.JsonAnySetter;
import org.gcube.com.fasterxml.jackson.annotation.JsonGetter;
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.gcube.com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.gcube.informationsystem.base.reference.SchemaMixedElement;
import org.gcube.informationsystem.base.reference.relations.RelationElement;
import org.gcube.informationsystem.model.reference.entities.Entity;
import org.gcube.informationsystem.model.reference.entities.Resource;
import org.gcube.informationsystem.model.reference.properties.PropagationConstraint;
import org.gcube.informationsystem.types.annotations.Abstract;
import org.gcube.informationsystem.types.annotations.ISProperty;
import org.gcube.informationsystem.utils.AdditionalPropertiesSerializer;
/**
* @author Luca Frosini (ISTI - CNR)
* https://wiki.gcube-system.org/gcube/Facet_Based_Resource_Model#Relations
*/
@Abstract
// @JsonDeserialize(as=RelationImpl.class) Do not uncomment to manage subclasses
public interface Relation<S extends Resource, T extends Entity> extends RelationElement<S,T>, SchemaMixedElement {
public static final String NAME = "Relation"; //Relation.class.getSimpleName();
public static final String PROPAGATION_CONSTRAINT = "propagationConstraint";
@JsonIgnoreProperties({Resource.CONSISTS_OF_PROPERTY, Resource.IS_RELATED_TO_PROPERTY})
@JsonGetter(value = SOURCE_PROPERTY)
@Override
2019-11-04 18:06:46 +01:00
public S getSource();
@JsonIgnore
@Override
2019-11-04 18:06:46 +01:00
public void setSource(S source);
@JsonGetter(value = TARGET_PROPERTY)
@Override
2019-11-04 18:06:46 +01:00
public T getTarget();
@JsonIgnore
@Override
2019-11-04 18:06:46 +01:00
public void setTarget(T target);
@ISProperty(name = PROPAGATION_CONSTRAINT)
public PropagationConstraint getPropagationConstraint();
@JsonAnyGetter
@JsonSerialize(using = AdditionalPropertiesSerializer.class)
@Override
public Map<String,Object> getAdditionalProperties();
@Override
public void setAdditionalProperties(Map<String,Object> additionalProperties);
@Override
public Object getAdditionalProperty(String key);
@JsonAnySetter
@Override
public void setAdditionalProperty(String key, Object value);
}