Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3323 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [WINNER INSIDE] Je suis fort en algo que j'arrive à planter ma bécane

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[WINNER INSIDE] Je suis fort en algo que j'arrive à planter ma bécane

n°719029
Roco
Posté le 07-05-2004 à 17:23:30  profilanswer
 

Yop !
 
Je suis en train de créer un forum en Java.
 
Le principe est simple. Il y a des messages "parents" et des messages "enfants" (c-a-d des réponses aux messages parents).
 
Et j'ai réussi à le coder d'une façon tellement merdique que j'ai un joli plantage d'Eclipse et une petite fenêtre "out of memory" qui s'affiche.
 
J'ai une page jsp toute conne :
 

Code :
  1. <%@page import="miage.bean.*"%>
  2. <%@page import="java.util.*"%>
  3. <% Vector vec = Message.getMessages(); %>
  4. <table>
  5. <% for (int i = 0; i < vec.size(); i++) { %>
  6. <tr>
  7.  <td>
  8.   <%
  9.    Message msg = (Message) vec.get(i);
  10.    out.println(msg.getTitre());
  11.   %>
  12.  </td>
  13. </tr>
  14. <%}%>
  15. </table>


 
Et voilà mon bean :
 

Code :
  1. /*
  2. * Created on 7 mai 2004
  3. *
  4. */
  5. package miage.bean;
  6. import java.sql.*;
  7. import java.util.*;
  8. import javax.naming.*;
  9. import javax.sql.DataSource;
  10. /**
  11. * @author eric.ledonge@free.fr
  12. *
  13. */
  14. public class Message implements java.io.Serializable {
  15. private int identifiant;
  16. private int identifiantPere;
  17. private String visiteur;
  18. private String date;
  19. private String titre;
  20. private String corps;
  21. private static final String select = "SELECT identifiant, identifiantPere, visiteur, date, titre, corps  FROM MESSAGE";
  22. public Message() {
  23. }
  24. public Message(ResultSet rs) throws SQLException {
  25.  init(rs);
  26. }
  27. public void init(ResultSet rs) throws SQLException {
  28.  this.identifiant = rs.getInt("identifiant" );
  29.  this.identifiantPere = rs.getInt("identifiantPere" );
  30.  this.visiteur = rs.getString("visiteur" );
  31.  this.date = rs.getString("date" );
  32.  this.visiteur = rs.getString("titre" );
  33.  this.corps = rs.getString("corps" );
  34. }
  35. static Connection getConnection() {
  36.  try {
  37.   Context ctx = new InitialContext();
  38.   if(ctx == null ) throw new Exception("Erreur : pas de context" );
  39.   System.out.println(ctx);
  40.   DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/forum" );
  41.   return ds.getConnection();
  42.  }
  43.  catch (Exception e) {
  44.   System.out.println("Erreur : " + e);
  45.   return null;
  46.  }
  47. }
  48. public static Vector getMessages() throws SQLException {
  49.  Connection con = null;
  50.  Statement stm = null;
  51.  ResultSet rs = null;
  52.  Vector vec = new Vector();
  53.  try {
  54.   con = getConnection();
  55.   stm = con.createStatement();
  56.   rs = stm.executeQuery(select);
  57.   while (rs.next()) {
  58.    // Je récupère un message de la base de données
  59.    Message msg = new Message(rs);
  60.    // Je vérifie l'indentifiant père du message afin de savoir si c'est un message racine
  61.    if (msg.getIdentifiantPere() == 0) {
  62.     // Si oui, j'ajoute ce message à la fin du vecteur
  63.     vec.add(msg);
  64.     System.out.println(msg);
  65.    }
  66.    else {
  67.     // Sinon, je recherche la position du père successeur de son père dans le vecteur
  68.     boolean trouve = false;
  69.     int cpt = 0;
  70.     Enumeration en = vec.elements();
  71.     while (en.hasMoreElements() || trouve == false) {
  72.      Message buf = (Message) en.nextElement();
  73.      if ((buf.getIdentifiant() + 1) == msg.getIdentifiantPere()) {
  74.       vec.add(cpt, msg);
  75.       System.out.println(msg);
  76.      }
  77.      else {
  78.       vec.add(msg);
  79.       System.out.println(msg);
  80.      }
  81.      cpt++;
  82.     }
  83.    }
  84.   }
  85.  }
  86.  finally {
  87.   if (rs != null) rs.close();
  88.   if (stm != null) stm.close();
  89.   if (con != null) con.close();
  90.  }
  91.  return vec;
  92. }
  93. public int getIdentifiantPere() {
  94.  return this.identifiantPere;
  95. }
  96. public void setIdentifiantPere(int identifiantPere) {
  97.  this.identifiantPere = identifiantPere;
  98. }
  99. public int getIdentifiant() {
  100.  return this.identifiant;
  101. }
  102. public void setIdentifiant(int identifiant) {
  103.  this.identifiant = identifiant;
  104. }
  105. public String getTitre() {
  106.  return this.titre;
  107. }
  108. }


 
Quelqu'un aurait une petite idée ?

mood
Publicité
Posté le 07-05-2004 à 17:23:30  profilanswer
 

n°719056
FrediX
Coin !
Posté le 07-05-2004 à 17:46:41  profilanswer
 

Ouais, Message.getMessages() charge tous les messages de ton forum ?
C'est pas un peu complètement bourrin ?

n°719062
Roco
Posté le 07-05-2004 à 17:53:59  profilanswer
 

Peut-être que oui en effet :pt1cable:  
 
Ce code est en fait issu d'un remodelage personnel d'un exemple se trouvant dans le bouquin Tomcat par la pratique chez Eyrolles.
 
L'exemple fonctionnait bien, j'ai donc pensé le réadapter à mon pb.
 
Mais comment puis-je alors m'y prendre pour faire le traitement qui consiste à afficher dans le bon ordre les messages racineset leurs réponses ?
 
C'est dommage que ça bouffe autant de mémoire car je trouvais cette méthode pas mal :)

n°720030
the real m​oins moins
Posté le 09-05-2004 à 21:15:00  profilanswer
 

tu vas me faire le plaisir de virer ton code d'acces aux données en dehors du bean [:kiki]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°720032
jagstang
Pa Capona ಠ_ಠ
Posté le 09-05-2004 à 21:16:11  profilanswer
 

je parie sur un stack overflow typique du récursif

n°720632
seabee
Posté le 10-05-2004 à 14:45:06  profilanswer
 

C'est quoi un bean?
Je veux dire, pour de vrai. Parce que tout ce que j'ai lu c'était imcompréhensible. Pas la peine d'implémenter ou de dériver quoi que ce soit?
 
Suffi de faire n'importe quoi en JAVA et de dire "Mais qu'est-ce que c'est que ce bean ? "

n°721418
meumeul
Stay Heavy
Posté le 11-05-2004 à 09:05:00  profilanswer
 

Citation :

<% Vector vec = Message.getMessages(); %>


Les vector c mal


Message édité par meumeul le 11-05-2004 à 09:05:23
n°721419
jagstang
Pa Capona ಠ_ಠ
Posté le 11-05-2004 à 09:05:35  profilanswer
 

meumeul a écrit :

Citation :

<% Vector vec = Message.getMessages(); %>


Les vector c mal


:??: explique...

n°721644
the real m​oins moins
Posté le 11-05-2004 à 11:32:33  profilanswer
 

JagStang a écrit :

:??: explique...

c'est un moyen courant de se la péter dans le milieu des semi-noobs qui viennent d'apprendre qu'il vaut mieux utiliser un ArrayList qui est un vector non synchronizés, meme milieu qui croit que la synchronization tue les performances.
Jusqu'a ce qu'ils se rendent compte qu'ils gagneraient autant à utiliser LinkedList dans les 3/4 des cas :ange:

n°721656
seabee
Posté le 11-05-2004 à 11:41:38  profilanswer
 

the real moins moins a écrit :

c'est un moyen courant de se la péter dans le milieu des semi-noobs qui viennent d'apprendre qu'il vaut mieux utiliser un ArrayList qui est un vector non synchronizés, meme milieu qui croit que la synchronization tue les performances.
Jusqu'a ce qu'ils se rendent compte qu'ils gagneraient autant à utiliser LinkedList dans les 3/4 des cas :ange:


 
LinkedList et ArrayList c'est pas du tout la même chose : le choix est purement algorithmique, on voit ça sur les bans de la fac ou autre (cout insertion/deletion, etc.), aucune raison qu'on fasse chier qqun avec ça ici?
 
Synchronized ou non, c'est une question technique sur le langage, c'est normal que l'on en parle plus souvent...  
 
De toute façon, les 3/4 du temps, la solution la plus performante reste les tableaux.

mood
Publicité
Posté le 11-05-2004 à 11:41:38  profilanswer
 

n°721673
the real m​oins moins
Posté le 11-05-2004 à 11:48:54  profilanswer
 

oui oui, je deconnais :o
(cela dit, il existe bcp de code ou le choix n'est pas fait entre LinkedList et ArrayList, et ArrayList est utilisé "à priori", du moins dans le code que je vois tous les jours c'est comme ça :D)

n°721688
seabee
Posté le 11-05-2004 à 11:53:55  profilanswer
 

the real moins moins a écrit :

oui oui, je deconnais :o
(cela dit, il existe bcp de code ou le choix n'est pas fait entre LinkedList et ArrayList, et ArrayList est utilisé "à priori", du moins dans le code que je vois tous les jours c'est comme ça :D)


 
pov meumeul, il risque de mal le prendre et on va plus jamais le revoir de par chez nous  :(  :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [WINNER INSIDE] Je suis fort en algo que j'arrive à planter ma bécane

 

Sujets relatifs
service windows n'arrive pas à récupérer variable d'environnement :(J'arrive pas à propager mon id de session d'une page à l'autre
[Tomcat] Configuration (server.xml inside)J'arrive pas a utilise la fonction integre de access 2000 !!!!
Algo du plus court chemin avec des boucles dans le grapheAvis sur un code (classe interne inside)
Algo de shannon fanoGestion de demande de congés en ASP ( /!\ n00b inside)
javascript:openWindow, je n'y arrive pas.Operation Suicide [Recherche Dev PHP inside]
Plus de sujets relatifs à : [WINNER INSIDE] Je suis fort en algo que j'arrive à planter ma bécane


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)