package com.constellio.app.modules.es.ui.pages.mapping; import java.util.HashMap; import java.util.List; import java.util.Map; import com.constellio.app.modules.es.ConstellioESModule; import com.constellio.app.modules.es.extensions.api.ESModuleExtensions; import com.constellio.app.modules.es.extensions.api.params.CustomTargetFlagsParams; import com.constellio.app.modules.es.model.connectors.ConnectorInstance; import com.constellio.app.modules.es.services.ESSchemasRecordsServices; import com.constellio.app.modules.es.services.mapping.ConnectorField; import com.constellio.app.modules.es.services.mapping.ConnectorMappingService; import com.constellio.app.ui.entities.MetadataVO; import com.constellio.app.ui.entities.RecordVO; import com.constellio.app.ui.entities.RecordVO.VIEW_MODE; import com.constellio.app.ui.pages.base.BaseView; import com.constellio.app.ui.pages.base.SingleSchemaBasePresenter; import com.constellio.model.entities.CorePermissions; import com.constellio.model.entities.records.wrappers.User; public abstract class MappingsPresenter<T extends BaseView> extends SingleSchemaBasePresenter<T> { private transient ConnectorInstance connectorInstance; private transient ConnectorMappingService mappingService; private transient ESSchemasRecordsServices schemas; protected String instanceId; public MappingsPresenter(T view) { super(view, ConnectorInstance.DEFAULT_SCHEMA); } public RecordVO getConnectorInstance() { return presenterService().getRecordVO(instanceId, VIEW_MODE.DISPLAY, view.getSessionContext()); } public List<String> getCustomFlags() { ESModuleExtensions extensions = appCollectionExtentions.forModule(ConstellioESModule.ID); return extensions.getCustomTargetFlags(new CustomTargetFlagsParams()); } @Override protected boolean hasPageAccess(String params, User user) { return user.has(CorePermissions.MANAGE_CONNECTORS).globally(); } protected Map<String, ConnectorField> getFieldMapById(String documentType) { Map<String, ConnectorField> result = new HashMap<>(); for (ConnectorField field : mappingService().getConnectorFields(connectorInstance(), documentType)) { result.put(field.getId(), field); } return result; } protected MetadataVO getMetadataVO(String metadataCode) { return presenterService().getMetadataVO(metadataCode, view.getSessionContext()); } protected ConnectorInstance connectorInstance() { if (connectorInstance == null) { connectorInstance = schemas().getConnectorInstance(instanceId); } return connectorInstance; } protected ConnectorMappingService mappingService() { if (mappingService == null) { mappingService = new ConnectorMappingService(schemas()); } return mappingService; } private ESSchemasRecordsServices schemas() { if (schemas == null) { schemas = new ESSchemasRecordsServices(view.getCollection(), appLayerFactory); } return schemas; } }