SQL File Manager un nuovo modo di gestire il filesystem…. Corso di Linguaggi e Modelli Computazionali LS Prof. Enrico Denti Presentazione di Luca Nardelli
Scopo del progetto Definizione di un linguaggio “sql like” per descrivere query sul filesystem. Sviluppo di un interprete che consenta di eseguire le operazioni specificate per mezzo del linguaggio. Sviluppo di un filemanager multipiattaforma che sfrutti l’interprete per la gestione dei file.
Stato dell’arte Miriadi di tool di ricerca che permettono, in modo efficiente (anche sfruttando l’indicizzazione), di cercare file in base a criteri personalizzati. Copiare, spostare, cancellare i file rimane un operazione manuale. Linguaggi di script come bash/bat che permettono di effettuare una qualunque elaborazione su file e direttori in modo veloce. Spesso di difficile apprendimento per l’utente.
SQL File Manager Permette di eseguire ricerche sul filesystem in base a diversi criteri di ricerca: select * from /home where name like ‘%.tmp’ or (date < ’01/01/2005’ and size < 3k); Permette di eseguire diverse operazioni sui file mediante script: copy files from /opt to /home where … delete * from /tmp … Sfrutta un linguaggio simile all’sql, standard per le query su base dati.
Grammatica EBNF S ::= Query | <EOF> Query ::= ( Select | Copy | Delete ) (<RECURSIVE> )? <SEMICOLON> Select ::= <SELECT> FileType From ( Where )? Copy ::= <COPY> FileType From To ( Where )? ( <OVERRIDE> )? Delete ::= <DELETE> FileType From (Where )? From ::= <FROM> FileName ( <COMMA> FileName )* To ::= <TO> FileName FileName ::= ( <FILE> | <EXTFILE> ) FileType ::= ( <FOLDERS> | <FILES> | <STAR> ) Where ::= <WHERE> OrExpression OrExpression ::= AndExpression ( <OR> AndExpression )* AndExpression ::= SearchRule (<AND> SearchRule )* SearchRule ::= FileNameSearchRule | FileDateSearchRule | FileSizeSearchRule | <LPAR> OrExpression <RPAR> FileNameSearchRule ::= <FILENAME> ( Operator | <LIKE> ) <STRING> FileDateSearchRule ::= <DATEID> Operator <STRING> FileSizeSearchRule ::= <SIZEID> Operator <SIZE> Operator ::= ( <EQUAL> | <NE> | <LT> | <LE> | <GT> | <GE> )
Considerazioni Grammatica di tipo 2 “context free” con self-embedding. La grammatica è LL(1), l’analizzatore guardando avanti di uno sa sempre quale regola applicare (starter symbol disgiunti). Riconoscitore PDA deterministico
Implementazione Linguaggio utilizzato: Java 1.6 Utilizzate le nuove funzioni soprattutto per le JTable (ordinamento, filtri,…) Strumenti automatici utilizzati: JavaCC Di semplice utilizzo e molto diffuso Analisi top-down discendente Ambiente di sviluppo: Eclipse
Packages sqlfilemanager package principale gui models renderer parser classi per interfaccia grafica models modelli dei componenti grafici renderer renderer dei componenti grafici parser classi dello scanner e del parser struct classi della struttura dati popolata dal parser task classi per la gestione multi-thread delle operazioni utils strumenti di supporto
Il Parser Implementato in SFMParser Utilizzato come singleton Utilizza lo scanner generato da javacc Restituisce una struttura di tipo query per ogni istruzione, null in caso di EOF
Struttura query
Conclusioni e sviluppi futuri SQL File Manager è un esempio di come un linguaggio possa essere utile e talvolta necessario per automatizzare le funzionalità di un software. Sviluppi futuri possono comprendere: Ricerca sul filesystem ad indice. Estensione delle funzionalità. Implementazione di un servizio di logging.