Esempio n. 1
0
        /// <summary>
        /// Convert fields according to the storage attribute. For newly created field assign default value to that field.
        /// </summary>
        /// <param name="sourceDataSourceDefinition"></param>
        /// <param name="destinationDataSourceDefinition"></param>
        /// <param name="sourceValues"></param>
        /// <param name="destinationValues"></param>
        private void ConvertFields(DataSourceDefinition sourceDataSourceDefinition, DataSourceDefinition destinationDataSourceDefinition,
                                   FieldValues sourceValues, FieldValues destinationValues)
        {
            FieldsMap  fieldsMap   = new FieldsMap(sourceDataSourceDefinition.Fields, destinationDataSourceDefinition.Fields);
            DBField    sourceField = null;
            FieldValue sourceValue = null;

            for (int destinationFieldIndex = 0; destinationFieldIndex < destinationDataSourceDefinition.Fields.Count; destinationFieldIndex++)
            {
                int sourceFieldIndex = fieldsMap.GetSourceFieldIndex(destinationFieldIndex);

                DBField    destinationField = destinationDataSourceDefinition.Fields[destinationFieldIndex];
                FieldValue destinationValue = destinationValues[destinationFieldIndex];

                // If source field exists and source and destination types are comapatible then convert field values.
                // Else assign default value to destination field.
                if (sourceFieldIndex != -1)
                {
                    sourceField = sourceDataSourceDefinition.Fields[sourceFieldIndex];
                    sourceValue = sourceValues[sourceFieldIndex];

                    if (StorageAttributeCheck.IsTypeCompatibile((StorageAttribute)sourceField.Attr, (StorageAttribute)destinationField.Attr))
                    {
                        ConvertFieldValue(sourceField, destinationField, sourceValue, destinationValue);
                    }
                    else
                    {
                        destinationValue.Value  = destinationField.DefaultValue;
                        destinationValue.IsNull = destinationField.DefaultNull;
                    }
                }
                else
                {
                    destinationValue.Value  = destinationField.DefaultValue;
                    destinationValue.IsNull = destinationField.DefaultNull;
                }
            }
        }