Hallo Community,
ich komme hier aktuell nicht mehr weiter und wüsste nicht wo ich was übersehen haben könnte. Ich möchte nämlich über eine Datenquelle iterieren und mir einen externen Link aus einer Liste auslesen und ersetzen lassen. Dieser Link befindet sich in einer Section, die wiederum von einem FS_CATALOG verwendet wird.
Über die API habe ich der genauen Ort des Links schon ausfindig gemacht und dieser wird auch ersetzt. Doch leider wird der geänderte Wert nicht gespeichert...ich habe schon alles möglich ausprobiert und verstehe nicht wo der Fehler liegen könnte....ich habe das Skript nun sehr vereinfacht umgebaut, damit man genau sieht wo das Problem liegen könnte:
import de.espirit.firstspirit.access.store.StoreElement;
import de.espirit.firstspirit.access.store.templatestore.Template;
import de.espirit.firstspirit.access.store.Store;
import de.espirit.firstspirit.access.store.IDProvider;
import de.espirit.firstspirit.access.AdminService;
import de.espirit.firstspirit.access.store.sitestore.*;
import de.espirit.firstspirit.access.store.mediastore.*;
import de.espirit.firstspirit.access.*;
import de.espirit.firstspirit.access.store.contentstore.*;
import de.espirit.firstspirit.agency.*;
import de.espirit.or.*;
import java.lang.*;
import de.espirit.firstspirit.io.ServerConnection;
import de.espirit.firstspirit.access.project.Project;
import de.espirit.firstspirit.access.store.templatestore.TemplateStoreRoot;
import de.espirit.firstspirit.access.store.pagestore.Page;
import de.espirit.firstspirit.access.store.pagestore.Section;
import de.espirit.firstspirit.access.store.templatestore.gom.GomFormElement;
import de.espirit.firstspirit.forms.FormField;
import de.espirit.firstspirit.access.link.Link;
import de.espirit.firstspirit.access.editor.value.DomElement;
import de.espirit.firstspirit.access.editor.value.DomNode;
import de.espirit.firstspirit.access.editor.value.LinkDomNode;
import de.espirit.firstspirit.forms.FormData;
import de.espirit.firstspirit.client.access.editor.lists.Catalog.Card;
import de.espirit.firstspirit.client.access.editor.lists.Catalog;
import de.espirit.firstspirit.access.editor.value.Table;
import de.espirit.firstspirit.access.store.IDProvider;
import de.espirit.firstspirit.access.store.contentstore.Datatset;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Pattern;
import java.lang.NullPointerException;
import java.lang.IllegalStateException;
import de.espirit.firstspirit.access.store.globalstore.GCAPage;
import de.espirit.firstspirit.access.store.globalstore.GCASection;
import de.espirit.firstspirit.access.database.EntityTypeNotFoundException;
import de.espirit.firstspirit.access.Language;
import de.espirit.firstspirit.access.store.pagestore.Body;
import de.espirit.firstspirit.access.store.templatestore.WorkflowLockException;
import de.espirit.firstspirit.access.store.templatestore.LinkTemplate;
import de.espirit.firstspirit.access.editor.value.TableDomNode;
import de.espirit.or.schema.Entity;
import de.espirit.firstspirit.access.store.LockException;
us = context.getUserService();
contentStoreRoot = us.getStore(Store.Type.CONTENTSTORE, false);
Content2 content2 = contentStoreRoot.getContent2ByName("news");
for (Dataset dataset: content2.getDatasets()) {
try {
FormData formData = dataset.getFormData();
FormField formfield = formData.get(null, "cs_text_bottom");
Catalog catalog = (Catalog) formData.get(null, "cs_text_bottom").get();
dataset.setLock(true);
for (Catalog.Card card: catalog) {
if (card.getTemplate().getType() == Template.SECTION_TEMPLATE) {
FormData formDataCatalog = card.getItem();
FormField formFieldSection = formDataCatalog.get(null, "st_link");
Link link = (Link) formFieldSection.get();
if (link != null) {
if (link.getTemplate().getUid().equals("external_link")) {
FormData formDataLink = link.getFormData();
FormField formFieldLink = formDataLink.get(null, "lt_url");
context.logInfo("###FOUND###: " + dataset.getName() + " with Link-Url: " + formFieldLink.get());
String changedUrl = formFieldLink.get().replaceAll("http://www.dasIstEinTestLink.zo", "http://www.dasIstEinTestLink.de");
formFieldLink.set(changedUrl);
card.getItem().get(null, "st_link").set(formDataLink);
dataset.setFormData(dataset.getFormData());
}
}
}
}
dataset.getFormData().get(null, "cs_text_bottom").set(catalog);
dataset.save();
dataset.setLock(false);
} catch (Exception e) {
e.printStackTrace();
}
}
JOptionPane.showMessageDialog(null, "Skript ist durchgelaufen!");