package de.espirit.firstspirit.access.editor; import de.espirit.firstspirit.access.Language; import de.espirit.firstspirit.access.editor.value.ElementReference; import de.espirit.firstspirit.access.editor.value.InvalidValueException; import de.espirit.firstspirit.access.store.IDProvider; import de.espirit.firstspirit.access.store.Referenceable; import de.espirit.firstspirit.access.store.pagestore.Section; import org.jetbrains.annotations.Nullable; /** * Example how to store and get the ElementReference from the PageRefEditorValue * * @since 4.2.34 */ public class PageRefEditorValueExample { /** * Stores given ElementReference as language specific value (specified by the given language) for the given PageRefEditor * * @since 4.2.34 */ public PageRefEditorValue setValueForLanguage(final PageRefEditorValue editor, final ElementReference referenceContainer, final Referenceable object, final Language language) throws InvalidValueException { // 1. check if language is provided if editor is language dependent ("useLanguages='yes'" in gom syntax) if (editor.isLanguageDependent() && (language == null)) { throw new NullPointerException("Language is missing!"); } // 2. store the reference to reference container referenceContainer.set(object); // 3. store this instance in the editor value editor.set(language, referenceContainer); // 4. and return the instance for further processing return editor; } /** * Gets the language specific Referenceable for the given language and pageref editor * * @since 4.2.34 */ @Nullable public Referenceable getValueForLanguage(final PageRefEditorValue editor, final Language language) { // 1. get the stored instance in the editor value final ElementReference elementReference = editor.get(language); // 2. and return the referenced object from the container for further processing if (elementReference != null) { return elementReference.get(); } return null; } /** * Gets the language specific IDProvider for the given language and pageref editor * * @since 4.2.34 */ @Nullable public IDProvider getReferenceForLanguage(final PageRefEditorValue editor, final Language language) { // 1. get the {@link TargetReference } container. final ElementReference elementReference = editor.get(language); // 2. get the referenced {@link Referenceable } element. Referenceable referenceable = null; if (elementReference != null) { referenceable = elementReference.get(); } // 3. and return the instance for further processing return referenceable; } /** * Stores the section name to the given referenceContainer and loads the section. * * @since 4.2.34 */ @Nullable public Section<?> setSectionNameForValue(final ElementReference referenceContainer, final String sectionName) { // 1. set a new section to reference. The section will be loaded by it's name. referenceContainer.setSectionName(sectionName); // 2. return the loaded section instance for further processing return referenceContainer.getSection(); } /** * Sets the section to the given referenceContainer and loads the section. * * @since 4.2.34 */ @Nullable public Section<?> setSectionForValue(final ElementReference referenceContainer, final Section<?> section) { // 1. set a new section to reference. referenceContainer.setSection(section); // 2. return the loaded section instance for further processing return referenceContainer.getSection(); } }