package org.visico.neighborhoodpss.gwt.server.project.db;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.visico.neighborhoodpss.domain.project.BuildingDTO;
import org.visico.neighborhoodpss.domain.project.BuildingEdgeDTO;
import org.visico.neighborhoodpss.domain.project.BuildingNetworkDTO;
import org.visico.neighborhoodpss.domain.project.GeoEdgeDTO;
import org.visico.neighborhoodpss.domain.project.GeoNetworkDTO;
import org.visico.neighborhoodpss.domain.project.NodeDTO;
@Entity
@Table(name="BUILDINGNETWORK")
public class BuildingNetwork extends Network implements Cloneable, Serializable
{
/**
*
*/
private static final long serialVersionUID = 5457475366073332784L;
@Transient
private BuildingNetworkDTO dto_object = null;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name="network_id")
private List<BuildingEdge> edges = new ArrayList<BuildingEdge>();
public List<BuildingEdge> getEdges() {
return edges;
}
public void setEdges(List<BuildingEdge> edges) {
this.edges = edges;
}
public BuildingNetwork()
{
}
public BuildingNetwork(BuildingNetworkDTO dto)
{
this.dto_object = dto;
this.setId(dto.getId());
this.setName(dto.getName());
this.setColor(dto.getColor());
ArrayList<BuildingEdge> eds = new ArrayList<BuildingEdge>();
Iterator<BuildingEdgeDTO> eit = dto.getEdges().iterator();
while(eit.hasNext())
{
eds.add(new BuildingEdge(eit.next()));
}
this.setEdges(eds);
}
public void update_dtoIds() {
this.dto_object.setId(this.id);
this.dto_object.setColor(this.getColor());
Iterator<BuildingEdge> eit = this.edges.iterator();
while(eit.hasNext())
{
BuildingEdge e = eit.next();
e.update_dtoIds();
}
}
public BuildingNetworkDTO getDto_object() {
if (dto_object == null)
{
dto_object = new BuildingNetworkDTO();
dto_object.setId(this.getId());
dto_object.setName(this.getName());
dto_object.setColor(this.getColor());
for (BuildingEdge e : edges)
dto_object.addEdge(e.getDto_object());
}
return dto_object;
}
public void setDto_object(BuildingNetworkDTO dto_object) {
this.dto_object = dto_object;
}
}