aVogt
Returning Creator

Links aus einer Spalte eines Datensatzes ermitteln

Hallo,

ich möchte von einem bestimmten Datensatz die Links ermitteln, die in einer Spalte gespeichert sind (die wird gefüllt über CMS_INPUT_LINKLIST). Wenn ich von dem DS (de.espirit.or.impl.EntityImpl) das Feld hole, erhalte ich ein

     de.espirit.firstspirit.client.editorcomponent.EditorWrapper

Die gibts in der Api "nicht".

Wie komme ich von da auf die LinkListe (de.espirit.firstspirit.client.access.editor.LinkListEditorValueImpl),damit ich mir die Links ermitteln kann (in meinem Fall ist das ein contentLink)?

Ich mache es recht umständlich (abgeguckt vom Import).

Ich hole mir üder eine Datenquelle und den Datensatz eine "EntityData" (de.espirit.firstspirit.store.access.DataImpl) und dann das Eingabefeld, da komme ich an die Links ran.

contentSource = cs.getContent2ByName("dq_prd_rgl_import");
session = contentSource.getSchema().getSession();

hb_kv = dbRow.getKeyValue();
hb_kv.add(dbRow.getValue("fs_id"));
hb_dataset = hb_session.find(hb_kv);

entityData = hb_contentSource.getDataObject(hb_dataset);
nList= entityData.get("st_vdlink").getEditor().get(mLang);

for(int s=0;s<nList.size();s++) {
   link = nList.get(s).getAttributes().get("contentID");

...

}

Muss das so umständlich passieren, oder komme ich einfacher an die Links.

0 Kudos
3 Replies
feddersen
Community Manager

Der erste Teil stammt wohl aus dem erwähnten Importscript? Der sollte komplett unnötig sein.

Ich kommentiere mal den relevanten Teil:

Andreas Vogt wrote:

// hb_contentSource muss irgendwo vorher definiert sein, gibt ein Data-Objekt zurück

// hb_dataset müsste vom Typ Entity sein

entityData = hb_contentSource.getDataObject(hb_dataset);

// holt die Eingabekomponente "st_vdlink", es kommt ein LinkListEditorValue //zurück.

nList= entityData.get("st_vdlink").getEditor().get(mLang);

// über die Liste von LinkEditorValues iterieren und das contentID Attribut auslesen

for(int s=0;s<nList.size();s++) {
   link = nList.get(s).getAttributes().get("contentID");

...

}

Mit diesem Code arbeiten Sie auf dem Data-Objekt und den Namen der Eingabekomponenten. Diese sind zwar über das Mapping auf eine Spalte in der Tabelle abgebildet, sie arbeiten aber nicht direkt damit. Sie könnten also das Mapping ändern und ihr Code würde weiterhin funktionieren.

Sie können auch direkt mit der Entity arbeiten, dann müssen sie aber den Spaltennamen kennen. Kürzer wird der Code dadurch aber nicht.

Eventuell wäre es geschickter direkt den Referenzgraphen auszuwerten. Rechtsklick auf einen Datensatz -> Abhängigkeiten anzeigen. Dort werden auch verlinkte Datensätze angezeigt. Die Informationen beziehen aber auf den gesamten Datensatz. Auf dem Data-Objekt gibt es die Methode getReferences() um an diese Informationen zu gelangen. Die Referenzen haben auch einen Typ, sie dürften wohl nur Content-Links interessieren.

0 Kudos

Christoph Feddersen schrieb:

Sie können auch direkt mit der Entity arbeiten, dann müssen sie aber den Spaltennamen kennen. Kürzer wird der Code dadurch aber nicht.


Den Spaltennamen kenn ich ja und mit

     Entity.getValue("Link")

bekomme ich den auch. Nur kann ich damit nichts anfangen. Ich bekomme einen

     de.espirit.firstspirit.client.editorcomponent.EditorWrapper

Damit kann ich leider nichts anfangen. Einen EditorWrapper gibts auch nicht in der Api

(Hab ich oben schon mal angedeutet)

Eventuell wäre es geschickter direkt den Referenzgraphen auszuwerten. Rechtsklick auf einen Datensatz -> Abhängigkeiten anzeigen.

Das nutzt mir nichts, ich brauche die Informationen in einem Script (wenn ein Datensatz geändert wurde, geht eine Mail raus, mit dem hinweis, dass event. die verlinkten Objekte auch geändert werden müssen)

0 Kudos

Andreas Vogt wrote:


Ich bekomme einen

     de.espirit.firstspirit.client.editorcomponent.EditorWrapper

Damit kann ich leider nichts anfangen. Einen EditorWrapper gibts auch nicht in der Api

Da haben Sie Recht, dann sollten Sie den Weg auch nicht verwenden. Wie gesagt, es ist auch nicht kürzer und bringt auch keine Vorteile.

Auf den Referenzgraphen können Sie natürlich auch in ihrem Script verwenden, hatte ich in meinem vorherigen Beitrag bereits beschrieben.  Der Menüpunkt "Verwendung anzeigen" stellt den Referenzgraph nur grafisch dar. Ist praktisch, wenn man schnell mal schauen möchte, was der Referenzgraph an Daten enthält.

0 Kudos