package com.constellio.app.services.migrations.scripts; import static com.constellio.model.entities.schemas.MetadataValueType.NUMBER; import static java.util.Arrays.asList; 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.services.factories.AppLayerFactory; import com.constellio.app.services.schemasDisplay.SchemaTypesDisplayTransactionBuilder; import com.constellio.app.services.schemasDisplay.SchemasDisplayManager; import com.constellio.app.ui.pages.search.SearchResultsViewMode; import com.constellio.model.entities.records.wrappers.SavedSearch; import com.constellio.model.entities.schemas.MetadataValueType; import com.constellio.model.services.schemas.builders.MetadataSchemaBuilder; import com.constellio.model.services.schemas.builders.MetadataSchemaTypesBuilder; public class CoreMigrationTo_6_4 implements MigrationScript { @Override public String getVersion() { return "6.4"; } @Override public void migrate(String collection, MigrationResourcesProvider provider, AppLayerFactory appLayerFactory) throws Exception { //FIXME is called several times for the different installed modules!! new CoreSchemaAlterationFor6_4(collection, provider, appLayerFactory).migrate(); //initializeUsersLanguages(collection, appLayerFactory);a applySchemasDisplay(collection, appLayerFactory.getMetadataSchemasDisplayManager()); appLayerFactory.getSystemGlobalConfigsManager().setReindexingRequired(true); } private class CoreSchemaAlterationFor6_4 extends MetadataSchemasAlterationHelper { public CoreSchemaAlterationFor6_4(String collection, MigrationResourcesProvider provider, AppLayerFactory appLayerFactory) { super(collection, provider, appLayerFactory); } @Override protected void migrate(MetadataSchemaTypesBuilder typesBuilder) { typesBuilder.getDefaultSchema(SavedSearch.SCHEMA_TYPE).createUndeletable(SavedSearch.RESULTS_VIEW_MODE) .setType(MetadataValueType.STRING).setDefaultValue(SearchResultsViewMode.DETAILED); MetadataSchemaBuilder defaultSchema = typesBuilder.getSchemaType(SavedSearch.SCHEMA_TYPE).getDefaultSchema(); defaultSchema.createUndeletable(SavedSearch.PAGE_LENGTH).setType(NUMBER); } } private void applySchemasDisplay(String collection, SchemasDisplayManager manager) { SchemaTypesDisplayTransactionBuilder transaction = manager.newTransactionBuilderFor(collection); transaction.add(manager.getSchema(collection, "user_default").withDisplayMetadataCodes(asList( "user_default_username", "user_default_firstname", "user_default_lastname", "user_default_title", "user_default_email", "user_default_userroles", "user_default_groups", "user_default_jobTitle", "user_default_phone", "user_default_status", "user_default_createdOn", "user_default_modifiedOn", "user_default_allroles" ))); transaction.in("savedSearch").addToDisplay("resultsViewMode").beforeMetadata("schemaFilter"); transaction.in("savedSearch").addToForm("resultsViewMode").beforeMetadata("schemaFilter"); manager.execute(transaction.build()); } }