[Java] Class ouverture database

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

[Java] Class ouverture database

Messagepar KHVince » 05 Juil 2011 à 16:19

Bonjour,

J'ai créé une class Java dans une bib permettant d'effectuer différentes action sur base Notes, documents, vues, etc...
Cette class est divisée en différentes fonction dont une permettant d'ouvrir une base notes, celle-çi renvoyant un objet de type database.

Le problème est qu'il n'ouvre même pas la base dans la fonction...ce qui est très gênant :/
A cette fonction, je passe en paramètre le serveur et le nom de la base.
J'ai ajouté des messages pour contrôler la session et le username est tout est correcte.
Je n'ai aucun message d'erreur, seulement qu'il n'ouvre pas la base et le isopen() est à false...

J'ai testé en faisant un getDatabase directement dans l'agent et pas de problème, il m'ouvre bien la base :/

Auriez-vous une idée ? Un truc que je fais mal ?

Voici le code :


Code : Tout sélectionner
import lotus.domino.Database;
import lotus.domino.Document;
import lotus.domino.NotesException;
import lotus.domino.Session;
import lotus.domino.View;

public class ConnectNOTES {
   private String dtb;
   private String srv;
   private Session s;
   private Database dbNotes;
   
   String view;
   String searchWord;
   
   public ConnectNOTES(Session ses, String[] args){
      this.dtb   = args[0];
      this.srv   = args[1];
      this.s      = ses;
   }
   
   public Database getConnectionBase() throws NotesException {
      
      try{
         System.out.println("Java 1--> " + srv + " - " + dtb);
         System.out.println("Java 2--> " + s.getNotesVersion());
         System.out.println("Java 3--> " + s.getEffectiveUserName());
         
         dbNotes = s.getDatabase(srv, dtb);

         if (dbNotes.isOpen()){
            System.out.println("DBNotes : Connection Successful!");
         } else {
            System.out.println("DBNotes : Connection Failed!");
         }
           
       }catch(NotesException e){
            e.printStackTrace();
            System.out.println("ConnectNOTES - Error Trace in getConnectionBase() : " + e.getMessage());
       }
       
       return dbNotes;
   }

   public Document getDocumentParametre(Database db, String[] args) {
      
      Document document = null;

      try {
         
         this.view      = args[0];
         this.searchWord   = args[1];
         
         View viewParam = db.getView(view);
         document = viewParam.getDocumentByKey(searchWord, true);
         
      } catch (NotesException e){
            e.printStackTrace();
            System.out.println("ConnectNOTES - Error Trace in getDocumentParametre() : " + e.getMessage());
      }
      
      return document;
   }

        ....

}


Dans l'agent Java notes, l'appel de la fonction se fait :
Code : Tout sélectionner
          //Instanciation objet connectNotes
        Database curDb = agentContext.getCurrentDatabase();
          String[] paramNOTESArray;
          paramNOTESArray = new String[2];
          paramNOTESArray[0] = curDb.getServer();
          paramNOTESArray[1] = "path DB";
          ConnectNOTES connectNotes = new ConnectNOTES(session, paramNOTESArray);

          Database db = connectNotes.getConnectionBase();
         
          if (!db.isOpen()) {
             System.out.println("Erreur à l'ouverture de la base xxxxx");
          } else {
             System.out.println("xxxxx ouverte");
          }


Merci de votre aide.

Vince.

PS: Lotus 8.5.1FP3
KHVince
Premier posts
Premier posts
 
Message(s) : 13
Inscrit(e) le : 19 Mars 2009 à 16:17

Messagepar roubech » 05 Juil 2011 à 19:38

je ne vois pas la déclaration et l'initialisation de ton objet session
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar seroa » 06 Juil 2011 à 07:50

Salut,

Je trouve que ta classe ne sert pas à grand chose, mais je me trompe peut être. Elle t'apporte quoi de plus que les classes domino déjà existantes ?

J'ai vu aussi que tu ne recycles pas tes objets domino.
seroa
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 304
Inscrit(e) le : 08 Nov 2007 à 08:36
Localisation : Mâcon

Messagepar KHVince » 06 Juil 2011 à 08:16

Bonjour,

@roubech :
Je n'ai pas mis tout le code de l'agent mais :
Code : Tout sélectionner
import lotus.domino.*;
import java.sql.*;
import java.io.PrintWriter;

public class Test extends AgentBase {
public void NotesMain() {

      try {
          Session session = getSession();
          AgentContext agentContext = session.getAgentContext();

          //Création d'un objet pw pour envoyer dans le navigateur
          PrintWriter pw = getAgentOutput();

...

          //Instanciation objet connectNotes
   Database curDb = agentContext.getCurrentDatabase();
          String[] paramNOTESArray;
          paramNOTESArray = new String[2];
          paramNOTESArray[0] = curDb.getServer();
          paramNOTESArray[1] = "path DB";
          ConnectNOTES connectNotes = new ConnectNOTES(session, paramNOTESArray);

...



@seroa :
Devant récupérer différentes informations de différentes bases notes dans l'agent, j'ai préféré tout centraliser dans une class.
Pour le recyclage des objets, c'est pô faux, petit oublie :/


Merci,
Vince
KHVince
Premier posts
Premier posts
 
Message(s) : 13
Inscrit(e) le : 19 Mars 2009 à 16:17

Messagepar seroa » 06 Juil 2011 à 08:20

ok,

comment compte tu envoyer ou récupérer les paramètres srv, dbt et searchword dans ton agent ?
seroa
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 304
Inscrit(e) le : 08 Nov 2007 à 08:36
Localisation : Mâcon

Messagepar KHVince » 06 Juil 2011 à 15:05

Je ne vais pas entrer dans le détails de ma conception et/ou architecture mais j'ai une base de paramètre dans laquelle j'ai toutes les info nécessaire sur les autres bases (chemin, serveurs, etc...) sachant que le chemin/nom de cette base paramètre est dans un doc profil de mes bases.
KHVince
Premier posts
Premier posts
 
Message(s) : 13
Inscrit(e) le : 19 Mars 2009 à 16:17

Messagepar LSong » 07 Juil 2011 à 14:34

tu as pensé de faire un
dbNote.Open (je sais pas s'il faut des argument)

??
LSong
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 353
Inscrit(e) le : 07 Nov 2007 à 14:27
Localisation : Ile de france


Retour vers Développement

cron