package com.constellio.app.modules.es.migrations;
import static com.constellio.app.modules.es.model.connectors.smb.ConnectorSmbInstance.SKIP_SHARE_ACCESS_CONTROL;
import static java.util.Arrays.asList;
import java.util.Map;
import com.constellio.app.entities.modules.MetadataSchemasAlterationHelper;
import com.constellio.app.entities.modules.MigrationHelper;
import com.constellio.app.entities.modules.MigrationResourcesProvider;
import com.constellio.app.entities.modules.MigrationScript;
import com.constellio.app.modules.es.model.connectors.ConnectorInstance;
import com.constellio.app.modules.es.model.connectors.smb.ConnectorSmbInstance;
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.MetadataSchemaBuilder;
import com.constellio.model.services.schemas.builders.MetadataSchemaTypesBuilder;
public class ESMigrationTo6_1 extends MigrationHelper implements MigrationScript {
MigrationResourcesProvider migrationResourcesProvider;
@Override
public String getVersion() {
return "6.1";
}
@Override
public void migrate(String collection, MigrationResourcesProvider migrationResourcesProvider, AppLayerFactory appLayerFactory)
throws Exception {
this.migrationResourcesProvider = migrationResourcesProvider;
new SchemaAlterationFor6_1(collection, migrationResourcesProvider, appLayerFactory).migrate();
updateFormAndDisplay(collection, appLayerFactory);
}
private void updateFormAndDisplay(String collection, AppLayerFactory appLayerFactory) {
SchemasDisplayManager manager = appLayerFactory.getMetadataSchemasDisplayManager();
String advancedTab = "connectors.advanced";
Map<String, Map<Language, String>> groups = migrationResourcesProvider.getLanguageMap(asList(advancedTab));
SchemaTypesDisplayTransactionBuilder transaction = manager.newTransactionBuilderFor(collection);
transaction.add(manager.getType(collection, ConnectorInstance.SCHEMA_TYPE).withNewMetadataGroup(groups));
transaction.add(manager.getSchema(collection, ConnectorSmbInstance.SCHEMA_CODE)
.withNewFormMetadata(ConnectorSmbInstance.SCHEMA_CODE + "_" + SKIP_SHARE_ACCESS_CONTROL));
transaction.add(manager.getMetadata(collection, ConnectorSmbInstance.SCHEMA_CODE, SKIP_SHARE_ACCESS_CONTROL)
.withMetadataGroup(advancedTab));
manager.execute(transaction.build());
}
static class SchemaAlterationFor6_1 extends MetadataSchemasAlterationHelper {
MetadataSchemaTypes types;
protected SchemaAlterationFor6_1(String collection, MigrationResourcesProvider migrationResourcesProvider,
AppLayerFactory appLayerFactory) {
super(collection, migrationResourcesProvider, appLayerFactory);
types = appLayerFactory.getModelLayerFactory().getMetadataSchemasManager().getSchemaTypes(collection);
}
public String getVersion() {
return "6.1";
}
@Override
protected void migrate(MetadataSchemaTypesBuilder types) {
MetadataSchemaBuilder smbConnectorSchemaType = types.getSchema(ConnectorSmbInstance.SCHEMA_CODE);
smbConnectorSchemaType.get(ConnectorSmbInstance.DOMAIN).setDefaultRequirement(false);
smbConnectorSchemaType.get(ConnectorSmbInstance.PASSWORD).setDefaultRequirement(false);
smbConnectorSchemaType.create(SKIP_SHARE_ACCESS_CONTROL)
.setType(MetadataValueType.BOOLEAN).setDefaultValue(false);
}
}
}