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

Variable Index

 o code
Codice degli item.
 o configDir
File collegato alla directory in cui sono conservati i file di configurazione di CompAss.
 o curr
Canale associato al file di documentazione che si sta scrivendo.
 o currFile
Questo indice rappresenta il numero X del file iteminfoX in cui vengono messe le descrizioni degli item.
 o currItem
Questo indice individua l'item corrente nel file che si sta generando.
 o destinationDir
File collegato alla directory in cui vanno salvati i files di documentazione.
 o ITEM_PER_FILE
Questa variabile indica quanti item per file il generatore di descrizioni deve mettere.
 o itemFileBase
Questa variabile contiene il nome del file html che contiene l'infrastruttura del file in cui inserire la documentazione dei vari item.
 o ln
Canale da cui viene letto il file contenente lo scheletro del file html da generare per la documentazione.

Constructor Index

 o Extender()

Method Index

 o addItemInfo()
Aggiunge la descrizione di un item al PrintWriter puntato da curr.
 o closeInfoStream()
Chiude gli stream collegati ad un file di documentazione.
 o generate(File, File, Reader, OutputStream, Vector)
Genera il database e la documentazione dei vari item di Compass.
 o resetItemInfoStream()
Azzera le informazioni relative alla generazione dei file di documentazione.

Variables

 o 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.

 o 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.

 o currFile
 private static int currFile
Questo indice rappresenta il numero X del file iteminfoX in cui vengono messe le descrizioni degli item.

 o currItem
 private static int currItem
Questo indice individua l'item corrente nel file che si sta generando.

 o 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.

 o destinationDir
 private static File destinationDir
File collegato alla directory in cui vanno salvati i files di documentazione.

 o 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
 o curr
 private static PrintWriter curr
Canale associato al file di documentazione che si sta scrivendo.

 o ln
 private static LineNumberReader ln
Canale da cui viene letto il file contenente lo scheletro del file html da generare per la documentazione.

Constructors

 o Extender
 public Extender()

Methods

 o 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.
 o 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
 o 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
 o 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