package com.constellio.app.services.migrations.scripts;
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.model.entities.records.wrappers.Collection;
import com.constellio.model.entities.schemas.MetadataSchema;
import com.constellio.model.entities.schemas.MetadataValueType;
import com.constellio.model.entities.security.global.SolrUserCredential;
import com.constellio.model.services.schemas.builders.MetadataSchemaBuilder;
import com.constellio.model.services.schemas.builders.MetadataSchemaTypesBuilder;
public class CoreMigrationTo_6_5_42 implements MigrationScript {
@Override
public String getVersion() {
return "6.5.42";
}
@Override
public void migrate(String collection, MigrationResourcesProvider migrationResourcesProvider,
AppLayerFactory appLayerFactory) {
if (Collection.SYSTEM_COLLECTION.equals(collection)) {
MetadataSchema userCredentialSchema = appLayerFactory.getModelLayerFactory().getMetadataSchemasManager()
.getSchemaTypes(collection).getSchema(SolrUserCredential.DEFAULT_SCHEMA);
new CoreSchemaAlterationFor6_5_42(collection, migrationResourcesProvider, appLayerFactory).migrate();
}
}
private class CoreSchemaAlterationFor6_5_42 extends MetadataSchemasAlterationHelper {
public CoreSchemaAlterationFor6_5_42(String collection, MigrationResourcesProvider migrationResourcesProvider,
AppLayerFactory appLayerFactory) {
super(collection, migrationResourcesProvider, appLayerFactory);
}
@Override
protected void migrate(MetadataSchemaTypesBuilder builder) {
MetadataSchemaBuilder credentialsSchemaBuilder = builder.getSchema(SolrUserCredential.DEFAULT_SCHEMA);
if (!credentialsSchemaBuilder.hasMetadata(SolrUserCredential.PERSONAL_EMAILS)) {
credentialsSchemaBuilder.createUndeletable(SolrUserCredential.PERSONAL_EMAILS).setType(MetadataValueType.STRING)
.setMultivalue(true);
}
}
}
}