2019-10-23 16:55:48 +02:00
package org.gcube.informationsystem.base.reference.entities ;
2019-10-23 15:40:52 +02:00
2023-04-18 17:51:23 +02:00
import java.util.UUID ;
2020-07-07 17:04:25 +02:00
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnoreProperties ;
2023-04-27 16:30:10 +02:00
import org.gcube.com.fasterxml.jackson.annotation.JsonPropertyOrder ;
2020-02-03 10:51:29 +01:00
import org.gcube.informationsystem.base.reference.Element ;
import org.gcube.informationsystem.base.reference.IdentifiableElement ;
2023-04-18 17:51:23 +02:00
import org.gcube.informationsystem.model.reference.properties.Metadata ;
2019-10-23 15:40:52 +02:00
import org.gcube.informationsystem.types.annotations.Abstract ;
2019-10-24 19:50:43 +02:00
import org.gcube.informationsystem.types.annotations.ISProperty ;
2020-12-15 11:28:34 +01:00
import org.gcube.informationsystem.types.reference.Change ;
import org.gcube.informationsystem.types.reference.TypeMetadata ;
2021-10-21 10:11:45 +02:00
import org.gcube.informationsystem.utils.Version ;
2019-10-23 15:40:52 +02:00
2021-01-20 17:03:02 +01:00
/ * *
* @author Luca Frosini ( ISTI - CNR )
* /
2019-10-23 15:40:52 +02:00
@Abstract
@JsonIgnoreProperties ( ignoreUnknown = true )
2023-05-12 17:47:58 +02:00
@JsonPropertyOrder ( { Element . TYPE_PROPERTY , IdentifiableElement . ID_PROPERTY , IdentifiableElement . METADATA_PROPERTY } )
2020-01-30 10:26:43 +01:00
//@JsonDeserialize(as=EntityElementImpl.class) Do not uncomment to manage subclasses
2023-04-26 21:39:57 +02:00
@TypeMetadata ( name = EntityElement . NAME , description = " This is the base type for any EntityElement " , version = Version . MINIMAL_VERSION_STRING )
2021-10-21 10:11:45 +02:00
@Change ( version = Version . MINIMAL_VERSION_STRING , description = Version . MINIMAL_VERSION_DESCRIPTION )
2020-02-03 10:51:29 +01:00
public interface EntityElement extends Element , IdentifiableElement {
2019-10-23 15:40:52 +02:00
2020-01-30 10:26:43 +01:00
public static final String NAME = " EntityElement " ; //Entity.class.getSimpleName();
2019-10-24 19:50:43 +02:00
2023-04-28 11:33:29 +02:00
@ISProperty ( name = ID_PROPERTY , description = " This UUID is be used to identify the instance univocally. " , readonly = true , mandatory = true , nullable = false )
2023-04-18 17:51:23 +02:00
@Override
2023-04-28 11:33:29 +02:00
public UUID getID ( ) ;
2023-04-18 17:51:23 +02:00
2019-10-24 19:50:43 +02:00
@Override
2023-04-28 11:33:29 +02:00
public void setID ( UUID uuid ) ;
2019-10-23 15:40:52 +02:00
2023-04-19 16:38:40 +02:00
@ISProperty ( name = METADATA_PROPERTY , mandatory = true , nullable = false , description = " Metadata associated with the instance that is automatically created/updated by the system. " )
@Override
public Metadata getMetadata ( ) ;
@Override
public void setMetadata ( Metadata metadata ) ;
2019-10-23 15:40:52 +02:00
}