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();
}
}
|