CSVGenerator
O CSVGenerator tem o objeto de permitir a geração de arquivos CSV a partir da estrutura de dados utilizada pelo BIS. Aproveito a estrutura dos VOs e BISMetaObjects (VO_), isto é, aceita uma lista de VOs, e gera o arquivo CSV a partir das colunas selecionadas de dentro desses objetos.
Para exemplificar o funcionamento de todas as partes do CSVGenerator vamos imaginar que queremos exportar como CSV nosso cadastro de pessoas, lista de PersonVO.
CSVGeneratorOptions
O CSVGeneratorOptions carrega praticamente toda a configuração de como o arquivo deve ser gerado. Desta forma é possível realizar toda a definição em qualquer cama (UI por exemplo) e passar para o gerador de uma única vez. Permite que seja criado um componente único para manipular o objeto para as UIs e reaproveitado em todas as telas, útil principalmente quando o gerador ganha novas opções.
Entre as configurações básicas do arquivo estão:
- Delimitador - utilizado para separar os campos do arquivo
- Localidade - Define a localidade para formatação básica dos valores, como caractere de decimais, data, etc.
- Títulos das Colunas - Define se deve ser escrito uma linha no começo com os títulos das colunas.
- Valor de Nulo - Valor que deve ser utilizado caso o objeto tenha um valor nulo. Por padrão não é escrito nada, o equivalente á "", mas pode ser necessário distinguir o "" do null.
CSVGenerator
Todos os atributos de configuração já tem um valor padrão, de forma que para gerar um CSV, basta definir as colunas desejadas e passar a coleção de dados no método .generate().
![]() |
Exemplos de Uso
// Define as colunas no options
options.setColumns(new String[]{
PersonVO_.VO.displayname(),
PersonVO_.VO.fullname(),
PersonVO_.VO.cpfcnpj()
});
// Construtor vazio cria um CSVGeneratorOptions com a opções padrão. Mas depois tem que pegar o options para colocar as colunas ou terá um CSV vazio.
final CSVGenerator<PersonVO> gen = new CSVGenerator<PersonVO>(options);
// Retorna o CSV com as colunas selecionadas.
return gen.generate(personList);
|
![]() |
|
O arquivo foi gerado, mas muitas vezes não é o que desejamos. Agora para formatar, configurar e manipular os dados é que precisará de configurações adicionais.
Formatando os Dados
A formatação dos dados é feita de forma simples e de acordo com o locale passado. São formatados os números e datas apenas. De resto os campos são escritos utilizando o equivalente ao .toString() do objeto, e apenas dos objetos conhecidos pelo CSVGenerator, como String, BigDecimal, Enum, Float, Double, etc.. Outros formatos geram exception crítica para forçar um tratamento mais adequado do desenvolvedor.
O CSVGenerator permite a configuração das colunas utilizando a interface BISDataFormatter. Para isso defina a instância do BISDataFormatter desejado na coluna através do CSVGeneratorOptions:
![]() |
Exemplos de Uso
// inclui o formatador de cpf/cnpj na coluna com o valor do documento
options.getColumnFormatter().put(PersonVO_.VO.cpfcnpj(), BISCPFOrCNPJDataFormatter.getInstance());
|