Files
java-spark/src/main/java/model/Produto.java
2021-09-18 11:03:27 -03:00

121 lines
3.4 KiB
Java

package model;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
public class Produto implements Serializable {
private static final long serialVersionUID = 1L;
public static final String DESCRICAO_PADRAO = "Novo Produto";
public static final int MAX_ESTOQUE = 1000;
private int id;
private String descricao;
private float preco;
private int quantidade;
private LocalDateTime dataFabricacao;
private LocalDate dataValidade;
public Produto() {
id = -1;
descricao = DESCRICAO_PADRAO;
preco = 0.01F;
quantidade = 0;
dataFabricacao = LocalDateTime.now();
dataValidade = LocalDate.now().plusMonths(6); // o default é uma validade de 6 meses.
}
public Produto(int id, String descricao, float preco, int quantidade) {
setId(id);
setDescricao(descricao);
setPreco(preco);
setQuant(quantidade);
dataFabricacao = LocalDateTime.now();
dataValidade = LocalDate.now().plusMonths(6); // o default é uma validade de 6 meses.
}
public Produto(int id, String descricao, float preco, int quantidade, LocalDateTime fabricacao, LocalDate v) {
setId(id);
setDescricao(descricao);
setPreco(preco);
setQuant(quantidade);
setDataFabricacao(fabricacao);
setDataValidade(v);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
if (descricao.length() >= 3)
this.descricao = descricao;
}
public float getPreco() {
return preco;
}
public void setPreco(float preco) {
if (preco > 0)
this.preco = preco;
}
public int getQuant() {
return quantidade;
}
public void setQuant(int quantidade) {
if (quantidade >= 0 && quantidade <= MAX_ESTOQUE)
this.quantidade = quantidade;
}
public LocalDate getDataValidade() {
return dataValidade;
}
public LocalDateTime getDataFabricacao() {
return dataFabricacao;
}
public void setDataFabricacao(LocalDateTime dataFabricacao) {
// Pega a Data Atual
LocalDateTime agora = LocalDateTime.now();
// Garante que a data de fabricação não pode ser futura
if (agora.compareTo(dataFabricacao) >= 0)
this.dataFabricacao = dataFabricacao;
}
public void setDataValidade(LocalDate dataValidade) {
// a data de fabricação deve ser anterior é data de validade.
if (getDataFabricacao().isBefore(dataValidade.atStartOfDay()))
this.dataValidade = dataValidade;
}
public boolean emValidade() {
return LocalDateTime.now().isBefore(this.getDataValidade().atTime(23, 59));
}
/**
* Método sobreposto da classe Object. É executado quando um objeto precisa ser
* exibido na forma de String.
*/
@Override
public String toString() {
return "Produto: " + descricao + " Preço: R$" + preco + " Quant.: " + quantidade + " Fabricação: "
+ dataFabricacao + " Data de Validade: " + dataValidade;
}
@Override
public boolean equals(Object obj) {
return (this.getId() == ((Produto) obj).getId());
}
}