All Packages Class Hierarchy This Package Previous Next Index
Class it.unipi.di.compass.ccone.extender.Extender
java.lang.Object
|
+----it.unipi.di.compass.ccone.extender.Extender
- public class Extender
- extends Object
Questa classe genera il database degli item di CompAss.
Genera inoltre un insieme di file HTML contenenti delle
descrizioni HTML degli item. Il linguaggio interpretato
da questa parte del compilatore ` molto semplice
e si basa sui separatori di campo che sono costituiti
dai token SEP%SEP, SEP%%SEP, SEP%%%SEP e
SEP%%%%SEP, dove per SEP si intende il carattere di new
line o il carattere tab.
La documentazione viene ripartita in più files html per
agevolare le transazioni HTTP.
La grammatica riconosciuta dal parser per generare la
documentazione è la seguente:
<file> ::= { <record> }*
<record> ::= <record data> <record info> <separator>%%%%<separator>
<record data> ::= <name> <separator>%%<separator> { <other data> <separator>%%<separator> }* <separator>%%%<separator>
<name> ::= <item data> # Contiene il nome dell'item
<other data> ::= <item data> # Contiene il resto dei campi dell'item
<item data> ::= <single item> | <list>
<single item> ::= Informazione relativa ad un singolo item
<list> ::= { <separator>%<separator> <single item> }*
<record info> ::= HTML text
<separator> ::= \n | \t
Il generatore si appoggia al codice intermedio generato
dall'istantiator per valutare i tipi e i numeri degli elementi.
L'informazione relativa ad un singolo item viene letta
in relazione al tipo a cui deve corrispondere secondo quanto
dichiarato in input con la lista degli IdeDescriptor. Data la
stringa che costituisce un elemento singolo viene invocato
il metodo parseXXX dove XXX è il tipo per i tipi int,
long, float e double. Per il char, la String e il boolean
viene banalmente controllata la stringa.
I campi String dell'item devono essere single-line.
Un'assunzione fondamentalle fatta dall'extender è
che il primo descrittore della lista di descrittori
sia del campo name.
- Version:
- 1.0
- Author:
- Antonio Cisternino
- See Also:
- Instantiator, IdeDescriptor
-
code
- Codice degli item.
-
configDir
- File collegato alla directory in cui sono conservati i file
di configurazione di CompAss.
-
curr
- Canale associato al file di documentazione che si sta
scrivendo.
-
currFile
- Questo indice rappresenta il numero X del file iteminfoX
in cui vengono messe le descrizioni degli item.
-
currItem
- Questo indice individua l'item corrente nel file che si
sta generando.
-
destinationDir
- File collegato alla directory in cui vanno salvati
i files di documentazione.
-
ITEM_PER_FILE
- Questa variabile indica quanti item per file il
generatore di descrizioni deve mettere.
-
itemFileBase
- Questa variabile contiene il nome del file html che
contiene l'infrastruttura del file in cui inserire
la documentazione dei vari item.
-
ln
- Canale da cui viene letto il file contenente lo scheletro
del file html da generare per la documentazione.
-
Extender()
-
-
addItemInfo()
- Aggiunge la descrizione di un item al PrintWriter puntato da
curr.
-
closeInfoStream()
- Chiude gli stream collegati ad un file di documentazione.
-
generate(File, File, Reader, OutputStream, Vector)
- Genera il database e la documentazione dei vari item di
Compass.
-
resetItemInfoStream()
- Azzera le informazioni relative alla generazione dei file
di documentazione.
ITEM_PER_FILE
public static int ITEM_PER_FILE
- Questa variabile indica quanti item per file il
generatore di descrizioni deve mettere. Più
è alto questo numer minore sarà il numero
di files prodotti ma maggiore sarà il carico
di una singola transazione HTTP poiché verranno
prodotti file più grossi.
itemFileBase
public static String itemFileBase
- Questa variabile contiene il nome del file html che
contiene l'infrastruttura del file in cui inserire
la documentazione dei vari item. Questo file deve
contenere lo scheletro del file html:
<html>
...
<body ...>
#
</body>
</html>
Il generatore cerca (case insensitive) la linea che inizia
per # e sostituisce a quella riga le descrizioni dei vari
item.
currFile
private static int currFile
- Questo indice rappresenta il numero X del file iteminfoX
in cui vengono messe le descrizioni degli item.
currItem
private static int currItem
- Questo indice individua l'item corrente nel file che si
sta generando.
code
private static int code
- Codice degli item. Ogni volta che viene chiamata la funzione
addItemInfo viene incrementato. Il codice di un item è
rappresentato dalla posizione che occupa nel database degli
item.
destinationDir
private static File destinationDir
- File collegato alla directory in cui vanno salvati
i files di documentazione.
configDir
private static File configDir
- File collegato alla directory in cui sono conservati i file
di configurazione di CompAss. Sarebbe bene che tale directory
sia unica. Comunque questo package vi ricerca solo il file
itemFileBase.
- See Also:
- itemFileBase
curr
private static PrintWriter curr
- Canale associato al file di documentazione che si sta
scrivendo.
ln
private static LineNumberReader ln
- Canale da cui viene letto il file contenente lo scheletro
del file html da generare per la documentazione.
Extender
public Extender()
resetItemInfoStream
public static void resetItemInfoStream() throws IOException
- Azzera le informazioni relative alla generazione dei file
di documentazione. In particolare chiude gli stream aperti
e azzera gli indici utilizzati per la generazione dei file.
- Throws: IOException
- Viene sollevata nel caso in cui vi
siano problemi nella lettura o nella
scrittura dei file.
addItemInfo
static PrintWriter addItemInfo() throws IOException
- Aggiunge la descrizione di un item al PrintWriter puntato da
curr. Se curr è null viene aperto un nuovo stream.
Se il numero di item scritti nel file è pari a
ITEM_PER_FILE viene chiuso lo stream curr corrente e ne
viene aperto un altro.
- Returns:
- Se destinationDir vale null restituisce null,
altrimenti restituisce il PrintWriter corrente
(curr) in modo tale che il generatore possa scrivere
la documentazione per un item.
- Throws: IOException
- Viene sollevata nel caso in cui vi
siano problemi nella lettura o nella
scrittura dei file.
- See Also:
- ITEM_PER_FILE, curr, ln
closeInfoStream
static void closeInfoStream() throws IOException
- Chiude gli stream collegati ad un file di documentazione.
Finisce di copiare lo scheletro html (dopo la riga che inizia
per #) e chiude gli stream curr e ln.
- Throws: IOException
- Viene sollevata nel caso in cui vi
siano problemi nella lettura o nella
scrittura dei file.
- See Also:
- curr, ln
generate
public static void generate(File dDir,
File cDir,
Reader in,
OutputStream db,
Vector v) throws IOException, ParserException
- Genera il database e la documentazione dei vari item di
Compass. Si appoggia al codice intermedio generato dal
package istantiator.
- Parameters:
- dDir - Directory in cui salvare i file di documentazione
generati. Se questo parametro vale null non viene
generata la documentazione ma soltanto il
database.
- cDir - Directory in cui cercare il file indicato nella
variabile itemFileBase.
- in - Reader da cui leggere le informazioni.
- db - Writer in cui scrivere le informazioni
- v - Rappresentazione intermedia del codice restituita
dal metodo compile della classe Istantiator.
- Throws: ParserException
- Viene sollevata in caso di un
errore di parsing.
- Throws: IOException
- Viene sollevata nel caso in cui vi
siano problemi nella lettura o nella
scrittura dei file.
- See Also:
- itemFileBase, IdeDescriptor
All Packages Class Hierarchy This Package Previous Next Index