package br.com.ufrj.msi2.netuno.modelo.entidades;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
/**
* Objeto que o Contratante quer enviar.
* Uma Carga pode ser dividida em partes, caso um conteiner n�o tenha espa�o ou peso restante suficiente para comport�-la.
* @author Thiago, Paula
*
*/
@NamedQueries(
{
@NamedQuery(name="Carga.recuperaCargasSemPregao",
query="select carga from Carga as carga inner join carga.contrato as contrato " +
"where (contrato.situacao = 0 or contrato.situacao = 2) " +
"and carga not in ("+
"select carga from Pregao as pregao inner join pregao.anuncia as carga) " +
"order by carga.id"
),
@NamedQuery(name="Carga.recuperaPorIdComFetch",
query="select carga from Carga carga left join fetch carga.partes where carga.id = :id")
}
)
@Entity
@Table(name="carga")
@PrimaryKeyJoinColumn(name="id")
@Inheritance(strategy=InheritanceType.JOINED)
public class Carga extends CargaComponente {
private static final long serialVersionUID = 3412494703857073751L;
@Column(name = "descricao")
private String descricao;
@OneToMany(mappedBy = "carga")
private List<ParteCarga> partes;
@ManyToOne
@JoinColumn(name="contrato_id")
private Contrato contrato;
@Column(name = "alocao_completa")
private boolean alocacaoCompleta;
public boolean isAlocacaoCompleta() {
return alocacaoCompleta;
}
public void setAlocacaoCompleta(boolean alocada) {
this.alocacaoCompleta = alocada;
}
public boolean isCargaPerecivel() {
return false;
}
public Date getDataValidade() {
return null;
}
public void setDataValidade(Date dataValidade) {
}
public String getDescricao() {
return descricao;
}
public List<ParteCarga> getPartes() {
return partes;
}
public Contrato getContrato() {
return contrato;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public void setPartes(List<ParteCarga> partes) {
this.partes = partes;
}
public void setContrato(Contrato contrato) {
this.contrato = contrato;
}
}