Autor Thema: ReadViewEntries  (Gelesen 3211 mal)

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
ReadViewEntries
« am: 08.01.07 - 22:42:01 »
So lange unbeachtet von mir. Und eigentlich ist das wirklich interessant.
Ohne dafür Zeit zu haben, versuche ich darüber eine Replizierung des 6/7er Forums von notes.net nachzubauen.

Also:
http://www-10.lotus.com/ldd/nd6forum.nsf/Dateallthreadedweb?ReadViewEntries&ExpandView

Hierzu lese ich das per Sax Parser aus (zur Zeit mit Java1.4). Im Grunde stehen da alle Informationen, die benötigt werden (Timestamp aber leider nicht, obwohl das definitiv zu gebrauchen wäre, aber egal).

Hier stehen auf jeden Fall mehr Infos drin als in den amtlichen RSS Feeds.
-> Autor
-> Datum
-> Struktur der Dokumente. Dokument 9.1 ist der Child von 9

Hier ein Auszug (Hervorhebungen von mir:
<viewentry position="9" unid="50BEADE0293A4F6E8525725D0069B0D7" noteid="13224A" children="1" descendants="1" siblings="89210">

   <entrydata columnnumber="0" name="$129">
<text>8.Jan.07</text>
</entrydata>

   <entrydata columnnumber="1" name="$126">
<text>1</text>
</entrydata>

   <entrydata columnnumber="3" name="$132">

   <text>
[<a href=/ldd/nd6forum.nsf/DateAllThreadedweb/50beade0293a4f6e8525725d0069b0d7?OpenDocument TITLE="Is their any benefit to put our DR servers into a seperate O...">Disaster Recovery Site Server Names</a>]

</text>
</entrydata>

   <entrydata columnnumber="4" name="$133">
<text>Ken Huber</text>
</entrydata>
</viewentry>

   <viewentry position="9.1" unid="58EB8ECF90E338EC8525725D006A12BF" noteid="132252" siblings="1" response="true">

   <entrydata columnnumber="0" name="$129">
<text/>
</entrydata>

   <entrydata columnnumber="1" name="$126">
<text/>
</entrydata>

   <entrydata columnnumber="2" name="$123" indent="1">

   <text>
[<a href=/ldd/nd6forum.nsf/DateAllThreadedweb/58eb8ecf90e338ec8525725d006a12bf?OpenDocument TITLE="One benefit of putting DR servers in a separate OU is that y...">RE: Disaster Recovery Site Server Names</a>]     (Jeffrey C. Dayton 8.Jan.07)
</text>
</entrydata>
</viewentry>
« Letzte Änderung: 08.01.07 - 22:46:30 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: ReadViewEntries
« Antwort #1 am: 08.01.07 - 23:19:23 »
Hier ein Auszug, was ich zur Zeit herausbekomme:
Muß noch ein bischen geparsed werden (v.a. beim Sonderfall Antwortdokumente).
Poste den Code, sobald es fertig ist.
(diesmal wirds fertig  ;D )


DiscussionEntry
position=1
poster=Stephen A Shook
date8.Jan.07
unid=92A91137FA671DF28525725D00796492
rawUrlText[<a href=/ldd/nd6forum.nsf/DateAllThreadedweb/92a91137fa671df28525725d00796492?OpenDocument TITLE="Hello I'm new to the Lotus Suite and my boss would like it s...">Language Translation Program for e-Mail</a>]
]
, [DiscussionEntry
position=2
poster=Matthew Bailey
date8.Jan.07
unid=761FB824ADA72D128525725D0077FCAA
rawUrlText[<a href=/ldd/nd6forum.nsf/DateAllThreadedweb/761fb824ada72d128525725d0077fcaa?OpenDocument TITLE="Hello - I haven't found a successful response to this error ...">Error running scheduled agent that creates Excel worksheet</a>]
]
, [DiscussionEntry
position=2.1
poster=null
date
unid=C7BBB45A8BC607518525725D0078B19C
rawUrlText[<a href=/ldd/nd6forum.nsf/DateAllThreadedweb/c7bbb45a8bc607518525725d0078b19c?OpenDocument TITLE="I have run into this issue in the past and I seem to recall ...">RE: Error running scheduled agent that creates Excel worksheet</a>]     (Robert Faughnan 8.Jan.07)
]

Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: ReadViewEntries
« Antwort #2 am: 09.01.07 - 21:25:24 »
Klappt sehr gut.
Ich hab letztes Jahr mit den RSS Feeds von Notes.net rumexperimentiert. Das Problem war aber, dass da eine Menge wichtige Informationen fehlten, d.h. v.a. die Beziehungen der einzelnen Postings zueinander -> ist Posting 15 eine Antwort oder ein neuer Thread, etc.
Mit ?ReadViewEntries UND den echt guten Netzwerkfähigkeiten von Java bekomme ich aber alles, inklusive des Bodies der Postings.

Als zeitgesteuerter Agent könnte ich sowas also laufen lassen, um ständig eine Kopie der Diskussionen von Notes.net in z.B. einer Notes-DB zu haben. Das Interface auf Notes.net ist ja nicht so berauschend. Und so hat mans eben lokal, falls Langeweile beim Zugfahren aufkommt, etc.

Ich versuch das dann am WE in einen Notes Agenten (für Notes 7) einzubauen.
Die einzige bisher verwendete externe Library (ausser Java1.4.2), die ich benutzt habe, ist jakarta-commons-lang. Und Joda-Times kommt wahrscheinlich auch rein. Beides sollte aber auch in Notes Java auf Notes7 Level laufen.

Für mich ist das eben auch so eine Versuch (oder Fingerübung  ;D ) mit -> nennen wir es Erfahrungen mit REST-orientierten Webservices.

Der Code ist zu lang, als dass ich ihn hier posten sollte (nur 4 Klassen, aber eine ist 236 Zeilen).
Ich werd dann die .nsf posten (source files werden da irgendwo liegen, Bakunin Commons License).

Den Body des Postings bekomme ich natürlich nicht über ?readViewEntries. Dafür hole ich mir vielmehr die Webseite (z.B.  http://www-10.lotus.com/ldd/nd6forum.nsf/DateAllThreadedweb/04d009d8cf8c55678525725e00692266?OpenDocument)
und alles zwischen dem ersten und dem zweiten
<img src=\"/ldd/nd6forum.nsf/10x10.gif?OpenImageResource\" width=\"10\" height=\"10\" ALT=\"\">
ist der Body. Noch ein paar String-Ersetzungen. Fertig.

Gruß Axel
« Letzte Änderung: 09.01.07 - 21:42:26 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: ReadViewEntries
« Antwort #3 am: 12.01.07 - 22:22:45 »
Läuft. Ich hau noch ein paar Katschen weg, beobachte das ein paar Tage, machs vielleicht noch besser, biete eventuell Apache Derby als weitere Storage Platform an, etc.
Es läuft zur Zeit nicht über einen Agenten sondern ein Javaprogramm lädt sich die Postings aus notes-net 6/7er Forum runter und schreibt sie von aussen in eine nsf, die bei mir auf dem Client liegt.

Werd das aber noch auf Agent umbauen.

Vielleicht interessant für Leute, die mit ReadViewEntries arbeiten wollen, oder eine Beispielanwendung für Java in Notes oder SAXParsing.

Gruß Axel




« Letzte Änderung: 12.01.07 - 22:26:16 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: ReadViewEntries
« Antwort #4 am: 14.01.07 - 19:22:54 »
Ich kopiere jetzt hier einfach mal das Eclipse Projekt rein. Und die Notes Datenbank.

Wie es funktioniert?
1. Notes Datenbank direkt in das Data-Verzeichnis eures Notes7 Clients legen.
2. Eclipse Projekt in Eclipse importieren (funktioniert vermutlich erst ab Eclipse 3.1). -> siehe Bilder unten
3. Ein typisches Problem wäre hier noch, dass du keinen Java1.4.2 Compiler/JRE in deinem Eclipse gebunden hast. (in dem Fall bitte Fragen, Standardproblem bei solchen Projektkopien).
4. Rechte Maustaste auf Klasse ParseActionTest im Folder Test (und da die einzige Klasse im einzigen Packet) und im Kontextmenü "run as Junit Test" (unter Refresh, eher unten).

Nun sollten im Eclipse Konsolenfenster ein paar vertrauenserweckende Meldungen erscheinen.

5) Die in 1) in Notes Data kopierte Datenbank öffnen. Die Ansicht "Discussion Entries" refreshen. Die Notes.net Diskussionsbeiträge sollten nun in der Datenbank sein. (wenn 4 zu Ende gelaufen ist).

Was ist daran so toll?
Das ist ein wie ich finde recht effizienter Weg, um Informationen aus einer Notes Datenbank über http zu extrahieren. Es benutzt ?ReadViewEntries zum extrahieren der Informationen aus Ansichten...
http://www-10.lotus.com/ldd/nd6forum.nsf/Dateallthreadedweb?ReadViewEntries&ExpandView
und parsed die Detaildaten (body des Postings aus einer anderen URL). 

Viel unkomplizierter und lightweighter (i.S. des bekannten Softwarearchitekturprinzips: "my tackle is lighter than urs") als SOAP Webservices.

Die Klasse ParseAction ist die Facade nach draussen. Hier wird ein SAX-Parsing Prozess gegen die ?readViewEntries xml-Datei angeschuppst.
NotesNetDiscussionHandler ist der SAX-Handler. Hier findet die eigentliche Annahme der geparsten Daten statt. Das charakteristische bei Sax ist eben, dass der Handler die Kontrolle bekommt (mag verwirren). Die Klasse erzeugt Instanzen des Typs DiscussionEntry.
DiscussionEntry ist dann das einzelne Notes.net Posting. Im Grunde eine Java Bean, die aber sehr viel eigene "nach-parse" Arbeit verrichtet. Die Roh-Daten erhalten diese Instanzen weitgehend vom NotesNetDiscussionHandler. Ausserdem benutzt sie die Klasse WebPageDownloaderAndPostProcessor die sich den Body des Posting (gibts in der ?ReadViewEntries URL nicht) von einer anderen URL besorgt (die sie sich vorher zusammengesetzt hat). Achso. Falls das Posting schon heruntergeladen worden ist (bei einem vorherigen Lauf) findet dieses kostspielige Runterladen nicht ein zweites Mal statt. Notes.net Postings können ja nicht editiert werden.
Ausserdem erzeugt NotesNetDiscussionHandler noch ein Objekt des Typs NotesDao. Dies ist die Implementierung eines einfachen Data Access Object Pattern, um die Daten in die Notes Datenbank zu speichern (und gegebenenfalls das Speichermedium Notes-Datenbank gegen RDBMS auszutauschen, etc, hey-> dao ist übersichtlich).
 
 




« Letzte Änderung: 14.01.07 - 20:11:20 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: ReadViewEntries
« Antwort #5 am: 14.01.07 - 19:25:50 »
hier noch 2 Bilder für Punkt 2 oben (falls das wer noch nicht gemacht hat).
Falls es jemand installiert: Ja. Bei meinen Projekten für Geld ist die junit-test coverage deutlich über die ca. 4% hier. Nicht gut. Aber die Software ist stabil.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline hwenck

  • Junior Mitglied
  • **
  • Beiträge: 58
Re: ReadViewEntries
« Antwort #6 am: 15.01.07 - 14:07:52 »
Nach Änderung (bei JRE Notes 7.0.2) lief alles bestens. Danke

   public ParseAction() {
      // evil stuff
//      System.setProperty("org.xml.sax.driver", "org.apache.crimson.parser.XMLReaderImpl");
   }

keysExistingEntries=[0242F9F7474544CB852572610071AC40, 0294D2DB471809F285257262001CAFAF, 183DE37B28A1C7DE8525726100758185, 1E4DAD65CA8C1FA485257262004B0321, 2934E926A98516C9852572620011CB23, 297EE5F4886E1B1385257262006C07AD, 2EF13787F05642E6852572620062A10E, 2FE5774F5A60A48C85257263004C33DD, 303A0731CF0F14F78525726300019BE1, 30851C28DB922453852572610082DB6C, 3500B9539258B96685257263002A75B8, 36D193FBA9A8EDCF8525726100733D96, 38F3824D511B25688525726200236B80, 3E18A17F85F8E4728525726200504324, 47CFA9D736EC04538525726100766A08, 4874701525BD74CA85257263002A1476, 49FEE3B1A80DCBDC8525726100720116, 4AA046405597B3968525726200828867, 4ED51D752E744DEC85257261006B7815, 51B95E62C51755468525726100691FA3, 564CAFDD961A11CA852572610078C32B, 583E931AE7D94A408525726100786F61, 60F6430C906CF739C22572620047A295, 616FF5D8284265AE85257261007375AB, 62C96C0CFC77CA9585257261006A9B99, 63BBFD12ABB2B3E5852572630045D771, 7788415378D697CC852572610078C407, 84CD2483A2F92AA5852572620074AA00, 87E274CA933BB3BB852572620077DDB9, 89EAA58E7618C4E9852572620024D93A, 8A459B5A10AD48C4C22572620047009E, 92C9FACC305E882B8525726300206BDF, 942848B5BE7E2959852572620006B0C6, 94DC237DAE739FEBC225726200484FFF, 98C8A7CC94DB551A85257262003D986C, 9B0F5F3767CFFE5585257261007071C3, 9E1584658B803B8585257261006A1778, A628359D19D0499F852572620035D501, AC46C981B1632C4E852572620052FF4A, B991FFDE1CCA306A8525726100745270, BAF41EAF51DEE3C085257262004AA322, CB9DDE7ABA4F98A385257261007B1568, CCF61F95BCF8469E8525726100822DAF, D5A9F1F5E8B7F8F285257261007591EF, D7A56048E732D71F8525726300027E28, DD69D492EF20068585257261007D7DC2, E392DBB0F05476E085257263002AD132, EC343FE5440D45E585257262005F9BE8, F15F964A4192BBB68525726100773011, F347D8DDE6362315852572610077F5AA, F66947C98F2FF535852572610078BD70]
Processing position 1
Processing position 1.1
Processing position 2
Processing position 3
Processing position 4
Processing position 5
Processing position 6
Processing position 6.1
Processing position 6.2
Processing position 7
Processing position 8
Processing position 8.1
Processing position 9
Processing position 10
Processing position 10.1
Processing position 11
Processing position 12
Processing position 13
Processing position 14
Processing position 15
Processing position 15.1
Processing position 16
Processing position 17
Processing position 17.1
Processing position 18
Processing position 18.1
Processing position 19
Processing position 20
Processing position 20.1
Processing position 21
processThisRun:[1, 1.1, 2, 3, 4, 5, 6, 6.1, 6.2, 7, 8, 8.1, 9, 10, 10.1, 11, 12, 13, 14, 15, 15.1, 16, 17, 17.1, 18, 18.1, 19, 20, 20.1, 21]
« Letzte Änderung: 15.01.07 - 14:15:02 von hwenck »

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: ReadViewEntries
« Antwort #7 am: 15.01.07 - 15:32:52 »
Danke für den Hinweis...
Ich hatte das normale JRE Sun 1.4.2. Da ist diese Zeile notwending.
In der Notes 1.4.2 JRE ist das aber offenbar anders belegt. Was auch immer...
Habs vergessen. Steht ja noch mein Kommentar
// evil stuff
drüber.  ;D

« Letzte Änderung: 15.01.07 - 16:00:31 von Axel Janssen »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz