package com.constellio.app.modules.complementary.esRmRobots.migrations; import static com.constellio.app.modules.complementary.esRmRobots.model.ClassifyConnectorFolderInTaxonomyActionParameters.DEFAULT_ADMIN_UNIT; import static com.constellio.app.modules.complementary.esRmRobots.model.ClassifyConnectorFolderInTaxonomyActionParameters.DEFAULT_PARENT_FOLDER; 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.entities.schemasDisplay.SchemaDisplayConfig; import com.constellio.app.entities.schemasDisplay.enums.MetadataInputType; import com.constellio.app.modules.complementary.esRmRobots.model.ClassifyConnectorFolderInTaxonomyActionParameters; import com.constellio.app.modules.complementary.esRmRobots.validators.ClassifyConnectorTaxonomyActionParametersValidator; import com.constellio.app.modules.rm.wrappers.Folder; import com.constellio.app.modules.robots.model.wrappers.ActionParameters; import com.constellio.app.services.factories.AppLayerFactory; import com.constellio.app.services.schemasDisplay.SchemaTypesDisplayTransactionBuilder; import com.constellio.app.services.schemasDisplay.SchemasDisplayManager; 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 ESRMRobotsMigrationTo5_1_7 implements MigrationScript { @Override public String getVersion() { return "5.1.7"; } @Override public void migrate(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory) throws Exception { new SchemaAlterationFor5_1_7(collection, migrationResourcesProvider, appLayerFactory).migrate(); updateClassifyInTaxonomyParametersForm(collection, migrationResourcesProvider, appLayerFactory); } class SchemaAlterationFor5_1_7 extends MetadataSchemasAlterationHelper { protected SchemaAlterationFor5_1_7(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory) { super(collection, migrationResourcesProvider, appLayerFactory); } public String getVersion() { return "5.1.7"; } @Override protected void migrate(MetadataSchemaTypesBuilder typesBuilder) { setupClassifyConnectorTaxonomyActionParametersSchema(); } private void setupClassifyConnectorTaxonomyActionParametersSchema() { MetadataSchemaTypeBuilder folderType = typesBuilder.getSchemaType(Folder.SCHEMA_TYPE); MetadataSchemaBuilder schema = typesBuilder.getSchemaType(ActionParameters.SCHEMA_TYPE) .getCustomSchema(ClassifyConnectorFolderInTaxonomyActionParameters.SCHEMA_LOCAL_CODE); schema.createUndeletable(ClassifyConnectorFolderInTaxonomyActionParameters.DEFAULT_PARENT_FOLDER).setDefaultRequirement(false) .defineReferencesTo(folderType); schema.get(ClassifyConnectorFolderInTaxonomyActionParameters.PATH_PREFIX).setDefaultRequirement(false); schema.defineValidators().add(ClassifyConnectorTaxonomyActionParametersValidator.class); } } private void updateClassifyInTaxonomyParametersForm(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory) { String defaultValuesTab = migrationResourcesProvider.get("tab.defaultValues"); String parametersSchema = ClassifyConnectorFolderInTaxonomyActionParameters.SCHEMA; SchemasDisplayManager schemasDisplayManager = appLayerFactory.getMetadataSchemasDisplayManager(); SchemaTypesDisplayTransactionBuilder transaction = schemasDisplayManager.newTransactionBuilderFor(collection); SchemaDisplayConfig displayConfig = schemasDisplayManager.getSchema(collection, parametersSchema); displayConfig = displayConfig .withNewDisplayMetadataBefore(parametersSchema + "_" + DEFAULT_PARENT_FOLDER, parametersSchema + "_" + DEFAULT_ADMIN_UNIT) .withNewFormMetadataBefore(parametersSchema + "_" + DEFAULT_PARENT_FOLDER, parametersSchema + "_" + DEFAULT_ADMIN_UNIT); transaction.add(displayConfig); transaction.add(schemasDisplayManager.getMetadata(collection, parametersSchema, DEFAULT_PARENT_FOLDER) .withMetadataGroup(defaultValuesTab).withInputType(MetadataInputType.LOOKUP)); schemasDisplayManager.execute(transaction.build()); } }