9
Graphics2D g2d = grayScaledImage.createGraphics();
10
g2d.drawImage(sourceImage, 0, 0, null);
11
g2d.dispose();
12
return grayScaledImage;
Per terminare on l'analisi delle lassi, si elen ano i metodi ontenuti
nel-la lasse di supporto Tools e si fornis e, per ias uno di essi, una breve frase
espli ativadella loro funzione.
•
reateAppFolder()e reateFolder(String path)sio upanodella rea-zione delle artelle ne essarie al software per salvare ledi ongurazione,loged immaginis ansionate;
•
reateLogXML(String username, String date, String time, String numberOfPages, String path, String fName, String savingName) ereateSour eXML(String sour eName) reano i leXML di log ed il le
sour e.xml;
•
date() e time() sono usati per la ra olta di informazionisu data ed ora dis ansione;•
deleteAllFiles(String path)edeleteFolder(String path)eseguono, rispettivamente, la an ellazionedeilepresentiinuna artellael'elimina-zione diun'intera artella;
•
reateTrayI on() perla razione dell'i onanella system tray;•
setSour e(String path) seleziona per l'utilizzo il dispositivo spe i ato nel le, passatogli ome parametro. In aso il lenon esista o ildispositi-vo riportato nel le non sia disponibile, onsente una nuova selezione del
dispositivoe vi s rive ilnome su le;
•
MultiPageTIFF(BufferedIma ge[℄ array, File file)esaveToTIFF(int n, BufferedImage sour eImage) on orronoalla reazionediunleTIFFmultipagina (il primo) ed alla onversione da BufferedImage a le TIFF
(ilse ondo);
•
showImage(BufferedImage sour eImage, JS rollPane s rollPane)fa sì he la BueredImage passata ome parametro venga visualizzata nelpannellospe i ato;
•
sentMessageFrame(String message, String titleFrame, ImageI on i on)ewarningFrame(String message, String titleFrame) sonoin-vo ati per la reazione, rispettivamente, di JOptionFrame ti tipo
INFOR-MATION_MESSAGE eWARNING_MESSAGE.
•
doExit() esegue l'us ita dal programma, mostrando un JOptionPane di tipoOK_CANCEL_OPTION heri hiedeuna onfermaprimadi hiuderel'appli azione.
Non ritengo ne essario riportare il odi e di al uno di questi metodi, poi hé,
salvo quelli di ui si è già trattato in pre edenza, gli altri fanno uso di
las-si Java note ai più e presentano un'implementazione sempli e e lineare, la ui
omprensione non ri hiede parti olarisforzi.
8.7 La libreria Log4j e lo strumento Log4E
Log4j èuna libreriaJavasviluppatadallaApa he Software Foundation he
on-sente di implementare un ottimo sistema di logging per ontrollare il
ompor-tamento di un'appli azione in fase di sviluppo; è uno dei sistemi di logging più
utilizzato per le appli azioni Java, tanto da essere onsiderato uno standard de
fa to. Senzadubbio,un ledilogè inutile quandosi trattadipo he righe di
o-di e,madiventaessenzialequandoil odi ediventapiù omplessoe,soprattutto,
quando si lavora inun team. Sipro ede on la spiegazione dell'utilizzo di Log4j
edel pluginperl'IDE E lipse Log4E.
Innanzitutto, è ne essario importare la libreria Log4j all'interno del proprio
progetto: peristruzioni riguardanti questa pro edura si rimanda allalettura del
per ongurare lalibreriaeutilizzarlaall'internodi un'appli azione. Cias un le
di properties denis e tre entità he svolgono tre diverse funzioni:
•
ilLoggerspe i adi osasivogliatenertra ia(quali lassi,qualipa kage, e .);•
l'Appenderspe i al'outputsu uisivuolevisualizzareillog(la onsole, un le ditesto, e .);•
il Layout spe i a il formato di output del log (testo, le xml, le html, e .).Una volta reato il le di properties, si può pro edere on l'uso della libreria.
Per prima osa va importato il pa kage on le lassi ne essarie alla reazione
dellog(import org.apa he.log4j.Logger;). Inse ondabattutasideve reare
l'oggetto Logger per poterlo utilizzare all'interno del programma. Per far iò è
ne essario inserireilseguente omando private stati final Logger logger
= Logger.getLogger(MyClass. la ss),fa endoattenzioneadimpostareilnome
della propria lasse nel parametro del ostruttore. A questo punto si può
pro- edere on l'utilizzazione dell'oggetto logger per reare i log attraverso i metodi
messi a disposizione dalla libreria. Per portare un esempio, una strategia dame
stesso utilizzataè quella he vede l'inserimento,all'interno del blo o at h, di
un omando del tipo logger.error(Messaggio); tale istruzione, se eseguita,
aggiungeallog una vo e ERROR esegnala he è stata generata e atturata una
parti olare e ezione (il ui nome è di solito spe i ato nel parametro di input
delmetodo).
Si immagini ora di avere entinaia di metodi e, per ias uno di essi, voler
noti are quando vengano ri hiamati quando terminino la propria ese uzione.
Inserire tutte queste righe di odi e all'interno delle proprie lassi può risultare
estremamente noioso, spe ialmente se i progetti a ui si lavora sono di grandi
dimensioni. Lapro edurapo 'anzides ritta può essereautomatizzataattraverso
l'utilizzo di un plug-in per l'IDE E lipse: Log4E. Esso si o upa di reare dei
sitemi dilogin manieradeltutto autonoma: li ando infatti on il tasto destro
in un punto spe i o del odi e sorgente, si può a edere al menù Log4E he
onsente opzioni diinserimento deimessaggi di logall'intera lasse, in un punto
spe i o, aimetodidella lasse ed altre opzioni.
L'utilizzoditalestrumentosièrivelatofondamentaleinpiùo asioni,aiutandomi
pro-grammaedinqualepuntospe i ovenivanogeneratelee ezioni hemandavano
Il tiro inio, svolto presso E-proje t s.r.l. nei mesi he vanno da ottobre 2011 a
febbraio2012, èstato de isamentearri hente, onsentendomi dimetterein
pra-ti a le nozioni apprese nel orso degli anni di studio, oltre adavermi fornito un
primo appro io alla realtà lavorativa. Il progetto al quale ho lavorato è stato
assolutamentegrati anteper hé mihapermessodipro edere inautonomiaper
quantoriguardaal unes elteimplementativeedal unistrumentiutilizzati,senza
maifarmiman are l'appoggio di olleghi ompetentie preparati.
Gli obiettivi del tiro inio sono stati raggiunti, produ endo una versione
funzio-nante dell'appli azione, seppure an ora s arna per quanto riguarda la sua
in-terfa iagra a.
Eventuali estensioni future si dirigeranno si uramente verso questo aspetto (il
miglioramentodella GUI) ed inoltre non èes luso he venga eettuato un
adat-tamentodel odi e per farsì he ilsoftware possa essere eseguitoan he su
ar hi-tettureUnix. Ulteriorisviluppidovrebbero inoltreprodurreunporting
dell'appli- azioneverso lepiattaformemobili più utilizzate(Android eiOS) per onsentire
l'a quisizione ed il trattamento delle immagini tramite foto amera ed il
onse-guente invio al do umentale Alfres o e la progettazione e realizzazione di una
Web appli ation, lato server, per la onsultazione del ba k-end Alfres o tramite
[1℄ Gestione do umentale in ban a. ABILab, Milano, 2009.
[2℄ Cay S. Horstmann Con etti di informati a e Fondamenti di Java - Terza
Edizione.Apogeo, 2005.
[3℄ Elliotte R. Harold, W. S ott Means XML Guida di Riferimento. Apogeo,
2001.
[4℄ Java Web Start http://do s.ora le. om/jav ase/ 6/do s/t e hn otes /
guides/javaws/developersgui de/ onte nts. html .
[5℄ TWAIN http://www.twain.org/do s /TWA IN_2 _1_ Spe .pdf .
[6℄ CMIS http://wiki.alfres o. om/wi ki/C MIS.
[7℄ Atom Publishing Proto ol http://bitworking.org/proj e ts /ato m
/rf 5023.html.
[8℄ Atom Publishing Proto ol http://atompub.org/
[9℄ Web Servi es http://www.w3.org/2002/ws/
2.1 Logo della E-proje ts.r.l.. . . 8
3.1 Elementidi TWAIN . . . 12
3.2 Elementisoftware di TWAIN . . . 13
3.3 Pro esso dia quisizione deidati . . . 15
3.4 Proto ollo di omuni azione - Diagrammadegli stati . . . 19
3.5 Dettagliodell'interfa iautenteperla selezione diun ledaiPhone 26 5.1 Librerie di terzeparti importate nelprogetto . . . 46
5.2 Personalizzazione leJAR - S eltadei ledaesportare . . . 48
5.3 Personalizzazione delleJAR - Manifest e Main lass . . . 49
5.4 A ettazione diun erti ato . . . 56
5.5 Diusione deiweb serverda novembre 1995 afebbraio 2012. . . . 58
6.1 Java LayoutManager . . . 70
6.2 Form diinserimentodati perun Boni o Ban ario . . . 71
6.3 Do ument Obje t Module - Vista ditutti i moduli. . . 77
7.1 S hermata dibenvenuto . . . 80
7.2 Dialogbox perla onfermadell'us ita dal programma . . . 80
7.3 Tabellaper lavisualizzazione dello stori odelle s ansioni . . . 81
7.4 Dettagli riguardanti uno deiles ansionati . . . 82
7.5 Selezione deltipodi do umento daimportare . . . 82
7.6 Form diinserimentodati . . . 83
7.7 Finestra dia quisizione dell'immagine. . . 83
7.8 Avviso della presenza dile dainviare . . . 84
7.9 FileChooserperla selezione diun le . . . 85
3.1 Il metodovoids anA tion (A tionEvent event) . . . 23
3.2 Il metodoSour e sele tSour e(Filele) . . . 24
4.1 AtomPub binding . . . 35
4.2 Web Servi es binding . . . 36
4.3 Il metodopubli void onne tToAlfres o(String user, String pass, String repositoryID, Stringname, String dir) . . . 38
4.4 OpenCMIS -Creazione di una artella . . . 39
4.5 Strutturabase diun do umentoJNLP . . . 41
5.1 Strutturabase diun do umentoJNLP . . . 54
5.2 Codi e peruna pagina HTML . . . 59
6.1 Do umento XML per ladenizione di una JMenuBar . . . 65
6.2 Codi e Java per il parsing di un do umento XML utilizzando le librerieCookXml . . . 66
6.3 Esempiodi utilizzodiCookSwing . . . 67
6.4 Form diinserimentodati perun Boni o Ban ario . . . 68
6.5 Creazione diun leXML . . . 74
6.6 Parsing diun leXML . . . 74
6.7 FileXML prodotto on l'utilizzo dellalibreria JDOM . . . 75
6.8 Cattura deidati inseriti nelform perun Boni o Ban ario . . . . 78
8.1 Assegnazionedi un A tionListener adun JButton . . . 89
8.2 Pannello on layout ditipo FormLayout . . . 94
8.3 Finestra diselezione dei ledainviare . . . 97
8.4 Invio deilesalvati . . . 98
8.5 Salvataggio ed invio delle . . . 98
8.6 A quisizionedei valori ontenutineltag <date> . . . 100
8.7 Rotazione diun'immagine . . . 101
Il primo pensiero va alledue persone a me più are, i miei genitori,
suppor-to ostante e fonti inesauribili di du ia ed aetto. Ringrazio Mar o, ontinuo
stimolo per farmitendere sempre al meglio. Ringrazio davvero di uore Mari a,
he mi in oraggia, mi sostiene e, soprattutto, mi apprezza per quello he sono.
Gli ami i, senza i quali la vita avrebbe tutto un altro sapore: Stefano, Enri o,
Davide, Ni ola, Giovanni, Sarah, Paola, Talita, Maddalena, Valentina e Giulia.
Ringrazio il relatore, Professor Mi hele Moro. Un grazie a Massimo Businaro,
Fran es o Businaro, Fabio Valeri, Manuel Spigolon e Simone Pinton. Per nire,