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.NodeSerializer;
import javax.persistence.*;
import java.util.Map;
import java.util.Set;
/**
Author: Petar 'PetarV' Veličković
A graph node model that will be put in permanent store.
*/
@JsonSerialize(using=NodeSerializer.class)
@Entity
@Table(name="Node")
public class NodeModel extends BaseModel
{
public NodeModel() { }
private static String[] allowed = {"name"};
@JsonCreator
public NodeModel(Map<String, Object> props)
{
super(props, allowed);
}
@Id
@GeneratedValue(strategy= GenerationType.SEQUENCE, generator="NodeIdSeq")
@SequenceGenerator(name="NodeIdSeq", sequenceName="Node_SEQ", allocationSize = 1)
private long id;
private String name;
@ManyToMany(targetEntity = NodeModel.class)
private Set<NodeModel> 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 Set<NodeModel> getAdjacent() { return adjNodes; }
public void setAdjacent(Set<NodeModel> adj) { this.adjNodes = adj; }
public void addAdjacentNode(NodeModel v)
{
if (!adjNodes.contains(v))
{
adjNodes.add(v);
}
}
}