Exemplo n.º 1
0
        /// <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));
        }
Exemplo n.º 3
0
 /// <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);
        }
Exemplo n.º 6
0
        /// <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);
        }
Exemplo n.º 13
0
 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));
 }
Exemplo n.º 18
0
 /// <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);
 }