Willkommen
Gast
. Bitte
einloggen
oder
registrieren
.
23.05.12 - 15:23:11
News:
Schnellsuche:
Das Notes Forum
Domino 5 und frühere Versionen
Entwicklung
(Moderatoren:
Axel
,
Don Pasquale
,
eknori
,
Hoshee
,
ata
,
Thomas Schulte
,
koehlerbv
)
JavaAgent vs. neue Zeile (Newline)
« vorheriges
nächstes »
Seiten:
[
1
]
2
Autor
Thema: JavaAgent vs. neue Zeile (Newline) (Gelesen 1976 mal)
m3
Moderatoren
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 7269
Non ex transverso sed deorsum!
JavaAgent vs. neue Zeile (Newline)
«
am:
21.03.05 - 15:12:58 »
Also manchmal Frage ich mich schon, was die Mädls und Burschen von Iris/Lotus/IBM für ein Kraut rauchen. Anscheinend dürfte es ein Gutes sein.
Ich hab hier eine bestehende Applikation, an deren Forms/Feldern/Views ich eigentlich nix ändern sollte. Aufgabe ist/war es, einen JavaAgenten zu schreiben, der Daten via LDAP holt und in verschiedenste Textfelder schreibt.
So weit, so gut, das macht er auch alles ganz brav, BIS AUF ...
... die besch_____ Newlines (neue Zeile; @Newline). Ich kann reinschreiben, was ich will. Von "\n" über "\r", verschiedenste Kombinationen davon, sogar mit evaluate hab ich es schon probiert. In der Javaconsole gibt er es richtig aus, im Form hab ich dann nur so schwarze Bemmerln, aber keine neue Zeile.
Auch das Umkopieren des Textes aus einem (korrekten) RTF funktioniert nicht.
Laut den notes.net Foren ist dem so und man kann auch nix daran ändern.
Ein Multivalue- oder RT-Feld kann ich nicht dafür nutzen und auch nicht neu einführen, hat wer von Euch ev. noch eine Idee???
Gespeichert
HTH
m³ aka. Martin --
leyrers online pamphlet
|
LEYON - All things Lotus (IBM Collaborations Solutions)
All programs evolve until they can send email.
Except Microsoft Exchange.
-
Memorable Quotes from Alt.Sysadmin.Recovery
"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett
Weeks of programming can save you hours of planning!
koehlerbv
Moderator
Gold Platin u.s.w. member:)
Online
Geschlecht:
Beiträge: 19049
Re: JavaAgent vs. neue Zeile (Newline)
«
Antworten #1 am:
21.03.05 - 15:18:07 »
In LS muss man ja auch den Characterwert 10 einfügen statt 13. Versuche es doch mal auf diesem Wege, dieses Zeichen zu verwenden.
HTH,
Bernhard
Gespeichert
m3
Moderatoren
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 7269
Non ex transverso sed deorsum!
Re: JavaAgent vs. neue Zeile (Newline)
«
Antworten #2 am:
21.03.05 - 15:32:58 »
10 ist Newline ("\n")
13 ist Carrige Return ("\r")
Alles schon ausprobiert, kein Erfolg.
Gespeichert
HTH
m³ aka. Martin --
leyrers online pamphlet
|
LEYON - All things Lotus (IBM Collaborations Solutions)
All programs evolve until they can send email.
Except Microsoft Exchange.
-
Memorable Quotes from Alt.Sysadmin.Recovery
"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett
Weeks of programming can save you hours of planning!
koehlerbv
Moderator
Gold Platin u.s.w. member:)
Online
Geschlecht:
Beiträge: 19049
Re: JavaAgent vs. neue Zeile (Newline)
«
Antworten #3 am:
21.03.05 - 15:38:10 »
Nö, Martin, ich meinte, das Zeichen direkt in den String einzufügen, so à la
"Zeile 1" & Chr$ (10) & "Zeile 2"
in LotusScript.
Bernhard
Gespeichert
Marinero Atlántico
Gast
Re: JavaAgent vs. neue Zeile (Newline)
«
Antworten #4 am:
21.03.05 - 15:43:31 »
\n heisst in Java pro Plattform etwas anderes:
char(13) + char(10) auf Windows
char(10) auf Unix
Vielleicht auch ein bischen anders.
Seid ihr sicher, dass man in LotusScript in nicht RichText Feldern im Backend chr$(13) & Chr$(10) setzen kann und das auch noch funktioniert?
Vielleicht solltest du in Bob Balabans Looseleaf Forum posten.
@Bernhard: ich denke, das hat er gemacht.
Gruß Axel
«
Letzte Änderung: 21.03.05 - 15:48:48 von Marinero Atlántico
»
Gespeichert
m3
Moderatoren
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 7269
Non ex transverso sed deorsum!
Re: JavaAgent vs. neue Zeile (Newline)
«
Antworten #5 am:
21.03.05 - 16:00:57 »
Danke Leute, aber das hab ich alles schon probiert. Das dürfte wirklich ein Notes "Bug" sein. Auch bei Bob wurde das Problem bereits mehrmals ohne Ergebniss thematisiert.
Gespeichert
HTH
m³ aka. Martin --
leyrers online pamphlet
|
LEYON - All things Lotus (IBM Collaborations Solutions)
All programs evolve until they can send email.
Except Microsoft Exchange.
-
Memorable Quotes from Alt.Sysadmin.Recovery
"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett
Weeks of programming can save you hours of planning!
Marinero Atlántico
Gast
Re: JavaAgent vs. neue Zeile (Newline)
«
Antworten #6 am:
21.03.05 - 16:06:30 »
Zitat von: m3 am 21.03.05 - 16:00:57
Das dürfte wirklich ein Notes "Bug" sein.
Ich tippe auf die Auswirkung einer lange zurückliegenden Designentscheidung.
Der Begriff "Bug" ist für mich in diesem Kontext zu schwach.
Ein Bug ist für mich etwas, das mal eben durch einen fix behoben werden kann.
Gespeichert
m3
Moderatoren
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 7269
Non ex transverso sed deorsum!
Re: JavaAgent vs. neue Zeile (Newline)
«
Antworten #7 am:
21.03.05 - 16:14:42 »
Ok, ja. B0rken as designed.
BTW - ich hab nun doch eine Lösung gefunden:
Code:
Vector fv = new Vector();
fv.addElement( "Text 1" );
fv.addElement( "Text 2" );
doc.replaceItemValue("History", fv);
und schon steht im Form
Text 1
Text 2
und nicht
Text1||Text2
Warum das auch bei reinen Textfeldern und nicht nur bei Multivaluefields funktionert versteh ich zwar nicht, aber ich freu mich drüber.
So, und dafür hab ich mir heute ein Bier verdient.
Gespeichert
HTH
m³ aka. Martin --
leyrers online pamphlet
|
LEYON - All things Lotus (IBM Collaborations Solutions)
All programs evolve until they can send email.
Except Microsoft Exchange.
-
Memorable Quotes from Alt.Sysadmin.Recovery
"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett
Weeks of programming can save you hours of planning!
Marinero Atlántico
Gast
Re: JavaAgent vs. neue Zeile (Newline)
«
Antworten #8 am:
21.03.05 - 16:24:36 »
congrats (auch für die Nerven)
Gespeichert
m3
Moderatoren
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 7269
Non ex transverso sed deorsum!
Re: JavaAgent vs. neue Zeile (Newline)
«
Antworten #9 am:
21.03.05 - 16:36:22 »
Grazie Mille.
Ich sch... damit schon seit Mittag herum, aber es hat mit einfach keine Ruhe gelassen.
Gespeichert
HTH
m³ aka. Martin --
leyrers online pamphlet
|
LEYON - All things Lotus (IBM Collaborations Solutions)
All programs evolve until they can send email.
Except Microsoft Exchange.
-
Memorable Quotes from Alt.Sysadmin.Recovery
"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett
Weeks of programming can save you hours of planning!
sudsaat
Junior Mitglied
Offline
Beiträge: 67
Re: JavaAgent vs. neue Zeile (Newline)
«
Antworten #10 am:
04.04.11 - 17:24:01 »
Hallo Martin,
der Thread ist zwar schon ein paar Tage alt, aber ich stehe gerade vor der gleichen Aufgabe mit Java eine Historie zu ergänzen und somit benötige ich ebenfalls einen Zeilenumbruch.
Dein Workaround für Domino 5 scheint in Domino 8 nicht mehr zu klappen (zumindest nicht wie in deinem Fall bei reinen Textfelder ohne Multiple-Values).
Hast du zufällig auch eine Lösung für Domino 8 parat? Multivalue und TextList kann ich leider nicht einführen.
Grüße Thomas
Gespeichert
pram
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 687
Re: JavaAgent vs. neue Zeile (Newline)
«
Antworten #11 am:
04.04.11 - 18:29:16 »
Habt ihr schon mal den Character 0 ( \x00 oder wie auch immer man das in Java schreibt) probiert?
Hintergrund: ein @UrlEncode("Platform"; "Wert1" + @newLine +"Wert2") ergibt: Wert1%00Wert2
Gruß
Roland
Gespeichert
Roland Praml
IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework
sudsaat
Junior Mitglied
Offline
Beiträge: 67
Re: JavaAgent vs. neue Zeile (Newline)
«
Antworten #12 am:
04.04.11 - 19:51:22 »
Hi Roland,
habs gerade mit '\u0000' auf Windows getestet, das Resultat ist, dass in Notes der String ab dieser Stelle abgeschnitten wird, also aus:
Code:
"Das ist ein " + '\u0000' + "Zeilenumbruch"
wird in Notes:
"Das ist ein"
..und der Rest fehlt leider
Sonst noch eine Idee? Ist immens wichtig, da der Kunde das ohne Zeilenumbrüche nicht akzeptiert und "geht mit Java und Notes nicht" wikrt irgendwie lächerlich
Danke und Grüße
Thomas
Gespeichert
Peter Klett
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 1353
Re: JavaAgent vs. neue Zeile (Newline)
«
Antworten #13 am:
04.04.11 - 20:03:03 »
Mein Vorschlag ist sicherlich eine Krücke, aber von Java habe ich nicht wirklich Ahnung.
Wie wäre es denn, (falls es wirklich nicht funktionieren sollte), die Historie in ein Feld zu schreiben und keine Zeilenumbrüche, sondern stattdessen eine definierte Zeichenfolge ("\n" oder sonst etwas, was einigermaßen sinnvoll aussieht) zu schreiben. In der Maske wird dann nicht das so gefüllte Feld angezeigt, sondern ein Feld "berechnet zur Anzeige" mit der Formel @ReplaceSubstring (Feldname; "\n"; @Newline).
Ist nicht wirklich toll, aber wenn die Kundenakzeptanz dran hängt und es nur ein Historienfeld ist ...
Gespeichert
pram
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 687
Re: JavaAgent vs. neue Zeile (Newline)
«
Antworten #14 am:
04.04.11 - 22:24:41 »
Ich kann den Vorschlag von Peter noch etwas ausbauen:
ein @ReplaceSubstring(@Char(13);@Newline) in der Eingabeumsetzung sollte ggf schon reichen.
du brauchst halt noch ein ComputeWithForm was aber ggf. Nebenwirkungen mit sich bringt
(zur Not ein Temp-Doc erstellen und dies mit einer simplen Form berechnen die nur ein berechnetes Feld enthält und anschließend das Item in dem das Ergebnis der Berechnung landet ins Original kopieren)
... zugegeben ein ziemlicher Hack...
Gruß
Roland
Gespeichert
Roland Praml
IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework
sudsaat
Junior Mitglied
Offline
Beiträge: 67
Re: JavaAgent vs. neue Zeile (Newline)
«
Antworten #15 am:
05.04.11 - 19:47:54 »
Hallo zusammen,
vielen Dank für eure Vorschläge. Bei neuen Feldern die ich anlege habe ich bereits einen Workaround über 2 Felder gemacht. Das eine wird befüllt mit "|" als Trenner und das andere berechnet zur Anzeige mit @Replace(...).
Leider hängt am Historienfeld ein Rattenschwanz den nicht nicht 100%ig abschätzen kann, was ich bisher weiß um diese Lösung einzuführen:
- 3 Notes Libraries anpassen, die ebenfalls die Historie dann über "|" erzeugen müssen (eine client, server und interface-lib)
- einen Migrationsagenten der über ein paar Tausend Dokumente rattert (ok, das würde ja gehen)
- Anpassung der Form
soweit ja "nur" fleißarbeit, aber das Feld wird ebenfalls für die revisionssichere Ablage in Archiv-Systemen herangezogen, daher hat der Wirtschaftsprüfer ein besonderes Augenmerk darauf gelegt (weiß also nicht, ob dieser Workaround durchgehen würde). Weiter müssten die Export-Agenten für alle realisierten Archivsysteme (Infostore, Easy Enterprise, ..) angepasst und genau zu einem Zeitpunkt X umgestellt werden... und das alles weil IBM keine Zeilenumbrüche über Wrapper-Klassen hinbekommt?!?
Der Rattenschwanz ist mir ein wenig zu Heikel und auch (wie leider so oft) wieder ein viel zu teurer workaround in Notes (@Peter, da hatten wir es doch vor kurzem davon)
Bin also weiter an allen Ideen, Vorschläge und Lösungen interessiert.
Grüße Thomas
Gespeichert
Peter Klett
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 1353
Re: JavaAgent vs. neue Zeile (Newline)
«
Antworten #16 am:
05.04.11 - 21:02:02 »
Zitat von: sudsaat am 05.04.11 - 19:47:54
(@Peter, da hatten wir es doch vor kurzem davon)
Darauf hab' ich gewartet
Gibt es einen triftigen Grund, warum der Agent in Java geschrieben sein muss? Mit Script ist das schließlich kein Problem
«
Letzte Änderung: 05.04.11 - 21:10:09 von Peter Klett
»
Gespeichert
Peter Klett
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 1353
Re: JavaAgent vs. neue Zeile (Newline)
«
Antworten #17 am:
05.04.11 - 22:17:49 »
Du kannst mir zu meinem ersten selbstgeschriebenen (oder zusammenkopierten) Java-Agenten gratulieren. Das Thema hat mich ja nun doch irgendwo gejuckt. Nach ein bißchen Hilfe-Stöbern bin ich zu folgender Lösung gekommen:
Code:
import lotus.domino.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
DocumentCollection dc = agentContext.getUnprocessedDocuments();
Document doc = dc.getFirstDocument();
Stream stream = session.createStream();
stream.writeText("Zeile1", Stream.EOL_CR);
stream.writeText("", Stream.EOL_LF);
stream.writeText("Zeile2");
stream.setPosition(0);
doc.replaceItemValue("Test", stream.readText());
do {} while (!doc.save(false, false, true));
} catch(NotesException e) {
e.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}
}
}
Der tut unter 8.5.1 genau das, was er soll.
Der Trick ist bei den Stream.EOL_CR und _LF. Wenn man nur den Stream.EOL_CRLF nutzt, wird der Zeilenumbruch in der Felderliste angezeigt, aber nicht im geöffneten Dokument. Vermutlich sind da die Zeichen 13 und 10 vertauscht (laut Hilfe ist EOL_CR = ASCII 13, EOL_LF = ASCII 10 aber EOL_CRLF = ASCII 10 + 13. Korrekt wäre aber ASCII 13 + 10. Vermutlich stimmt die Doku mit der Umsetzung überein).
Durch die einzelne Verwendung von EOL_CR und _LF stimmt dann die Reihenfolge wieder.
Möglich, dass da noch ein paar Unsauberkeiten drin sind (z.B. sehe ich gerade zwei catch (Exception), da ist bestimmt einer doppelt?), aber vielleicht hilft Dir die Kernaussage weiter.
«
Letzte Änderung: 05.04.11 - 22:20:49 von Peter Klett
»
Gespeichert
Pitiyankee
Gold Platin u.s.w. member:)
Offline
Beiträge: 2859
Re: JavaAgent vs. neue Zeile (Newline)
«
Antworten #18 am:
06.04.11 - 00:19:46 »
2 catch sind ok. Du kannst aber auch einfach die erste löschen.
Oder versuch die mal umzudrehen.
catch Exception vor catch NotesException. Und dann gucken, was der Compiler sagt.
In meinem aktuellen Projekt würd ich das so schreiben, aber das ist halt auch irgendwie chi chi.
Code:
} catch(Exception e) { // NOSONAR catching RuntimeException is save in this context.
e.printStackTrace();
}
Da laufen statische Code-Analysen drüber und das würd gegen eine Regel verstossen. Ein Programm Sonar aggregiert die Verstösse. Da in bestimmten Kontexten das Verstösse-Anmeckern eigentlich keinen Sinn macht, läßt sich das mit einem Sonar Kommentar begründet ausschalten.
Was soll eigentlich diese Zeile
Code:
do {} while (!doc.save(false, false, true));
Warum nicht einfach:
Code:
doc.save(false, false, true);
Ich würd den stream sicher schliessen. Müsste man auch in LotusScript machen, macht nur keiner. Falls zwischen dem Öffnen des Streams und dem schliessen ein Fehler auftritt, wird das schliessen nie erreicht. Finally wird dagegen immer aufgerufen. In Java7 gibt es ein try with ressources AutoCloseable Feature, das diese traditionelle Turnübung unnötig macht.
Code:
stream.writeText("Zeile2");
stream.setPosition(0);
stream.close();
stream = null;
} catch(Exception e) { // NOSONAR catching RuntimeException is save in this context.
e.printStackTrace();
} finally {
if (stream != null) {
try {
stream.close();
} catch (IOException ioe) {} // NOSONAR empty catch is fine to close stream in finally.
}
}
Aber einfach nicht verunsichern lassen. So wichtig ist das alles nicht. Hauptsache es tut.
«
Letzte Änderung: 06.04.11 - 00:35:53 von Pitiyankee
»
Gespeichert
As far as Connections goes, I consider it as a much more "classic" IBM software. Much like Websphere Portal when portals were the hype. Very powerfull but very complex, very demanding on infrastructure to set up and often sold for the wrong reasons and then a strong deception for customers.
Michael Bourak
---
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
Peter Klett
Gold Platin u.s.w. member:)
Offline
Geschlecht:
Beiträge: 1353
Re: JavaAgent vs. neue Zeile (Newline)
«
Antworten #19 am:
06.04.11 - 07:55:36 »
Zitat von: Pitiyankee am 06.04.11 - 00:19:46
Was soll eigentlich diese Zeile
Code:
do {} while (!doc.save(false, false, true));
Die hatte ich so aus einem Beispiel-Code aus der Notes-Hilfe zu document.save kopiert (Examples: save method).
Zitat
This agent saves a document. The agent keeps trying if the document is not saved because someone else modified it while the program was running.
Gespeichert
Seiten:
[
1
]
2
« vorheriges
nächstes »
Gehe zu:
Bitte wählen Sie ein Ziel:
-----------------------------
ATNOTES TEAM
-----------------------------
=> Neuigkeiten - Wichtiges
===> Archiv
-----------------------------
Lotus Notes / Domino 8
-----------------------------
=> ND8: Administration & Userprobleme
=> ND8: Entwicklung
=> ND8: Entwicklung - XPages
-----------------------------
Lotus Notes / Domino 7
-----------------------------
=> ND7: Administration & Userprobleme
=> ND7: Entwicklung
-----------------------------
Lotus Notes / Domino 6
-----------------------------
=> ND6: Administration & Userprobleme
=> ND6: Entwicklung
-----------------------------
Domino 5 und frühere Versionen
-----------------------------
=> Administration & Userprobleme
=> Entwicklung
-----------------------------
Lotus Notes / Domino Sonstiges
-----------------------------
=> Tipps und Tricks
=> Tools & Downloads
=> Projekt Bereich
===> Help-Desk Applikation !!Help!!
=> Java und .NET mit Notes/Domino
=> Companion Products
=> OLE/COM-Programmierung
=> Aus- und Weiterbildung
-----------------------------
Best Practices
-----------------------------
=> At Notes Best Practices
=> Diskussionen zu Best Practices
-----------------------------
Sonstiges
-----------------------------
=> Offtopic
=> Kritik & Vorschläge
=> Infrastruktur
=> Job Suche/Angebote
1 Stunde
1 Tag
1 Woche
1 Monat
Immer
Einloggen mit Benutzername, Passwort und Sitzungslänge
Powered by SMF 1.1.16
|
SMF © 2006, Simple Machines
Impressum Atnotes.de -
Powered by Syslords Solutions -
Datenschutz
| Partner:
Tinte / Toner günstig