package com.constellio.app.modules.rm.migrations;
import static com.constellio.app.ui.i18n.i18n.$;
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.wrappers.type.DocumentType;
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.entities.schemas.MetadataSchemaTypes;
import com.constellio.model.entities.schemas.MetadataValueType;
import com.constellio.model.services.schemas.builders.MetadataBuilder;
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_0_4 implements MigrationScript {
@Override
public String getVersion() {
return "5.1.0.4";
}
@Override
public void migrate(String collection, MigrationResourcesProvider migrationResourcesProvider,
AppLayerFactory appLayerFactory)
throws Exception {
new SchemaAlterationFor5_1_0_4(collection, migrationResourcesProvider, appLayerFactory).migrate();
updateFormAndDisplay(collection, appLayerFactory);
}
class SchemaAlterationFor5_1_0_4 extends MetadataSchemasAlterationHelper {
MetadataSchemaTypes types;
protected SchemaAlterationFor5_1_0_4(String collection, MigrationResourcesProvider migrationResourcesProvider,
AppLayerFactory appLayerFactory) {
super(collection, migrationResourcesProvider, appLayerFactory);
types = appLayerFactory.getModelLayerFactory().getMetadataSchemasManager().getSchemaTypes(collection);
}
public String getVersion() {
return "5.1.0.4";
}
@Override
protected void migrate(MetadataSchemaTypesBuilder typesBuilder) {
MetadataSchemaTypeBuilder ddvDocumentTypeSchemaTypeBuilder = typesBuilder.getSchemaType(DocumentType.SCHEMA_TYPE);
MetadataSchemaBuilder ddvDocumentDefaultSchemaBuilder = ddvDocumentTypeSchemaTypeBuilder.getDefaultSchema();
MetadataBuilder metadataBuilder = ddvDocumentDefaultSchemaBuilder.createUndeletable(DocumentType.TEMPLATES)
.setType(MetadataValueType.CONTENT)
.setMultivalue(true);
for (Language language : typesBuilder.getLanguages()) {
metadataBuilder.addLabel(language, $("DocumentType.templates"));
}
}
}
private void updateFormAndDisplay(String collection, AppLayerFactory appLayerFactory) {
SchemasDisplayManager manager = appLayerFactory.getMetadataSchemasDisplayManager();
SchemaTypesDisplayTransactionBuilder transactionBuilder = manager.newTransactionBuilderFor(collection);
transactionBuilder.in(DocumentType.SCHEMA_TYPE)
.addToForm(DocumentType.TEMPLATES)
.atTheEnd();
manager.execute(transactionBuilder.build());
}
}