Hallo!
Dies ist wahrscheinlich eine banale Frage, aber ich komme gerade nicht weiter. Und zwar habe ich in der Seitenvorlage eine Eingabekomponente:
<FS_LIST name="pt_autor" allowEmpty="no" height="200" rows="6">
<DATASOURCE type="database" useLanguages="no">
....
Leider haben sich im Laufe der Jahre Dubletten in der Autorenliste angesammelt und nun hat z.B. Autor x zwei Datensätze a und b. Diese Autorenliste möchte ich nun derart per API überarbeiten, dass ich auf alle Seiten durchlaufe, die FS_LIST auslese und wenn dort beispielsweise b drin steht, dann möchte ich diesen Eintrag löschen und a setzen.
Ich habe dies bisher wie folgt versucht (Code-Auszug). Ja es ist Beanshell, aber ich wollte das nur mal fix nebenbei machen:
long[] autorenAlt = {14273,448,68,144,74,133,9856,75,5760,3392,643,65};
long[] autorenNeu = {163,163,17408,5824,77,5826,13888,5825,7424,9472,17088,7360};
String[] feldName = {"pt_autor","pt_ansprechpartner"};
counter = 1;
Language language = context.getProject().getMasterLanguage();
us = context.getUserService();
e = context.getElement();
childs = e.getChildren(PageRef.class, true);
it = childs.iterator();
while(it.hasNext()) {
Page page = it.next().getPage();
state = page.getReleaseStatus();
FormData pageData = page.getFormData();
for (String feldNameWert : feldName) {
ff = pageData.get(language, feldNameWert);
formDataList = ff.get();
for (IdProvidingFormData idProvidingFormData : formDataList) {
FormField ffAutorAlt = idProvidingFormData.get(language,"fs_id");
autorAlt = ffAutorAlt.get().toString();
counterAutorenAlt = 1;
for (long autorenAltWert : autorenAlt) {
if (autorenAltWert.toString().equals(autorAlt)) {
autorNeu = autorenNeu[counterAutorenAlt];
try {
page.setLock(true);
ffAutorAlt.set(autorNeu);
page.save("WEB-3562: Wert für Feld '" + feldNameWert + "' neu gesetzt", false);
if(state == IDProvider.RELEASED){
page.release(false);
}
page.setLock(false);
}
catch (Exception e) {
e.printStackTrace();
}
}
counterAutorenAlt++;
}
}
counter=1;
}
}
Das Problem ist, dass mir der Autor aber nicht neu gesetzt wird. Was genau muss ich noch wegspeichern oder völlig umbauen, damit das geht?
Danke für Eure Hilfe.
Grüße
Marcus