Search the FirstSpirit Knowledge Base
Hallo zusammen,
ich möchte einen automatisierten Datenimport in Datenquellen realisieren.
Wir hatten dazu schon einmal eine Schulung bekommen und einen Teilerfolg
habe ich auch schon erzielt 🙂
Woran es jetzt hängt, ist das automatische erzeugen von Sections in einer
ContentAreaList und das Befüllen der erzeugten Section mit Daten. Ich kann
bisher eine Section erzeugen, sie befindet sich danach in der Datenquelle
und hat den richtigen Namen (hier "IMPORTED SECTION"). Der Paragraph, den
ich im Anschluss erzeuge (mit dem Inhalt "HALLO TEST") wird allerdings
noch nicht gespeichert.
Hier der relevante Code (der Teil mit der Section wird von "// ###### Section"
umschlossen):
//Get stores
ContentStoreRoot cs = (ContentStoreRoot) project.getUserService().getStore(Store.Type.CONTENTSTORE, false);
TemplateStoreRoot ts = (TemplateStoreRoot) project.getUserService().getStore(Store.Type.TEMPLATESTORE, false);
//Get templates
SectionTemplates secTemps = ts.getSectionTemplates();
SectionTemplate textBildTemplate = secTemps.getTemplate("text");
FormatTemplates formatTemplates = ts.getFormatTemplates();
FormatTemplate paragraphTemplate = formatTemplates.getFormatTemplate("p");
for(MediaNote mediaNote : mediaNotes){
Content2 csMediaNote = (Content2)cs.getStoreElement("mm_medienmitteilung", IDProvider.UidType.CONTENTSTORE);
//Content2 csTextBild = (Content2)ts.getStoreElement("text", IDProvider.UidType.CONTENTSTORE);
Schema schema = csMediaNote.getSchema();
Session session = schema.getSession();
if(true){//getExisting(session,"Videos","videoid",mediaNote.getId())==null) {
//create database entity
System.out.println("Creating entity");
Entity entityMediaNote = session.createEntity(csMediaNote.getEntityType().getName());
try {
csMediaNote.lock(entityMediaNote);
Dataset dataSet = csMediaNote.getDataset(entityMediaNote);
Data data = dataSet.getData();
System.out.println("Setting title");
TextEditorValue editorTitle = (TextEditorValue) data.get("st_titel").getEditor();
editorTitle.set(lang, mediaNote.getTitle() + " - IMPORT");
// ###### Section Start
System.out.println("Setting inhalt");
ContentAreaListValue editorInhalt = (ContentAreaListValue) data.get("st_inhalt").getEditor();
SectionList sectionList = editorInhalt.get(lang);
Section section = sectionList.create("IMPORTED SECTION", textBildTemplate);
DomEditorValue domValue = (DomEditorValue) section.getData().get("st_text").getEditor();
DomElement domElement = domValue.get(lang);
DefaultDomNode rootDomNode = domElement.getRoot();
DefaultDomNode paragraph = (DefaultDomNode) rootDomNode.appendChild(paragraphTemplate);
paragraph.appendChild("HALLO TEST");//mediaNote.getContent());
domValue.set(lang, domElement);
// ###### Section Ende
dataSet.setData(data);
System.out.println("Saving data.");
dataSet.save();
Hat jemand einen Tip, was nach fehlt?
Viele Grüße
Peter Dietz
es fehlt das #setData auf der neu erzeugten Section. Lock / Save ist für Sections der ContentAreaList nicht nötig bzw. nicht erlaubt.
SectionList sectionList = editorInhalt.get(lang);
Section section = sectionList.create("IMPORTED SECTION", textBildTemplate);
==> calSectionData =
section.getData();
DomEditorValue domValue = (DomEditorValue) calSectionData.get("st_text").getEditor();
DomElement domElement = domValue.get(lang);
DefaultDomNode rootDomNode = domElement.getRoot();
DefaultDomNode paragraph = (DefaultDomNode) rootDomNode.appendChild(paragraphTemplate);
paragraph.appendChild("HALLO TEST");//mediaNote.getContent());
==> section.setData(calSectionData);
Ich vermute, dass ich die neu erzeugte Section noch locken und dann save() aufrufen muss, nachdem die Daten der Section gesetzt wurden. Leider bekomme ich bei der Ausführung von
section = sectionList.create("IMPORTED SECTION", textBildTemplate);
section.setLock(true, false);
eine IllegalStateException um die Ohren gehauen.
Vielleicht hilft das bei der Beantwortung weiter? Fehlen noch Informationen?
Viele Grüße
Peter Dietz
es fehlt das #setData auf der neu erzeugten Section. Lock / Save ist für Sections der ContentAreaList nicht nötig bzw. nicht erlaubt.
SectionList sectionList = editorInhalt.get(lang);
Section section = sectionList.create("IMPORTED SECTION", textBildTemplate);
==> calSectionData =
section.getData();
DomEditorValue domValue = (DomEditorValue) calSectionData.get("st_text").getEditor();
DomElement domElement = domValue.get(lang);
DefaultDomNode rootDomNode = domElement.getRoot();
DefaultDomNode paragraph = (DefaultDomNode) rootDomNode.appendChild(paragraphTemplate);
paragraph.appendChild("HALLO TEST");//mediaNote.getContent());
==> section.setData(calSectionData);
Wunderbar, jetzt funktioniert es 🙂
Danke und Grüße
Peter Dietz