Gibt es eine einfach Möglichkeit, um in einer Datenquelle gespeicherte Felder vom Typ FS_LIST, etc. extern auszulesen und zu verarbeiten?
Author: ampersand83
Publication Date: 8/1/2012 10:23
Hallo zusammen,
wir wollen in einem Projekt über einen Webservice auf eine in FS gepflegte DB zugreifen, die Inhalte in einer externen Applikation verarbeiten, aufbereiten und letztlich dynamisch als JSF Tag ausliefern. Bei einfachen Datentypen, wie String oder Integer ist die Verarbeitung ja gar kein Problem, aber was mache ich z.B. wenn ich Felder in der Datenquelle habe, die Inhalte vom komplexen Typ FS_EDITOR (also z.B. FS_LIST, CMS_INPUT_DOM, etc.) besitzen.
Die Idee wäre die DB z.B. per Hibernate anzusprechen und dann die enstsprechenden Felder zu mappen. Wie schaffe ich es jetzt aber die komplexe Struktur einer FS_LIST so zu parsen, dass ich die Inhalte leicht in ein HTML Template schreiben kann und diesen Inhalt dann über das JSF Tag in einer Webseite ausgebe.
Es gibt ja die FormData und FormField API, jedoch sehe ich da noch nicht, wie ich die letztlich als XML vorliegenden Daten einer z.B. FS_LIST hierüber auslesen kann.
Evtl. stehe ich ja jetzt hier einfach auf dem Schlauch. :-) Es wäre wirklich toll, wenn mir hier jemand ein paar Denkanstöße geben könnte, wie ich das ganze umsetzen könnte. Also wie bekomme ich die als XML Struktur vorliegenden Daten einer FS_LIST außerhalb von FS ausgelesen und verarbeitet.
Viele Grüße,
Stefan
Tags: database, datasources, datenbank, fs_list
-
Author: maaroufi - 8/3/2012 12:31
Eventuell hilft folgende Testklasse weiter, sie liest die Absätze des ersten DOM einer FS_List aus:
public class FS_LIST_TESTER {
public static void main(String... args)
throws MaximumNumberOfSessionsExceededException, IOException,
AuthenticationException {
Connection con = ConnectionManager.getConnection("localhost", 11111,
ConnectionManager.SOCKET_MODE, "Admin", "Admin");
try {
con.connect();
Project pr = con.getProjectByName("Mithras Energy");
UserService us = pr.getUserService();
Language lang = pr.getMasterLanguage();
ContentStoreRoot rt = (ContentStoreRoot) us.getStore(
Store.Type.CONTENTSTORE, false);
//Datenquelle 'pressreleases', hier befindet sich die FS_List, deren Content auszulesen ist
Content2 cont = rt.getContent2ByName("pressreleases");
Entity enti = cont.getData().get(0);
Dataset dat = cont.getDataset(enti);
//cs_content=Variablenname der FS_List in der Tabellenvorlage
DataValue val = dat.getData().get("cs_content");
FsListEditorValue fsLeditor = (FsListEditorValue) val.getEditor();
FormDataList domList = fsLeditor.get(lang);
//Erstes Element der FS_List holen
IdProvidingFormData data = domList.get(0);
//Aus dem Absatz den DOM mit Namen 'st_text' holen
FormField feld = data.get(lang, "st_text");
DomElement domText = (DomElement) feld.get();
// Ab hier org.w3c.dom
Element element = domText.get();
NodeList nodeList = element.getChildNodes();
//Textwerte der Absätze ausgeben
for (int i = 0; i < nodeList.getLength(); i++) {
Element el =(Element)nodeList.item(i);
System.out.println(el.getTextContent());
}
} finally {
con.disconnect();
}
}
}
Parameter müssten angepasst werden
Freundliche Grüße
Ismail
0
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.
Kommentare
1 Kommentar