Class CsvLineParser

java.lang.Object
com.raphaelsalles.backend.domain.service.importer.csv.CsvLineParser

public class CsvLineParser extends Object
Utilitário de Parsing de Linhas CSV.

Propósito: Extrair e converter dados brutos (Strings) de arquivos CSV em tipos Java (BigDecimal, LocalDate). Lida com formatação brasileira (vírgula decimal) e sanitização de strings.

  • Field Details

  • Constructor Details

    • CsvLineParser

      public CsvLineParser()
  • Method Details

    • extractCnpj

      public static String extractCnpj(String[] cols, Map<String,Integer> map)
    • extractDate

      public static LocalDate extractDate(String[] cols, Map<String,Integer> map)
    • extractString

      public static String extractString(String[] cols, Map<String,Integer> map, String colName)
    • isEffectivelyZero

      public static boolean isEffectivelyZero(String s)
      Verifica se o valor é matematicamente zero ou nulo.

      Nota de Auditoria: Usa BigDecimal para evitar problemas de precisão de ponto flutuante.

      Parameters:
      s - A string crua do CSV.
      Returns:
      true se for nulo, vazio, "null" ou 0.00...
    • safeDecimal

      public static BigDecimal safeDecimal(String s)
    • parseDecimalWithScale

      public static BigDecimal parseDecimalWithScale(String rawValue, String[] cols, Map<String,Integer> map, Integer scaleIndex)
      Parseia o valor e aplica a escala monetária (MIL) se necessário.
      Parameters:
      rawValue - Valor bruto.
      cols - Array de colunas.
      map - Mapa de cabeçalho.
      scaleIndex - Índice da coluna de escala (MIL/UNIDADE).
      Returns:
      Valor decimal ajustado.
    • clean

      private static String clean(String s)