package com.constellio.app.modules.es.ui.pages; import static com.constellio.model.services.search.query.logical.LogicalSearchQueryOperators.from; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import com.constellio.app.modules.es.model.connectors.ConnectorInstance; import com.constellio.app.modules.es.navigation.ESViews; import com.constellio.app.modules.es.services.ConnectorDeleteService; import com.constellio.app.modules.es.services.ESSchemasRecordsServices; 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.CorePermissions; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.entities.schemas.Metadata; import com.constellio.model.entities.schemas.MetadataSchema; import com.constellio.model.entities.schemas.MetadataSchemaType; import com.constellio.model.entities.schemas.Schemas; import com.constellio.model.services.schemas.MetadataSchemasManager; import com.constellio.model.services.search.query.logical.LogicalSearchQuery; import com.constellio.model.services.users.UserServices; public class ListConnectorInstancesPresenter extends BasePresenter<ListConnectorInstancesView> { private transient MetadataSchemasManager metadataSchemasManager; private transient UserServices userServices; public ListConnectorInstancesPresenter(ListConnectorInstancesView view) { super(view); init(); } private void init() { metadataSchemasManager = modelLayerFactory.getMetadataSchemasManager(); userServices = modelLayerFactory.newUserServices(); } public List<Metadata> columnToRemove() { List<Metadata> toRemove = new ArrayList<>(); MetadataSchema connectorInstanceDefaultSchema = metadataSchemasManager.getSchemaTypes(collection) .getDefaultSchema(ConnectorInstance.SCHEMA_TYPE); toRemove.add(connectorInstanceDefaultSchema.get(ConnectorInstance.TRAVERSAL_CODE)); return toRemove; } @Override protected boolean hasPageAccess(String params, User user) { return userServices.has(user).globalPermissionInAnyCollection(CorePermissions.MANAGE_CONNECTORS); } public RecordVODataProvider getDataProvider() { MetadataSchema connectorInstanceDefaultSchema = metadataSchemasManager.getSchemaTypes(collection) .getDefaultSchema(ConnectorInstance.SCHEMA_TYPE); List<String> metadataCodes = Arrays .asList(ConnectorInstance.TITLE, ConnectorInstance.CODE, ConnectorInstance.CONNECTOR_TYPE, ConnectorInstance.ENABLED); MetadataSchemaVO schemaVO = new MetadataSchemaToVOBuilder() .build(connectorInstanceDefaultSchema, VIEW_MODE.TABLE, metadataCodes, view.getSessionContext()); RecordToVOBuilder voBuilder = new RecordToVOBuilder(); RecordVODataProvider dataProvider = new RecordVODataProvider(schemaVO, voBuilder, modelLayerFactory, view.getSessionContext()) { @Override protected LogicalSearchQuery getQuery() { MetadataSchemaType connectorInstanceSchemaType = modelLayerFactory.getMetadataSchemasManager() .getSchemaTypes(collection) .getSchemaType(ConnectorInstance.SCHEMA_TYPE); LogicalSearchQuery query = new LogicalSearchQuery( from(connectorInstanceSchemaType).returnAll()) .sortDesc(Schemas.MODIFIED_ON); return query; } }; return dataProvider; } public void displayButtonClicked(RecordVO entity) { view.navigate().to(ESViews.class).displayConnectorInstance(entity.getId()); } public void editButtonClicked(RecordVO entity) { view.navigate().to(ESViews.class).editConnectorInstance(entity.getId()); } public void deleteButtonClicked(RecordVO entity) { ESSchemasRecordsServices es = new ESSchemasRecordsServices(collection, appLayerFactory); new ConnectorDeleteService(collection, appLayerFactory).deleteConnector(es.getConnectorInstance(entity.getId())); view.refreshTable(); } public void addButtonClicked() { view.navigate().to(ESViews.class).wizardConnectorInstance(); } public void editSchemasButtonClicked(RecordVO entity) { view.navigate().to(ESViews.class).displayConnectorMappings(entity.getId()); } }