package com.constellio.app.modules.rm.ui.pages.reports; import com.constellio.app.extensions.AppLayerCollectionExtensions; import com.constellio.app.modules.rm.ConstellioRMModule; import com.constellio.app.modules.rm.constants.RMPermissionsTo; import com.constellio.app.modules.rm.extensions.api.RMModuleExtensions; import com.constellio.app.modules.rm.navigation.RMViews; import com.constellio.app.modules.rm.reports.builders.administration.plan.*; import com.constellio.app.modules.rm.reports.factories.ExampleReportWithoutRecordsParameters; import com.constellio.app.modules.rm.wrappers.AdministrativeUnit; import com.constellio.app.ui.framework.components.NewReportPresenter; import com.constellio.app.ui.framework.reports.NewReportWriterFactory; import com.constellio.app.ui.pages.base.BasePresenter; import com.constellio.model.entities.records.wrappers.User; import java.util.Arrays; import java.util.List; public class RMNewReportsPresenter extends BasePresenter<RMReportsView> implements NewReportPresenter { private static final boolean BY_ADMINISTRATIVE_UNIT = true; private String schemaTypeValue; public RMNewReportsPresenter(RMReportsView view) { super(view); } @Override public List<String> getSupportedReports() { return Arrays.asList("Reports.ClassificationPlan", "Reports.DetailedClassificationPlan", "Reports.ClassificationPlanByAdministrativeUnit", "Reports.ConservationRulesList", "Reports.ConservationRulesListByAdministrativeUnit", "Reports.AdministrativeUnits", "Reports.AdministrativeUnitsAndUsers", "Reports.Users", "Reports.AvailableSpaceReport", "Reports.AvailableSpaceReportAll"); } public NewReportWriterFactory getReport(String report) { AppLayerCollectionExtensions appCollectionExtentions = appLayerFactory.getExtensions().forCollection(collection); RMModuleExtensions rmModuleExtensions = appCollectionExtentions.forModule(ConstellioRMModule.ID); switch (report) { case "Reports.fakeReport2": return rmModuleExtensions.getReportBuilderFactories().exampleWithoutRecordsBuilderFactory.getValue(); case "Reports.ClassificationPlan": return rmModuleExtensions.getReportBuilderFactories().classifcationPlanRecordBuilderFactory.getValue(); case "Reports.DetailedClassificationPlan": return rmModuleExtensions.getReportBuilderFactories().classifcationPlanRecordBuilderFactory.getValue(); case "Reports.ConservationRulesList": return rmModuleExtensions.getReportBuilderFactories().conservationRulesRecordBuilderFactory.getValue(); case "Reports.ConservationRulesListByAdministrativeUnit": return rmModuleExtensions.getReportBuilderFactories().conservationRulesRecordBuilderFactory.getValue(); case "Reports.AdministrativeUnits": return rmModuleExtensions.getReportBuilderFactories().administrativeUnitRecordBuilderFactory.getValue(); case "Reports.AdministrativeUnitsAndUsers": return rmModuleExtensions.getReportBuilderFactories().administrativeUnitRecordBuilderFactory.getValue(); case "Reports.Users": return rmModuleExtensions.getReportBuilderFactories().userRecordBuilderFactory.getValue(); case "Reports.ClassificationPlanByAdministrativeUnit": return rmModuleExtensions.getReportBuilderFactories().classifcationPlanRecordBuilderFactory.getValue(); case "Reports.AvailableSpaceReport": return rmModuleExtensions.getReportBuilderFactories().availableSpaceBuilderFactory.getValue(); case "Reports.AvailableSpaceReportAll": return rmModuleExtensions.getReportBuilderFactories().availableSpaceBuilderFactory.getValue(); } throw new RuntimeException("BUG: Unknown report: " + report); } @Override public Object getReportParameters(String report) { switch (report) { case "Reports.fakeReport2": return new ExampleReportWithoutRecordsParameters(); case "Reports.ClassificationPlan": return new ClassificationReportPlanParameters(false, null); case "Reports.DetailedClassificationPlan": return new ClassificationReportPlanParameters(true, null); case "Reports.ConservationRulesList": return new ConservationRulesReportParameters(false, null); case "Reports.ConservationRulesListByAdministrativeUnit": return new ConservationRulesReportParameters(true, null); case "Reports.AdministrativeUnits": return new AdministrativeUnitReportParameters(false); case "Reports.AdministrativeUnitsAndUsers": return new AdministrativeUnitReportParameters(true); case "Reports.Users": return new UserReportParameters(); case "Reports.ClassificationPlanByAdministrativeUnit": return new ClassificationReportPlanParameters(false, schemaTypeValue); case "Reports.AvailableSpaceReport": return new AvailableSpaceReportParameters(false); case "Reports.AvailableSpaceReportAll": return new AvailableSpaceReportParameters(true); } throw new RuntimeException("BUG: Unknown report: " + report); } public boolean isWithSchemaType(String report) { switch (report) { case "Reports.ConservationRulesListByAdministrativeUnit": case "Reports.ClassificationPlanByAdministrativeUnit": return true; default: return false; } } public String getSchemaTypeValue(String report) { switch (report) { case "Reports.ConservationRulesListByAdministrativeUnit": case "Reports.ClassificationPlanByAdministrativeUnit": return AdministrativeUnit.SCHEMA_TYPE; default: return null; } } public void setSchemaTypeValue(String schemaTypeValue) { this.schemaTypeValue = schemaTypeValue; } public void backButtonClicked() { view.navigate().to(RMViews.class).archiveManagement(); } @Override protected boolean hasPageAccess(String params, User user) { return user.has(RMPermissionsTo.MANAGE_REPORTS).globally(); } }