Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions avaliacoes/restaurante/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.restaurante</groupId>
<artifactId>restaurante</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>

</project>
196 changes: 196 additions & 0 deletions avaliacoes/restaurante/src/main/java/com/restaurante/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
package com.restaurante;

import com.restaurante.controllers.cliente.*;
import com.restaurante.controllers.funcionario.*;
import com.restaurante.controllers.mesa.*;
import com.restaurante.controllers.produto.*;
import com.restaurante.controllers.endereco.*;
import com.restaurante.model.Endereco;

import java.util.List;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);

// Instancia controllers
CreateClienteController createCliente = new CreateClienteController();
DeleteClienteController deleteCliente = new DeleteClienteController();
SearchClienteController searchCliente = new SearchClienteController();

CreateFuncionarioController createFuncionario = new CreateFuncionarioController();
DeleteFuncionarioController deleteFuncionario = new DeleteFuncionarioController();
SearchFuncionarioController searchFuncionario = new SearchFuncionarioController();

CreateMesaController createMesa = new CreateMesaController();
DeleteMesaController deleteMesa = new DeleteMesaController();
SearchMesaController searchMesa = new SearchMesaController();

CreateProdutoController createProduto = new CreateProdutoController();
DeleteProdutoController deleteProduto = new DeleteProdutoController();
SearchProdutoController searchProduto = new SearchProdutoController();

// Controllers endereço
CreateEnderecoController createEndereco = new CreateEnderecoController();
DeleteEnderecoController deleteEndereco = new DeleteEnderecoController();
SearchEnderecoController searchEndereco = new SearchEnderecoController();

// Carrega lista de endereços do arquivo para usar em memória (lista compartilhada)
List<Endereco> listaEnderecos = createEndereco.listarEnderecos();

int opcao = -1;
while (opcao != 0) {
System.out.println("\n--- MENU PRINCIPAL ---");
System.out.println("1. Cliente");
System.out.println("2. Funcionário");
System.out.println("3. Mesa");
System.out.println("4. Produto");
System.out.println("5. Endereço");
System.out.println("0. Sair");
System.out.print("Escolha uma opção: ");
opcao = Integer.parseInt(scanner.nextLine());

switch (opcao) {
case 1 -> menuCliente(scanner, createCliente, deleteCliente, searchCliente, listaEnderecos);
case 2 -> menuFuncionario(scanner, createFuncionario, deleteFuncionario, searchFuncionario, listaEnderecos);
case 3 -> menuMesa(scanner, createMesa, deleteMesa, searchMesa);
case 4 -> menuProduto(scanner, createProduto, deleteProduto, searchProduto);
case 5 -> menuEndereco(scanner, createEndereco, deleteEndereco, searchEndereco, listaEnderecos);
case 0 -> System.out.println("Saindo...");
default -> System.out.println("Opção inválida.");
}
}

scanner.close();
}

private static void menuCliente(Scanner scanner,
CreateClienteController c,
DeleteClienteController d,
SearchClienteController s,
List<Endereco> listaEnderecos) {
System.out.println("\n--- CLIENTE ---");
System.out.println("1. Cadastrar");
System.out.println("2. Listar");
System.out.println("3. Remover");
System.out.print("Escolha: ");
int opcao = Integer.parseInt(scanner.nextLine());

switch (opcao) {
case 1 -> c.executar(listaEnderecos);
case 2 -> s.executar();
case 3 -> d.executar();
default -> System.out.println("Opção inválida.");
}
}

private static void menuFuncionario(Scanner scanner,
CreateFuncionarioController c,
DeleteFuncionarioController d,
SearchFuncionarioController s,
List<Endereco> listaEnderecos) {
System.out.println("\n--- FUNCIONÁRIO ---");
System.out.println("1. Cadastrar");
System.out.println("2. Listar");
System.out.println("3. Remover");
System.out.print("Escolha: ");
int opcao = Integer.parseInt(scanner.nextLine());

switch (opcao) {
case 1 -> c.executar();
case 2 -> s.executar();
case 3 -> d.executar();
default -> System.out.println("Opção inválida.");
}
}

private static void menuMesa(Scanner scanner,
CreateMesaController c,
DeleteMesaController d,
SearchMesaController s) {
System.out.println("\n--- MESA ---");
System.out.println("1. Adicionar");
System.out.println("2. Listar");
System.out.println("3. Remover");
System.out.print("Escolha: ");
int opcao = Integer.parseInt(scanner.nextLine());

try {
switch (opcao) {
case 1 -> c.adicionarMesa();
case 2 -> s.listarMesas();
case 3 -> d.removerMesa();
default -> System.out.println("Opção inválida.");
}
} catch (Exception e) {
System.out.println("Erro: " + e.getMessage());
}
}

private static void menuProduto(Scanner scanner,
CreateProdutoController c,
DeleteProdutoController d,
SearchProdutoController s) {
System.out.println("\n--- PRODUTO ---");
System.out.println("1. Adicionar");
System.out.println("2. Listar");
System.out.println("3. Remover");
System.out.print("Escolha: ");
int opcao = Integer.parseInt(scanner.nextLine());

try {
switch (opcao) {
case 1 -> c.adicionarProduto();
case 2 -> s.listarProdutos();
case 3 -> d.removerProduto();
default -> System.out.println("Opção inválida.");
}
} catch (Exception e) {
System.out.println("Erro: " + e.getMessage());
}
}

private static void menuEndereco(Scanner scanner,
CreateEnderecoController c,
DeleteEnderecoController d,
SearchEnderecoController s,
List<Endereco> listaEnderecos) {
System.out.println("\n--- ENDEREÇO ---");
System.out.println("1. Cadastrar");
System.out.println("2. Listar");
System.out.println("3. Buscar por CEP");
System.out.println("4. Remover");
System.out.print("Escolha: ");
int opcao = Integer.parseInt(scanner.nextLine());

switch (opcao) {
case 1 -> c.criarEndereco(listaEnderecos);
case 2 -> {
if (listaEnderecos.isEmpty()) {
System.out.println("Nenhum endereço cadastrado.");
} else {
System.out.println("Lista de Endereços:");
for (Endereco e : listaEnderecos) {
System.out.printf("%s, %d, CEP: %s%n", e.getTipo(), e.getNumero(), e.getCep());
}
}
}
case 3 -> {
System.out.print("Digite o CEP para busca: ");
String cep = scanner.nextLine();
Endereco endereco = s.buscarPorCep(listaEnderecos, cep);
if (endereco != null) {
System.out.printf("Endereço encontrado: %s, %d, CEP: %s%n",
endereco.getTipo(), endereco.getNumero(), endereco.getCep());
} else {
System.out.println("Endereço não encontrado.");
}
}
case 4 -> {
d.deletarEndereco(listaEnderecos);
}
default -> System.out.println("Opção inválida.");
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.restaurante.controllers.cliente;

import com.restaurante.dao.ClienteDAO;
import com.restaurante.dao.EnderecoDAO;
import com.restaurante.model.Cliente;
import com.restaurante.model.Endereco;
import com.restaurante.view.ClienteView;
import com.restaurante.controllers.endereco.SearchEnderecoController;

import java.util.List;
import java.util.Scanner;

public class CreateClienteController {
private ClienteView view = new ClienteView();
private ClienteDAO dao = new ClienteDAO();
private EnderecoDAO enderecoDAO = new EnderecoDAO();
private SearchEnderecoController searchEndereco = new SearchEnderecoController();
private List<Endereco> enderecos;

public void executar(List<Endereco> enderecos) {
this.enderecos = enderecos;

Cliente cliente = view.capturarCliente();
Endereco endereco = buscarOuCriarEndereco();
cliente.setEndereco(endereco);

dao.salvar(cliente);
view.mostrarMensagem("Cliente cadastrado com sucesso!");
}

private Endereco buscarOuCriarEndereco() {
Scanner scanner = view.getScanner();
System.out.println("Deseja:");
System.out.println("1. Escolher um endereço existente");
System.out.println("2. Cadastrar novo endereço");
System.out.print("Opção: ");
int opcao = Integer.parseInt(scanner.nextLine());

if (opcao == 1) {
System.out.print("Digite o CEP do endereço: ");
String cep = scanner.nextLine();
return searchEndereco.buscarPorCep(enderecos, cep);
}

// Criar novo
System.out.print("Tipo (Rua, Av...): ");
String tipo = scanner.nextLine();
System.out.print("Número: ");
int numero = Integer.parseInt(scanner.nextLine());
System.out.print("CEP: ");
String cep = scanner.nextLine();

Endereco novo = new Endereco(tipo, cep, numero);
enderecoDAO.salvarEndereco(novo);
enderecos.add(novo);
return novo;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.restaurante.controllers.cliente;
import com.restaurante.dao.ClienteDAO;

import com.restaurante.view.ClienteView;

public class DeleteClienteController {
private ClienteView view = new ClienteView();
private ClienteDAO dao = new ClienteDAO();

public void executar() {
String cpf = view.capturarCpf();
boolean removido = dao.remover(cpf);

if (removido) {
view.mostrarMensagem("Cliente removido com sucesso!");
} else {
view.mostrarMensagem("Cliente não encontrado.");
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.restaurante.controllers.cliente;
import com.restaurante.dao.ClienteDAO;
import com.restaurante.model.Cliente;
import com.restaurante.view.ClienteView;

public class SearchClienteController {
private ClienteView view = new ClienteView();
private ClienteDAO dao = new ClienteDAO();

public void executar() {
for (Cliente c : dao.listar()) {
view.mostrar(c);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.restaurante.controllers.endereco;

import com.restaurante.dao.EnderecoDAO;
import com.restaurante.model.Endereco;
import com.restaurante.view.EnderecoView;

import java.util.List;

public class CreateEnderecoController {
private EnderecoDAO dao = new EnderecoDAO();
private EnderecoView view = new EnderecoView();

public void criarEndereco(List<Endereco> listaEnderecos) {
Endereco novo = view.capturarEndereco();
listaEnderecos.add(novo);
dao.salvarEndereco(novo);
view.mostrarMensagem("Endereço criado com sucesso!");
}

// 🔧 MÉTODO PÚBLICO NOVO
public List<Endereco> listarEnderecos() {
return dao.listarEnderecos();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.restaurante.controllers.endereco;

import com.restaurante.dao.EnderecoDAO;
import com.restaurante.model.Endereco;
import com.restaurante.view.EnderecoView;

import java.util.List;

public class DeleteEnderecoController {
private EnderecoDAO dao = new EnderecoDAO();
private EnderecoView view = new EnderecoView();

public void deletarEndereco(List<Endereco> listaEnderecos) {
String cep = view.capturarCep();
boolean removido = dao.deletarEnderecoPorCep(listaEnderecos, cep);
if (removido) {
view.mostrarMensagem("Endereço removido com sucesso.");
} else {
view.mostrarMensagem("Endereço não encontrado.");
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.restaurante.controllers.endereco;

import com.restaurante.model.Endereco;
import com.restaurante.view.EnderecoView;

import java.util.List;

public class SearchEnderecoController {
private EnderecoView view = new EnderecoView();

public void listarEnderecos(List<Endereco> listaEnderecos) {
view.mostrarListaEnderecos(listaEnderecos);
}

public void buscarPorCep(List<Endereco> listaEnderecos) {
String cep = view.capturarCep();
Endereco e = buscarPorCep(listaEnderecos, cep);
view.mostrarEndereco(e);
}

public Endereco buscarPorCep(List<Endereco> listaEnderecos, String cep) {
return listaEnderecos.stream()
.filter(end -> end.getCep().equals(cep))
.findFirst()
.orElse(null);
}
}
Loading