package com.constellio.app.modules.rm.migrations; 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.enums.MetadataInputType; import com.constellio.app.modules.rm.wrappers.Document; import com.constellio.app.modules.rm.wrappers.Folder; 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.records.wrappers.User; import com.constellio.model.entities.schemas.MetadataValueType; import com.constellio.model.services.schemas.builders.CommonMetadataBuilder; 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 RMMigrationTo5_1_2_2 implements MigrationScript { @Override public String getVersion() { return "5.1.2.2"; } @Override public void migrate(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory) throws Exception { new RMSchemaAlterationFor5_1_2_2(collection, migrationResourcesProvider, appLayerFactory).migrate(); setupDisplayConfig(collection, appLayerFactory); } private void setupDisplayConfig(String collection, AppLayerFactory appLayerFactory) { SchemasDisplayManager manager = appLayerFactory.getMetadataSchemasDisplayManager(); SchemaTypesDisplayTransactionBuilder transactionBuilder = manager.newTransactionBuilderFor(collection); transactionBuilder.in(Folder.SCHEMA_TYPE).removeFromDisplay( CommonMetadataBuilder.CREATED_BY, CommonMetadataBuilder.CREATED_ON, CommonMetadataBuilder.MODIFIED_BY, CommonMetadataBuilder.MODIFIED_ON); transactionBuilder.in(Document.SCHEMA_TYPE).removeFromDisplay( CommonMetadataBuilder.CREATED_BY, CommonMetadataBuilder.CREATED_ON, CommonMetadataBuilder.MODIFIED_BY, CommonMetadataBuilder.MODIFIED_ON); transactionBuilder.in(Folder.SCHEMA_TYPE) .addToDisplay(Folder.FORM_CREATED_BY, Folder.FORM_CREATED_ON, Folder.FORM_MODIFIED_BY, Folder.FORM_MODIFIED_ON) .beforeTheHugeCommentMetadata(); transactionBuilder.in(Document.SCHEMA_TYPE) .addToDisplay(Document.FORM_CREATED_BY, Document.FORM_CREATED_ON, Document.FORM_MODIFIED_BY, Document.FORM_MODIFIED_ON).beforeTheHugeCommentMetadata(); transactionBuilder.add(manager.getMetadata(collection, Folder.DEFAULT_SCHEMA, Folder.FORM_CREATED_BY) .withInputType(MetadataInputType.HIDDEN)); transactionBuilder.add(manager.getMetadata(collection, Folder.DEFAULT_SCHEMA, Folder.FORM_CREATED_ON) .withInputType(MetadataInputType.HIDDEN)); transactionBuilder.add(manager.getMetadata(collection, Document.DEFAULT_SCHEMA, Document.FORM_CREATED_BY) .withInputType(MetadataInputType.HIDDEN)); transactionBuilder.add(manager.getMetadata(collection, Document.DEFAULT_SCHEMA, Document.FORM_CREATED_ON) .withInputType(MetadataInputType.HIDDEN)); manager.execute(transactionBuilder.build()); } private class RMSchemaAlterationFor5_1_2_2 extends MetadataSchemasAlterationHelper { public RMSchemaAlterationFor5_1_2_2(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory) { super(collection, migrationResourcesProvider, appLayerFactory); } @Override protected void migrate(MetadataSchemaTypesBuilder typesBuilder) { MetadataSchemaTypeBuilder userSchemaType = typesBuilder.getSchemaType(User.SCHEMA_TYPE); MetadataSchemaBuilder documentSchema = typesBuilder.getSchema(Document.DEFAULT_SCHEMA); documentSchema.createSystemReserved(Folder.FORM_CREATED_BY).defineReferencesTo(userSchemaType); documentSchema.createSystemReserved(Folder.FORM_CREATED_ON).setType(MetadataValueType.DATE_TIME); documentSchema.createSystemReserved(Folder.FORM_MODIFIED_BY).defineReferencesTo(userSchemaType); documentSchema.createSystemReserved(Folder.FORM_MODIFIED_ON).setType(MetadataValueType.DATE_TIME); MetadataSchemaBuilder folderSchema = typesBuilder.getSchema(Folder.DEFAULT_SCHEMA); folderSchema.createSystemReserved(Folder.FORM_CREATED_BY).defineReferencesTo(userSchemaType); folderSchema.createSystemReserved(Folder.FORM_CREATED_ON).setType(MetadataValueType.DATE_TIME); folderSchema.createSystemReserved(Folder.FORM_MODIFIED_BY).defineReferencesTo(userSchemaType); folderSchema.createSystemReserved(Folder.FORM_MODIFIED_ON).setType(MetadataValueType.DATE_TIME); } } }