package com.constellio.app.modules.es.migrations; import static com.constellio.model.services.search.query.logical.LogicalSearchQueryOperators.from; import java.util.List; import com.constellio.app.entities.modules.MetadataSchemasAlterationHelper; import com.constellio.app.entities.modules.MigrationHelper; import com.constellio.app.entities.modules.MigrationResourcesProvider; import com.constellio.app.entities.modules.MigrationScript; import com.constellio.app.modules.es.services.ESSchemasRecordsServices; import com.constellio.app.services.factories.AppLayerFactory; import com.constellio.model.entities.records.wrappers.Facet; import com.constellio.model.services.records.RecordServices; import com.constellio.model.services.records.RecordServicesException; import com.constellio.model.services.schemas.builders.MetadataSchemaTypesBuilder; import com.constellio.model.services.search.query.logical.condition.LogicalSearchCondition; /** * Created by Charles Blanchette on 2017-03-29. */ public class ESMigrationTo7_1_3 extends MigrationHelper implements MigrationScript { @Override public String getVersion() { return "7.1.3"; } @Override public void migrate(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory) throws Exception { new SchemaAlterationFor7_1_3(collection, migrationResourcesProvider, appLayerFactory); } static class SchemaAlterationFor7_1_3 extends MetadataSchemasAlterationHelper { protected SchemaAlterationFor7_1_3(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory) throws RecordServicesException { super(collection, migrationResourcesProvider, appLayerFactory); alterFacets(collection, appLayerFactory, migrationResourcesProvider); } @Override protected void migrate(MetadataSchemaTypesBuilder typesBuilder) { } private void alterFacets(String collection, AppLayerFactory appLayerFactory, MigrationResourcesProvider migrationResourcesProvider) throws RecordServicesException { ESSchemasRecordsServices es = new ESSchemasRecordsServices(collection, appLayerFactory); RecordServices recordServices = es.getModelLayerFactory().newRecordServices(); LogicalSearchCondition condition = from(es.facet.schemaType()).where(es.facet.fieldDatastoreCode()) .isEqualTo(es.connectorDocument.mimetype().getDataStoreCode()); List<Facet> facets = es.searchFacets(condition); for (Facet facet : facets) { alterAllMimeTypeLabels(facet); recordServices.add(facet); } } private void alterAllMimeTypeLabels(Facet mimeTypeFacet) { modifyLabelForMimeType(mimeTypeFacet, "application/vnd.ms-powerpoint.template.macroenabled.12"); modifyLabelForMimeType(mimeTypeFacet, "application/vnd.ms-word.document.macroenabled.12"); modifyLabelForMimeType(mimeTypeFacet, "application/vnd.ms-word.template.macroenabled.12"); modifyLabelForMimeType(mimeTypeFacet, "application/vnd.ms-excel"); modifyLabelForMimeType(mimeTypeFacet, "application/vnd.ms-excel.sheet.binary.macroenabled.12"); modifyLabelForMimeType(mimeTypeFacet, "application/vnd.ms-excel.template.macroenabled.12"); modifyLabelForMimeType(mimeTypeFacet, "application/vnd.ms-excel.sheet.macroenabled.12"); modifyLabelForMimeType(mimeTypeFacet, "application/vnd.openxmlformats-officedocument.presentationml.presentation"); modifyLabelForMimeType(mimeTypeFacet, "application/vnd.openxmlformats-officedocument.presentationml.slide"); modifyLabelForMimeType(mimeTypeFacet, "application/vnd.openxmlformats-officedocument.presentationml.slideshow"); modifyLabelForMimeType(mimeTypeFacet, "application/vnd.openxmlformats-officedocument.presentationml.template"); modifyLabelForMimeType(mimeTypeFacet, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); modifyLabelForMimeType(mimeTypeFacet, "application/vnd.openxmlformats-officedocument.spreadsheetml.template"); modifyLabelForMimeType(mimeTypeFacet, "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); modifyLabelForMimeType(mimeTypeFacet, "application/vnd.openxmlformats-officedocument.wordprocessingml.template"); modifyLabelForMimeType(mimeTypeFacet, "application/vnd.ms-powerpoint"); modifyLabelForMimeType(mimeTypeFacet, "application/vnd.ms-powerpoint.presentation.macroenabled.12"); modifyLabelForMimeType(mimeTypeFacet, "application/vnd.ms-powerpoint.slideshow.macroenabled.12"); modifyLabelForMimeType(mimeTypeFacet, "application/vnd.visio"); modifyLabelForMimeType(mimeTypeFacet, "application/msword"); } private void modifyLabelForMimeType(Facet facet, String mimeType) { facet.withLabel(mimeType, this.migrationResourcesProvider.get("init.facet.mimetype." + mimeType)); } } }