9
}
10
catch (Exception e) {
11
logger.error("getUsername()", e);
12
}
13
return name;
14
}
Listing 6.7: File XML prodotto on l'utilizzodella libreria JDOM
1
<?xml version="1.0" encoding="UTF−8"?>
2
<scansione>
3<date>16/01/2012</date>
4<time>23:12:59</time>
5<pages>4</pages>
6<path>C:/DesktopApplication/Storico/</percorso>
7<file>16012012_231259.tiff</file>
8</scansione>
9}
6.3.1 Gestione dei dati inseriti tramite form
Le spe i he di progetto ri hiedono he il do umento digitalizzato sia inviato al
ba k o e,a ompagnato da al unidati. Tali dati sono informazioni
riguardan-ti il do umento s ansionato e servono per favorirne la gestione, l'ar hiviazione
e la ri er a all'interno del sistema do umentale. I dati allegati vengono inseriti
dall'operatore durante la ompilazione dell'apposito form; vediamo quindi ome
siapossibilelarealizzazione diquesto ompito on l'aiutodel omponente
Cook-Swing, he obbligal'utenteaservirsi (seppurinmanieralimitata)dellespe i he
dello standard DOM.
Il Do ument Obje t Model èuno standard he denis e una serie di
fun-zionalità per a edere ed aggiornare il ontenuto, la struttura e lo stile di un
do umento (XML, HTML o XHTML 10
) rappresentandolo tramite una
struttu-ra ad albero. In base a questo appro io, la struttura del do umento preso in
10
XHTML: eXtensible HyperText Markup Language. Per approfondimenti si veda
onsiderazione viene reata nella memoriadella ma hina ome una gerar hiadi
oggetti, ias uno deiqualirappresentaundiversoelementodeldo umento. DOM
mette a disposizionedelle API per rappresentare tali elementi ed interagire on
essi e denis e inoltre lastruttura logi a deido umenti. UtilizandoDOM sipuò
quindi ostruire un do umento,navigare attraverso lasua struttura, aggiungere,
modi areo an ellare elementi.
L'implementazionead albero, tipi a di DOM ha però una ontroindi azione:
ri- hiede hel'intero ontenutodiundo umentovengaanalizzatoesalvatoin
memo-ria. DOM è utilizzatoprin ipalmente perre uperare informazionida do umenti
on unastrutturazione nonstandard, ioèdoveglielementidevonoessere trovati
in modo asuale. Per le appli azioni basate su XML he usano un pro esso di
lettura es rittura sequenziale, DOM presentaun grandespre o di memoria;per
questo tipo diappli azioni si onsiglia diusare il modello SAX.
Le spe i he dello standard DOM elaborate dal W3C sono suddivise in tre
livelli,manon andremo astudiare neidettagliqualisiano le loro aratteristi he.
Ci basta ri ordare he i livelliri al ano quelle he sono le evoluzioni ompiute
dalDOM: onilpassaredegli anni, onl'evolversidelle potenzialitàdeilinguaggi
e degli strumenti utilizzati nel Web, si è dovuto adattare ed aggiornare an he
DOM.Illivello1, ompletatonel1998,fornis eilsupportoperXML1.0 eHTML
4.0 edenis e glielementi DOM dibase on interfa e ontenenti imetodie gli
attributidiuso più omune. Il livello2 (2000,W3C Re omendation dagennaio
2003) haesteso ilprimo livello,introdu endo diverse funzionalità,tra uileviste
ltrate ed inamespa e. Inneilterzoed ultimolivello(W3C Re omendationda
aprile 2004), he ha introdotto nuovi metodi ed interfa e per una navigazione
più rapidanel do umentoe perla validazionediesso. Nell'immagineè riportato
lo s hema on i moduli delle funzioni denite dalle spe i he, osì ome appare
dopoil raggiungimentodel terzo ed ultimolivello.
Nel frammento di odi e he segue (listato 6.8), viene mostrata quale sia la
pro edura da seguire per ri avare le informazioni immesse on la ompilazione
dei ampi ditesto del form.
Le lassi Java oinvolte nell'elaborazione mediante DOM sono ontenute nei
seguenti pa kage:
•
javax.xml.parsers ontiene la lasse Do umentBuilder he permette di reareunparserDOMed utilizzarequest'ultimoperottenereunastruttura•
org.w3 .dom denis e tutte leinterfa e oinvolte nella rappresentazione diun do umentoXML.Figura 6.3: Do umentObje t Module - Vistadi tuttii moduli
La parte riguardantela reazione del le XML di output (quella he riporta
tutti i dati inseriti nei ampi di testo) è tralas iata per hé analoga a quanto già
vistoin pre edenza (listato6.5).
Il pro edimento di estrazione delle informazioniinserite nel form non è
parti o-larmente ompli ato. I passi da seguiresono i seguenti:
•
reare un oggetto builder di tipo Do umentBuilder. Il metodo CookSwing .getSwingDo umentBuilder( ); restituis eilbuilderdidefaultperlarea-zionedi un oggetto ditipo CookSwing;
•
eseguireilparse deldo umentoXML(nellafattispe ie,delle he denis e lastruttura del formrelativo alBoni o Ban ario (listato6.4);•
inizializzare una org.w3 .dom.NodeList he punti a tutti gli elementi del do umentoil uitag è <formattedtexteld> ;•
per ias unelemento, reareuna stringa he sarà inizializzata on ilvalore dell'attributoid;•
ottenere, on (JTextField) ookSwing.getId( stri ng). obje t), un og-gettoditipoJTextField. L'istruzioneriportataesegueil astaJTextFielddelriferimentoall'oggetto CookSwing he ha perid lastringa spe i ata
(quella reata alpuntopre edente);
•
ottenere, inne, il testo inserito dall'utente tramite il form,ri hiamando il metodogetText() sull'oggettoJTextFieldappena reato.Listing6.8: Cattura deidati inseriti nelform perun Boni o Ban ario
1
DocumentBuilder builder = CookSwing.getSwingDocumentBuilder();
2
File f = new File("C:\\DesktopApplication\\Xml\\Bonifico.xml")
;
3