package com.constellio.app.services.migrations.scripts;
import static com.constellio.model.entities.schemas.MetadataValueType.ENUM;
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.records.wrappers.User;
import com.constellio.model.entities.records.wrappers.UserDocument;
import com.constellio.model.entities.records.wrappers.UserFolder;
import com.constellio.model.entities.schemas.MetadataValueType;
import com.constellio.model.entities.security.global.AgentStatus;
import com.constellio.model.entities.security.global.SolrUserCredential;
import com.constellio.model.services.schemas.builders.MetadataSchemaBuilder;
import com.constellio.model.services.schemas.builders.MetadataSchemaTypeBuilder;
import com.constellio.model.services.schemas.builders.MetadataSchemaTypesBuilder;
/**
* Created by Nicolas D'Amours on 2017-
*/
public class CoreMigrationTo_7_0_1 implements MigrationScript {
@Override
public String getVersion() {
return "7.0.1";
}
@Override
public void migrate(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory)
throws Exception {
new CoreAlternationFor7_0_1(collection, migrationResourcesProvider, appLayerFactory).migrate();
}
class CoreAlternationFor7_0_1 extends MetadataSchemasAlterationHelper {
public CoreAlternationFor7_0_1(String collection, MigrationResourcesProvider migrationResourcesProvider,
AppLayerFactory appLayerFactory) {
super(collection, migrationResourcesProvider, appLayerFactory);
}
@Override
protected void migrate(MetadataSchemaTypesBuilder typesBuilder) {
if(!typesBuilder.getSchema(User.DEFAULT_SCHEMA).hasMetadata(User.AGENT_ENABLED)) {
typesBuilder.getSchema(User.DEFAULT_SCHEMA).create(User.AGENT_ENABLED).setType(MetadataValueType.BOOLEAN)
.setDefaultValue(true);
MetadataSchemaTypeBuilder type = typesBuilder.createNewSchemaType(UserFolder.SCHEMA_TYPE);
MetadataSchemaBuilder defaultSchema = type.getDefaultSchema();
type.setSecurity(false);
defaultSchema.create(UserFolder.USER).setType(MetadataValueType.REFERENCE).setEssential(true)
.defineReferencesTo(typesBuilder.getSchemaType(User.SCHEMA_TYPE));
defaultSchema.create(UserFolder.FORM_CREATED_ON).setType(MetadataValueType.DATE_TIME).setEssential(false);
defaultSchema.create(UserFolder.FORM_MODIFIED_ON).setType(MetadataValueType.DATE_TIME).setEssential(false);
defaultSchema.create(UserFolder.PARENT_USER_FOLDER).setType(MetadataValueType.REFERENCE).setEssential(false)
.defineReferencesTo(typesBuilder.getSchemaType(UserFolder.SCHEMA_TYPE));
typesBuilder.getDefaultSchema(UserDocument.SCHEMA_TYPE).create(UserDocument.USER_FOLDER).setEssential(false)
.setType(MetadataValueType.REFERENCE).defineReferencesTo(typesBuilder.getSchemaType(UserFolder.SCHEMA_TYPE));
typesBuilder.getDefaultSchema(UserDocument.SCHEMA_TYPE).create(UserDocument.FORM_CREATED_ON).setEssential(false)
.setType(MetadataValueType.DATE_TIME);
typesBuilder.getDefaultSchema(UserDocument.SCHEMA_TYPE).create(UserDocument.FORM_MODIFIED_ON).setEssential(false)
.setType(MetadataValueType.DATE_TIME);
if (Collection.SYSTEM_COLLECTION.equals(typesBuilder.getCollection())) {
MetadataSchemaBuilder userCredentialSchema = typesBuilder.getSchema(SolrUserCredential.DEFAULT_SCHEMA);
userCredentialSchema.create(SolrUserCredential.AGENT_STATUS).setType(ENUM).defineAsEnum(AgentStatus.class);
}
}
}
}
}