Search the FirstSpirit Knowledge Base
Hallo zusammen,
mit dem Hintergrund Sätze aus Datenquellen von einem in ein anderes Projekt zu übertragen und inspiriert von folgendem Artikel: CSV-Daten in Datenquelle importieren haben wir uns den Quellcode geschnappt, entsprechend modifiziert und mit Strings (in und out) läuft alles prima. Da sowohl die bestehenden Quellsätze als auch die Zielsätze in der Datenquelle FIRSTspirit-Editor-Felder (für RichText) enthalten, haben wir als Datentyp beim Import den EditorWrapper eingesetzt. Leider ist es aber bisher in verschiedenen Konstellationen nicht gelungen, im besten Fall wird das Script nicht abgebrochen, im Zielfeld steht aber auch nichts drin.
Hier ein Ausschnitt aus dem Script:
reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
while ((line = reader.readLine()) != null) {
// Datensatz erzeugen
Entity ent = session.createEntity(tableName);
String[] fields = line.split(";");
de.espirit.firstspirit.client.editorcomponent.EditorWrapper newEditorWrapper = new de.espirit.firstspirit.client.editorcomponent.EditorWrapper(fields[2]);
// Datensatz befüllen
ent.setValue("aktiv", "1".equals(fields[0]));
ent.setValue("begriff", fields[1]);
ent.setValue("beschreibung", newEditorWrapper);
Und das der Test-Input:
1;test1;Das ist ein Text und so;
1;test2;Das ist der zweite Text;
Unsere Quellsätze und damit auch die RichText-Felder werden als normaler String in der csv-Datei abgelegt. Das erste Feld symbolisiert einen boolschen Wert, das zweite einen normalen String, der dritte Wert sollte in das RichText-Feld.
Wir haben in der Doku keine nähere Beschreibung dieses "EditorWrapper" finden können.
Hat jemand eine Idee?
Viele Grüße
Gaby
Hallo Gaby,
ich tue mich schwer hier eine schöne Lösung für dich zu finden. So wie ich das sehe gibt es für deinen Anwendungsfall keine out-of-the-box-Lösung - was der Grund ist, dass FirstSpirit genau dafür eine umfassende Java-Api bietet. Ich finde es schwierig hier ohne Customizing weiterzukommen. Wäre für euch Projektunterstützung von unserem Professional Service eine gute Idee?
Grüße,
Hannes
Hallo Gaby,
müsst ihr denn den Umweg über die CSV-Datei gehen? Schon weil EditorWrapper keine offizielle API ist, rate ich davon ab.
Könntet ihr nicht einfach ein Skript ausführen, das die Datensätze in einem Projekt ausliest und in ein anderes schreibt? Also in etwa so:
Habe das jetzt nur gedanklich und anhand der API durchgedacht und nicht tatsächlich getestet, aber dieser Ansatz ist meine Empfehlung.
Viele Grüße
Tim
Hallo Tim,
erstmal danke für die Antwort. Für uns wäre die csv-Datei kein Umweg, da sie im Quellprojekt sowieso erzeugt wird. Und das oben beschriebene Script hört sich sehr simpel an (und funktioniert ja auch für Strings). Das, was du beschreibst, setzt anscheinend wieder JAVA-Kenntnisse voraus, die uns leider nicht zur Verfügung stehen. Deshalb finde ich den Ansatz nicht so richtig verlockend. Und leider ist ja das DB-Handling in FS so wenig intuitiv, normalerweise sollte es ja kein großer Aufwand sein, Daten von einer DB-Quelle in eine andere gesteuert zu überführen ...
Ein anderer (Gedanken-)Ansatz fällt mir noch ein: Was passiert denn eigentlich, wenn ich die Daten auf Datenbank-Ebene (wir haben ORACLE zugrunde liegen) in die bereits bestehende Tabelle reinschiebe. Dann habe ich allerdings keine FS_ID zur Verfügung. Würde diese dann automatisch generiert, sobald ich den Satz über FS anfasse oder eher nicht funktional/defekt sein...?
Viele Grüße
Gaby
Hallo Gaby,
ich versuche mich mal an einer Antwort.
Du hast in deiner letzten Antwort gefragt, was FirstSpirit machen würde, wenn du direkt in die externe Datenquelle schreibst, und ob es dann eine FS_ID gibt etc. Theoretisch könntest du die Daten extern übertragen - dabei wäre es sinnvoll, die Tabelle nicht schreibbar von FS einzubinden, dann hättest du auch keine Sorgen um eine FS_ID - die würde dann nicht existieren. Allerdings hättest du auch keine Versionierung etc - an der Stelle bin ich mir über deinen Use-Case nicht so ganz sicher.
Genau das ist auch, was mich dahin bringt zu fragen: Hast du dir schon mal ContentTransport angeschaut? Eventuell löst das dein Problem auch schon, ohne dass du programmieren musst. Hier findest du die Dokumentation für das Feature: https://docs.e-spirit.com/odfs/dokumentation/module/entwickler/CONT_DE_FirstSpirit_CorporateContent....
Besonders, wenn du nur eine initiale Befüllung machen möchtest, kann das Feature hilfreich sein. Dabei erstellst du eine zip-Datei in dem einen Projekt, und kannst die Daten dann in ein anderes importieren.
Viele Grüße,
Lena
Hallo Lena,
eine Versionierung wäre schon sinnvoll, deshalb kommt eine externe Tabelle nicht in Frage.
ContentTransport war meine erste Wahl, aber so, wie ich das verstehe, habe ich keine Chance, die einzelnen Felder der jeweiligen Struktur anzusprechen. Also wenn ich z.B. 3 Felder A, B und C habe, nur A und B zu importieren, C wegzulassen (OK, die Spalte könnte ich ja nach dem Import löschen) oder so ganz nebenbei auch eine Datentyp-Konvertierung vorzunehmen (das ist allerdings nicht der Fokus).
Problem ist auch, dass ich die Zieltabelle schon habe und zusätzliche Sätze aus einem anderen Projekt aufnehmen möchte. Wenn man wenigstens innerhalb eines Projektes Daten von einer Tabelle in eine andere schieben könnte, wäre ich ja schon angetan....
Trotzdem: Danke für deine Tipps
Viele Grüße
Gaby
Hallo Gaby,
ich tue mich schwer hier eine schöne Lösung für dich zu finden. So wie ich das sehe gibt es für deinen Anwendungsfall keine out-of-the-box-Lösung - was der Grund ist, dass FirstSpirit genau dafür eine umfassende Java-Api bietet. Ich finde es schwierig hier ohne Customizing weiterzukommen. Wäre für euch Projektunterstützung von unserem Professional Service eine gute Idee?
Grüße,
Hannes
Hallo Hannes,
Danke für dein Feedback. Da das System leider so unflexibel ist, wäre eine Beauftragung wahrscheinlich die richtige Lösung. Wir haben uns jetzt entschieden, die Daten in Fleißarbeit zu übernehmen. Dann wird auch direkt mal ausgemistet... 😉
Viele Grüße
Gaby