Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package admin.console.gestores;
- import admin.console.AdminConsole;
- import interfaces.DataInt;
- import interfaces.organizacoes.DepartamentoInt;
- import interfaces.pessoas.AlunoInt;
- import interfaces.pessoas.DocenteInt;
- import interfaces.pessoas.FuncionarioInt;
- import interfaces.pessoas.PessoaInt;
- import java.rmi.RemoteException;
- import java.rmi.registry.LocateRegistry;
- import java.util.Arrays;
- import java.util.Scanner;
- import java.util.function.BooleanSupplier;
- /**
- * Created by Carlos on 24-10-2017.
- */
- public class Pessoa {
- private static PessoaInt pessoaInt;
- private static DataInt dataInt;
- private static AlunoInt alunoInt;
- private static DocenteInt docenteInt;
- private static FuncionarioInt funcionarioInt;
- private static Scanner sc;
- private static int r1;
- private static String r2;
- public static void getProperty(String s1, BooleanSupplier call) {
- while (call.getAsBoolean())
- System.out.print(s1);
- }
- public static void getProperty(String s1, String s2, BooleanSupplier call) {
- System.out.print(s1);
- getProperty(s2, () -> call.getAsBoolean());
- }
- public static boolean contains(String[] a, String s) {
- return Arrays.toString(a).toLowerCase().contains(s.toLowerCase());
- }
- public static boolean contains(int[] a, int i) {
- return Arrays.toString(a).toLowerCase().contains(String.valueOf(i).toLowerCase());
- }
- public static void escolheGenero() {
- getProperty(
- "Escolha um Género:\n" +
- "1 - Masculino\n" +
- "2 - Femenino\n" +
- "3 - Outro\n",
- "Por favor insira um número correspondente a um dos géneros disponíveis.\n",
- () -> !contains(new int[]{1, 2, 3}, (r1 = sc.nextInt())));
- try {
- switch (r1) {
- case 1:
- pessoaInt.setGenero("Masculino");
- break;
- case 2:
- pessoaInt.setGenero("Feminino");
- break;
- case 3:
- pessoaInt.setGenero("Outro");
- break;
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static boolean newPessoa(DepartamentoInt departamentoInt) {
- sc = new Scanner(System.in);
- try {
- getProperty(
- "Escolha o tipo de pessoa a inserir:\n" +
- "1 - Aluno\n" +
- "2 - Docente\n" +
- "3 - Funcionário\n",
- "Por favor insira um número correspondente a um dos tipos disponíveis.\n",
- () -> !contains(new int[]{1, 2, 3}, r1 = sc.nextInt()));
- if (r1 == 1) {
- try {
- pessoaInt = (PessoaInt) LocateRegistry.getRegistry(AdminConsole.ip, AdminConsole.port).lookup(String.valueOf(departamentoInt.newAluno(11)));
- } catch (Exception e) {
- e.printStackTrace();
- }
- } else if (r1 == 2) {
- try {
- pessoaInt = (PessoaInt) LocateRegistry.getRegistry(AdminConsole.ip, AdminConsole.port).lookup(String.valueOf(departamentoInt.newDocente(11)));
- } catch (Exception e) {
- e.printStackTrace();
- }
- } else {
- try {
- pessoaInt = (PessoaInt) LocateRegistry.getRegistry(AdminConsole.ip, AdminConsole.port).lookup(String.valueOf(departamentoInt.newFuncionario(11)));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- sc.nextLine();
- getProperty("Insira o Nome: ",
- "Por favor insira um nome só com letras.\n",
- (() -> {
- try {
- return pessoaInt.setNome(sc.nextLine());
- } catch (RemoteException e) {
- e.printStackTrace();
- }
- return false;
- }));
- getProperty("Insira o Username: ",
- "Por favor insira um username com entre 8 a 20 caracteres.\n",
- (() -> {
- try {
- return pessoaInt.setUsername(sc.nextLine());
- } catch (RemoteException e) {
- e.printStackTrace();
- }
- return false;
- }));
- System.out.print("Insira a Password: ");
- while (!pessoaInt.setPassword(sc.nextLine()))
- System.out.print("Por favor insira uma password com entre 8 a 20 caracteres.\n");
- System.out.print("Insira o número de telemovél: ");
- while (!pessoaInt.setTelemovel(sc.nextLine()))
- System.out.print("Por favor insira um número de telemóvel com apenas 9 dígitos.\n");
- System.out.print("Insira a Morada: ");
- while (!pessoaInt.setMorada(sc.nextLine()))
- System.out.print("Por favor insira pelo menos 1 caracter na morada.\n");
- System.out.print("Insira Código Postal: ");
- while (!pessoaInt.setCodigoPostal(sc.nextLine()))
- System.out.print("Por favor insira um código postal neste formato '0000-000'.\n");
- System.out.print("Insira Localidade: ");
- while (!pessoaInt.setLocalidade(sc.nextLine()))
- System.out.print("Por favor insira uma localidade com pelo menos 1 caractér.\n");
- System.out.print("Insira o número do Cartão de Cidadão: ");
- while (!pessoaInt.setNumeroCC(sc.nextLine()))
- System.out.print("Por favor insira um número de cartão de cidadão com apenas 8 dígitos.\n");
- if (pessoaInt.isAluno()) {
- alunoInt = (AlunoInt) pessoaInt;
- System.out.print("Insira o Número de Aluno: ");
- while (!alunoInt.setNumeroAluno(sc.nextLine()))
- System.out.print("Por favor insira um número de aluno com apenas 10 digitos.\n");
- System.out.print("Insira um Curso: ");
- while (!alunoInt.setCurso(sc.nextLine()))
- System.out.print("Por favora insira o nome do curso usando apenas letras.\n");
- }
- if (pessoaInt.isDocente()) {
- docenteInt = (DocenteInt) pessoaInt;
- System.out.print("Insira o Cargo: ");
- while (!docenteInt.setCargo(sc.nextLine()))
- System.out.print("Por favor insira um cargo com pelo menos 1 caractér.\n");
- }
- if (pessoaInt.isFuncionario()) {
- funcionarioInt = (FuncionarioInt) pessoaInt;
- System.out.print("Insira a Função: ");
- while (!funcionarioInt.setFuncao(sc.nextLine()))
- System.out.print("Por favor insira uma função com pelo menos 1 caractér.\n");
- }
- dataInt = (DataInt) LocateRegistry.getRegistry(AdminConsole.ip, AdminConsole.port).lookup(String.valueOf(pessoaInt.getValidadeCC()));
- r1 = 0;
- do {
- if (r1++ != 0)
- System.out.print("Por favor insira valores válidos para a validade do cartão de cidadão.\n");
- System.out.print("Insira o ano da validade do cartão de cidadão: ");
- dataInt.setAno(sc.nextInt());
- System.out.print("Insira o mês da validade do cartão de cidadão: ");
- dataInt.setMes(sc.nextInt());
- System.out.print("Insira o dia da validade do cartão de cidadão: ");
- dataInt.setDia(sc.nextInt());
- } while (!dataInt.test());
- dataInt = (DataInt) LocateRegistry.getRegistry(AdminConsole.ip, AdminConsole.port).lookup(String.valueOf(pessoaInt.getDataNascimento()));
- r1 = 0;
- do {
- if (r1++ != 0) System.out.print("Por favor insira valores válidos para a data de nascimento.\n");
- System.out.print("Insira o ano da data de nascimento: ");
- dataInt.setAno(sc.nextInt());
- System.out.print("Insira o mês da data de nascimento: ");
- dataInt.setMes(sc.nextInt());
- System.out.print("Insira o dia da data de nascimento: ");
- dataInt.setDia(sc.nextInt());
- } while (!dataInt.test());
- escolheGenero();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- private static boolean editPessoa(PessoaInt pessoaInt) {
- try {
- getProperty(pessoaInt.print() + "\nPor favor insira a propriedade a editar: ",
- "Por favor insira uma característica correspondente a uma das disponíveis.\n",
- () -> {
- try {
- return contains(new String[]{
- "nome",
- "username",
- "password",
- "departamento",
- "nº telemóvel",
- "nº telemovel",
- "no telemóvel",
- "no telemovel",
- "morada",
- "código postal",
- "codigo postal",
- "localidade",
- "número c.c.",
- "numero c.c.",
- "número cc",
- "numero cc",
- "validade c.c.",
- "validade cc",
- "género",
- "genero",
- "data nascimento"
- }, r2 = sc.nextLine()) ||
- pessoaInt.isAluno() && contains(new String[]{
- "nºaluno",
- "no aluno",
- "curso"
- }, r2) ||
- pessoaInt.isFuncionario() && contains(new String[]{
- "função",
- "funçao",
- "funcão",
- "funcao"
- }, r2) ||
- pessoaInt.isDocente() && r2.toLowerCase().equals("cargo");
- } catch (Exception e) {
- e.printStackTrace();
- }
- return false;
- });
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- switch (r2.toLowerCase()) {
- case "nome":
- getProperty("Por favor insira um nome só com letras.\n",
- () -> {
- try {
- return !pessoaInt.setNome(AdminConsole.editProperty(sc, "Nome", pessoaInt.getNome()));
- } catch (Exception e) {
- e.printStackTrace();
- }
- return false;
- });
- break;
- case "username":
- getProperty("Por favor insira um username com entre 8 a 20 caracteres.\n",
- () -> {
- try {
- return !pessoaInt.setUsername(AdminConsole.editProperty(sc, "Nome", pessoaInt.getUsername()));
- } catch (Exception e) {
- e.printStackTrace();
- }
- return false;
- });
- break;
- case "password":
- getProperty("Por favor insira uma password com entre 8 a 20 caracteres.\n",
- () -> {
- try {
- return !pessoaInt.setPassword(AdminConsole.editProperty(sc, "Password", pessoaInt.getPassword()));
- } catch (Exception e) {
- e.printStackTrace();
- }
- return false;
- });
- break;
- case "departamento":
- editDepartamento((DepartamentoInt) LocateRegistry.getRegistry(ip, port).lookup(String.valueOf(pessoaInt.getDepartamentoInt())));
- break;
- case "nº telemóvel":
- case "nº telemovel":
- case "no telemóvel":
- case "no telemovel":
- while (!pessoaInt.setTelemovel(AdminConsole.editProperty(sc, "Nº Telemóvel", String.valueOf(pessoaInt.getTelemovel()))))
- System.out.print("Por favor insira um número de telemóvel com apenas 9 dígitos.\n");
- break;
- case "morada":
- while (!pessoaInt.setMorada(AdminConsole.editProperty(sc, "Morada", pessoaInt.getMorada())))
- System.out.print("Por favor insira pelo menos 1 caracter na morada.\n");
- break;
- case "código postal":
- case "codigo postal":
- while (!pessoaInt.setCodigoPostal(AdminConsole.editProperty(sc, "Código Postal", pessoaInt.getCodigoPostal())))
- System.out.print("Por favor insira um código postal neste formato '0000-000'.\n");
- break;
- case "localidade":
- while (!pessoaInt.setLocalidade(AdminConsole.editProperty(sc, "Localidade", pessoaInt.getLocalidade())))
- System.out.print("Por favor insira uma localidade com pelo menos 1 caractér.\n");
- break;
- case "número c.c.":
- case "numero c.c.":
- case "número cc":
- case "numero cc":
- while (!pessoaInt.setNumeroCC(AdminConsole.editProperty(sc, "Número C.C.", String.valueOf(pessoaInt.getNumeroCC()))))
- System.out.print("Por favor insira um número de cartão de cidadão com apenas 8 dígitos.\n");
- break;
- case "validade c.c.":
- case "validade cc":
- editData((DataInt) LocateRegistry.getRegistry(ip, port).lookup(String.valueOf(pessoaInt.getValidadeCC())));
- break;
- case "género":
- case "genero":
- try {
- System.out.print("Género Antigo: " + pessoaInt.getGenero());
- } catch (Exception e) {
- e.printStackTrace();
- }
- escolheGenero();
- break;
- case "data nascimento":
- editData((DataInt) LocateRegistry.getRegistry(ip, port).lookup(String.valueOf(pessoaInt.getDataNascimento())));
- break;
- case "nº aluno":
- case "no aluno":
- alunoInt = (AlunoInt) pessoaInt;
- while (!alunoInt.setNumeroAluno(AdminConsole.editProperty(sc, "Nº Aluno", String.valueOf(alunoInt.getNumeroAluno()))))
- System.out.print("Por favor insira um número de aluno com apenas 10 digitos.\n");
- break;
- case "curso":
- alunoInt = (AlunoInt) pessoaInt;
- while (!alunoInt.setCurso(AdminConsole.editProperty(sc, "Curso", alunoInt.getCurso())))
- System.out.print("Por favora insira o nome do curso usando apenas letras.\n");
- break;
- case "cargo":
- docenteInt = (DocenteInt) pessoaInt;
- while (!docenteInt.setCargo(AdminConsole.editProperty(sc, "Cargo", docenteInt.getCargo())))
- System.out.print("Por favor insira um cargo com pelo menos 1 caractér.\n");
- break;
- case "função":
- case "funçao":
- case "funcão":
- case "funcao":
- funcionarioInt = (FuncionarioInt) pessoaInt;
- while (!funcionarioInt.setFuncao(AdminConsole.editProperty(sc, "Função", funcionarioInt.getFuncao())))
- System.out.print("Por favor insira uma função com pelo menos 1 caractér.\n");
- break;
- }
- getProperty(
- "Quer editar mais alguma Propriedade?\n" +
- "1 - Sim\n" +
- "2 - Não\n",
- "Por favor insira um número correspondente a uma das opções disponíveis.\n",
- () -> contains(new int[]{1, 2}, r1 = sc.nextInt()));
- switch (r1) {
- case 1:
- editPessoa(pessoaInt);
- break;
- case 2:
- }
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement