package com.constellio.app.modules.complementary.esRmRobots.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.es.services.ESSchemasRecordsServices;
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.Transaction;
import com.constellio.model.entities.schemas.MetadataSchemaTypes;
import com.constellio.model.services.factories.ModelLayerFactory;
import com.constellio.model.services.records.RecordServices;
import com.constellio.model.services.schemas.builders.MetadataSchemaTypesBuilder;
import com.constellio.model.services.security.roles.RolesManager;
import java.util.ArrayList;
import java.util.List;
import static java.util.Arrays.asList;
public class ESRMRobotsMigrationCombo implements ComboMigrationScript {
@Override
public List<MigrationScript> getVersions() {
List<MigrationScript> migrations = new ArrayList<>();
migrations.add(new ESRMRobotsMigrationTo5_1_2());
migrations.add(new ESRMRobotsMigrationTo5_1_5());
migrations.add(new ESRMRobotsMigrationTo5_1_6());
migrations.add(new ESRMRobotsMigrationTo5_1_7());
migrations.add(new ESRMRobotsMigrationTo5_1_9());
migrations.add(new ESRMRobotsMigrationTo6_0());
migrations.add(new ESRMRobotsMigrationTo6_1());
migrations.add(new ESRMRobotsMigrationTo6_2_2_1());
migrations.add(new ESRMRobotsMigrationTo7_0_1());
return migrations;
}
@Override
public String getVersion() {
return getVersions().get(getVersions().size() - 1).getVersion();
}
GeneratedESRMRobotsMigrationCombo generatedComboMigration;
MigrationResourcesProvider migrationResourcesProvider;
@Override
public void migrate(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory)
throws Exception {
this.migrationResourcesProvider = migrationResourcesProvider;
ModelLayerFactory modelLayerFactory = appLayerFactory.getModelLayerFactory();
generatedComboMigration = new GeneratedESRMRobotsMigrationCombo(collection, appLayerFactory,
migrationResourcesProvider);
new SchemaAlteration(collection, migrationResourcesProvider, appLayerFactory).migrate();
generatedComboMigration.applyGeneratedRoles();
generatedComboMigration.applySchemasDisplay(appLayerFactory.getMetadataSchemasDisplayManager());
applySchemasDisplay2(collection, migrationResourcesProvider, appLayerFactory.getMetadataSchemasDisplayManager());
RecordServices recordServices = appLayerFactory.getModelLayerFactory().newRecordServices();
MetadataSchemaTypes types = appLayerFactory.getModelLayerFactory().getMetadataSchemasManager().getSchemaTypes(collection);
recordServices.execute(createRecordTransaction(collection, migrationResourcesProvider, appLayerFactory, types));
RolesManager rolesManager = modelLayerFactory.getRolesManager();
// rolesManager.updateRole(
// rolesManager.getRole(collection, RMRoles.RGD).withNewPermissions(asList(RobotsPermissionsTo.MANAGE_ROBOTS)));
}
private void applySchemasDisplay2(String collection, MigrationResourcesProvider migrationResourcesProvider,
SchemasDisplayManager manager) {
SchemaTypesDisplayTransactionBuilder transaction = manager.newTransactionBuilderFor(collection);
//transaction.add(manager.getType(collection, ConnectorHttpDocument.SCHEMA_TYPE).withMetadataGroup(groups));
transaction.add(manager.getSchema(collection, "robotLog_default").withNewTableMetadatas("robotLog_default_count"));
transaction.add(manager.getSchema(collection, "containerRecord_default").withRemovedFormMetadatas("containerRecord_default_fillRatioEntered"));
transaction.add(manager.getSchema(collection, "printable_default").withRemovedFormMetadatas("printable_default_isdeletable")
.withRemovedDisplayMetadatas("printable_default_isdeletable"));
transaction.add(manager.getSchema(collection, "printable_label")
.withDisplayMetadataCodes(asList(
"printable_label_title",
"printable_label_createdBy",
"printable_label_createdOn",
"printable_label_modifiedBy",
"printable_label_modifiedOn",
"printable_label_jasperfile",
"printable_label_colonne",
"printable_label_ligne",
"printable_label_typelabel"
))
.withFormMetadataCodes(asList(
"printable_label_title",
"printable_label_jasperfile",
"printable_label_colonne",
"printable_label_ligne",
"printable_label_typelabel"
))
.withSearchResultsMetadataCodes(asList(
"printable_label_title",
"printable_label_modifiedOn"
))
.withRemovedTableMetadatas(
"printable_label_title",
"printable_label_modifiedOn"
)
);
manager.execute(transaction.build());
}
private Transaction createRecordTransaction(String collection, MigrationResourcesProvider migrationResourcesProvider,
AppLayerFactory appLayerFactory, MetadataSchemaTypes types) {
Transaction transaction = new Transaction();
ESSchemasRecordsServices es = new ESSchemasRecordsServices(collection, appLayerFactory);
return transaction;
}
class SchemaAlteration extends MetadataSchemasAlterationHelper {
protected SchemaAlteration(String collection,
MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory) {
super(collection, migrationResourcesProvider, appLayerFactory);
}
@Override
protected void migrate(MetadataSchemaTypesBuilder typesBuilder) {
generatedComboMigration.applyGeneratedSchemaAlteration(typesBuilder);
}
}
}