PDA

View Full Version : [JAVA]DB Derby che appaia come un file che eseguito lancia il programma col db aperto


Speed_89
29-11-2011, 22:15
Salve, come da titolo, mi pongo questa domanda...
E' possibile creare un database derby, che appaia nel file system non come una cartella ma come un file avente una estensione propria del mio programma, e che una volta aperto lanci in automatico il programma caricando il database? Spero di essermi spiegato bene... :)

WarDuck
30-11-2011, 12:51
Se il db è contenuto tutto in una cartella quello che potresti fare è creare un file compresso e dargli l'estensione che preferisci.

Ovviamente quando la tua applicazione aprirà un file di questo tipo dovrà gestire la decompressione (magari in una dir temporanea), e quando salvi il file dovrai ri-comprimere.

A questo punto devi istruire Windows ad aprire il file con la tua applicazione.

Qui c'è un sacco di roba:

http://msdn.microsoft.com/en-us/library/ff521657%28v=VS.85%29.aspx

Speed_89
30-11-2011, 13:22
Se il db è contenuto tutto in una cartella quello che potresti fare è creare un file compresso e dargli l'estensione che preferisci.

Ovviamente quando la tua applicazione aprirà un file di questo tipo dovrà gestire la decompressione (magari in una dir temporanea), e quando salvi il file dovrai ri-comprimere.

A questo punto devi istruire Windows ad aprire il file con la tua applicazione.

Qui c'è un sacco di roba:

http://msdn.microsoft.com/en-us/library/ff521657%28v=VS.85%29.aspx

A questa soluzione ci avevo pensato, però non sapevo come realizzarla...
Il tuo link mi sembra parli solo della gestione dei tipi personalizzati in windows, mi tornerà molto utile se intraprenderò questa strada, grazie! ;)

Per quanto riguarda la compressione c'è qualche libreria leggera che potresti consigliarmi?

PS: però mi viene un dubbio... In questo modo portando il programma su Linux sarà comunque in grado di funzionare correttamente? Sarà da reimplementare solo la parte di gestione del tipo file da file system?

Grazie ancora! ;)

Se qualcuno ha altre soluzioni, sono sempre gradite! :)

!fazz
30-11-2011, 13:35
per me fai prima ad aprire direttamente la tua applicazione che agisce sul db in una cartella nascosta

Speed_89
30-11-2011, 13:48
per me fai prima ad aprire direttamente la tua applicazione che agisce sul db in una cartella nascosta

Si diciamo che se non riesco a risolvere nel modo in cui ho chiesto, l'alternativa sarebbe impostare nell'applicazione un DB di default (il cui percorso sarebbe salvato in un file di impostazioni) che viene caricato all'aprirsi del programma...

Dovrebbe essere all'incirca quello che mi hai proposto...

Il punto è che vorrei riuscire a impacchettare tutto in un file dall'estensione personalizzata...

WarDuck
30-11-2011, 13:58
Relativamente alla compressione ho trovato questo:

http://java.sun.com/developer/technicalArticles/Programming/compression/

L'articolo è un po' vecchiotto ma credo sia ancora valido.

Questa è la descrizione del package:

http://docs.oracle.com/javase/6/docs/api/java/util/zip/package-summary.html

Questa cosa dovrebbe funzionare su qualsiasi SO che abbia Java (più che altro stai attento alla gestione dei path).

Chiaramente la gestione di estensione/programma è una cosa che vale solo su Windows, Linux adotta altre metodologie.

In ogni caso ti consiglio di creare nella tua applicazione una voce di menu "Apri..." così da consentire il caricamento del file a prescindere dall'abbinamento estensione-programma che fa il SO.

PS: se l'api lo consente ed i file non sono troppo grossi potresti decomprimere direttamente in memoria, evitando la creazione di file temporanei sul disco.

Speed_89
30-11-2011, 14:28
Relativamente alla compressione ho trovato questo:

http://java.sun.com/developer/technicalArticles/Programming/compression/

L'articolo è un po' vecchiotto ma credo sia ancora valido.

Questa è la descrizione del package:

http://docs.oracle.com/javase/6/docs/api/java/util/zip/package-summary.html

Questa cosa dovrebbe funzionare su qualsiasi SO che abbia Java (più che altro stai attento alla gestione dei path).

Chiaramente la gestione di estensione/programma è una cosa che vale solo su Windows, Linux adotta altre metodologie.

In ogni caso ti consiglio di creare nella tua applicazione una voce di menu "Apri..." così da consentire il caricamento del file a prescindere dall'abbinamento estensione-programma che fa il SO.

PS: se l'api lo consente ed i file non sono troppo grossi potresti decomprimere direttamente in memoria, evitando la creazione di file temporanei sul disco.

Grazie WarDuck sei gentilissimo! :)
Appena ho un pò di tempo mi metterò a lavoro!
Dovrebbe andare benissimo, l'importante è riuscire ad avere un file unico, per una questione di comodità e di sicurezza rispetto alla cartella da portare in giro...
Per l'apertura del file, senza dubbio ci sarà il menù "Apri", anche li era un fatto di comodità quello di aprire il file da file system... :)