package com.constellio.app.modules.complementary.esRmRobots.migrations; import static com.constellio.app.modules.complementary.esRmRobots.model.ClassifyConnectorFolderInTaxonomyActionParameters.ACTION_AFTER_CLASSIFICATION; import static com.constellio.app.modules.complementary.esRmRobots.model.ClassifyConnectorFolderInTaxonomyActionParameters.DEFAULT_ADMIN_UNIT; import static com.constellio.app.modules.complementary.esRmRobots.model.ClassifyConnectorFolderInTaxonomyActionParameters.DEFAULT_CATEGORY; import static com.constellio.app.modules.complementary.esRmRobots.model.ClassifyConnectorFolderInTaxonomyActionParameters.DEFAULT_COPY_STATUS; import static com.constellio.app.modules.complementary.esRmRobots.model.ClassifyConnectorFolderInTaxonomyActionParameters.DEFAULT_OPEN_DATE; import static com.constellio.app.modules.complementary.esRmRobots.model.ClassifyConnectorFolderInTaxonomyActionParameters.DEFAULT_PARENT_FOLDER; import static com.constellio.app.modules.complementary.esRmRobots.model.ClassifyConnectorFolderInTaxonomyActionParameters.DEFAULT_RETENTION_RULE; import static com.constellio.app.modules.complementary.esRmRobots.model.ClassifyConnectorFolderInTaxonomyActionParameters.DOCUMENT_MAPPING; import static com.constellio.app.modules.complementary.esRmRobots.model.ClassifyConnectorFolderInTaxonomyActionParameters.FOLDER_MAPPING; import static java.util.Arrays.asList; import java.util.HashMap; import java.util.Map; 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.complementary.esRmRobots.model.ClassifyConnectorFolderDirectlyInThePlanActionParameters; import com.constellio.app.modules.complementary.esRmRobots.model.ClassifyConnectorFolderInParentFolderActionParameters; import com.constellio.app.modules.complementary.esRmRobots.model.ClassifyConnectorFolderInTaxonomyActionParameters; import com.constellio.app.modules.complementary.esRmRobots.model.enums.ActionAfterClassification; import com.constellio.app.modules.rm.model.enums.CopyType; import com.constellio.app.modules.rm.wrappers.AdministrativeUnit; import com.constellio.app.modules.rm.wrappers.Category; import com.constellio.app.modules.rm.wrappers.Folder; import com.constellio.app.modules.rm.wrappers.RetentionRule; 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.entities.Language; import com.constellio.model.entities.schemas.MetadataValueType; 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 ESRMRobotsMigrationTo6_1 implements MigrationScript { @Override public String getVersion() { return "6.1"; } @Override public void migrate(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory) throws Exception { new SchemaAlterationFor6_1(collection, migrationResourcesProvider, appLayerFactory).migrate(); configureClassifyInTaxonomyParametersForm(collection, migrationResourcesProvider, appLayerFactory); } class SchemaAlterationFor6_1 extends MetadataSchemasAlterationHelper { protected SchemaAlterationFor6_1(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory) { super(collection, migrationResourcesProvider, appLayerFactory); } public String getVersion() { return "6.1"; } @Override protected void migrate(MetadataSchemaTypesBuilder typesBuilder) { setupClassifyConnectorFolderInParentFolderActionParametersSchema(); setupClassifyConnectorFolderDirectlyInThePlanActionParametersSchema(); modifyClassifyConnectorFolderInTaxonomyActionParametersSchema(); } private void modifyClassifyConnectorFolderInTaxonomyActionParametersSchema() { MetadataSchemaBuilder schema = typesBuilder.getSchemaType(ActionParameters.SCHEMA_TYPE) .getSchema(ClassifyConnectorFolderInTaxonomyActionParameters.SCHEMA_LOCAL_CODE); schema.get(ClassifyConnectorFolderInTaxonomyActionParameters.PATH_PREFIX).setDefaultRequirement(true); schema.get(ClassifyConnectorFolderInTaxonomyActionParameters.IN_TAXONOMY).setDefaultRequirement(true); schema.get(ClassifyConnectorFolderInTaxonomyActionParameters.DELIMITER).setDefaultRequirement(true); } private void setupClassifyConnectorFolderInParentFolderActionParametersSchema() { MetadataSchemaTypeBuilder folderSchemaType = typesBuilder.getSchemaType(Folder.SCHEMA_TYPE); MetadataSchemaBuilder schema = typesBuilder.getSchemaType(ActionParameters.SCHEMA_TYPE) .createCustomSchema(ClassifyConnectorFolderInParentFolderActionParameters.SCHEMA_LOCAL_CODE); schema.create(ClassifyConnectorFolderInParentFolderActionParameters.ACTION_AFTER_CLASSIFICATION) .setDefaultRequirement(true) .defineAsEnum(ActionAfterClassification.class) .setDefaultValue(ActionAfterClassification.DO_NOTHING); schema.create(ClassifyConnectorFolderInParentFolderActionParameters.FOLDER_MAPPING).setDefaultRequirement(false) .setType( MetadataValueType.CONTENT); schema.create(ClassifyConnectorFolderInParentFolderActionParameters.DOCUMENT_MAPPING).setDefaultRequirement(false) .setType( MetadataValueType.CONTENT); schema.createUndeletable(ClassifyConnectorFolderInParentFolderActionParameters.DEFAULT_PARENT_FOLDER) .setDefaultRequirement(false) .defineReferencesTo(folderSchemaType); schema.create(ClassifyConnectorFolderInParentFolderActionParameters.DEFAULT_OPEN_DATE).setDefaultRequirement(false) .setType(MetadataValueType.DATE); } private void setupClassifyConnectorFolderDirectlyInThePlanActionParametersSchema() { MetadataSchemaTypeBuilder categorySchemaType = typesBuilder.getSchemaType(Category.SCHEMA_TYPE); MetadataSchemaTypeBuilder retentionRuleSchemaType = typesBuilder.getSchemaType(RetentionRule.SCHEMA_TYPE); MetadataSchemaTypeBuilder administrativeUnitSchemaType = typesBuilder.getSchemaType(AdministrativeUnit.SCHEMA_TYPE); MetadataSchemaBuilder schema = typesBuilder.getSchemaType(ActionParameters.SCHEMA_TYPE) .createCustomSchema(ClassifyConnectorFolderDirectlyInThePlanActionParameters.SCHEMA_LOCAL_CODE); schema.create(ClassifyConnectorFolderInTaxonomyActionParameters.ACTION_AFTER_CLASSIFICATION) .setDefaultRequirement(true).defineAsEnum(ActionAfterClassification.class) .setDefaultValue(ActionAfterClassification.DO_NOTHING); schema.create(ClassifyConnectorFolderDirectlyInThePlanActionParameters.FOLDER_MAPPING) .setDefaultRequirement(false).setType(MetadataValueType.CONTENT); schema.create(ClassifyConnectorFolderDirectlyInThePlanActionParameters.DOCUMENT_MAPPING) .setDefaultRequirement(false).setType(MetadataValueType.CONTENT); schema.create(ClassifyConnectorFolderDirectlyInThePlanActionParameters.DEFAULT_ADMIN_UNIT) .setDefaultRequirement(true).defineReferencesTo(administrativeUnitSchemaType); schema.create(ClassifyConnectorFolderDirectlyInThePlanActionParameters.DEFAULT_CATEGORY) .setDefaultRequirement(true).defineReferencesTo(categorySchemaType); schema.create(ClassifyConnectorFolderDirectlyInThePlanActionParameters.DEFAULT_RETENTION_RULE) .setDefaultRequirement(true).defineReferencesTo(retentionRuleSchemaType); schema.create(ClassifyConnectorFolderDirectlyInThePlanActionParameters.DEFAULT_OPEN_DATE) .setDefaultRequirement(true).setType(MetadataValueType.DATE); schema.create(ClassifyConnectorFolderDirectlyInThePlanActionParameters.DEFAULT_COPY_STATUS) .setDefaultRequirement(true).defineAsEnum(CopyType.class); } } private void configureClassifyInTaxonomyParametersForm(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory) { Language language = migrationResourcesProvider.getLanguage(); Map<Language, String> labels = new HashMap<>(); String taxonomyTab = "default:tab.taxonomy"; String optionsTab = "tab.options"; String defaultValuesTab = "tab.defaultValues"; String mappingsTab = "tab.mappings"; String advancedTab = "tab.advanced"; String inFolderSchema = ClassifyConnectorFolderInParentFolderActionParameters.SCHEMA; String inPlanSchema = ClassifyConnectorFolderDirectlyInThePlanActionParameters.SCHEMA; SchemasDisplayManager schemasDisplayManager = appLayerFactory.getMetadataSchemasDisplayManager(); SchemaTypesDisplayTransactionBuilder transaction = schemasDisplayManager.newTransactionBuilderFor(collection); transaction.add(schemasDisplayManager.getType(collection, ActionParameters.SCHEMA_TYPE).withNewMetadataGroup( migrationResourcesProvider.getLanguageMap( asList(taxonomyTab, optionsTab, defaultValuesTab, mappingsTab, advancedTab)))); transaction.add(schemasDisplayManager.getSchema(collection, inPlanSchema).withFormMetadataCodes(asList( inPlanSchema + "_" + ClassifyConnectorFolderDirectlyInThePlanActionParameters.DEFAULT_ADMIN_UNIT, inPlanSchema + "_" + ClassifyConnectorFolderDirectlyInThePlanActionParameters.DEFAULT_CATEGORY, inPlanSchema + "_" + ClassifyConnectorFolderDirectlyInThePlanActionParameters.DEFAULT_RETENTION_RULE, inPlanSchema + "_" + ClassifyConnectorFolderDirectlyInThePlanActionParameters.DEFAULT_COPY_STATUS, inPlanSchema + "_" + ClassifyConnectorFolderDirectlyInThePlanActionParameters.DEFAULT_OPEN_DATE, inPlanSchema + "_" + ClassifyConnectorFolderDirectlyInThePlanActionParameters.ACTION_AFTER_CLASSIFICATION, inPlanSchema + "_" + ClassifyConnectorFolderDirectlyInThePlanActionParameters.DOCUMENT_MAPPING, inPlanSchema + "_" + ClassifyConnectorFolderDirectlyInThePlanActionParameters.FOLDER_MAPPING ))); transaction.add(schemasDisplayManager.getSchema(collection, inFolderSchema).withFormMetadataCodes(asList( inFolderSchema + "_" + ClassifyConnectorFolderInParentFolderActionParameters.DEFAULT_PARENT_FOLDER, inFolderSchema + "_" + ClassifyConnectorFolderInParentFolderActionParameters.DEFAULT_OPEN_DATE, inFolderSchema + "_" + ClassifyConnectorFolderInParentFolderActionParameters.ACTION_AFTER_CLASSIFICATION, inFolderSchema + "_" + ClassifyConnectorFolderInParentFolderActionParameters.DOCUMENT_MAPPING, inFolderSchema + "_" + ClassifyConnectorFolderInParentFolderActionParameters.FOLDER_MAPPING ))); transaction.add(schemasDisplayManager.getMetadata(collection, inPlanSchema, DEFAULT_ADMIN_UNIT) .withMetadataGroup(defaultValuesTab)); transaction.add(schemasDisplayManager.getMetadata(collection, inPlanSchema, DEFAULT_CATEGORY) .withMetadataGroup(defaultValuesTab)); transaction.add(schemasDisplayManager.getMetadata(collection, inPlanSchema, DEFAULT_RETENTION_RULE) .withMetadataGroup(defaultValuesTab)); transaction.add(schemasDisplayManager.getMetadata(collection, inPlanSchema, DEFAULT_COPY_STATUS) .withMetadataGroup(defaultValuesTab)); transaction.add(schemasDisplayManager.getMetadata(collection, inPlanSchema, DEFAULT_OPEN_DATE) .withMetadataGroup(defaultValuesTab)); transaction.add(schemasDisplayManager.getMetadata(collection, inPlanSchema, DOCUMENT_MAPPING) .withMetadataGroup(advancedTab)); transaction.add(schemasDisplayManager.getMetadata(collection, inPlanSchema, FOLDER_MAPPING) .withMetadataGroup(advancedTab)); transaction.add(schemasDisplayManager.getMetadata(collection, inPlanSchema, ACTION_AFTER_CLASSIFICATION) .withMetadataGroup(optionsTab)); transaction.add(schemasDisplayManager.getMetadata(collection, inFolderSchema, DEFAULT_PARENT_FOLDER) .withMetadataGroup(defaultValuesTab)); transaction.add(schemasDisplayManager.getMetadata(collection, inFolderSchema, DEFAULT_OPEN_DATE) .withMetadataGroup(defaultValuesTab)); transaction.add(schemasDisplayManager.getMetadata(collection, inFolderSchema, DOCUMENT_MAPPING) .withMetadataGroup(advancedTab)); transaction.add(schemasDisplayManager.getMetadata(collection, inFolderSchema, FOLDER_MAPPING) .withMetadataGroup(advancedTab)); transaction.add(schemasDisplayManager.getMetadata(collection, inFolderSchema, ACTION_AFTER_CLASSIFICATION) .withMetadataGroup(optionsTab)); transaction.add(schemasDisplayManager.getSchema(collection, "robotLog_default") .withNewTableMetadatas("robotLog_default_count")); schemasDisplayManager.execute(transaction.build()); } }