All Downloads are FREE. Search and download functionalities are using the official Maven repository.

li.strolch.report.Report Maven / Gradle / Ivy

package li.strolch.report;

import static li.strolch.report.ReportConstants.TYPE_REPORT;

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Stream;

import com.google.gson.JsonObject;
import li.strolch.agent.api.ComponentContainer;
import li.strolch.model.Resource;
import li.strolch.model.StrolchRootElement;
import li.strolch.model.policy.PolicyDef;
import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.policy.PolicyHandler;
import li.strolch.report.policy.ReportPolicy;
import li.strolch.utils.collections.DateRange;
import li.strolch.utils.collections.MapOfSets;

public class Report {

	private final ReportPolicy reportPolicy;

	public Report(ComponentContainer container, StrolchTransaction tx, String reportId) {

		Resource reportRes = tx.getResourceBy(TYPE_REPORT, reportId, true);
		PolicyDef reportPolicyDef = reportRes.getPolicyDef(ReportPolicy.class.getSimpleName());

		PolicyHandler policyHandler = container.getComponent(PolicyHandler.class);
		this.reportPolicy = policyHandler.getPolicy(reportPolicyDef, tx);
		this.reportPolicy.initialize(reportId);
	}

	public boolean hasDateRangeSelector() {
		return this.reportPolicy.hasDateRangeSelector();
	}

	public Report dateRange(DateRange dateRange) {
		this.reportPolicy.dateRange(dateRange);
		return this;
	}

	public List getColumnKeys() {
		return this.reportPolicy.getColumnKeys();
	}

	public Report filter(String type, String... ids) {
		this.reportPolicy.filter(type, ids);
		return this;
	}

	public Report filter(String type, List ids) {
		this.reportPolicy.filter(type, ids);
		return this;
	}

	public Report filter(String type, Set ids) {
		this.reportPolicy.filter(type, ids);
		return this;
	}

	public Stream> buildStream() {
		return this.reportPolicy.buildStream();
	}

	public Stream doReport() {
		return this.reportPolicy.doReport();
	}

	public MapOfSets generateFilterCriteria() {
		return this.reportPolicy.generateFilterCriteria();
	}

	public Stream doReportAsJson() {

		return doReport().map(e -> {
			JsonObject o = new JsonObject();
			e.keyValueStream().forEach(elem -> o.addProperty(elem.getKey(), elem.getValue()));
			return o;
		});
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy