Hallo Community,
ich möchte alle Referenzen (vom Typ Reference und nicht ReferenceEntry!!!) ausgehend von einer Section ermitteln. Der Grund ist, dass ich wissen möchte für welche Sprache welche Referenz gilt. Als Beispiel kann ein Medium z.B. in der Medienverwaltung für mehrere Sprachen und in unterschiedlichen Dateiformaten gepflegt werden. Dabei kann dann z.B. der Fall auftreten, dass in der Seitenverwaltung bei Pflege einer Seite das Medium für die Sprache Deutsch referenziert ist und für die Sprache Englisch nicht. Wenn man nun wissen möchte, welche Medien-Dateitypen tatsächlich aktuell referenziert sind, braucht man also eine Unterscheidung der Sprachen bzgl. der Referenzen. Dies scheint nicht direkt vorgesehen zu sein, aber mit dem Code wäre ein Workaround möglich, da der Typ Reference sowohl eine Referenz auf Language als auch eine auf ReferenceEntry enthält und den Zugriff auf diese Member-Variablen auch ermöglicht.
Ich habe nun als ersten Schritt den etwas unschönen Code dazu geschrieben (siehe z.B. expliziter Typecast auf DataWrappingFormData). Das Problem ist, dass EditorValueFormDataWrapper keinen Zugriff auf den EditorValue gestattet. Aber nur dieses Interface besitzt die Methoden-Signatur findReferences().
public static Set determineReferences(Section section) {
Set references = Sets.newHashSet();
DataWrappingFormData formData = (DataWrappingFormData) section.getFormData();
List variableNames = formData.getForm().appendEditorNames(null);
for (final String variableName : variableNames) {
final EditorValue editor = formData.getData().get(variableName).getEditor(); references.addAll(editor.findReferences());
}
return references;
}
Gibt es hier eine bessere/sauberere Alternative?
Viele Grüße