package com.constellio.app.modules.es.connectors; import com.constellio.app.modules.es.model.connectors.ConnectorDocument; import com.constellio.app.modules.es.model.connectors.ConnectorInstance; import com.constellio.app.modules.es.model.connectors.RegisteredConnector; import com.constellio.app.modules.es.services.ConnectorManager; import com.constellio.app.modules.es.services.ESSchemasRecordsServices; import com.constellio.app.services.factories.AppLayerFactory; import com.constellio.data.utils.ImpossibleRuntimeException; import com.constellio.model.entities.records.Record; public class ConnectorServicesFactory { public static ConnectorUtilsServices forConnectorInstance(AppLayerFactory appLayerFactory, ConnectorInstance connectorInstance) { ESSchemasRecordsServices es = new ESSchemasRecordsServices(connectorInstance.getCollection(), appLayerFactory); ConnectorManager connectorManager = es.getConnectorManager(); for (RegisteredConnector connector : connectorManager.getRegisteredConnectors()) { if (connector.getConnectorInstanceCode().equals(connectorInstance.getSchema().getCode())) { return connector.getServices(); } } throw new ImpossibleRuntimeException("Unsupported schema '" + connectorInstance.getSchema().getCode() + "'"); } public static ConnectorUtilsServices forConnectorDocument(AppLayerFactory appLayerFactory, ConnectorDocument connectorDocument) { return forRecord(appLayerFactory, connectorDocument.getWrappedRecord()); } public ConnectorUtilsServices forConnectorDocumentNonStatic(AppLayerFactory appLayerFactory, ConnectorDocument connectorDocument) { return forConnectorDocument(appLayerFactory, connectorDocument); } public static ConnectorUtilsServices forRecord(AppLayerFactory appLayerFactory, Record record) { ESSchemasRecordsServices es = new ESSchemasRecordsServices(record.getCollection(), appLayerFactory); ConnectorManager connectorManager = es.getConnectorManager(); for (RegisteredConnector connector : connectorManager.getRegisteredConnectors()) { ConnectorUtilsServices<?> services = connector.getServices(); for (String type : services.getConnectorDocumentTypes()) { if (record.getSchemaCode().startsWith(type + "_")) { return services; } } } throw new ImpossibleRuntimeException("Unsupported schema '" + record.getSchemaCode() + "'"); } }