This commit is contained in:
Gustavo Barbosa 2025-08-02 23:38:00 -03:00
parent 09a949216e
commit eb3f317085
3 changed files with 84 additions and 0 deletions

View file

@ -0,0 +1,20 @@
package casa.sotu.organizajogos.api.excecao;
public class OrganizaJogosExcecao extends RuntimeException {
public OrganizaJogosExcecao(String mensagem, Throwable causa) {
super(mensagem, causa);
}
public OrganizaJogosExcecao(Throwable causa) {
super(causa);
}
public OrganizaJogosExcecao(String mensagem) {
super(mensagem);
}
public OrganizaJogosExcecao() {
}
}

View file

@ -0,0 +1,18 @@
package casa.sotu.organizajogos.api.excecao;
import java.math.BigDecimal;
import casa.sotu.organizajogos.api.modelo.Preco.TipoDePreco;
import lombok.Getter;
@Getter
public class PrecoInvalidoExcecao extends OrganizaJogosExcecao {
private final BigDecimal valor;
private final TipoDePreco tipo;
public PrecoInvalidoExcecao(BigDecimal valor, TipoDePreco tipo) {
this.tipo = tipo;
this.valor = valor;
}
}

View file

@ -0,0 +1,46 @@
package casa.sotu.organizajogos.api.modelo;
import java.math.BigDecimal;
import casa.sotu.organizajogos.api.excecao.PrecoInvalidoExcecao;
import jakarta.persistence.Embeddable;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Min;
@Embeddable
public record Preco(
@Min(0) BigDecimal valor,
@NotNull @Enumerated(EnumType.STRING) TipoDePreco tipo) {
public Preco {
if (tipo == TipoDePreco.VALOR) {
if (valor == null) {
throw new PrecoInvalidoExcecao(valor, tipo);
}
} else {
valor = null;
}
}
public Preco(BigDecimal valor) {
this(valor, TipoDePreco.VALOR);
}
public Preco(TipoDePreco tipo) {
this(null, tipo);
}
public enum TipoDePreco {
VALOR,
DE_GRACA,
DESCONHECIDO,
PRESENTE;
}
public static void main(String[] args) {
Preco preco = new Preco(BigDecimal.valueOf(10000, 2), TipoDePreco.DESCONHECIDO);
System.out.println(preco);
}
}