package com.constellio.app.modules.es.services; import java.util.ArrayList; import java.util.List; import com.constellio.app.modules.es.connectors.spi.Connector; import com.constellio.app.modules.es.model.connectors.ConnectorInstance; import com.constellio.app.services.factories.AppLayerFactory; import com.constellio.data.dao.managers.config.ConfigManager; import com.constellio.model.entities.schemas.MetadataSchema; import com.constellio.model.services.schemas.MetadataSchemasManager; public class ConnectorDeleteService { private AppLayerFactory appLayerFactory; private ESSchemasRecordsServices es; private String collection; public ConnectorDeleteService(String collection, AppLayerFactory appLayerFactory) { this.appLayerFactory = appLayerFactory; this.collection = collection; this.es = new ESSchemasRecordsServices(collection, appLayerFactory); } public void deleteConnector(ConnectorInstance connectorInstance) { es.getConnectorManager().totallyDeleteConnectorRecordsSkippingValidation( appLayerFactory.getModelLayerFactory().getDataLayerFactory().newRecordDao(), connectorInstance); List<MetadataSchema> schemasToDelete = new ArrayList<>(); Connector connector = es.getConnectorManager().instanciate(connectorInstance); MetadataSchemasManager schemasManager = appLayerFactory.getModelLayerFactory().getMetadataSchemasManager(); for (String documentType : connector.getConnectorDocumentTypes()) { schemasToDelete.add( schemasManager.getSchemaTypes(collection).getSchema(documentType + "_" + connectorInstance.getId())); } schemasManager.deleteCustomSchemas(schemasToDelete); String configFolderPath = "connectors/" + es.getConnectorType(connectorInstance.getConnectorType()).getCode() + "/" + connectorInstance .getId() + "/"; ConfigManager configManager = appLayerFactory.getModelLayerFactory().getDataLayerFactory().getConfigManager(); if (configManager.folderExist(configFolderPath)) { configManager.deleteFolder(configFolderPath); } es.getConnectorManager().delete(connectorInstance); } }