package de.espirit.firstspirit.access.editor;
import de.espirit.firstspirit.access.Language;
import de.espirit.firstspirit.access.editor.value.InvalidValueException;
import de.espirit.firstspirit.access.editor.value.TargetReference;
import de.espirit.firstspirit.access.editor.value.TargetReference.TargetReferences;
import de.espirit.firstspirit.access.store.IDProvider;
import de.espirit.firstspirit.access.store.pagestore.Section;
import org.jetbrains.annotations.Nullable;
/**
* Example how to get and store references from/to the ReferenceEditorValue
*
* @since 4.2.34
*/
public class ReferenceEditorValueExample {
/**
* Stores the given IDProvider in the reference editor for the specified language
*
* @since 4.2.34
*/
public ReferenceEditorValue setValueForLanguage(final ReferenceEditorValue editor, final IDProvider idProvider, 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. create a new @{link TargetReference} using the TargetReferences factory.
final TargetReference targetReference = TargetReferences.newInstance(language, idProvider, "");
// 3. store this instance in the editor value
editor.set(language, targetReference);
// 4. and return the instance for further processing
return editor;
}
/**
* Gets the language specific TargetReference from the given editor.
*
* @since 4.2.34
*/
public TargetReference getValueForLanguage(final ReferenceEditorValue editor, final Language language) {
// 1. get the stored instance in the editor value
final TargetReference targetReference = editor.get(language);
// 2. and return the reference container for further processing
return targetReference;
}
/**
* Gets the language specific IDProvider from the given editor.
*
* @since 4.2.34
*/
@Nullable
public IDProvider getReferenceForLanguage(final ReferenceEditorValue editor, final Language language) {
// 1. get the {@link TargetReference } container.
final TargetReference targetReference = editor.get(language);
// 2. get the referenced {@link IDProvider } element.
IDProvider idProvider = null;
if (targetReference != null) {
idProvider = targetReference.get();
}
// 3. and return the instance for further processing
return idProvider;
}
/**
* Sets the given section name in the target reference and loads the section.
*
* @since 4.2.34
*/
@Nullable
public Section<?> setSectionForValue(final TargetReference targetReference, final String sectionName) {
// 1. set an new section to reference. the section will be loaded by it's name.
targetReference.setSectionName(sectionName);
// 2. return the loaded section instance for further processing
return targetReference.getSection();
}
}