package uk.ac.cam.echo.server.models; import org.codehaus.jackson.annotate.JsonCreator; import org.codehaus.jackson.map.annotate.JsonSerialize; import uk.ac.cam.echo.server.serializers.ForceNodeSerializer; import javax.persistence.*; import java.util.Map; import java.util.Set; /** Author: Petar 'PetarV' Veličković A graph force node model that will be put in permanent store. */ @JsonSerialize(using=ForceNodeSerializer.class) @Entity @Table(name="FNodesF") public class ForceNodeModel extends BaseModel { public ForceNodeModel() { } private static String allowed[] = {"name", "type", "internalId"}; @JsonCreator public ForceNodeModel(Map<String, Object> props) { super(props, allowed); } @Id @GeneratedValue(strategy= GenerationType.SEQUENCE, generator="FNodeIdSeq") @SequenceGenerator(name="FNodeIdSeq", sequenceName="FNode_SEQ", allocationSize = 1) private long id; private String name; private long type; private long internalId; @OneToMany(targetEntity = ForceEdgeModel.class, mappedBy = "source") private Set<ForceEdgeModel> adjNodes; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public long getType() { return type; } public void setType(long type) { this.type = type; } public long getInternalId() { return internalId; } public void setInternalId(long iid) { this.internalId = iid; } public Set<ForceEdgeModel> getAdjacent() { return adjNodes; } public void setAdjacent(Set<ForceEdgeModel> adj) { this.adjNodes = adj; } public void addAdjacentNode(ForceEdgeModel v) { if (!adjNodes.contains(v)) { adjNodes.add(v); } } }