package com.constellio.app.modules.rm.ui.pages.containers; import com.constellio.app.modules.rm.constants.RMPermissionsTo; import com.constellio.app.modules.rm.model.enums.DecommissioningType; import com.constellio.app.modules.rm.navigation.RMViews; import com.constellio.app.modules.rm.services.decommissioning.DecommissioningSearchConditionFactory; import com.constellio.app.modules.rm.services.decommissioning.DecommissioningSearchConditionFactory.ContainerSearchParameters; import com.constellio.app.modules.rm.wrappers.ContainerRecord; import com.constellio.app.ui.entities.MetadataSchemaVO; import com.constellio.app.ui.entities.RecordVO; import com.constellio.app.ui.entities.RecordVO.VIEW_MODE; import com.constellio.app.ui.framework.builders.MetadataSchemaToVOBuilder; import com.constellio.app.ui.framework.builders.RecordToVOBuilder; import com.constellio.app.ui.framework.data.RecordVODataProvider; import com.constellio.app.ui.pages.base.BasePresenter; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.services.search.query.logical.LogicalSearchQuery; public class ContainersInFilingSpacePresenter extends BasePresenter<ContainersInFilingSpaceView> { public static final String DEPOSIT_PREFIX = "deposit"; public static final String TRANSFER_PREFIX = "transfer"; public static final String WITH_STORAGE_SPACE_SUFFIX = "WithStorageSpace"; String filingSpaceId; String adminUnitId; String tabName; public ContainersInFilingSpacePresenter(ContainersInFilingSpaceView view) { super(view); } public RecordVODataProvider getContainersDataProvider() { MetadataSchemaVO schemaVO = new MetadataSchemaToVOBuilder() .build(schema(ContainerRecord.DEFAULT_SCHEMA), VIEW_MODE.TABLE); RecordVODataProvider dataProvider = new RecordVODataProvider(schemaVO, new RecordToVOBuilder(), modelLayerFactory) { @Override protected LogicalSearchQuery getQuery() { DecommissioningSearchConditionFactory conditionFactory = new DecommissioningSearchConditionFactory( view.getCollection(), appLayerFactory); ContainerSearchParameters parameters = new ContainerSearchParameters(); parameters.setAdminUnitId(adminUnitId); if (tabName.startsWith(DEPOSIT_PREFIX)) { parameters.setType(DecommissioningType.DEPOSIT); } else if (tabName.startsWith(TRANSFER_PREFIX)) { parameters.setType(DecommissioningType.TRANSFERT_TO_SEMI_ACTIVE); } parameters.setUserId(view.getSessionContext().getCurrentUser().getId()); parameters.setWithStorage(tabName.endsWith(WITH_STORAGE_SPACE_SUFFIX)); return new LogicalSearchQuery(conditionFactory.getVisibleContainersCondition(parameters)); } }; return dataProvider; } public RecordVO getFilingSpace() { return new RecordToVOBuilder() .build(recordServices().getDocumentById(filingSpaceId), VIEW_MODE.DISPLAY, view.getSessionContext()); } public void forParams(String params) { String[] splitParams = params.split("/"); tabName = splitParams[0]; adminUnitId = splitParams[1]; filingSpaceId = splitParams[2]; } @Override protected boolean hasPageAccess(String params, User user) { return user.has(RMPermissionsTo.MANAGE_CONTAINERS).globally(); } public void displayContainerButtonClicked(RecordVO container) { view.navigate().to(RMViews.class).displayContainer(container.getId()); } }