Enregistrer un système de fichier dans une base de données

habitech Messages postés 7 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 6 août 2008 - 25 juil. 2008 à 13:20
habitech Messages postés 7 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 6 août 2008 - 6 août 2008 à 14:25
Salut, j'ai un projet plutot embettant.Je dois enregistrer l'arborescence d'un disque dans une base de données (j'utilise mysql) et pouvoir la restituer à la demande dans un "tree (jsp )" au niveau de mon application web, tout ceci en tenant compte  des droits d'accès  utilisateurs. Je voudrais déjà pouvoir automatiser l'enregistrement des fichiers du disque dans la base de données. Si quelqu'un a une idée ou une méthode pour y arriver çà m'aiderais  beaucoup. Pour l'affichage  dans un tree  j'essaie d'adapter les  codes  que j'ai pu trouver sur le site mais  ils sont tous en swing  (Jtree) il n'y aurait pas plus simple? ... Sos c vraiment important.
Merci d'avance

habs"Développer c'est avant tout un plaisir..."

9 réponses

habitech Messages postés 7 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 6 août 2008
27 juil. 2008 à 13:26
Pour préciser un peu mieux mon problème actuel,je ne sais pas sous quel architecture stocker mes fichiers et répertoires dans la base de données.Est-ce qu'il faut créer une table pour chaque répertoire ou bien  il y a une structure qui le permet déjà.Merci  de me débloquer!

habs"Développer c'est avant tout un plaisir..."
0
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
27 juil. 2008 à 13:38
Salut,

c'est très intéressant comme projet !

ok, j'ai une idée : je peux modéliser une arborescence avec ces tables :

repertoire (idRep, nomRep, droits)

est_un_sous_repertoire_de (idSousRep, idRep)

fichier (idFichier, nomFichier, droits, type)

est_sous (idFichier, idRep)

j'espère que ça t'apportera de l'aide..

Bonne courage

_____________________
Vos avis et critiques sur le livre "Objets réactifs en java" de Frédéric Boussinot : contactez moi par MP..
http://books.go%3C/body
0
habitech Messages postés 7 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 6 août 2008
28 juil. 2008 à 18:29
Bonjour,Merci pour ta réponse.Je commençais aussi à penser à un tel modèle mais le tien est plus élaboré (j'avais pas pensé à la relation est_sous_rep_de) parcontre je pense qu'au lieu la relation "est_sous" on pourrait juste mettre une clé  étrangère pour les fichiers du genre
 [ fichiers(id_fich,nom_fich,droits,taille,type,nom_rep) ]
çà permettrait déjà d'éviter des fichiers fantômes (sans répertoires) d'un autre coté un ami m'a proposé un arbre de dossiers. Mais je n'ais pas encore exploré l'option, tu en penses quoi?
Merci encore

habs"Développer c'est avant tout un plaisir..."
0
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
28 juil. 2008 à 20:36
Salut,

oui en fait ton idée à propos de la clé étrangère est plus safe..

mais au lieu de mettre nomRep comme clé étrangère mets idRep (règle de base dans la conception)..

bonne continuation..

_____________________
Vos avis et critiques sur le livre "Objets réactifs en java" de Frédéric Boussinot : contactez moi par MP..
http://books.go%3C/body
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
habitech Messages postés 7 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 6 août 2008
28 juil. 2008 à 21:29
Merci, effectivement. Si non pour le listage dans une page web, l'utilisation des Tree avec jsp tu n'aurais pas une idée un exemple ou un tuto?Autrement c pas grave. Je commencerai déjà à écrire le code pour le stockage, les utilisateurs et les droits. Bref le programme d'une bonne longue soirée. Merci encore et à bientôt.

habs"Développer c'est avant tout un plaisir..."
0
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
28 juil. 2008 à 22:23
Re,

pour l'utilisation du composant JTree voici des tutoriels :

http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-JTree.html
http://prevert.upmf-grenoble.fr/Prog/Java/swing/JTree.html

bonne chance dans le projet..

En fait, je voudrai connaître plus sur ton projet : c'est dans le cadre d'un PFE ? tu essayes de faire une sorte d'application de sauvegarde ?


_____________________
Vos avis et critiques sur le livre "Objets réactifs en java" de Frédéric Boussinot : contactez moi par MP..
http://books.go%3C/body
0
habitech Messages postés 7 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 6 août 2008
29 juil. 2008 à 10:20
En fait c'est un projet de stage.Une application web  pour un intranet qui sera déployée sur un serveur interne et adressée en local. L'application servira à faire une administration partagée du serveur suivant des droits d'accès des utilisateurs.

 Pour les tutoriels , comme je le disais plus haut, j'ai déjà exploré quelques solutions avec JTree (swing) mais j'ai des difficultés à les adapter à mon application web. Tu vois un peu ce n'est pas le même contexte. Je sais que l'objet Tree  existe pour  java (jsp, jsf) par exemple pour visual jsf on a la classe "java.webjuif.Tree" .Mais je n'arrive pas à trouver pas de bonne documentation sur comment l'utiliser. Merci quand même pour les tutos.

habs"Développer c'est avant tout un plaisir..."
0
habitech Messages postés 7 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 6 août 2008
29 juil. 2008 à 10:30
Pour la classe c'est plutôt "com.sun.webui.jsf.component.Tree" en visual  au temps pour moi.





"Développer c'est avant tout un plaisir..."
0
habitech Messages postés 7 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 6 août 2008
6 août 2008 à 14:25
Bonjour à tous,j'essaie de trouver une méthode pour enregistrer le contenu de mon disque dur dans une base de données du moins les noms des différents fichiers et répertoires. Voici mes tables:

fichiers(id,nom,taille,chemin,level,groupe,chParent)
repertoires(id,nom,taille,chemin,level,groupe,chParent) //chParent= chemin Parent

level et groupe son juste des entiers que je compte utiliser pour des droits d'accès par la suite.D'ailleurs ils sont à 0 par défaut.
J'ai créé pour cela une méthode  que je pensais  infaillible jusqu'aujourd'hui! Premier test 4 enregistrements et  erreur!! Quelqu'un aurait-il une idée de comment procéder?J'ai vraiment besoin d'aide sur ce coup! Merci pour toute contribution.

Méthode: c'est une méthode récursive
    public void uptoDate(){
        //On renouvelle les tables avant de les remplir à nouveau (plus tard)
        //on récupère les lecteurs
      _roots=File.listRoots();
      for(int i=0;i<_roots.length;i++){
        File root=lecture(_roots[i]);!!!! (méthode récursive)
        if(!listeR.equals("")) ajouter("repertoires",listeR);
        if(!listeF.equals("")) ajouter("fichiers",listeF);
 listeF =listeF+",('"+root.getName()+"',"+root.getTotalSpace()+",'"+root.getAbsolutePath()+"',"+0+","+0+",'"+root.getParent()+"')";
        ajouter("fichier", listeF);
      }
     
    }

    public File lecture(File root){
        //on ajoute les répertoires
        CheminR= root.getAbsolutePath();
        listeR="('"+root.getName()+"',"+root.getTotalSpace()+",'"+CheminR+"',"+0+","+0+",'"+getParent(CheminR)+"')";
        ajouter("repertoires",listeR);
        //on récupère la liste des fichiers et des sous répertoires
        File[] list =root.listFiles();
        if(list!=null){
            //pour chaque répertoires on appelle cette méthode ==> récursivité
            for(int j=0;j<list.length;j++){
                File file=null;
                if(list[j].isDirectory()){
                    file=lecture(list[j]);//on ajoute les fichiers
                    CheminF=file.getAbsolutePath();(l'erreur est indiquée ici)
                    listeF ="('"+file.getName()+"',"+file.getTotalSpace()+",'"+CheminF+"',"+0+","+0+",'"+getParent(CheminF)+"')";
                    ajouter("fichiers",listeF);
                }else{
                    return list[j];
                }
            }
        }
        return finRep;
    }  

    public void ajouter(String type,String liste){
        connect.ajouterFile(type, liste); //à priori tout ce passe bien ici!
    }

erreur!:
java.lang.NullPointerException
javax.faces.el.EvaluationException: java.lang.NullPointerException
        at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:91)
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
        at javax.faces.component.UICommand.broadcast(UICommand.java:383)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
        (...................)
        at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
        at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
Caused by: java.lang.NullPointerException
        at lanServer.Beans.ActionBean.lecture(ActionBean.java:164)
        at lanServer.Beans.ActionBean.uptoDate(ActionBean.java:143)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       (....................)
        at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
        ... 40 more
#{actionBean.uptoDate}: java.lang.NullPointerException
javax.faces.FacesException: #{actionBean.uptoDate}: java.lang.NullPointerException
        at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:107)
        at javax.faces.component.UICommand.broadcast(UICommand.java:383)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
        at (.......)

Merci encore pour toute contribution.

habs"Développer c'est avant tout un plaisir..."
0
Rejoignez-nous