L'applicazione nel momento in cui viene installata, copia nella directory
personale di configurazione di SpamGAME il file config.xml
Il file in questione, come
già detto, contiene tutte i dati relativi al setup dell'applicazione, per ciò
che riguarda i dati persistenti che sicuramente vengono usati.
Questo è il suo DTD (file config.dtd):
<!ELEMENT config (thresholds, stoplist, whitelist, blacklist)>
<!ELEMENT thresholds (threshold-presence,
threshold-expressiveness)>
<!ELEMENT threshold-presence (#PCDATA)>
<!ELEMENT threshold-expressiveness (#PCDATA)>
<!ELEMENT stoplist (word*)>
<!ELEMENT whitelist (address*)>
<!ELEMENT blacklist (address*)>
<!ELEMENT word (#PCDATA)>
<!ELEMENT address (#PCDATA)>
Nella Figura 4.4 si può osservare la rappresentazione
del DTD stesso.
Figura 4.4:
diagramma albero DTD
|
Il contenuto del file config.xml è osservabile nell' Appendice A
Le informazioni contenute in tale file vengono scritte e lette dalla classe ConfigHandler.
La scelta di tenere i dati di configurazione in formato XML è stata dettata dalle seguenti
ragioni:
- Facilità di utilizzo e interpretazione dei dati in esso contenuto da parte
di librerie software
- Portabilità del formato
Mentre la prima argomentazione è relativamente poco rilevante in questa sede,
la seconda merita una considerazione a parte.
Essendo questo programma per natura portabile (è scritto in Python), si pretende che anche i
suoi dati salvati siano portabili. E poichè si parla di informazioni che devono comparire in forma
testuale comunque leggibile per un utente (dato che, allo stato attuale, per alcuni dati bisogna
mettere mano al file di configurazione) ma soprattuto per un parser software, la scelta di
un plain text file con un encoding del testo magari dipendente dal sistema operativo usato
e dalla nazionalità dell'utente, non sarebbe risultata per niente vantaggiosa poichè non sarebbe
portabile. Un file XML invece, dichiarato con encoding UTF-8, consente a chiunque e
dovunque di accedere alle stesse informazioni. Nel caso di tale applicazione sono termini
realmente utilizzati in un qualche linguaggio parlato sul pianeta.
Alessio Pace
2004-03-26