comment conserver en memoire des donnees deserialise?

comment conserver en memoire des donnees deserialise? - Java - Programmation

Marsh Posté le 06-06-2006 à 16:24:23    

salut tout le monde...
 
dans mon interface graphique j.ai un JPanel et dedans je dois afficher un arbre creer a partir des donnees.
ces donnees sont serialisees sur le disque dur et a chaque fois que je creer un arbre je suis oblige de deserialise et cest assez lourd....
 
est ce que quelqu'un aurait une idee a me proposer afin de deserialises les donnes une fois pour toute (et non a chaque fois que je cree un arbre).
 
jai pensais stocker ces donnees dans un fichier temporaire mais jai 2 soucis:
   - 1er:  lapplication doit tourner en java web start donc ecrire dans un fichier sur le serveur qui va heberger cette appli nest pas terrible(en plus je ne sais pas si jaurais les droits)
   - 2eme je ne sais pas comment on doit faire pour la gestion des fichiers, formats... etc
 
Est ce qu'il y aurait une autre solution a mon probleme a part le fichier temporaire???
 
merci

Reply

Marsh Posté le 06-06-2006 à 16:24:23   

Reply

Marsh Posté le 06-06-2006 à 17:03:18    

Citation :

ces donnees sont serialisees sur le disque dur
...
jai pensais stocker ces donnees dans un fichier temporaire


 
Donc au lieu de lire tes données à partir du disque à chaque fois, tu veux lire les données à partir d'un fichier sur le disque.... gain zèro.
 
Ce qu'il faut c'est garder une référence sur ton arbre.

Reply

Marsh Posté le 06-06-2006 à 17:16:45    

donc lidee du fichier, je laisse tomber...
 
garder une reference sur larbre.....je ne comprends pas
je suis debutant en java. est ce que tu pourrait approfondir ton explication sil te plait?
 
merci

Reply

Marsh Posté le 06-06-2006 à 17:50:17    

Citation :

je dois afficher un arbre creer a partir des donnees
...
a chaque fois que je creer un arbre je suis oblige de deserialise


 
Montre nous le code qui fait ça (respectivement : création d'un arbre à partir de données et lecture des données)

Reply

Marsh Posté le 06-06-2006 à 18:08:53    

[quotemsg=1382282,4,89965]

Citation :

je dois afficher un arbre creer a partir des donnees
...
a chaque fois que je creer un arbre je suis oblige de deserialise


 

Citation :

Montre nous le code qui fait ça (respectivement : création d'un arbre à partir de données et lecture des données)


 
recuperation des donnees:

Code :
  1. XmlLogCall es = new XmlLogCall();
  2.        es=result.getFirst();
  3.        Iterator i = es.iterator();
  4.        JTree arbre=null;
  5.             
  6.        DefaultMutableTreeNode racine = new DefaultMutableTreeNode(((XmlLogLine)i.next()).getLog_method());
  7.        createNodes(i,racine);
  8.        arbre = new JTree(racine);
  9.                                 getMyTreeScrollPane().add(arbre);
  10.     getMyTreeScrollPane().revalidate();
  11.     getMyTreeScrollPane().setViewportView(arbre);
  12.           getMyTreeGraphSplitPane().setTopComponent(getMyTreeScrollPane());
  13.           getMySplitPanel().add(getMyTreeGraphSplitPane());


 
voici la creation de larbre:

Code :
  1. private DefaultMutableTreeNode createNodes(Iterator i,DefaultMutableTreeNode racine) {
  2.         DefaultMutableTreeNode noeud = null;
  3.         XmlLogLine tmp = null;// new XmlLogLine();
  4.        
  5.         while(i.hasNext()){
  6.        
  7.          tmp = (XmlLogLine)i.next();
  8.          racine.setAllowsChildren(true);
  9.          noeud = new DefaultMutableTreeNode(tmp.getLog_method());
  10.        
  11.          if(tmp.isStart() && !(tmp.isStartStop())){
  12.           //noeud = new DefaultMutableTreeNode(tmp.getLog_method());
  13.           racine.add(noeud);
  14.           racine=noeud;
  15.           //createNodes(i,noeud);
  16.          }
  17.          else if(tmp.isStop() && !(tmp.isStartStop())){
  18.           racine=(DefaultMutableTreeNode)racine.getParent();
  19.          }
  20.          else if(tmp.isStartStop()){
  21.           //noeud = new DefaultMutableTreeNode(tmp.getLog_method());
  22.           racine.add(noeud);
  23.          }
  24.         }
  25.     return racine;
  26.     }


 

Reply

Marsh Posté le 07-06-2006 à 09:14:43    

Citation :

recuperation des donnees:

Code :
  1. ...
  2.   JTree arbre=null;



 
Ce que tu fais actuellement c'est de mettre ton arbre dans une varable locale donc il est perdu dès que tu sors de la méthode.
Ce qu'il faut faire c'est ajouter un attribut à une classe pour "sauvegarder" de lrésultat de la construction de l'arbre.
 
ça donnerait un truc comme ça si on ajoute l'attribut arbre à la classe où il y a le code de récup. des données

Code :
  1. if (this.arbre == null) {
  2.   // On n'a pas encore construit l'arbre
  3.   DefaultMutableTreeNode racine = new DefaultMutableTreeNode(((XmlLogLine)i.next()).getLog_method());
  4.   createNodes(i,racine);
  5.   this.arbre = new JTree(racine);
  6.   setArbre(this.arbre);
  7. }
  8. getMyTreeScrollPane().add(this.arbre);

Reply

Marsh Posté le 07-06-2006 à 10:11:01    

Attribut statique ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed