Advertisement
GustavoGuidorizzi

classe Util

Dec 30th, 2024
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.13 KB | None | 0 0
  1. package lp2g16.biblioteca;
  2.  
  3. import excep.CodigoInvalidoEx;
  4.  
  5. import java.io.Serializable;
  6. import java.util.*;
  7.  
  8. public class Util implements Serializable {
  9.  
  10.     public Util() {
  11.     }
  12.  
  13.     public static Comparator<Livro> livroC = (p1, p2) -> {
  14.         int pf1, pf2;
  15.         pf2 = p2.getCodigo();
  16.         pf1 = p1.getCodigo();
  17.         return pf1 - pf2;
  18.     };
  19.  
  20.     public static Comparator<Usuario> usuarioC = (p1, p2) -> {
  21.         String pf1, pf2;
  22.         pf2 = ValidaCPF.imprimeCPF(Long.toString(p2.getNumCPF()));
  23.         pf1 = ValidaCPF.imprimeCPF(Long.toString(p1.getNumCPF()));
  24.         return pf1.compareTo(pf2);
  25.     };
  26.  
  27.     public static ArrayList<String> geraListaLivrosOrdenada(ArrayList<Livro> list) {
  28.         list.sort(livroC);
  29.  
  30.         ArrayList<String> listaSimplificada = new ArrayList<>();
  31.         for (Livro livro : list) {
  32.             listaSimplificada.add(livro.getTitulo() + " , " + livro.getAutor()
  33.                     + "\nCód: " + livro.getCodigo()
  34.                     + "\nQtd de copias: " + livro.getQtdCopias() + "\n");
  35.         }
  36.         return listaSimplificada;
  37.     }
  38.  
  39.     public static ArrayList<String> geraListaUsuariosOrdenada(ArrayList<Usuario> list) {
  40.         list.sort(usuarioC);
  41.         ArrayList<String> listaSimplificada = new ArrayList<>();
  42.         for (Usuario user : list) {
  43.             listaSimplificada.add(user.getNome() + " " + user.getSobrenome()
  44.                     + " - CPF: " + ValidaCPF.imprimeCPF(Long.toString(user.getNumCPF()))
  45.                     + " - Endereço: " + user.getEndereco()
  46.                     + "\n");
  47.         }
  48.         return listaSimplificada;
  49.     }
  50.  
  51.     static String formataDatas(GregorianCalendar data) {
  52.         return data.get(Calendar.DAY_OF_MONTH) +
  53.                 "/" + (data.get(Calendar.MONTH) + 1) +
  54.                 "/" + data.get(Calendar.YEAR);
  55.     }
  56.  
  57.     public static String leString(String msg, String regex) {
  58.         boolean strLida = false;
  59.         Scanner scan = new Scanner(System.in);
  60.         String leitura = null;
  61.         while (!strLida) {
  62.             System.out.println(msg);
  63.             leitura = scan.nextLine();
  64.             if (!leitura.isEmpty() && leitura.matches(regex)) {
  65.                 strLida = true;
  66.             }
  67.         }
  68.         return leitura;
  69.     }
  70.  
  71.     public static int leCodigoLivro() throws CodigoInvalidoEx {
  72.         boolean codLido = false;
  73.         Scanner scan = new Scanner(System.in);
  74.         String leitura = null;
  75.         while (!codLido) {
  76.             System.out.println("\nO codigo do livro tem 3 digitos, e vai de 1 a 999: ");
  77.             leitura = scan.nextLine();
  78.             if (ValidaOutrosParam.isCodigo(leitura)) {
  79.                 codLido = true;
  80.             }
  81.         }
  82.         return Integer.parseInt(leitura);
  83.     }
  84.  
  85.     public static String leNomeArquivo() {
  86.         Scanner scan = new Scanner(System.in);
  87.         String leitura;
  88.  
  89.         while (true) {
  90.             System.out.println("Qual eh o nome do seu arquivo salvo? ");
  91.             leitura = scan.nextLine();
  92.             if (!leitura.isEmpty()) {
  93.                 return leitura;
  94.             }
  95.         }
  96.     }
  97.  
  98.     public static int leQtd(String msg) throws IllegalArgumentException {
  99.         boolean qtdLida = false;
  100.         Scanner scan = new Scanner(System.in);
  101.         String leitura;
  102.         int qtd = 0;
  103.         while (!qtdLida) {
  104.             System.out.println(msg);
  105.             leitura = scan.nextLine();
  106.             try {
  107.                 qtd = Integer.parseInt(leitura);
  108.             } catch (NumberFormatException e) {
  109.                 throw new IllegalArgumentException();
  110.             }
  111.             if (qtd > 0 && qtd < 100) {
  112.                 qtdLida = true;
  113.             } else {
  114.                 System.out.println("A quantidade minima eh 0, e a maxima, 100.");
  115.             }
  116.         }
  117.         return qtd;
  118.     }
  119.  
  120.     public static String leCPF_Usuario() throws IllegalArgumentException {
  121.         boolean CPFLido = false;
  122.         Scanner scan = new Scanner(System.in);
  123.         String leitura = null;
  124.         while (!CPFLido) {
  125.             System.out.println("\nCPF precisa ser valido, e estar em um dos seguintes formatos: ");
  126.             System.out.println("12345678901 ou 123.456.789-01 ou 123.456.789/01");
  127.             System.out.print("Forneça o CPF:  ");
  128.             leitura = scan.nextLine();
  129.             if (ValidaCPF.isCPF(leitura)) {
  130.                 CPFLido = true;
  131.             }
  132.         }
  133.         return leitura;
  134.     }
  135.  
  136.     // funciona
  137.     public static Livro.Categorias leCategoria(String msg) throws IllegalArgumentException {
  138.         boolean catLida = false;
  139.         Scanner scan = new Scanner(System.in);
  140.         String leitura = null;
  141.         while (!catLida) {
  142.             System.out.println(msg);
  143.             leitura = scan.nextLine();
  144.             if (!leitura.isEmpty() && Livro.isCategoria(leitura.toUpperCase())) {
  145.                 catLida = true;
  146.             } else {
  147.                 System.out.println("\nCategoria invalida! Escolha corretamente da lista de categorias:\n "
  148.                         + Arrays.toString(Livro.Categorias.values()));
  149.             }
  150.         }
  151.         return Livro.Categorias.valueOf(leitura);
  152.     }
  153.  
  154.     protected static String leDia() throws IllegalArgumentException {
  155.         boolean diaLido = false;
  156.         Scanner scan = new Scanner(System.in);
  157.         String leitura = null;
  158.         while (!diaLido) {
  159.             System.out.println("\nDia deve ter um valor entre 1 e 31");
  160.             System.out.print("Informe o dia:  ");
  161.             leitura = scan.nextLine();
  162.             if (ValidaData.isDia(leitura)) {
  163.                 diaLido = true;
  164.             }
  165.         }
  166.         return leitura;
  167.     }
  168.  
  169.     protected static String leMes() throws IllegalArgumentException {
  170.         boolean mesLido = false;
  171.         Scanner scan = new Scanner(System.in);
  172.         String leitura = null;
  173.  
  174.         while (!mesLido) {
  175.             System.out.println("\nMes deve ter um valor entre 1 e 12, ou ser escrito corretamente por extenso");
  176.             System.out.print("Informe o mes:  ");
  177.             leitura = scan.nextLine();
  178.             if (ValidaData.isMes(leitura)) {
  179.                 mesLido = true;
  180.             }
  181.         }
  182.         return leitura;
  183.     }
  184.  
  185.     protected static String leAno() throws IllegalArgumentException {
  186.         boolean anoLido = false;
  187.         Scanner scan = new Scanner(System.in);
  188.         Calendar cal = new GregorianCalendar();
  189.         String leitura = null;
  190.         while (!anoLido) {
  191.             int anoCorrente = cal.get(Calendar.YEAR);
  192.             System.out.println("\nAno deve estar entre o ano corrente e " + (anoCorrente - 120));
  193.             System.out.print("Informe o ano:  ");
  194.             leitura = scan.nextLine();
  195.             if (ValidaData.isAno(leitura)) {
  196.                 anoLido = true;
  197.             }
  198.         }
  199.         return leitura;
  200.     }
  201.  
  202.     public static GregorianCalendar leDatas() {
  203.  
  204.         String[] datas = new String[3];
  205.  
  206.         try {
  207.             datas[0] = leDia();
  208.         } catch (Exception e) {
  209.             System.out.println("Erro ao ler o dia" + e.getMessage());
  210.         }
  211.  
  212.         try {
  213.             datas[1] = leMes();
  214.         } catch (Exception e) {
  215.             System.out.println("Erro ao ler o mes: " + e.getMessage());
  216.         }
  217.  
  218.         try {
  219.             datas[2] = leAno();
  220.         } catch (Exception e) {
  221.             System.out.println(e.getMessage());
  222.         }
  223.  
  224.         try {
  225.             if ((!datas[1].matches("^[0-9]{1,2}$")
  226.                     || !ValidaData.isDataValida(Integer.parseInt(datas[0]), Integer.parseInt(datas[1]),
  227.                     Integer.parseInt(datas[2]))) && !ValidaData.isDataValida(Integer.parseInt(datas[0]), datas[1],
  228.                     Integer.parseInt(datas[2]))) {
  229.                 System.out.println("A data informada nao existe. Por favor tente de novo");
  230.                 leDatas();
  231.             }
  232.         } catch (IllegalArgumentException e) {
  233.             System.out.println(e.getMessage());
  234.         }
  235.  
  236.         return new GregorianCalendar(Integer.parseInt(datas[0]),
  237.                 Integer.parseInt(datas[1]), Integer.parseInt(datas[2]));
  238.     }
  239.  
  240. }
  241.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement