Advertisement
Guest User

Untitled

a guest
Oct 24th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 16.39 KB | None | 0 0
  1. package admin.console.gestores;
  2.  
  3. import admin.console.AdminConsole;
  4. import interfaces.DataInt;
  5. import interfaces.organizacoes.DepartamentoInt;
  6. import interfaces.pessoas.AlunoInt;
  7. import interfaces.pessoas.DocenteInt;
  8. import interfaces.pessoas.FuncionarioInt;
  9. import interfaces.pessoas.PessoaInt;
  10.  
  11. import java.rmi.RemoteException;
  12. import static admin.console.AdminConsole.*;
  13.  
  14. /**
  15.  * Created by Carlos on 24-10-2017.
  16.  */
  17. public class Pessoa {
  18.  
  19.     private static PessoaInt pessoaInt;
  20.     private static AlunoInt alunoInt;
  21.     private static DocenteInt docenteInt;
  22.     private static FuncionarioInt funcionarioInt;
  23.  
  24.     public static boolean gerir(PessoaInt pessoaInt, DepartamentoInt departamentoInt) {
  25.         try {
  26.             int pos = r1;
  27.             getProperty( pessoaInt.print() +
  28.                     "O que pretende fazer?:\n" +
  29.                             "1 - Editar\n" +
  30.                             "2 - Remover\n" +
  31.                             "3 - Voltar\n",
  32.                     "Por favor insira um número correspondente a um dos géneros disponíveis.\n",
  33.                     () -> !contains(new int[]{1, 2}, (r1 = sc.nextInt())));
  34.  
  35.             switch (r1) {
  36.                 case 1:
  37.                     edit(pessoaInt);
  38.                     break;
  39.                 case 2:
  40.                     departamentoInt.deletePessoa(pessoaInt.getId());
  41.                     break;
  42.             }
  43.         } catch (RemoteException e) {
  44.             e.printStackTrace();
  45.             return false;
  46.         }
  47.  
  48.     }
  49.  
  50.     public static PessoaInt escolhe(DepartamentoInt departamentoInt){
  51.         try {
  52.             if ((r1 = AdminConsole.escolhe(
  53.                     "Não Existem pessoa. Por favor insira uma.\n",
  54.                     "Escolha a pessoa:\n" + departamentoInt.printPessoas(),
  55.                     "Por favor insira um número de pessoa válido.\n",
  56.                     departamentoInt.getPessoas())) == -1)
  57.                 return null;
  58.             return (PessoaInt)  getRegistry(departamentoInt.getPessoa(r1));
  59.         } catch (Exception e) {
  60.             e.printStackTrace();
  61.             return null;
  62.         }
  63.     }
  64.    
  65.     public static void escolheGenero() {
  66.         getProperty(
  67.                 "Escolha um Género:\n" +
  68.                         "1 - Masculino\n" +
  69.                         "2 - Femenino\n" +
  70.                         "3 - Outro\n",
  71.                 "Por favor insira um número correspondente a um dos géneros disponíveis.\n",
  72.                 () -> !contains(new int[]{1, 2, 3}, (r1 = sc.nextInt())));
  73.  
  74.         try {
  75.             switch (r1) {
  76.                 case 1:
  77.                     pessoaInt.setGenero("Masculino");
  78.                     break;
  79.  
  80.                 case 2:
  81.                     pessoaInt.setGenero("Feminino");
  82.                     break;
  83.  
  84.                 case 3:
  85.                     pessoaInt.setGenero("Outro");
  86.                     break;
  87.             }
  88.         } catch (Exception e) {
  89.             e.printStackTrace();
  90.         }
  91.     }
  92.  
  93.     public static boolean novo(DepartamentoInt departamentoInt) {
  94.         try {
  95.             getProperty(
  96.                     "Escolha o tipo de pessoa a inserir:\n" +
  97.                     "1 - Aluno\n" +
  98.                     "2 - Docente\n" +
  99.                     "3 - Funcionário\n",
  100.                     "Por favor insira um número correspondente a um dos tipos disponíveis.\n",
  101.                     () -> !contains(new int[]{1, 2, 3}, r1 = sc.nextInt()));
  102.  
  103.             if (r1 == 1) {
  104.                 try {
  105.                     pessoaInt = (PessoaInt) getRegistry(departamentoInt.newAluno());
  106.                 } catch (Exception e) {
  107.                     e.printStackTrace();
  108.                 }
  109.             } else if (r1 == 2) {
  110.                 try {
  111.                     pessoaInt = (PessoaInt) getRegistry(departamentoInt.newDocente());
  112.                 } catch (Exception e) {
  113.                     e.printStackTrace();
  114.                 }
  115.             } else {
  116.                 try {
  117.                     pessoaInt = (PessoaInt) getRegistry(departamentoInt.newFuncionario());
  118.                 } catch (Exception e) {
  119.                     e.printStackTrace();
  120.  
  121.                 }
  122.             }
  123.  
  124.             sc.nextLine();
  125.  
  126.             getProperty("Insira o Nome: ",
  127.                     "Por favor insira um nome só com letras.\n",
  128.                     (() -> {
  129.                 try {
  130.                     return pessoaInt.setNome(sc.nextLine());
  131.                 } catch (RemoteException e) {
  132.                     e.printStackTrace();
  133.                 }
  134.                 return false;
  135.             }));
  136.  
  137.             getProperty("Insira o Username: ",
  138.                     "Por favor insira um username com entre 8 a 20 caracteres.\n",
  139.                     (() -> {
  140.                 try {
  141.                     return pessoaInt.setUsername(sc.nextLine());
  142.                 } catch (RemoteException e) {
  143.                     e.printStackTrace();
  144.                 }
  145.                 return false;
  146.             }));
  147.  
  148.             System.out.print("Insira a Password: ");
  149.             while (!pessoaInt.setPassword(sc.nextLine()))
  150.                 System.out.print("Por favor insira uma password com entre 8 a 20 caracteres.\n");
  151.  
  152.             System.out.print("Insira o número de telemovél: ");
  153.             while (!pessoaInt.setTelemovel(sc.nextLine()))
  154.                 System.out.print("Por favor insira um número de telemóvel com apenas 9 dígitos.\n");
  155.  
  156.             System.out.print("Insira a Morada: ");
  157.             while (!pessoaInt.setMorada(sc.nextLine()))
  158.                 System.out.print("Por favor insira pelo menos 1 caracter na morada.\n");
  159.  
  160.             System.out.print("Insira Código Postal: ");
  161.             while (!pessoaInt.setCodigoPostal(sc.nextLine()))
  162.                 System.out.print("Por favor insira um código postal neste formato '0000-000'.\n");
  163.  
  164.             System.out.print("Insira Localidade: ");
  165.             while (!pessoaInt.setLocalidade(sc.nextLine()))
  166.                 System.out.print("Por favor insira uma localidade com pelo menos 1 caractér.\n");
  167.  
  168.             System.out.print("Insira o número do Cartão de Cidadão: ");
  169.             while (!pessoaInt.setNumeroCC(sc.nextLine()))
  170.                 System.out.print("Por favor insira um número de cartão de cidadão com apenas 8 dígitos.\n");
  171.  
  172.             if (pessoaInt.isAluno()) {
  173.                 alunoInt = (AlunoInt) pessoaInt;
  174.                 System.out.print("Insira o Número de Aluno: ");
  175.                 while (!alunoInt.setNumeroAluno(sc.nextLine()))
  176.                     System.out.print("Por favor insira um número de aluno com apenas 10 digitos.\n");
  177.  
  178.                 System.out.print("Insira um Curso: ");
  179.                 while (!alunoInt.setCurso(sc.nextLine()))
  180.                     System.out.print("Por favora insira o nome do curso usando apenas letras.\n");
  181.             }
  182.  
  183.             if (pessoaInt.isDocente()) {
  184.                 docenteInt = (DocenteInt) pessoaInt;
  185.                 System.out.print("Insira o Cargo: ");
  186.                 while (!docenteInt.setCargo(sc.nextLine()))
  187.                     System.out.print("Por favor insira um cargo com pelo menos 1 caractér.\n");
  188.             }
  189.  
  190.             if (pessoaInt.isFuncionario()) {
  191.                 funcionarioInt = (FuncionarioInt) pessoaInt;
  192.                 System.out.print("Insira a Função: ");
  193.                 while (!funcionarioInt.setFuncao(sc.nextLine()))
  194.                     System.out.print("Por favor insira uma função com pelo menos 1 caractér.\n");
  195.             }
  196.  
  197.             Data.editData("a validade do cartão de cidadão", (DataInt) getRegistry(pessoaInt.getValidadeCC()));
  198.             Data.editData("a data de nascimento", (DataInt) getRegistry(pessoaInt.getDataNascimento()));
  199.  
  200.             escolheGenero();
  201.             return true;
  202.  
  203.         } catch (Exception e) {
  204.             e.printStackTrace();
  205.             return false;
  206.         }
  207.     }
  208.  
  209.     private static boolean edit(PessoaInt pi) {
  210.         pessoaInt = pi;
  211.         try {
  212.             getProperty(pessoaInt.print() + "\nPor favor insira a propriedade a editar: ",
  213.                     "Por favor insira uma característica correspondente a uma das disponíveis.\n",
  214.                     () -> {
  215.                         try {
  216.                             return contains(new String[]{
  217.                                     "nome",
  218.                                     "username",
  219.                                     "password",
  220.                                     "departamento",
  221.                                     "nº telemóvel",
  222.                                     "nº telemovel",
  223.                                     "no telemóvel",
  224.                                     "no telemovel",
  225.                                     "morada",
  226.                                     "código postal",
  227.                                     "codigo postal",
  228.                                     "localidade",
  229.                                     "número c.c.",
  230.                                     "numero c.c.",
  231.                                     "número cc",
  232.                                     "numero cc",
  233.                                     "validade c.c.",
  234.                                     "validade cc",
  235.                                     "género",
  236.                                     "genero",
  237.                                     "data nascimento"
  238.                             }, r2 = sc.nextLine()) ||
  239.                                     pessoaInt.isAluno() && contains(new String[]{
  240.                                             "nºaluno",
  241.                                             "no aluno",
  242.                                             "curso"
  243.                                     }, r2) ||
  244.                                     pessoaInt.isFuncionario() && contains(new String[]{
  245.                                             "função",
  246.                                             "funçao",
  247.                                             "funcão",
  248.                                             "funcao"
  249.                                     }, r2) ||
  250.                                     pessoaInt.isDocente() && r2.toLowerCase().equals("cargo");
  251.                         } catch (Exception e) {
  252.                             e.printStackTrace();
  253.                         }
  254.                         return false;
  255.                     });
  256.         } catch (Exception e) {
  257.             e.printStackTrace();
  258.             return false;
  259.         }
  260.  
  261.         switch (r2.toLowerCase()) {
  262.             case "nome":
  263.                 getProperty("Por favor insira um nome só com letras.\n",
  264.                         () -> {
  265.                             try {
  266.                                 return !pessoaInt.setNome(editProperty("Nome", pessoaInt.getNome()));
  267.                             } catch (Exception e) {
  268.                                 e.printStackTrace();
  269.                             }
  270.                             return false;
  271.                         });
  272.                 break;
  273.             case "username":
  274.                 getProperty("Por favor insira um username com entre 8 a 20 caracteres.\n",
  275.                         () -> {
  276.                             try {
  277.                                 return !pessoaInt.setUsername(editProperty("Nome", pessoaInt.getUsername()));
  278.                             } catch (Exception e) {
  279.                                 e.printStackTrace();
  280.                             }
  281.                             return false;
  282.                         });
  283.                 break;
  284.             case "password":
  285.                 getProperty("Por favor insira uma password com entre 8 a 20 caracteres.\n",
  286.                         () -> {
  287.                             try {
  288.                                 return !pessoaInt.setPassword(editProperty("Password", pessoaInt.getPassword()));
  289.                             } catch (Exception e) {
  290.                                 e.printStackTrace();
  291.                             }
  292.                             return false;
  293.                         });
  294.                 break;
  295.             case "departamento":
  296.                 //
  297.                 break;
  298.             case "nº telemóvel":
  299.             case "nº telemovel":
  300.             case "no telemóvel":
  301.             case "no telemovel":
  302.                 while (!pessoaInt.setTelemovel(editProperty("Nº Telemóvel", String.valueOf(pessoaInt.getTelemovel()))))
  303.                     System.out.print("Por favor insira um número de telemóvel com apenas 9 dígitos.\n");
  304.                 break;
  305.             case "morada":
  306.                 while (!pessoaInt.setMorada(editProperty("Morada", pessoaInt.getMorada())))
  307.                     System.out.print("Por favor insira pelo menos 1 caracter na morada.\n");
  308.                 break;
  309.             case "código postal":
  310.             case "codigo postal":
  311.                 while (!pessoaInt.setCodigoPostal(editProperty("Código Postal", pessoaInt.getCodigoPostal())))
  312.                     System.out.print("Por favor insira um código postal neste formato '0000-000'.\n");
  313.                 break;
  314.             case "localidade":
  315.                 while (!pessoaInt.setLocalidade(editProperty("Localidade", pessoaInt.getLocalidade())))
  316.                     System.out.print("Por favor insira uma localidade com pelo menos 1 caractér.\n");
  317.                 break;
  318.             case "número c.c.":
  319.             case "numero c.c.":
  320.             case "número cc":
  321.             case "numero cc":
  322.                 while (!pessoaInt.setNumeroCC(editProperty("Número C.C.", String.valueOf(pessoaInt.getNumeroCC()))))
  323.                     System.out.print("Por favor insira um número de cartão de cidadão com apenas 8 dígitos.\n");
  324.                 break;
  325.             case "validade c.c.":
  326.             case "validade cc":
  327.                 try {
  328.                     Data.editData("a validade do cartão de cidadão", (DataInt) getRegistry(pessoaInt.getValidadeCC())));
  329.                 } catch (Exception e) {
  330.                     e.printStackTrace();
  331.                 }
  332.                 break;
  333.             case "género":
  334.             case "genero":
  335.                 try {
  336.                     System.out.print("Género Antigo: " + pessoaInt.getGenero());
  337.                 } catch (Exception e) {
  338.                     e.printStackTrace();
  339.                 }
  340.                 escolheGenero();
  341.                 break;
  342.             case "data nascimento":
  343.                 try {
  344.                     Data.editData("a data de nascimento", (DataInt) getRegistry(pessoaInt.getDataNascimento())));
  345.                 } catch (Exception e) {
  346.                     e.printStackTrace();
  347.                 }
  348.                 break;
  349.             case "nº aluno":
  350.             case "no aluno":
  351.                 alunoInt = (AlunoInt) pessoaInt;
  352.                 while (!alunoInt.setNumeroAluno(editProperty("Nº Aluno", String.valueOf(alunoInt.getNumeroAluno()))))
  353.                     System.out.print("Por favor insira um número de aluno com apenas 10 digitos.\n");
  354.                 break;
  355.             case "curso":
  356.                 alunoInt = (AlunoInt) pessoaInt;
  357.                 while (!alunoInt.setCurso(editProperty("Curso", alunoInt.getCurso())))
  358.                     System.out.print("Por favora insira o nome do curso usando apenas letras.\n");
  359.                 break;
  360.             case "cargo":
  361.                 docenteInt = (DocenteInt) pessoaInt;
  362.                 while (!docenteInt.setCargo(editProperty("Cargo", docenteInt.getCargo())))
  363.                     System.out.print("Por favor insira um cargo com pelo menos 1 caractér.\n");
  364.                 break;
  365.             case "função":
  366.             case "funçao":
  367.             case "funcão":
  368.             case "funcao":
  369.                 funcionarioInt = (FuncionarioInt) pessoaInt;
  370.                 while (!funcionarioInt.setFuncao(editProperty("Função", funcionarioInt.getFuncao())))
  371.                     System.out.print("Por favor insira uma função com pelo menos 1 caractér.\n");
  372.                 break;
  373.         }
  374.  
  375.         getProperty(
  376.                 "Quer editar mais alguma Propriedade?\n" +
  377.                 "1 - Sim\n" +
  378.                 "2 - Não\n",
  379.                 "Por favor insira um número correspondente a uma das opções disponíveis.\n",
  380.                 () -> contains(new int[]{1, 2}, r1 = sc.nextInt()));
  381.  
  382.         switch (r1) {
  383.             case 1:
  384.                 edit(pessoaInt);
  385.                 break;
  386.  
  387.             case 2:
  388.         }
  389.         return true;
  390.     }
  391. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement