package com.constellio.app.modules.rm.migrations;
import static com.constellio.model.services.search.query.logical.LogicalSearchQueryOperators.from;
import com.constellio.app.entities.modules.MigrationResourcesProvider;
import com.constellio.app.entities.modules.MigrationScript;
import com.constellio.app.modules.rm.services.RMSchemasRecordsServices;
import com.constellio.app.services.factories.AppLayerFactory;
import com.constellio.app.services.systemSetup.SystemGlobalConfigsManager;
import com.constellio.model.services.factories.ModelLayerFactory;
import com.constellio.model.services.search.SearchServices;
import com.constellio.model.services.search.query.logical.LogicalSearchQuery;
public class RMMigrationTo6_5_7 implements MigrationScript {
@Override
public String getVersion() {
return "6.5.7";
}
@Override
public void migrate(String collection, MigrationResourcesProvider provider, AppLayerFactory appLayerFactory)
throws Exception {
reindexAllSubfoldersWithEnteredRetentionRule(collection, appLayerFactory);
}
private void reindexAllSubfoldersWithEnteredRetentionRule(String collection, AppLayerFactory appLayerFactory) {
RMSchemasRecordsServices rm = new RMSchemasRecordsServices(collection, appLayerFactory);
ModelLayerFactory modelLayerFactory = appLayerFactory.getModelLayerFactory();
SystemGlobalConfigsManager systemGlobalConfigsManager = appLayerFactory.getSystemGlobalConfigsManager();
SearchServices searchServices = modelLayerFactory.newSearchServices();
LogicalSearchQuery query = new LogicalSearchQuery(from(rm.folder.schemaType())
.where(rm.folder.retentionRuleEntered()).isNotNull()
.andWhere(rm.folder.parentFolder()).isNotNull());
if (searchServices.hasResults(query)) {
systemGlobalConfigsManager.setReindexingRequired(true);
}
}
}