ExportDatEditorFields.java

package sk.iway.iwcm.components.export;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import lombok.Getter;
import lombok.Setter;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.doc.GroupDetails;
import sk.iway.iwcm.doc.GroupsDB;
import sk.iway.iwcm.system.datatable.DataTableColumnType;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumn;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumnEditor;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumnEditorAttr;

@Getter
@Setter
public class ExportDatEditorFields implements Serializable {

    public ExportDatEditorFields(){}

    @DataTableColumn(inputType = DataTableColumnType.JSON, title="components.export.groups", sortAfter = "numberItems", filter = false, className = "dt-tree-group-array", tab="filter", editor = {
        @DataTableColumnEditor(attr = {
            @DataTableColumnEditorAttr(key = "data-dt-json-addbutton", value = "editor.json.addGroup") })
    })
    private List<GroupDetails> groups;

    @DataTableColumn(
        inputType = DataTableColumnType.CHECKBOX,
        title = "[[#{editor.perex.group}]]",
        sortAfter = "publishType",
        tab="filter",
        editor = {
            @DataTableColumnEditor(
                attr = {
                    @DataTableColumnEditorAttr(key = "unselectedValue", value = "")
                }
            )
        }
    )
	private String[] perexGroupsIds;

    public void fromExportDatBean(ExportDatBean exportDatBeanOriginal) {

        // Get group ids from ExportDatBean, get entities using this ids and push them into editorFields.groups
        groups = new ArrayList<>();
        int groupsIds[] = Tools.getTokensInt(exportDatBeanOriginal.getGroupIds(), ",");
        if(groupsIds.length > 0) {
            GroupsDB groupsDB = GroupsDB.getInstance();

            for(int groupId : groupsIds) {
                GroupDetails tmp = groupsDB.getGroup(groupId);
                if (tmp != null) groups.add(tmp);
            }
        }

        // Get perex group ids as String, parse String and ids set into perexGroupsIds array
        perexGroupsIds = Tools.getTokens(exportDatBeanOriginal.getPerexGroup(), ",");
    }

    public void toExportDatBean(ExportDatBean exportDatBeanOriginal) {

        // From list selectedGroups build String of this GroupDetails ids (separated using comma)
        // Next set this builded string as new exportDatBeanOriginal.groupsIds value
        List<GroupDetails> selectedGroups = exportDatBeanOriginal.getEditorFields().getGroups();
        if (selectedGroups != null) {
            String groupsIdsString = "";
            for(int i = 0; i < selectedGroups.size(); i++) {

                if(groupsIdsString.equals("")) {
                    groupsIdsString = "" + selectedGroups.get(i).getGroupId();
                } else {
                    groupsIdsString += "," + selectedGroups.get(i).getGroupId();
                }
            }
            //Set new string of selected editabled groups
            exportDatBeanOriginal.setGroupIds(groupsIdsString);
        }

        // From array perexGroupIds build String perexGroupString (perex group ids separated using comma)
        // Next set his builded string as new exportDatBeanOriginal.perexGroup value
        String perexGroupString = "";
        for(String perexGroupId : exportDatBeanOriginal.getEditorFields().getPerexGroupsIds()) {

            if(perexGroupString.equals("")) {
                perexGroupString = "" + perexGroupId;
            } else {
                perexGroupString += "," + perexGroupId;
            }
        }
        exportDatBeanOriginal.setPerexGroup(perexGroupString);
    }
}