Page 1 sur 2

Problème agent java, le html ne s'affiche plus

MessagePublié: 10 Jan 2011 à 10:26
par kelaan
Bonjour,
Voilà j'ai fait un agent java qui s'exécute à l'ouverture d'un masque. Dans le masque j'y est mis un RichText et grâce à appendstyle, je peux y insérer du html.
Mais bizarrement ça ne marche plus, j'ai du faire une erreur quelques part, mais je n'arrive pas à la trouver.

Voilà le code:


Code : Tout sélectionner
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;

import lotus.domino.*;

public class JavaAgent extends AgentBase {

    public void NotesMain() {

      try {
          Session session = getSession();
          AgentContext agentContext = session.getAgentContext();
         
          String serveur = "********";
          String base = "**********";
         
         
          Document   adoc;
          // (Your code goes here)
         
          adoc = agentContext.getDocumentContext();
         
          adoc.replaceItemValue("nom", "titi");
         
          RichTextItem  richtext;
         
          //richtext = (RichTextItem)adoc.getFirstItem("body");
          // richtext = adoc.createRichTextItem("body");
         
             richtext = (RichTextItem)adoc.getFirstItem("body");
              richtext.addNewLine();
              richtext.appendText("tutu");
              RichTextStyle style = session.createRichTextStyle();
              style.setPassThruHTML(RichTextStyle.YES);
              richtext.appendStyle(style);
              richtext.appendText("<style>");
              richtext.appendText("table { border : medium solid #000000; width : 80%;}");
              richtext.appendText("td,th { border : thin solid  #6495ed; width: 10%; }");
              richtext.appendText("</style><table>");
              richtext.appendText("<th>Horaires</th><th>Lundi</th><th>Mardi</th><th>Mercredi</th>");
              richtext.appendText("<th>Jeudi</th><th>Vendredi</th><th>Samedi</th>");
              richtext.appendText("<tr><td> 9 H <br> 10 H <br> 11 H <br> 12 H <br> </td>");
              richtext.appendText("<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>");
              richtext.appendText("<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr>");
              richtext.appendText("<td> 14 H <br> 15 H <br> 16 H <br> 17 H <br> 18 H <br> </td>");
              richtext.appendText("<td> &nbsp; </td><td> &nbsp;</td>");
              richtext.appendText("<td> &nbsp; </td> <td> &nbsp;</td>");
              richtext.appendText("<td> &nbsp; </td> <td> &nbsp; </td> </tr></table>");
             

         
              Database db = session.getDatabase(serveur,base);
              View premvue = db.getView("People");
             
              Document recherche = premvue.getFirstDocument();
              String tabutil [] = new String [1000];
              int i = 0;
              String Add;
              String Service;
             
              System.out.println("bonjour !");
             
                
                
              while (recherche != null) {
                
                
                    Add = recherche.getItemValueString("MailFile");
                    Service = recherche.getItemValueString("MailSystem");
                   
                   
                   
                   
                if ((Add.indexOf("mail") > -1) && Service.equals("1")) {
                      
                      
                      
                      
                       tabutil[i] = Add;
                      
                    }
                   
                    i = i + 1;   
                     recherche = premvue.getNextDocument(recherche);
                    
              }
                   
                       
             
                
                
              for (i = 0; i <tabutil> -1 ) {
                   
                    Db = session.getDatabase(serveur,tabutil[i]);
                 }
                 else {
                     Db = session.getDatabase(serveur,tabutil[i]+".nsf");
                 }
                
                
                 vueacces = Db.getView("calendar");
                
                 System.out.println("On a réussit à ouvrir le calendrier "+ tabutil[i]);
                 }
                
                 catch(Exception e){
                   
                    continue;
                 }
                
                
                 Document docc =  vueacces.getFirstDocument();
                 while (docc != null) {
                   
                   
                    try{
                      
                    Vector datefin = docc.getItemValueDateTimeArray("EndDate");
                    DateTime dateagenda = (DateTime)datefin.get(0);
                    Date date = new Date();
                    SimpleDateFormat recupannee = new SimpleDateFormat("yyyy");
                    String anneeactuelle = recupannee.format(date);
                    String anneeagenda = dateagenda.toString();
                    anneeagenda = anneeagenda.substring(6,10);
                   
                   
                    int anactu = Integer.parseInt(anneeactuelle);
                    int anagenda = Integer.parseInt(anneeagenda);
                   
                   
                   
                    if (anactu < anagenda) {
                   
                      
                   
                   
                     System.out.println(docc.getItemValueDateTimeArray("StartDate"));
                      System.out.println(docc.getItemValueDateTimeArray("EndDate"));
                      System.out.println(docc.getItemValueDateTimeArray("StartTime"));
                      System.out.println(docc.getItemValueDateTimeArray("EndTime"));
                      System.out.println(docc.getItemValueString("Subject"));
                     
                       }
                    }
                      
                       catch(Exception e){
                           
                           
                         }
                     
                   
                      docc = vueacces.getNextDocument(docc);
              }
                 }

      } catch(Exception e) {
          e.printStackTrace();
       }
   }
}


Merci d'avance pour votre aide =)

MessagePublié: 10 Jan 2011 à 10:32
par Michael DELIQUE
salut

évite de laisser le nom du serveur en claire dans ton code. ça ne nous dérange pas, mais ton patron risque de ne pas aimer !

MessagePublié: 10 Jan 2011 à 10:36
par kelaan
Oups, j'ai pas fait gaffe, en plus je suis stagiaire ^^
Merci beaucoup =)

MessagePublié: 10 Jan 2011 à 10:38
par Michael DELIQUE
d'une manière générale :

on ne met Jamais ce genre d'information en DURE dans le Code. parceque si jamais tu change de serveur ton code est mort et tu dois tout te le repalucher. au pire du pire tu met le nom de ton serveur dans une constante comme ça en cas de changement, tu ne le change qu'a un seul endroit.

toujours penser à la maintenance et au faite qu'aucune données n'est inscrit dans le marbre.

généralement on remplace le nom du serveur par "MonServeur" et celui de la base par "MaBase" histoire que le lecteur sache de quoi il s'agit

MessagePublié: 10 Jan 2011 à 10:39
par kelaan
Ok je vais faire ça.
J'y avais pas pensé, j'avoue, alors que c'est important en plus.
Merci =)

MessagePublié: 10 Jan 2011 à 11:07
par amahi
Bonjour

Quel est le lien entre la partie richText et la suite (avec la recherche dans une vue??)
Ton erreur vient de la confusion entre uidocument et document, le uidocument n'existe pas en java. C'est normal que ton champ ne soit pas modifié.

Et sinon, par convention, evite les majuscule comme premiere lettre de variable, reserve ça au nom de la classe pour eviter les confusions.

MessagePublié: 10 Jan 2011 à 11:14
par kelaan
Bonjour,

Merci de m'aider.

La suite n'est pas encore totalement codée en fait, après je dois mettre en relation mon calendrier et les récupération de données pour les mettre dans des divs de calendriers.

Par exemple, je récupère les informations d'un agenda d'un utilisateur et je vois qu'il est en réunion de 8h à 9h; je dois alors faire une div de couleur qui va prendre la place dans le calendrier html de 8h à 9h. J'espère avoir réussie à me faire comprendre, même si moi même je vois pas encore trop comment je vais coder ça, j'arrive à faire le calendrier, j'arrive à récupérer les données, mais mettre en relation...

Parcontre, désolé si je paraît inculte.. Mais c'est quoi uidocument?

Ok pour les conventions je vais changer ça.

MessagePublié: 10 Jan 2011 à 11:19
par Michael DELIQUE
salut

tu ne connais pas la class NotesUIDocument en Lotus Script ?

NotesUIDocument représente le document affiché a l'écran.
NotesDocument représente le document en mémoire/sur le disque.

MessagePublié: 10 Jan 2011 à 11:23
par kelaan
Ok ! Merci pour l'explication. En fait ça fait une semaine que je suis en stage, et j'apprends à connaître lotus notes par mes 'propres' moyens, mon tuteur est très occupé et je veux pas trop le déranger. Donc c'est une grande nouveauté pour moi, d'habitude je travaille sur C#, passer sur Java ça peut encore aller, mais Lotus Notes, c'est hard pour moi mais je me dégonfle pas. :D

En tout cas merci de m'aider. Mais cependant, j'arrive bien à récupérer le document donc je vois pas le problème d'UIdocument comme vous dîtes. Dans mon RichText au lieu d'avoir le calendrier, j'ai juste le code html en fait. Donc j'arrive bien à écrire dedans.

MessagePublié: 10 Jan 2011 à 11:26
par Michael DELIQUE
ton agent est lancé comment ?

il traite les documents sélectionnés ?

tu es en dev web ou client lourd ?

MessagePublié: 10 Jan 2011 à 11:27
par amahi
Ton soucis c'est que tu travail au niveau de la ram lorsque tu modifie ton richtext. A aucun moment tes modifs ne sont sauvegardés.
En fait c'est un problème de conception. A quoi te sert ton masque? Pourquoi lance tu un agent a son ouveture? Pourquoi ne pas lancer directement l'agent? Quel interet d'ecrire dans ton champ puisque tu ne sauvegarde pas son contenu?

MessagePublié: 10 Jan 2011 à 11:47
par kelaan
Alors, alors,

Mon agent est lancé à l'ouverture du masque. Le masque sert à afficher mon calendrier, c'est mon tuteur qui me l'a fait en me disant que ce sera plus facile de faire tout à l'intérieur d'un masque.

En revanche, je sais pas si l'histoire de la sauvegarde est réglée, car au départ je n'arrivait pas à écrire du texte dans le richtext du masque, le appendText ne fonctionnait pas, un développeur m'a alors rajouté un bouton dans le masque et il a ajouté cette commande au bouton: @Command([FileSave])

Donc je suppose que cela le sauvegarde?

MessagePublié: 10 Jan 2011 à 11:48
par Michael DELIQUE
oui !

MessagePublié: 10 Jan 2011 à 12:09
par amahi
Oui mais non...
Tu modifie ton doc en arriere plan au moment de l'ouverture.
Quand tu sauvegarde, tu sauvegardes ton document a l'ecran, donc tu perds les modifs creer en arriere plan.

MessagePublié: 10 Jan 2011 à 12:12
par kelaan
Je dois faire comment alors? Je dois sauvegarder mon document autre part?