FilterHeaderDto.java

package sk.iway.iwcm.stat;

import java.util.Date;

import lombok.Getter;
import lombok.Setter;
import sk.iway.iwcm.InitServlet;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.common.CloudToolsForCore;
import sk.iway.iwcm.doc.GroupsDB;

@Getter
@Setter
public class FilterHeaderDto {
    private Date dateFrom;
    private Date dateTo;
    private Integer rootGroupId;
    private Boolean filterBotsOut;
    private ChartType chartType;
    private String rootGroupIdQuery;
    private String url;
    private String searchEngineName;
    private Integer webPageId;
    private String statType;

    public FilterHeaderDto() {
        this.dateFrom = null;
        this.dateTo = null;
        this.rootGroupId = -1;
        this.filterBotsOut = false;
        this.chartType = ChartType.NOT_CHART;
        this.rootGroupIdQuery = "";
        this.searchEngineName = "";
        this.webPageId = -1;
        this.statType = "days";
    }

    public void setRootGroupId(Integer rootGroupId) {
        this.rootGroupId = rootGroupId;
        if(rootGroupId != null && rootGroupId != -1)
            this.rootGroupIdQuery = groupIdToQuery(rootGroupId);
    }

    //Process rootGroupId into query + subTrees
    public static String groupIdToQuery(Integer groupId) {

        groupId = CloudToolsForCore.fixRootGroupId(groupId);

        if(groupId == null || groupId == -1)
            return "";
        else {
            GroupsDB groupsDB = GroupsDB.getInstance();
            StringBuilder query = new StringBuilder();

            int[] rootGroups = {groupId};
            query.append(" AND group_id IN(" + groupId + ", ");
            int[] childsGroupIds = groupsDB.expandGroupIdsToChilds(rootGroups);
            for(int i = 0; i < childsGroupIds.length; i++)
                if(i == childsGroupIds.length - 1)
                    query.append(childsGroupIds[i] + "");
                else
                    query.append(childsGroupIds[i] + ", ");
            query.append(") ");

            return query.toString();
        }
    }

    public String toString() {
        return "from="+Tools.formatDate(dateFrom)+" to="+Tools.formatDate(dateTo)+" rootGroup="+rootGroupId+" filterBots="+filterBotsOut;
    }

    public Integer getRootGroupId() {
        return CloudToolsForCore.fixRootGroupId(rootGroupId);
    }

    public String getRootGroupIdQuery() {
        if (InitServlet.isTypeCloud()) {
            return groupIdToQuery(getRootGroupId());
        }
        return rootGroupIdQuery;
    }
}