L’esportazione dei dati in formati leggibili come Excel o TXT è un requisito immancabile nei progetti software di qualsiasi dimensione. Un requisito che, nella maggior parte dei casi, richiede la riscoperta dell’acqua calda e la riscrittura di codice di cui ci eravamo completamente dimenticati. Quello dell’esportazione, inoltre, è uno di quei requisito che si tende a sottovalutare o comunque ad analizzare solo nelle fasi avanzate di un progetto.
Per questo motivo voglio segnalarvi un framework che consente, in modo rapido, di implementare una procedura di esportazione dei dati utilizzando semplici oggetti java (pojo per l’appunto), opportunamente annotati, in modo da descrivere come si intende esportare l’informazione.
Per chi ne fosse a digiuno e volesse una panoramica sulle Java Annotation posso suggerirvi l’articolo Java Annotations tutorial with examples molto completo ed esaustivo.
Il framework, rilasciato in open source con licenza GPLv3, è disponibile su GitHub nella pagina Inspired Exporter a cui rimando per tutti gli approfondimenti disponibili nella sezione Wiki. Questo articolo, infatti, è solo una rapida introduzione alla configurazione ed utilizzo.
Innanzitutto il jar del framework è disponibile su MVN Repository sia per il download che per la configurazione in un progetto Maven. La dependency da utilizzare, in questo caso, è:
1 2 3 4 |
<repository> <id>JBOSS_NEXUS</id> <url>http://repository.jboss.org/nexus/content/groups/public</url> </repository> |
1 2 3 4 5 |
public class Persona { private String nome; private String cognome; /* gettere and setter */ } |
La configurazione del model ai fini dell’export avviene semplicemente annotando la classe Persona con l’annotazione @ExpoElement. L’esportazione, invece, si realizza attraverso l’utilizzo della classe TextExporter come mostrato di seguito:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public class TextMain { public static void main(String[] args) { TextExporter txt = new TextExporter(); /* * Generate the test data */ List<User> list = new ArrayList<User>(); list.add( new User( "John", "Doe", "jodoe", "john.doe.1" ) ); list.add( new User( "Jane", "Doe", "jadoe", "jane.doe.2" ) ); try { txt.init(); txt.export(list); txt.finalyze(); txt.write( System.out ); } catch (Exception e) { e.printStackTrace(); } } } |
per ottenere l’output:
1 2 3 4 |
Login;Name;Surname "jodoe";"John";"Doe" "jadoe";"Jane";"Doe" |
Già da questo semplice esempio è comprensibile quanto sia utile disporre di uno strumento che semplifichi notevolmente la scrittura del codice per l’esportazione dei dati. Le configurazioni possibili sono diverse, come ad esempio cosa esportare e cosa non esportare, ma non mi dilungo in questo post perché molto ben documentate nel Wiki della pagina GitHub.