AbstractDataObject.java

package de.dlr.shepard.common.neo4j.entities;

import de.dlr.shepard.common.util.Neo4jLabels;
import de.dlr.shepard.context.version.entities.Version;
import de.dlr.shepard.context.version.entities.VersionableEntity;
import java.util.Map;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.neo4j.ogm.annotation.Index;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Properties;
import org.neo4j.ogm.annotation.Relationship;

@NodeEntity(label = Neo4jLabels.VERSIONABLE_ENTITY)
@Data
@ToString(callSuper = true)
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public abstract class AbstractDataObject extends BasicEntity implements VersionableEntity {

  @Index
  private Long shepardId;

  @Relationship(type = Neo4jLabels.HAS_VERSION)
  protected Version version;

  private String description;

  @ToString.Exclude
  @Properties(delimiter = "||")
  private Map<String, String> attributes;

  /**
   * For testing purposes only
   *
   * @param id identifies the entity
   */
  protected AbstractDataObject(long id) {
    super(id);
  }

  @Override
  public long getNumericId() {
    return getShepardId();
  }
}