public abstract class Entidade { protected int codigo = 0; protected Date cadastro = new Date(); public Entidade() { } public Date getCadastro() { return cadastro; } public void setCadastro(Date cadastro) { this.cadastro = cadastro; } public int getCodigo() { return codigo; } public void setCodigo(int codigo) { this.codigo = codigo; } } public abstract class Pessoa extends Entidade { protected String nome; protected String endereco; protected String numero; protected String complemento; protected String cep; protected String cidade; protected String estado; protected String bairro; protected String telefone; protected String celular; protected String email; public String getBairro() { return bairro; } public void setBairro(String bairro) { this.bairro = bairro; } public String getCelular() { return celular; } public void setCelular(String celular) { this.celular = celular; } public String getCep() { return cep; } public void setCep(String cep) { this.cep = cep; } public String getCidade() { return cidade; } public void setCidade(String cidade) { this.cidade = cidade; } protected String getComplemento() { return complemento; } public void setComplemento(String complemento) { this.complemento = complemento; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getEndereco() { return endereco; } public void setEndereco(String endereco) { this.endereco = endereco; } public String getEstado() { return estado; } public void setEstado(String estado) { this.estado = estado; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getNumero() { return numero; } public void setNumero(String numero) { this.numero = numero; } public String getTelefone() { return telefone; } public void setTelefone(String telefone) { this.telefone = telefone; } public String verificaNome(){ if ( this.nome.equals("")) return "Em Branco"; else return "Preenchido"; } } public class Cliente extends Pessoa{ private Date nascimento; private int idade; private String cpf; private String rg; public String getCpf() { return cpf; } public void setCpf(String cpf) throws Exception { if ( cpf.equals("") ) throw new Exception("CPF inválido!!"); this.cpf = cpf; } public int getIdade() { return idade; } public void setIdade(int idade) { this.idade = idade; } public Date getNascimento() { return nascimento; } public void setNascimento(Date nascimento) { this.nascimento = nascimento; } public String getRg() { return rg; } public void setRg(String rg) { this.rg = rg; } @Override public String verificaNome(){ if ( this.nome.equals("")) return "Em Branco"; else return this.nome; } } public class Fornecedor extends Pessoa{ private String razao; private String cnpj; private String inscricao; public Fornecedor() { } public Fornecedor(String razao, String cnpj, String inscricao) { this.razao = razao; this.cnpj = cnpj; this.inscricao = inscricao; } public String getCnpj() { return cnpj; } public void setCnpj(String cnpj) throws Exception { if ( cnpj.equals("") ) throw new Exception("CNPJ do fornecedor invalido!"); this.cnpj = cnpj; } public String getInscricao() { return inscricao; } public void setInscricao(String inscricao) throws Exception { if ( inscricao.equals("") ) throw new Exception("Incrição do fornecedor invalida!"); this.inscricao = inscricao; } public String getRazao() { return razao; } public void setRazao(String razao) throws Exception { if ( razao.equals("") ) throw new Exception("Razão do fornecedor invalida!"); this.razao = razao; } } public class Vendedor extends Pessoa{ private int idade; private Date nascimento; private Date admissao; private Date demissao; private double comissao; public Date getAdmissao() { return admissao; } public void setAdmissao(Date admissao) { this.admissao = admissao; } public double getComissao() { return comissao; } public void setComissao(double comissao) { this.comissao = comissao; } public Date getDemissao() { return demissao; } public void setDemissao(Date demissao) { this.demissao = demissao; } public int getIdade() { return idade; } public void setIdade(int idade) { this.idade = idade; } public Date getNascimento() { return nascimento; } public void setNascimento(Date nascimento) { this.nascimento = nascimento; } } public class Produto extends Entidade{ private String descricao; private double estoque; private double custo; private double venda; public double getCusto() { return custo; } public void setCusto(double custo) { this.custo = custo; } public String getDescricao() { return descricao; } public void setDescricao(String descricao) throws Exception { if ( descricao.equals("") ) throw new Exception("A descrição do produto deve ser informada!"); this.descricao = descricao; } public double getEstoque() { return estoque; } public void setEstoque(double estoque) { this.estoque = estoque; } public double getVenda() { return venda; } public void setVenda(double venda) throws Exception { if ( venda <= 0 ) throw new Exception("Valor de venda do produto inválido!"); this.venda = venda; } } public class Item { private Produto produto; private double quantidade; private double valor; public Item(Produto produto, double quantidade, double valor) { this.produto = produto; this.quantidade = quantidade; this.valor = valor; } public Item() { } public Produto getProduto() { return produto; } public void setProduto(Produto produto) throws Exception{ if ( ( produto == null ) || ( produto.getCodigo() == 0 ) ) throw new Exception("É necessário informar o produto!"); this.produto = produto; } public double getQuantidade() { return quantidade; } public void setQuantidade(double quantidade) throws Exception{ if ( quantidade <= 0 ) throw new Exception("Quantidade do produto inválida!"); this.quantidade = quantidade; } public double getValor() { return valor; } public void setValor(double valor) throws Exception{ if ( valor <= 0 ) throw new Exception("Valor do produto inválido!"); this.valor = valor; } public double getTotal(){ return this.valor * this.quantidade; } } public class Venda { private Date data; private int numero; private Cliente cliente; private Vendedor vendedor; private List<Item> itens; public Venda(Date data, int numero, Cliente cliente, Vendedor vendedor) { this.data = data; this.numero = numero; this.cliente = cliente; this.vendedor = vendedor; this.itens = new ArrayList<Item>(); } public Venda() { this.data = new Date(); this.numero = 0; this.itens = new ArrayList<Item>(); } public Cliente getCliente() { return cliente; } public void setCliente(Cliente cliente) throws Exception{ if ( ( cliente == null ) || ( cliente.getCodigo() == 0 ) ) throw new Exception("Cliente Inválido!"); this.cliente = cliente; } public Date getData() { return data; } public void setData(Date data) { this.data = data; } public List<Item> getItens() { return itens; } public void setItens(List<Item> itens) { this.itens = itens; } public int getNumero() { return numero; } public void setNumero(int numero) { this.numero = numero; } public Vendedor getVendedor() { return vendedor; } public void setVendedor(Vendedor vendedor) throws Exception{ if ( ( vendedor == null ) || ( vendedor.getCodigo() == 0 ) ) throw new Exception("Vendedor Inválido!"); this.vendedor = vendedor; } public double getTotalVenda(){ double total = 0; for (Item item : itens) { total = total + item.getTotal(); } return total; } public void addItem(Item item) throws Exception{ if ( ( item.getProduto().getCodigo() == 0 ) && (item.getTotal() == 0)) throw new Exception("Item inválido!"); this.itens.add(item); } public void removeItem(Item item) throws Exception{ if ( ( item.getProduto().getCodigo() == 0 ) && (item.getTotal() == 0)) throw new Exception("Item inválido!"); for(int i = 0; i<this.itens.size(); i++){ if ( this.itens.get(i).getProduto().getCodigo() == item.getProduto().getCodigo()){ this.itens.remove(i); break; } } } public void valida() throws Exception{ if ( this.itens.isEmpty()) throw new Exception("Não existe itens cadastrados para esta venda!"); if ( (this.cliente == null) || (this.cliente.getCodigo() == 0)) throw new Exception("É necessário informar o cliente!"); if ( (this.vendedor == null) || (this.vendedor.getCodigo() == 0)) throw new Exception("É necessário informar o vendedor!"); if ( this.numero <= 0) throw new Exception("Numero da venda inválido!"); } } public class Util { public static Cliente criaObjetoCliente(int codigo, String nome, int idade) throws Exception{ Cliente c = new Cliente(); c.setCodigo(codigo); c.setNome(nome); c.setCpf("000.000.000-00"); c.setIdade(idade); c.setNascimento(new Date()); c.setRg("mg 11223333"); Util.setDadosComum(c); return c; } public static Vendedor criaObjetoVendedor(String nome, double comissao){ Vendedor v = new Vendedor(); v.setAdmissao(new Date()); v.setComissao(comissao); v.setDemissao(new Date()); v.setIdade(20); v.setNascimento(new Date()); Util.setDadosComum(v); return v; } public static Produto criaObjetoProduto(int codigo, String desc) throws Exception{ Produto p = new Produto(); p.setCadastro(new Date()); p.setCodigo(codigo); p.setCusto(10); p.setDescricao(desc); p.setEstoque(100); p.setVenda(20); return p; } private static void setDadosComum(Pessoa obj){ obj.setBairro("Centro"); obj.setCadastro(new Date()); obj.setCelular("9999-9999"); obj.setCep("37700-001"); obj.setCidade("Poços de Caldas"); obj.setComplemento("Apto 1"); obj.setEmail("[email protected]"); obj.setEndereco("Rua Assis"); obj.setEstado("Mg"); obj.setNumero("1000"); obj.setTelefone("(35) 3722-3322"); } }