Ufix

Articoli, guide e quant'altro su GNU-Linux, accessibilitĂ  e informatica in generale

Chi sono

Utente: ufeec
Nome: Marco Carnazzo
Un computer con le scarpe da tennis. Sostenitore del software libero, della nonviolenza e della musica world. Convinto che "chi porta la veritĂ  fa aumentare il dubbio".

Archivio

oggi
--- 2007 ---
--- 2006 ---
--- 2005 ---

Partecipano

Foto recenti

Bottoni

  • Contattami
  • Il mio profilo
  • Linkami


  • RSS 2.0
  • ATOM 0.3
  • Powered by Splinder

Contatore

visitato *loading* volte
domenica, 12 febbraio 2006

Creare report con Java

Foto di una pennaUltimamente mi è capitato di dover creare dei report con Java. Visto che mi è riuscito difficile trovare informazioni su Internet (le uniche cose che ho trovato erano in russo!), spero di fare cosa gradita raccontando come ho risolto il problema.
Ci tengo a precisare che questo è solo un articolo introduttivo: ci sarebbe tanto altro da dire sull'argomento.


Innanzitutto cosa si intende per report in questo articolo: un file RTF contenente alcuni dati raccolti a runtime.

Mi sono servito di una libreria chiamata VK Reports (cliccare nel link per andare nella pagina dove scaricarla) e creata da Vlad Karpov e rilasciata sotto licenza GPL.

Per svolgere il suo compito, VK Reports parte da un file RTF contenente un modello, cioé un documento con del testo scritto fisso e con dei parametri (delimitati da due tilde). Importante: per creare l'RTF non usate Word o Wordpad, perché inseriscono roba in più nell'RTF che VK Reports non è in grado di riconoscere (il risultato sarà che il file finale sarà un foglio bianco).

Ecco un esempio di modello, tratto dal programma che sto sviluppando per la mia tesi di laurea (nota: i colori non sono necessari e sono inseriti qui solo per chiarezza grafica):

#BEGIN VKREPORT
#BEGIN SECTION REPORT HEADER
Codice del bambino: ~codiceBambino~

Test svolto il ~dataTest~
Presso la scuola ~scuolaTest~ - sezione ~sezioneTest~
Da ~somministratoreTest~

Parola - Tipo - Scritta correttamente?
#END SECTION REPORT HEADER
#BEGIN SECTION BODY
~parolaAttesa~ - ~parolaTipo~ - ~parolaCorretta~
#END SECTION BODY
#BEGIN SECTION REPORT FOOTER

Numero parole corrette: ~paroleCorrette~/~paroleTotali~
#END SECTION REPORT FOOTER
#END VKREPORT


Un report viene creato analizzando un modello: durante l'analisi vengono scatenati determinati eventi (ad esempio se viene trovato un parametro all'interno di un modello); tramite un'opportuna gestione degli eventi viene creato il file RTF contenente il report finale.

Di seguito il codice Java per creare un report:


private String fileIn, fileOut;
private TWordReport report = new TWordReport();
private ReportListener listener = new ReportListener();

report.setInputBlank(fileIn);
report.setOutputReport(fileOut);
report.addVKRepListener(listener);
report.execute();


Dove:
  • fileIn è il nome del file RTF contenente il modello.
  • fileOut è il nome del file RTF di destinazione.
  • ReportListener è la classe contenente le funzioni che gestiscono gli eventi scatenati dall'analisi del modello.
Nelle funzioni che gestiscono gli eventi, bisogna spesso legare un parametro legato all'evento ad una stringa data dal programma. Sia string la stringa da passare, ed e l'evento scatenante, ecco il codice necessario:


System.arraycopy(string.getBytes("ISO-8859-15"),
                 0, e.outData, 0, string.length());
e.outDataLen = string.length();


Notare che si è scelto come tipo di encoding l'ISO-8859-15. Si può comunque scegliere ogni altro tipo di encoding.

Le funzioni principali dell'ascoltatore di eventi sono:
  • moveTop(VKRepEvent e): VK Reports richiede di spostarsi all'inizio della sorgente dati.
  • moveNext(VKRepEvent e): VK Reports richiede di spostarsi alla prossima riga della sorgente dati.
  • requestByName(VKRepEvent e): è stato richiesto un determinato parametro.
Ecco il risultato finale, partendo dal modello dato:

Test svolto il 6/12/2005
Presso la scuola Edmondo De Amicis di Rovereto - sezione A
Da Vincenzo Carnazzo

Parola - Tipo - Scritta correttamente?
gufo - Bisillaba - Si'
filo - Bisillaba - Si'
tela - Bisillaba - Si'
rete - Bisillaba - Si'
palco - Bisillaba - Si'
barca - Bisillaba - Si'
strega - Bisillaba - Si'
fronte - Bisillaba - Si'
minuto - Trisillaba - No
catino - Trisillaba - No
pedale - Trisillaba - No
valanga - Trisillaba - No
coperta - Trisillaba - No
trombone - Trisillaba - No
minestra - Trisillaba - No

Numero parole corrette: 8/16


Questo era solo un assaggio: lascio fare a voi di meglio usando la javadoc scritta da Karpov.


La foto è tratta da Wiki Commons.
Gli esempi sono tratti dal programma SeDiciParole.
postato da: ufeec alle ore 21:45 | link | commenti (1)
categorie: come fare per, per addetti ai lavori
giovedì, 02 febbraio 2006

No 1984

Velocemente, un sito a chi vuol saperne di più su Palladium, Trusted Computing e quanto di orribile è alle porte dell'informatica.
E anche a chi come me adora e teme George Orwell...
postato da: ufeec alle ore 22:59 | link | commenti
categorie: recensioni, riflessioni, per tutti