package br.com.ufrj.msi2.netuno.modelo.entidades;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import br.com.ufrj.msi2.netuno.modelo.enums.FormaPagamentoEnum;
import br.com.ufrj.msi2.netuno.modelo.enums.SituacaoContratoEnum;
/**
* � feito por um Contratante que quer enviar cargas de um porto origem para um porto destino.
* @author Thiago, Paula
*
*/
@NamedQueries(
{
@NamedQuery(name="Contrato.recuperaAbertoPorContratante",
query="select contrato from Contratante contratante inner join contratante.contratos contrato where (contratante = :contratante and contrato.situacao <= :situacao)"),
@NamedQuery(name="Contrato.recuperaFinalizadoPorContratante",
query="select contrato from Contratante contratante inner join contratante.contratos contrato where (contratante = :contratante and contrato.situacao = :situacao)"),
@NamedQuery(name="Contrato.recuperaPorId",
query="select contrato from Contrato contrato where contrato.id = :id"),
@NamedQuery(name="Contrato.recuperaPorIdComFetch",
query="select contrato from Contrato contrato left join fetch contrato.cargas c where contrato.id = :id")
}
)
@Entity
@Table(name="contrato")
public class Contrato implements Serializable {
private static final long serialVersionUID = -5051560792148827601L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
@OneToMany
@JoinColumn(name="contrato_id")
private List<Carga> cargas;
@ManyToOne
private Porto portoOrigem;
@ManyToOne(targetEntity = Porto.class)
private Porto portoDestino;
@Column(name="data_criacao")
private Date dataCriacao;
@Column(name="data_estimada")
private Date dataEstimada;
@Column(name="situacao")
@Enumerated(EnumType.ORDINAL)
private SituacaoContratoEnum situacao;
@Column(name="forma_pagamento")
@Enumerated(EnumType.ORDINAL)
private FormaPagamentoEnum formaPagamento;
@Column(name="preco")
private BigDecimal preco;
@Column(name="endereco_coleta")
private String enderecoColeta;
@Column(name="endereco_entrega")
private String enderecoEntrega;
public Integer getId() {
return id;
}
public List<Carga> getCargas() {
return cargas;
}
public Porto getPortoOrigem() {
return portoOrigem;
}
public Porto getPortoDestino() {
return portoDestino;
}
public Date getDataCriacao() {
return dataCriacao;
}
public Date getDataEstimada() {
return dataEstimada;
}
public SituacaoContratoEnum getSituacao() {
return situacao;
}
public FormaPagamentoEnum getFormaPagamento() {
return formaPagamento;
}
public BigDecimal getPreco() {
return preco;
}
public String getEnderecoColeta() {
return enderecoColeta;
}
public String getEnderecoEntrega() {
return enderecoEntrega;
}
public void setId(Integer id) {
this.id = id;
}
public void setCargas(List<Carga> cargas) {
this.cargas = cargas;
}
public void setPortoOrigem(Porto portoOrigem) {
this.portoOrigem = portoOrigem;
}
public void setPortoDestino(Porto portoDestino) {
this.portoDestino = portoDestino;
}
public void setDataCriacao(Date dataCriacao) {
this.dataCriacao = dataCriacao;
}
public void setDataEstimada(Date dataEstimada) {
this.dataEstimada = dataEstimada;
}
public void setSituacao(SituacaoContratoEnum situacao) {
this.situacao = situacao;
}
public void setFormaPagamento(FormaPagamentoEnum formaPagamento) {
this.formaPagamento = formaPagamento;
}
public void setPreco(BigDecimal preco) {
this.preco = preco;
}
public void setEnderecoColeta(String enderecoColeta) {
this.enderecoColeta = enderecoColeta;
}
public void setEnderecoEntrega(String enderecoEntrega) {
this.enderecoEntrega = enderecoEntrega;
}
}