package com.constellio.app.modules.complementary.esRmRobots.migrations;
import static com.constellio.app.modules.complementary.esRmRobots.model.ClassifyConnectorDocumentInFolderActionParameters.ACTION_AFTER_CLASSIFICATION;
import static com.constellio.app.modules.complementary.esRmRobots.model.ClassifyConnectorDocumentInFolderActionParameters.IN_FOLDER;
import static com.constellio.app.modules.complementary.esRmRobots.model.ClassifyConnectorDocumentInFolderActionParameters.MAJOR_VERSIONS;
import static java.util.Arrays.asList;
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.ClassifyConnectorDocumentInFolderActionParameters;
import com.constellio.app.modules.complementary.esRmRobots.model.enums.ActionAfterClassification;
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.services.schemas.builders.MetadataSchemaBuilder;
import com.constellio.model.services.schemas.builders.MetadataSchemaTypesBuilder;
public class ESRMRobotsMigrationTo5_1_9 implements MigrationScript {
@Override
public String getVersion() {
return "5.1.9";
}
@Override
public void migrate(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory)
throws Exception {
new SchemaAlterationFor5_1_9(collection, migrationResourcesProvider, appLayerFactory).migrate();
updateClassifyDocumentInFolderParametersForm(collection, migrationResourcesProvider, appLayerFactory);
}
class SchemaAlterationFor5_1_9 extends MetadataSchemasAlterationHelper {
protected SchemaAlterationFor5_1_9(String collection, MigrationResourcesProvider migrationResourcesProvider,
AppLayerFactory appLayerFactory) {
super(collection, migrationResourcesProvider, appLayerFactory);
}
public String getVersion() {
return "5.1.9";
}
@Override
protected void migrate(MetadataSchemaTypesBuilder typesBuilder) {
setupClassifyConnectorDocumentInFolderActionParametersSchema();
// FIXME Benoit Add form display for new options in classification action
}
private void setupClassifyConnectorDocumentInFolderActionParametersSchema() {
MetadataSchemaBuilder schema = typesBuilder.getSchemaType(ActionParameters.SCHEMA_TYPE)
.getCustomSchema(ClassifyConnectorDocumentInFolderActionParameters.SCHEMA_LOCAL_CODE);
//
// schema.createUndeletable(ClassifyConnectorDocumentInFolderActionParameters.VERSIONS)
// .setType(MetadataValueType.STRING);
schema.createUndeletable(ClassifyConnectorDocumentInFolderActionParameters.ACTION_AFTER_CLASSIFICATION)
.setDefaultRequirement(true)
.defineAsEnum(ActionAfterClassification.class)
.setDefaultValue(ActionAfterClassification.DO_NOTHING);
}
}
private void updateClassifyDocumentInFolderParametersForm(String collection,
MigrationResourcesProvider migrationResourcesProvider,
AppLayerFactory appLayerFactory) {
String defaultValuesTab = "tab.defaultValues";
String optionsTab = "tab.options";
Map<String, Map<Language, String>> groups = migrationResourcesProvider.getLanguageMap(
asList(defaultValuesTab, optionsTab));
String parametersSchema = ClassifyConnectorDocumentInFolderActionParameters.SCHEMA;
SchemasDisplayManager schemasDisplayManager = appLayerFactory.getMetadataSchemasDisplayManager();
SchemaTypesDisplayTransactionBuilder transaction = schemasDisplayManager.newTransactionBuilderFor(collection);
transaction.add(schemasDisplayManager.getType(collection, ActionParameters.SCHEMA_TYPE)
.withNewMetadataGroup(groups));
transaction.add(schemasDisplayManager.getSchema(collection, parametersSchema).withFormMetadataCodes(asList(
parametersSchema + "_" + IN_FOLDER,
parametersSchema + "_" + MAJOR_VERSIONS,
parametersSchema + "_" + ACTION_AFTER_CLASSIFICATION
)));
transaction.add(schemasDisplayManager.getMetadata(collection, parametersSchema, IN_FOLDER)
.withMetadataGroup(defaultValuesTab));
transaction.add(schemasDisplayManager.getMetadata(collection, parametersSchema, MAJOR_VERSIONS)
.withMetadataGroup(defaultValuesTab));
transaction.add(schemasDisplayManager.getMetadata(collection, parametersSchema, ACTION_AFTER_CLASSIFICATION)
.withMetadataGroup(optionsTab));
schemasDisplayManager.execute(transaction.build());
}
}