Mad_Hamish
I'm new here

Automatisierter Datenimport - ContentAreaList

Jump to solution

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

0 Kudos
1 Solution

Accepted Solutions

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);

View solution in original post

0 Kudos
3 Replies
Mad_Hamish
I'm new here

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

0 Kudos

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);

0 Kudos

Wunderbar, jetzt funktioniert es 🙂

Danke und Grüße

Peter Dietz

0 Kudos