package com.constellio.app.services.migrations; 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.services.RMSchemasRecordsServices; import com.constellio.app.services.factories.AppLayerFactory; import com.constellio.app.services.migrations.scripts.*; 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.records.Transaction; import com.constellio.model.entities.records.wrappers.Collection; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.entities.schemas.MetadataSchemaTypes; import com.constellio.model.entities.schemas.Schemas; import com.constellio.model.services.factories.ModelLayerFactory; import com.constellio.model.services.migrations.ConstellioEIMConfigs; import com.constellio.model.services.records.RecordServices; import com.constellio.model.services.schemas.builders.MetadataSchemaTypesBuilder; import com.constellio.model.services.search.entities.SearchBoost; import java.util.ArrayList; import java.util.List; import static com.constellio.app.entities.schemasDisplay.enums.MetadataDisplayType.VERTICAL; import static com.constellio.app.ui.i18n.i18n.$; import static java.util.Arrays.asList; public class CoreMigrationCombo implements ComboMigrationScript { @Override public List<MigrationScript> getVersions() { List<MigrationScript> scripts = new ArrayList<>(); scripts.add(new CoreMigrationTo_5_0_1()); scripts.add(new CoreMigrationTo_5_0_4()); scripts.add(new CoreMigrationTo_5_0_5()); scripts.add(new CoreMigrationTo_5_0_6_6()); scripts.add(new CoreMigrationTo_5_0_7()); scripts.add(new CoreMigrationTo_5_1_0()); scripts.add(new CoreMigrationTo_5_1_1_3()); scripts.add(new CoreMigrationTo_5_1_2()); scripts.add(new CoreMigrationTo_5_1_3()); scripts.add(new CoreMigrationTo_5_1_4()); scripts.add(new CoreMigrationTo_5_1_6()); scripts.add(new CoreMigrationTo_5_1_7()); scripts.add(new CoreMigrationTo_5_2()); scripts.add(new CoreMigrationTo_6_0()); scripts.add(new CoreMigrationTo_6_1()); scripts.add(new CoreMigrationTo_6_3()); scripts.add(new CoreMigrationTo_6_4()); scripts.add(new CoreMigrationTo_6_4_1()); scripts.add(new CoreMigrationTo_6_5()); scripts.add(new CoreMigrationTo_6_5_14()); scripts.add(new CoreMigrationTo_6_5_19()); scripts.add(new CoreMigrationTo_6_5_21()); scripts.add(new CoreMigrationTo_6_5_22()); scripts.add(new CoreMigrationTo_6_5_42()); scripts.add(new CoreMigrationTo_6_5_50()); scripts.add(new CoreMigrationTo_6_6()); scripts.add(new CoreMigrationTo_7_0()); scripts.add(new CoreMigrationTo_7_1()); return scripts; } GeneratedCoreMigrationCombo generatedFastCoreMigration; GeneratedSystemMigrationCombo generatedSystemMigrationCombo; @Override public String getVersion() { return getVersions().get(getVersions().size() - 1).getVersion(); } @Override public void migrate(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory) throws Exception { ModelLayerFactory modelLayerFactory = appLayerFactory.getModelLayerFactory(); generatedFastCoreMigration = new GeneratedCoreMigrationCombo(collection, appLayerFactory, migrationResourcesProvider); generatedSystemMigrationCombo = new GeneratedSystemMigrationCombo(collection, appLayerFactory, migrationResourcesProvider); new SchemaAlteration(collection, migrationResourcesProvider, appLayerFactory).migrate(); CoreMigrationTo_5_1_3.initEncryption(collection, migrationResourcesProvider, appLayerFactory); if (collection.equals(Collection.SYSTEM_COLLECTION)) { generatedSystemMigrationCombo.applyGeneratedRoles(); generatedSystemMigrationCombo.applySchemasDisplay(appLayerFactory.getMetadataSchemasDisplayManager()); } else { generatedFastCoreMigration.applyGeneratedRoles(); generatedFastCoreMigration.applySchemasDisplay(appLayerFactory.getMetadataSchemasDisplayManager()); } applySchemasDisplay2(collection, appLayerFactory.getMetadataSchemasDisplayManager()); appLayerFactory.getModelLayerFactory().getSearchBoostManager().add(collection, new SearchBoost(SearchBoost.METADATA_TYPE, "title_s", $("title"), 20.0)); RecordServices recordServices = appLayerFactory.getModelLayerFactory().newRecordServices(); MetadataSchemaTypes types = appLayerFactory.getModelLayerFactory().getMetadataSchemasManager().getSchemaTypes(collection); recordServices.execute(createRecordTransaction(collection, migrationResourcesProvider, appLayerFactory, types)); if (Collection.SYSTEM_COLLECTION.equals(collection)) { new CoreMigrationTo_6_0().createAdminUser(modelLayerFactory); //appLayerFactory.getModelLayerFactory().newAuthenticationService().changePassword("admin", "password"); } else { } appLayerFactory.getModelLayerFactory().getSystemConfigurationsManager() .setValue(ConstellioEIMConfigs.TRASH_PURGE_DELAI, 90); } private void applySchemasDisplay2(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.add(manager.getMetadata(collection, "event_default_recordVersion").withDisplayType(VERTICAL)); transaction.in("savedSearch").addToDisplay("resultsViewMode").beforeMetadata("schemaFilter"); transaction.in("savedSearch").addToForm("resultsViewMode").beforeMetadata("schemaFilter"); manager.execute(transaction.build()); } private Transaction createRecordTransaction(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory, MetadataSchemaTypes types) { Transaction transaction = new Transaction(); RMSchemasRecordsServices rm = new RMSchemasRecordsServices(types.getCollection(), appLayerFactory.getModelLayerFactory()); transaction.add(rm.newFacetField().setOrder(0).setTitle(migrationResourcesProvider.get("init.facet.type")) .setActive(true) .setOpenByDefault(true) .setFieldDataStoreCode(Schemas.SCHEMA.getDataStoreCode())); transaction.add(rm.newFacetQuery().setOrder(1) .setTitle(migrationResourcesProvider.get("init.facet.createModification")) .setActive(false) .setOpenByDefault(true) .withQuery("modifiedOn_dt:[NOW-1MONTH TO NOW]", "Modifiés les 30 derniers jours") .withQuery("modifiedOn_dt:[NOW-7DAY TO NOW]", "Modifiés les 7 derniers jours") .withQuery("createdOn_dt:[NOW-1MONTH TO NOW]", "Créés les 30 derniers jours") .withQuery("createdOn_dt:[NOW-7DAY TO NOW]", "Créés les 7 derniers jours")); return transaction; } class SchemaAlteration extends MetadataSchemasAlterationHelper { protected SchemaAlteration(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory) { super(collection, migrationResourcesProvider, appLayerFactory); } @Override protected void migrate(MetadataSchemaTypesBuilder typesBuilder) { if (Collection.SYSTEM_COLLECTION.equals(typesBuilder.getCollection())) { generatedSystemMigrationCombo.applyGeneratedSchemaAlteration(typesBuilder); } else { generatedFastCoreMigration.applyGeneratedSchemaAlteration(typesBuilder); } // // // typesBuilder.getDefaultSchema(User.SCHEMA_TYPE).get(User.ADDRESS).addLabel(Language.French, "Adresse"); // typesBuilder.getDefaultSchema(User.SCHEMA_TYPE).get(User.FAX).addLabel(Language.French, "Télécopieur"); } } }