Da DB di una biblioteca a html

Da Tesine Linguaggi e Traduttori.

Jump to: navigation, search

Il progetto prevede, date le tabelle in xls PRESTITI, TESSERE e LIBRI di una biblioteca di effettuare una prima trasformazione in csv ottenendo così un file unico. All'interno del file risultante, unico.csv l'utente può scrivere delle query appropriate e l'applicativo selezionerà le tuple corrispondenti, editandole in un file HTML per un migliore visualizzazione dei risultati.

Contents

OverView

La tesina utilizza cup e jflex per la generazione rispettivamente di parser e scanner. E' presente una piccola utility per la creazione del file "unico.csv" che a partire da tre file separati .csv li accoda nel file citato. Il file generato è suddiviso in quattro blocchiche verranno gestiti attraverso opportune classi presenti nell'archivio al nome di tessera.java, libro.java e prestito.java. In queste classi sono presenti i costruttori che verranno utilizzati per la creazione e la gestione degli oggetti nella "logica" del programma, presente in Applicazione.java.

Lo scanner riconosce il contenuto del file, segnalando eventuali errori, e passa i dati letti al parser. Quest'ultimo si preoccuperà del controllo semantico e popolerà delle strutture dati atte al contenimento degli oggetti creati a partire dai dati letti.

L'ultima parte del file "unico.csv" è preprosto all'inserimento di una query in "pseudo-sql" che viene interpretata ed eseguita dal parser. I risultati ottenuti verranno impaginati in un un codice html "file.html", che sottoforma tabulare li presenterà attraverso browser.


Pseudo SQL

Il traduttore implementato consente di riconoscere un linguaggio simile all'sql. Per tanto non sono ammesse:

- parentesi tonde delle condizioni del "where"
- all'interno della "select" è possibile selezionare uno o più campi, e l'operazione count(*). Le altre per tanto non sono ammesse.
- quando si effettua una join è espressamente richiesto il nome COMPLETO in ogni parte della query, sia essa select, from o where.
- non vengono supportate le query annidate.


Il traduttore permette la corretta esecuzione di tutte le restanti richieste ad esempio:

select count(*) from prestiti,libri where prestiti-f2="true" AND libri-provv="Libri della vecchia gestione"

come carattere di separazione tra il nome della tabella ed il campo è previsto "-" e non "." come previsto da SQL.


Si ricorda che i nomi dei campi quali ("f2","provv") sono da ricercarsi all'interno delle classi delle tabelle corrispondenti.


Installazione

Per l'installazione degli applicativi necessatri alla compilazione utilizzare i seguenti LINK:

Installazione in ambiente Linux.
Installazione in ambiente Windows.

Compilazione e avvio del programma

Portarsi da shell nella cartella eseguire i seguenti comandi:

  Jflex scanner.jflex
  java java_cup.Main -expect 400 parserunico.cup
  javac *.java
  java Main unico.csv
Personal tools