Advertisement
Guest User

Untitled

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