package de.espirit.firstspirit.access.editor; import de.espirit.firstspirit.access.Language; import de.espirit.firstspirit.access.editor.fslist.IdProvidingFormData; import de.espirit.firstspirit.access.editor.value.ContentFormsProducer; import de.espirit.firstspirit.access.editor.value.InvalidValueException; import de.espirit.firstspirit.access.editor.value.LinkFormsProducer; import de.espirit.firstspirit.access.editor.value.SectionFormsProducer; import de.espirit.firstspirit.access.project.Project; import de.espirit.firstspirit.access.store.templatestore.LinkTemplate; import de.espirit.firstspirit.access.store.templatestore.SectionTemplate; import de.espirit.firstspirit.forms.FormData; import de.espirit.firstspirit.forms.FormDataList; import de.espirit.firstspirit.forms.FormField; import de.espirit.or.schema.Entity; import org.jetbrains.annotations.Nullable; /** * Example how to get the list of sections and create a new section from a FsListEditorValue and store a section into a FsListEditorValue. * * @since 4.2.400 */ public class FsListEditorValueExample { /** * Creates a new section in the given {@link FsListEditorValue} editor in INLINE mode - using a section template of the given template store. * * @since 4.2.400 */ public FormData createSectionTemplateFormData(final FsListEditorValue editor, final Project project, final SectionTemplate sectionTemplate) throws InvalidValueException { // 1. get project masterlanguage final Language masterLanguage = project.getMasterLanguage(); // 2. get the list of form data // - FsListEditorValue is language independent by contract, therefore it doesn't matter which language is used final FormDataList dataList = editor.get(masterLanguage); // 3. create a new form data object final IdProvidingFormData formData = ((SectionFormsProducer) dataList.getProducer()).create(sectionTemplate); // 4. store the modified section list to the editor dataList.add(formData); editor.set(masterLanguage, dataList); return formData; } /** * Creates a new section in the given {@link FsListEditorValue} editor in INLINE mode - using a link template of the given template store. * * @since 4.2.400 */ public FormData createLinkTemplateFormData(final FsListEditorValue editor, final Project project, final LinkTemplate linkTemplate) throws InvalidValueException { // 1. get project masterlanguage final Language masterLanguage = project.getMasterLanguage(); // 2. get the list of form data // - FsListEditorValue is language independent by contract, therefore it doesn't matter which language is used final FormDataList dataList = editor.get(masterLanguage); // 3. create a new form data object final IdProvidingFormData formData = ((LinkFormsProducer) dataList.getProducer()).create(linkTemplate, masterLanguage); // 4. store the modified section list to the editor dataList.add(formData); editor.set(masterLanguage, dataList); return formData; } /** * Creates a new {@link de.espirit.firstspirit.forms.FormData} in the given {@link FsListEditorValue} editor in DATABASE mode. * * @since 4.2.400 */ public FormData createEntityFormData(final FsListEditorValue editor, final Project project) throws InvalidValueException { // 1. get project masterlanguage final Language masterLanguage = project.getMasterLanguage(); // 2. get the list of form data // - FsListEditorValue is language independent by contract, therefore it doesn't matter which language is used final FormDataList dataList = editor.get(masterLanguage); // 3. create a new form data object final IdProvidingFormData formData = ((ContentFormsProducer) dataList.getProducer()).create(); // 4. store the modified form data list to the editor dataList.add(formData); editor.set(masterLanguage, dataList); return formData; } /** * Creates a new {@link de.espirit.firstspirit.forms.FormData} in the given {@link FormField} fsListFormField in DATABASE mode. * * @since 4.2.441 */ public FormData setEntity(final FormField<FormDataList> fsListFormField, final Entity entity) throws InvalidValueException { // 1. get the list of form data final FormDataList dataList = fsListFormField.get(); // 2. create a new form data object based on given entity final IdProvidingFormData formData = ((ContentFormsProducer) dataList.getProducer()).create(entity); // 3. store the modified form data list to the form field dataList.add(formData); fsListFormField.set(dataList); return formData; } /** * Returns the first section of the given FsListEditorValue editor. * * @since 4.2.200 */ @Nullable public FormData getFirstSection(final FsListEditorValue editor, final Project project) { // 1. get project masterlanguage final Language masterLanguage = project.getMasterLanguage(); // 2. get the SectionList // - FsListEditorValue is language independent by contract, therefore it doesn't matter which language is used final FormDataList dataList = editor.get(masterLanguage); // 3. get the first Section out of the SectionList FormData formData = null; if ( ! dataList.isEmpty()) { formData = dataList.get(0); } return formData; } /** * Returns the SectionList (persistence object) of the given FsListEditorValue editor * * @since 4.2.200 */ @Nullable public FormDataList getDataList(final FsListEditorValue editor, final Project project) { // 1. get project masterlanguage final Language masterLanguage = project.getMasterLanguage(); // 2. get the SectionList // - FsListEditorValue is language independent by contract, therefore it doesn't matter which language is used return editor.get(masterLanguage); } }