MediaGroupEditorFields.java

package sk.iway.spirit.model;

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;

@Getter
@Setter
public class MediaGroupEditorFields {

    //used for remapping availableGroups
    @DataTableColumn(inputType = DataTableColumnType.JSON, title="admin.temp.edit.showForDir",
    className = "dt-tree-group-array")
    private List<GroupDetails> availableGroups;

    public MediaGroupEditorFields() {}

    //inicialize MediaGroupEditorFileds.availableGroups(List<GroupDetails>) using MediaGroup.availableGroups(String)
    public void fromMediaGroupBean(MediaGroupBean mediaGroupOriginal) {

        //initialize empty list
        availableGroups = new ArrayList<>();

        //first get MediaGroups.availableGroups which is String of groups id separated by ","
        String availableGroupsString = mediaGroupOriginal.getAvailableGroups();

        //availableGroupsString is NOT empty
        if(availableGroupsString != null && !availableGroupsString.isEmpty()) {
            GroupsDB groupsDB = GroupsDB.getInstance();

            //parse string by "," which make array of group id
            String availableGroupsIdArray[] = availableGroupsString.split(",");

            for(int i = 0; i < availableGroupsIdArray.length; i++) {
                //get GrouspDetails by id and push into MediaGroupEditorFileds.availableGroups
                GroupDetails tmp = groupsDB.getGroup(Integer.parseInt(availableGroupsIdArray[i]));
                if (tmp != null) availableGroups.add(tmp);
            }
            //set this EditorFields to current MediaGroupBean (mediaGroupOriginal)
            mediaGroupOriginal.setEditorFields(this);
        } else {
            //availableGroupsString is empty, MediaGroupEditorFileds.availableGroups will by empty list
            //set this EditorFields to current MediaGroupBean (mediaGroupOriginal)
            mediaGroupOriginal.setEditorFields(this);
        }
    }

    public String toMediaGroupBean(MediaGroupBean mediaGroupOriginal) {
        String newGroupIds = "";
        //loop MediaGroupEditorFileds.availableGroups, get every group id and join them using "," as separator
        for(int i = 0; i < this.availableGroups.size(); i++) {
            if (this.availableGroups.get(i)==null) continue;
            if (Tools.isNotEmpty(newGroupIds)) newGroupIds += ",";
            newGroupIds += this.availableGroups.get(i).getGroupId();
        }
        //return created string od joined group id's
        return newGroupIds;
    }
}