Download
sql file manager n.
Skip this Video
Loading SlideShow in 5 Seconds..
SQL File Manager PowerPoint Presentation
Download Presentation
SQL File Manager

SQL File Manager

130 Vues Download Presentation
Télécharger la présentation

SQL File Manager

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. un nuovo modo di gestire il filesystem…. SQL File Manager Corso di Linguaggi e Modelli Computazionali LS Prof. Enrico Denti Presentazione di Luca Nardelli

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

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

  4. SQL File Manager • Permette di eseguire ricerche sul filesystem in base a diversi criteri di ricerca: select * from /home wherenamelike ‘%.tmp’ or (date < ’01/01/2005’ and size < 3k); • Permette di eseguire diverse operazioni sui file mediante script: copy filesfrom /optto /home where … delete * from /tmp … • Sfrutta un linguaggio simile all’sql, standard per le query su base dati.

  5. Grammatica EBNF S ::= Query | <EOF> Query ::= ( Select | Copy | Delete ) (<RECURSIVE> )? <SEMICOLON> Select ::= <SELECT> FileTypeFrom ( Where )? Copy ::= <COPY> FileTypeFromTo ( Where )? ( <OVERRIDE> )? Delete ::= <DELETE> FileTypeFrom (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> )

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

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

  8. Packages

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

  10. Struttura query

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