AbTestingService.java

package sk.iway.iwcm.components.abtesting.service;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.springframework.data.domain.Page;

import sk.iway.iwcm.components.abtesting.ABTesting;
import sk.iway.iwcm.doc.DocDB;
import sk.iway.iwcm.doc.DocDetails;
import sk.iway.iwcm.doc.GroupsDB;
import sk.iway.iwcm.editor.rest.GetAllItemsDocOptions;
import sk.iway.iwcm.editor.service.WebpagesService;
import sk.iway.iwcm.system.datatable.DatatablePageImpl;

public class AbTestingService {

    private AbTestingService() {}

    public static DatatablePageImpl<DocDetails> getAllItems(GetAllItemsDocOptions options) {
        Page<DocDetails> page = null;

        //Check perms with combination with ABTesting version
		if(options.getCurrentUser().isEnabledItem("cmp_abtesting")) {
			Set<DocDetails> mainWebPages = new HashSet<>();
			List<DocDetails> allBasicDoc = DocDB.getInstance().getBasicDocDetailsAll();
			if(allBasicDoc != null) {
				List<String> allDomains = GroupsDB.getInstance().getAllDomainsList();
				DocDB docDB = DocDB.getInstance();
				for(DocDetails dd : allBasicDoc)
					if(!ABTesting.getAllVariantsDocIds(dd, allDomains, docDB).isEmpty()) mainWebPages.add(dd);
			}

			//Editor fields need to be nullified, or status icons will be stacking
			for(DocDetails dd : mainWebPages) dd.setEditorFields(null);

			page = new DatatablePageImpl<>(new ArrayList<>(mainWebPages));
		} else {
			//User has no right to request data in ABTesting mode
			page = new DatatablePageImpl<>(new ArrayList<>());
		}

        return WebpagesService.preparePage(page, options);
    }
}