Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: machineslave am 26.06.07 - 11:08:56

Titel: Felder mit Java Programm füllen; wie ins richtige Datenformat konvertieren?
Beitrag von: machineslave am 26.06.07 - 11:08:56
<sorry ... hab's grad selber herausgefunden.... wer lesen kann  :)


Hallo,

ich habe mir ein kleines Javaprogramm geschrieben, welches mit Parametern aufgerufen wird und dann ein neues Dokument erstellen soll und die Werte entsprechend in die Felder schreiben soll.

Nun würde ich gerne das Feld "Date" mit einem Datum, "Time" mit einer Uhrzeit und die anderen Felder mit einem numerischen Wert füllen. Ich weiss jedoch leider nicht, wie ich das hinbekomme, dass die Werte schon im entsprechenden Format geschrieben werden.

Hat jemand einen Rat?

Gruß

Stefan

import lotus.domino.*;

public class UpdateSpamRecord {
public static void main(String[] args) {
   Session s = null;
   try {
      s = NotesFactory.createSession(
            "<servername>",
            "<username>", "<password>");
   } catch (NotesException e) {
      e.printStackTrace();
   }
   Database db;
   try {
      db = s.getDatabase("", "test.nsf");
      Document doc = db.createDocument();
      doc.replaceItemValue("Form", "SpamReportEntry");
      doc.replaceItemValue("Date", args[0]);
      doc.replaceItemValue("Time", args[1]);
      doc.replaceItemValue("TotalMails", args[2]);
      doc.replaceItemValue("InboundSpam", args[3]);
      doc.replaceItemValue("InboundHam", args[4]);
      doc.replaceItemValue("Outbound", args[5]);
      doc.computeWithForm(true, false);
      
      doc.save(true, false);
   } catch (NotesException e1) {
      e1.printStackTrace();
   }
   
}
}
Titel: Re: Felder mit Java Programm füllen; wie ins richtige Datenformat konvertieren?
Beitrag von: Ralf_M_Petter am 26.06.07 - 17:10:15
Ergänzen würde ich auf jeden Fall zum Schluss noch ein s.recycle() um auch aufzuräumen. Du kannst dir sonst schwer zu erkennende Fehler einhandeln, die erst nach vielen Aufrufen des Programms auftreten.

Grüße

Ralf

P.S. Weiters ohne es jetzt probiert zu haben glaube ich nicht dass dein gepostetes Programm das macht was du willst, oder?
Titel: Re: Felder mit Java Programm füllen; wie ins richtige Datenformat konvertieren?
Beitrag von: machineslave am 27.06.07 - 10:10:35
Hallo,

das mit dem s.recycle() ist ein guter Tip. Ansonsten macht das Programm genau das, was ich möchte :-)
Titel: Re: Felder mit Java Programm füllen; wie ins richtige Datenformat konvertieren?
Beitrag von: Ralf_M_Petter am 27.06.07 - 10:19:46
Nein das glaube ich nicht. Du schreibst, du möchtest dass Datei ein Datum ist, Time eine Zeit und der Rest numerische Feler sind.

Wenn du aber an replaceItemValue einen String übergibst, wird das ein Text. du müsstest die Strings zuerst in die entsprechnden javatypen konvertieren, bevor du es an replaceItemValue übergibst.

Grüße

Ralf

P.S. Ah ich sehe was ich übersehen habe. Das Computewithform soll die Felder übersetzen. Ich würde es zwar nicht so machen, aber wenn es funktioniert. :-P
Titel: Re: Felder mit Java Programm füllen; wie ins richtige Datenformat konvertieren?
Beitrag von: machineslave am 27.06.07 - 10:47:48
Jou, stimmt. Ich vergass, den aktualisierten Code nochmal zu posten.
Hier ist er:

public class UpdateSpamRecord {
public static void main(String[] args) {
   Session s = null;
   DateTime date = null;
   DateTime time = null;
   Integer totalMails = new Integer(args[2]);
   Integer inboundSpam = new Integer(args[3]);
   Integer inboundHam = new Integer(args[4]);
   Integer outbound = new Integer(args[5]);
   try {
      s = NotesFactory.createSession(
             "<servername>",
            "<username>", "<password>");
      System.out.println("Connecting to server");
   } catch (NotesException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
   }
   try {
      date = s.createDateTime(args[0]);
      time = s.createDateTime(args[1]);
   } catch (NotesException e2) {
      // TODO Auto-generated catch block
      e2.printStackTrace();
   }
   Database db;
   try {
      db = s.getDatabase("", "test.nsf");
      System.out.println("Connecting to database");
      Document doc = db.createDocument();
      System.out.println("Creating document");
      doc.replaceItemValue("Form", "SpamReportEntry");
      doc.replaceItemValue("Date", date);
      doc.replaceItemValue("Time", time.getTimeOnly());
      doc.replaceItemValue("TotalMails", totalMails);
      doc.replaceItemValue("InboundSpam", inboundSpam);
      doc.replaceItemValue("InboundHam", inboundHam);
      doc.replaceItemValue("Outbound", outbound);
      System.out.println("Saving document");
      doc.computeWithForm(true, false);
      
      doc.save(true, false);
   } catch (NotesException e1) {
      // TODO Auto-generated catch block
      e1.printStackTrace();
   }
   
}
}