package com.constellio.app.modules.es.extensions; import static com.constellio.model.entities.schemas.Schemas.TITLE; import com.constellio.app.modules.es.model.connectors.ConnectorInstance; import com.constellio.app.modules.es.services.ESSchemasRecordsServices; import com.constellio.app.services.collections.CollectionsManager; import com.constellio.model.entities.Language; import com.constellio.model.entities.records.Record; import com.constellio.model.extensions.behaviors.RecordExtension; import com.constellio.model.extensions.events.records.RecordInModificationBeforeValidationAndAutomaticValuesCalculationEvent; import com.constellio.model.services.schemas.MetadataSchemaTypesAlteration; import com.constellio.model.services.schemas.MetadataSchemasManager; import com.constellio.model.services.schemas.builders.MetadataSchemaBuilder; import com.constellio.model.services.schemas.builders.MetadataSchemaTypeBuilder; import com.constellio.model.services.schemas.builders.MetadataSchemaTypesBuilder; public class ESRecordExtension extends RecordExtension { ESSchemasRecordsServices es; MetadataSchemasManager schemasManager; CollectionsManager collectionsManager; public ESRecordExtension(ESSchemasRecordsServices es) { this.es = es; this.schemasManager = es.getModelLayerFactory().getMetadataSchemasManager(); this.collectionsManager = es.getAppLayerFactory().getCollectionsManager(); } @Override public void recordInModificationBeforeValidationAndAutomaticValuesCalculation( RecordInModificationBeforeValidationAndAutomaticValuesCalculationEvent event) { if (event.isSchemaType(ConnectorInstance.SCHEMA_TYPE)) { Record record = event.getRecord(); final ConnectorInstance connectorInstance = es.wrapConnectorInstance(record); if (record.isModified(TITLE)) { schemasManager.modify(es.getCollection(), new MetadataSchemaTypesAlteration() { @Override public void alter(MetadataSchemaTypesBuilder types) { String schema = connectorInstance.getDocumentsCustomSchemaCode(); for (MetadataSchemaTypeBuilder type : types.getTypes()) { if (type.hasSchema(schema)) { MetadataSchemaBuilder builder = type.getSchema(schema); for (String languageStr : collectionsManager.getCollectionLanguages(es.getCollection())) { builder.addLabel(Language.withCode(languageStr), connectorInstance.getTitle()); } } } } }); } } } }