package com.constellio.app.modules.robots.migrations; import static java.util.Arrays.asList; import java.util.ArrayList; import java.util.List; import com.constellio.app.entities.modules.ComboMigrationScript; import com.constellio.app.entities.modules.MetadataSchemasAlterationHelper; import com.constellio.app.entities.modules.MigrationResourcesProvider; import com.constellio.app.entities.modules.MigrationScript; import com.constellio.app.modules.rm.constants.RMRoles; import com.constellio.app.modules.robots.constants.RobotsPermissionsTo; import com.constellio.app.services.factories.AppLayerFactory; import com.constellio.model.entities.records.Transaction; import com.constellio.model.entities.schemas.MetadataSchemaTypes; import com.constellio.model.services.factories.ModelLayerFactory; import com.constellio.model.services.records.RecordServices; import com.constellio.model.services.schemas.builders.MetadataSchemaTypesBuilder; import com.constellio.model.services.security.roles.RolesManager; public class RobotsMigrationCombo implements ComboMigrationScript { @Override public List<MigrationScript> getVersions() { List<MigrationScript> scripts = new ArrayList<>(); scripts.add(new RobotsMigrationTo5_1_2()); scripts.add(new RobotsMigrationTo5_1_3()); scripts.add(new RobotsMigrationTo6_3()); return scripts; } @Override public String getVersion() { return getVersions().get(getVersions().size() - 1).getVersion(); } GeneratedRobotsMigrationCombo generatedComboMigration; @Override public void migrate(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory) throws Exception { ModelLayerFactory modelLayerFactory = appLayerFactory.getModelLayerFactory(); generatedComboMigration = new GeneratedRobotsMigrationCombo(collection, appLayerFactory, migrationResourcesProvider); new SchemaAlteration(collection, migrationResourcesProvider, appLayerFactory).migrate(); generatedComboMigration.applyGeneratedRoles(); generatedComboMigration.applySchemasDisplay(appLayerFactory.getMetadataSchemasDisplayManager()); RecordServices recordServices = appLayerFactory.getModelLayerFactory().newRecordServices(); MetadataSchemaTypes types = appLayerFactory.getModelLayerFactory().getMetadataSchemasManager().getSchemaTypes(collection); recordServices.execute(createRecordTransaction(collection, migrationResourcesProvider, appLayerFactory, types)); } private Transaction createRecordTransaction(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory, MetadataSchemaTypes types) { Transaction transaction = new Transaction(); return transaction; } class SchemaAlteration extends MetadataSchemasAlterationHelper { protected SchemaAlteration(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory) { super(collection, migrationResourcesProvider, appLayerFactory); } @Override protected void migrate(MetadataSchemaTypesBuilder typesBuilder) { generatedComboMigration.applyGeneratedSchemaAlteration(typesBuilder); } } }