Esempio 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));
        }
 /// <summary>
 /// Gets destination values for save.
 /// </summary>
 /// <param name="destinationValues">Destination values.</param>
 /// <param name="destination">Import column destination.</param>
 /// <returns>Destination columns names.</returns>
 private IEnumerable <object> GetDestinationValuesForSave(
     Dictionary <ImportColumnDestination, object> destinationValues, ImportColumnDestination destination)
 {
     return(destinationValues
            .Where(destinationValue => destinationValue.Key.GetKey() == destination.GetKey())
            .Select(destinationValue => destinationValue.Value));
 }
 /// <summary>
 /// Gets destination columns names.
 /// </summary>
 /// <param name="destinationValues">Destination values.</param>
 /// <param name="destination">Import column destination.</param>
 /// <returns>Destination columns names.</returns>
 private IEnumerable <string> GetDestinationColumnsNames(
     Dictionary <ImportColumnDestination, object> destinationValues, ImportColumnDestination destination)
 {
     return(destinationValues
            .Where(destinationValue => destinationValue.Key.GetKey() == destination.GetKey())
            .Select(destinationValue => destinationValue.Key.ColumnName));
 }
        /// <summary>
        /// Gets destination attribute column name.
        /// </summary>
        /// <param name="destination">Import column destination.</param>
        /// <param name="schema">EntitySchema.</param>
        /// <returns>Destination attribute column name.</returns>
        private string GetDestinationAttributeColumnName(ImportColumnDestination destination, EntitySchema schema)
        {
            string attributeColumnValueName = destination.FindAttributeColumnValueName();

            return(schema.Columns
                   .Where(column => column.ColumnValueName.Equals(attributeColumnValueName))
                   .Select(column => column.Name)
                   .First());
        }
        private ColumnExpression GetColumnExpression(int index, ImportColumnDestination destination)
        {
            var columnExpression = new ColumnExpression {
                BufferedColumnName = $"Column{index}",
                ColumnValueName    = destination.ColumnName,
                ComparisonType     = FilterComparisonType.Equal
            };

            return(columnExpression);
        }
        /// <summary>
        /// Gets entity key columns names.
        /// </summary>
        /// <param name="destination">Import column destination.</param>
        /// <param name="schema">Entity schema.</param>
        /// <param name="importEntity">Import entity.</param>
        /// <param name="destinationValues">Destination values.</param>
        /// <returns>Entity key columns names.</returns>
        private IEnumerable <string> GetEntityKeyColumnsNames(ImportColumnDestination destination, EntitySchema schema,
                                                              ImportEntity importEntity, Dictionary <ImportColumnDestination, object> destinationValues)
        {
            List <string> entityKeyColumnsNames = new List <string> {
                GetDestinationAttributeColumnName(destination, schema)
            };
            EntitySchemaColumn connectionColumn = importEntity.GetReferenceColumn(schema);

            entityKeyColumnsNames.Add(connectionColumn.Name);
            IEnumerable <string> destinationColumnsNames = GetDestinationColumnsNames(destinationValues, destination);

            entityKeyColumnsNames.AddRange(destinationColumnsNames);
            return(entityKeyColumnsNames);
        }
        /// <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);
        }
        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));
        }
        /// <summary>
        /// Gets import entity key.
        /// </summary>
        /// <param name="destination">Import column destination.</param>
        /// <param name="schema">Entity schema.</param>
        /// <param name="importEntity">Import entity.</param>
        /// <param name="destinationValues">Destination values.</param>
        /// <returns>Import entity key.</returns>
        private string GetImportEntityKey(ImportColumnDestination destination, EntitySchema schema,
                                          ImportEntity importEntity, Dictionary <ImportColumnDestination, object> destinationValues)
        {
            StringBuilder sb = new StringBuilder();
            object        attributeColumnValue = destination.FindAttributeColumnValue();

            sb.Append(attributeColumnValue);
            Guid connectionColumnValue = importEntity.PrimaryEntity.PrimaryColumnValue;

            sb.Append(connectionColumnValue);
            IEnumerable <object> destinationValuesForSave = GetDestinationValuesForSave(destinationValues, destination);

            foreach (object destinationValueForSave in destinationValuesForSave)
            {
                sb.Append(destinationValueForSave);
            }
            return(sb.ToString());
        }
 /// <summary>
 /// Adds child entities.
 /// </summary>
 /// <param name="entities">Entities.</param>
 /// <param name="importEntity">Import entity.</param>
 /// <param name="schemasKeyDestinations">Schemas key destinations.</param>
 private void AddChildEntities(IEnumerable <Entity> entities, ImportEntity importEntity,
                               Dictionary <EntitySchema, Dictionary <ImportColumnDestination, object> > schemasKeyDestinations)
 {
     foreach (var schemaKeyDestinations in schemasKeyDestinations)
     {
         EntitySchema schema = schemaKeyDestinations.Key;
         Dictionary <ImportColumnDestination, object> destinationValues = schemaKeyDestinations.Value;
         foreach (var destinationValue in destinationValues)
         {
             ImportColumnDestination destination = destinationValue.Key;
             Entity childEntity = importEntity.FindChildEntity(destination);
             if (childEntity != null)
             {
                 continue;
             }
             AddChildEntity(destination, schema, importEntity, destinationValues, entities);
         }
     }
 }
        /// <summary>
        /// Adds child entity.
        /// </summary>
        /// <param name="destination">Import column destination.</param>
        /// <param name="schema">Entity schema.</param>
        /// <param name="importEntity">Import entity.</param>
        /// <param name="destinationValues">Destination values.</param>
        /// <param name="entities">Entities.</param>
        private void AddChildEntity(ImportColumnDestination destination, EntitySchema schema,
                                    ImportEntity importEntity, Dictionary <ImportColumnDestination, object> destinationValues,
                                    IEnumerable <Entity> entities)
        {
            string importEntityKey = GetImportEntityKey(destination, schema, importEntity, destinationValues);
            IEnumerable <string> entityKeyColumnsNames = GetEntityKeyColumnsNames(destination, schema, importEntity,
                                                                                  destinationValues);

            foreach (Entity entity in entities)
            {
                if (!entity.Schema.UId.Equals(schema.UId))
                {
                    continue;
                }
                string entityKey = GetEntityKey(entity, entityKeyColumnsNames);
                if (importEntityKey.Equals(entityKey))
                {
                    importEntity.AddChildEntity(destination, entity);
                    break;
                }
            }
        }
Esempio n. 13
0
 /// <inheritdoc />
 public object FindValueForSave(ImportColumnDestination destination, ImportColumnValue columnValue)
 {
     return(_lookupProcessedValues.FindValueForSave(destination, columnValue));
 }
 /// <inheritdoc cref="IColumnProcessor"/>
 public void Add(ImportEntity importEntity, ImportColumn column, ImportColumnValue columnValue, ImportColumnDestination destination)
 {
 }
 /// <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));
 }
 /// <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);
 }