1 / 11

SQL File Manager

un nuovo modo di gestire il filesystem…. SQL File Manager. 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.

Télécharger la présentation

SQL File Manager

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

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.

More Related