/// <inheritdoc cref="INonPersistentColumnsAggregator"/> public void Add(ImportEntity importEntity, ImportColumn column, ImportColumnValue columnValue, ImportColumnDestination destination) { IColumnProcessor columnProcessor = GetColumnProcessor(destination); columnProcessor.Add(importEntity, column, columnValue, destination); }
/// <inheritdoc cref="BaseColumnProcessor"/> /// <summary> /// Finds processed value. /// </summary> /// <param name="destination">Import column destination.</param> /// <param name="columnValue">Import column value.</param> /// <returns>Processed value.</returns> public object FindValueForSave(ImportColumnDestination destination, ImportColumnValue columnValue) { EntitySchema entitySchema = UserConnection.EntitySchemaManager.GetInstanceByUId(destination.SchemaUId); EntitySchemaColumn column = entitySchema.Columns.GetByName(destination.ColumnName); return(TextColumnHelper.PrepareTextColumnValue((TextDataValueType)column.DataValueType, columnValue.Value)); }
/// <inheritdoc cref="NonPersistentColumnProcessor{TResult}"/> protected override int?ConvertValue(ImportColumnValue columnValue) { base.ConvertValue(columnValue); if (!int.TryParse(columnValue.Value, out int valueForSave)) { return(null); } return(valueForSave); }
/// <inheritdoc cref="NonPersistentColumnProcessor{TResult}"/> protected override Guid?ConvertValue(ImportColumnValue columnValue) { base.ConvertValue(columnValue); if (Guid.TryParse(columnValue.Value, out Guid convertedValue)) { return(convertedValue); } return(null); }
/// <summary> /// Gets schemas key columns values. /// </summary> /// <param name="parameters">Import parameters.</param> /// <param name="importEntity">Import entity.</param> /// <returns>Schemas key columns values.</returns> private SchemasKeyColumnsValues GetSchemasKeyColumnsValues( ImportParameters parameters, ImportEntity importEntity) { var schemasKeyColumnsValues = new SchemasKeyColumnsValues(); foreach (ImportColumn column in parameters.Columns) { ImportColumnValue columnValue = importEntity.FindColumnValue(column); if (columnValue == null) { continue; } foreach (ImportColumnDestination destination in column.Destinations) { Guid schemaUId = destination.SchemaUId; if (schemaUId.Equals(parameters.RootSchemaUId)) { continue; } object valueForSave = ColumnsProcessor.FindValueForSave(destination, columnValue); if (valueForSave == null) { continue; } EntitySchema schema = UserConnection.EntitySchemaManager.GetInstanceByUId(schemaUId); EntitiesKeyColumnsValues entitiesKeyColumnsValues; if (!schemasKeyColumnsValues.TryGetValue(schema, out entitiesKeyColumnsValues)) { entitiesKeyColumnsValues = new EntitiesKeyColumnsValues(); schemasKeyColumnsValues.Add(schema, entitiesKeyColumnsValues); } int destinationIndex = destination.GetIndex(); object attributeColumnValue = destination.FindAttributeColumnValue(); string destinationKey = string.Concat(destinationIndex, attributeColumnValue); KeyColumnsValues keyColumnsValues; if (!entitiesKeyColumnsValues.TryGetValue(destinationKey, out keyColumnsValues)) { keyColumnsValues = new KeyColumnsValues(); entitiesKeyColumnsValues.Add(destinationKey, keyColumnsValues); } keyColumnsValues.Add(destination.ColumnName, valueForSave); string attributeColumnName = GetDestinationAttributeColumnName(destination, schema); if (!keyColumnsValues.ContainsKey(attributeColumnName)) { keyColumnsValues.Add(attributeColumnName, attributeColumnValue); } EntitySchemaColumn connectionColumn = importEntity.GetReferenceColumn(schema); string connectionColumnName = connectionColumn.Name; if (!keyColumnsValues.ContainsKey(connectionColumnName)) { Guid primaryColumnValue = importEntity.PrimaryEntity.PrimaryColumnValue; keyColumnsValues.Add(connectionColumnName, primaryColumnValue); } } } return(schemasKeyColumnsValues); }
/// <summary> /// Gets column destination default properties. /// </summary> /// <param name="entitySchemaColumn">Entity schema column.</param> /// <param name="columnValue">Column value information.</param> /// <returns>Column destination default properties.</returns> protected override Dictionary <string, object> GetColumnDestinationProperties( EntitySchemaColumn entitySchemaColumn, ImportColumnValue columnValue) { Dictionary <string, object> destinationProperties = base.GetColumnDestinationProperties(entitySchemaColumn, columnValue); destinationProperties.Add(ReferenceSchemaUIdPropertyName, entitySchemaColumn.ReferenceSchemaUId); return(destinationProperties); }
/// <inheritdoc cref="NonPersistentColumnProcessor{TResult}"/> protected override DateTime?ConvertValue(ImportColumnValue columnValue) { base.ConvertValue(columnValue); string value = columnValue.Value; if (!(TryProcessValueAsDouble(value, out var convertedValue) || TryProcessValueAsDateTime(value, out convertedValue))) { return(null); } return(convertedValue); }
/// <summary> /// Add converted value to results collection /// </summary> /// <param name="columnValue"><see cref="ImportColumnValue"/></param> /// <param name="valueForSave">object to save</param> protected virtual void AddToResults(ImportColumnValue columnValue, TResult valueForSave) { var value = columnValue.Value; if (!Results.ContainsKey(value)) { Results.Add(columnValue.Value, valueForSave); } if (valueForSave == null) { SendProcessError(columnValue); } }
private void InitEntityForSave(ImportParameters parameters, ImportEntity importEntity) { importEntity.InitPrimaryEntity(UserConnection, parameters); foreach (ImportColumn column in parameters.Columns) { ImportColumnValue columnValue = importEntity.FindColumnValue(column); if (columnValue == null) { continue; } SetEntityColumnValue(importEntity, column, columnValue); } }
/// <inheritdoc cref="NonPersistentColumnProcessor{TResult}"/> protected override bool?ConvertValue(ImportColumnValue columnValue) { base.ConvertValue(columnValue); bool?convertedValue; try { convertedValue = BooleanUtilities.ConvertToBoolean(columnValue.Value); } catch (ArgumentNullOrEmptyException) { convertedValue = false; } catch { convertedValue = null; } return(convertedValue); }
/// <inheritdoc cref="NonPersistentColumnProcessor{TResult}"/> protected override decimal?ConvertValue(ImportColumnValue columnValue) { base.ConvertValue(columnValue); CultureInfo currentCulture = UserConnection.CurrentUser.Culture; string cultureSpecificValue = Regex.Replace(columnValue.Value, "[,.]", currentCulture.NumberFormat.NumberDecimalSeparator); if (!double.TryParse(cultureSpecificValue, out double valueForSave)) { return(null); } var convertedValue = (decimal)valueForSave; return(convertedValue); }
/// <inheritdoc cref="IProcessedValuesProvider"/> public object FindValueForSave(ImportColumnDestination destination, ImportColumnValue columnValue) { if (Results.TryGetValue(columnValue.Value, out TResult savedValue)) { if (savedValue == null) { SendProcessError(columnValue); } return(savedValue); } TResult convertedValue = ConvertValue(columnValue); AddToResults(columnValue, convertedValue); return(convertedValue); }
public static void Iterate(ImportParameters parameters, Action <ImportEntity, ImportColumn, ImportColumnValue, ImportColumnDestination> iterator) { foreach (ImportEntity importEntity in parameters.Entities) { foreach (ImportColumn column in parameters.Columns) { ImportColumnValue columnValue = importEntity.FindColumnValue(column); if (columnValue == null) { continue; } foreach (ImportColumnDestination destination in column.Destinations) { iterator(importEntity, column, columnValue, destination); } } } }
/// <summary> /// Gets schemas key columns values. /// </summary> /// <param name="parameters">Import parameters.</param> /// <param name="importEntity">Import entity.</param> /// <returns>Schemas key columns values.</returns> private Dictionary <EntitySchema, Dictionary <ImportColumnDestination, object> > GetSchemasKeyDestinations( ImportParameters parameters, ImportEntity importEntity) { var schemasKeyDestinations = new Dictionary <EntitySchema, Dictionary <ImportColumnDestination, object> >(); foreach (ImportColumn column in parameters.Columns) { ImportColumnValue columnValue = importEntity.FindColumnValue(column); if (columnValue == null) { continue; } foreach (ImportColumnDestination destination in column.Destinations) { Guid schemaUId = destination.SchemaUId; if (schemaUId.Equals(parameters.RootSchemaUId)) { continue; } object valueForSave = ColumnsProcessor.FindValueForSave(destination, columnValue); if (valueForSave == null) { continue; } EntitySchema schema = UserConnection.EntitySchemaManager.GetInstanceByUId(schemaUId); Dictionary <ImportColumnDestination, object> keyDestinations; if (!schemasKeyDestinations.TryGetValue(schema, out keyDestinations)) { keyDestinations = new Dictionary <ImportColumnDestination, object>(); schemasKeyDestinations.Add(schema, keyDestinations); } keyDestinations.Add(destination, valueForSave); } } return(schemasKeyDestinations); }
private KeyValuePair <string, object> GetFilterItemParameter(ImportColumnDestination destination, ImportColumnValue importColumnValue, EntitySchema entitySchema) { object value = null; if (importColumnValue != null) { value = ColumnsProcessor.FindValueForSave(destination, importColumnValue); } if (value == null) { var columns = entitySchema.Columns; value = columns.GetByName(destination.ColumnName).DataValueType.DefValue; } return(new KeyValuePair <string, object>(destination.ColumnName, value)); }
private void SetEntityColumnValue(ImportEntity importEntity, ImportColumn column, ImportColumnValue columnValue) { foreach (ImportColumnDestination destination in column.Destinations) { Entity entity = importEntity.GetEntityForSave(UserConnection, destination); string columnValueName = destination.ColumnValueName; object valueForSave = ColumnsProcessor.FindValueForSave(destination, columnValue); if (valueForSave == null) { continue; } if (entity.StoringState != StoringObjectState.New) { object entityValue = entity.GetColumnValue(columnValueName); if (valueForSave.Equals(entityValue) || destination.IsKey) { continue; } } if (entity.Schema.Columns.GetByName(destination.ColumnName).DataValueType is TextDataValueType) { valueForSave = valueForSave.ToString().Trim(); } entity.SetColumnValue(columnValueName, valueForSave); } }
/// <summary> /// Finds processed value. /// </summary> /// <param name="destination">Import column destination.</param> /// <param name="columnValue">Import column value.</param> /// <returns>Processed value.</returns> public object FindValueForSave(ImportColumnDestination destination, ImportColumnValue columnValue) { return(Results.FindValueForSave(destination, columnValue)); }
/// <inheritdoc /> public object FindValueForSave(ImportColumnDestination destination, ImportColumnValue columnValue) { return(_lookupProcessedValues.FindValueForSave(destination, columnValue)); }
protected override void AddToResults(ImportColumnValue columnValue, object valueForSave) { }
/// <inheritdoc cref="IColumnProcessor"/> public void Add(ImportEntity importEntity, ImportColumn column, ImportColumnValue columnValue, ImportColumnDestination destination) { }
/// <summary> /// Convert column value to result's type /// </summary> /// <param name="columnValue"></param> /// <returns></returns> protected virtual TResult ConvertValue(ImportColumnValue columnValue) { return(default(TResult)); }
/// <summary> /// Adds raw value that will be processed. /// </summary> /// <param name="importEntity">Import entity.</param> /// <param name="column">Import column.</param> /// <param name="columnValue">Import column value.</param> /// <param name="destination">Import column destination.</param> public void Add(ImportEntity importEntity, ImportColumn column, ImportColumnValue columnValue, ImportColumnDestination destination) { LookupValuesToProcess.Add(importEntity, column, columnValue, destination); }