示例#1
0
        protected string GetStringFormat(Dlm.Entities.DataStructure.DataType datatype)
        {
            DataTypeDisplayPattern ddp = DataTypeDisplayPattern.Materialize(datatype.Extra);

            if (ddp != null)
            {
                return(ddp.StringPattern);
            }

            return("");
        }
示例#2
0
        protected override bool AddRow(AbstractTuple tuple, long rowIndex)
        {
            // number of columns
            int colCount = this.VariableIdentifiers.Count;

            // content of one line
            string[] line = new string[colCount];

            string value;

            for (int i = 0; i < this.VariableIdentifiers.Count; i++)
            {
                // shortcut
                var vi = this.VariableIdentifiers[i];

                Variable variable = dataStructure.Variables.Where(p => p.Id == vi.id).SingleOrDefault();

                if (variable != null)
                {
                    Dlm.Entities.DataStructure.DataType dataType = variable.DataAttribute.DataType;

                    VariableValue vv = tuple.VariableValues.Where(v => v.VariableId.Equals(vi.id)).FirstOrDefault();

                    if (vv != null && vv.Value != null)
                    {
                        // checking for display pattern
                        string format = GetStringFormat(dataType);
                        if (!string.IsNullOrEmpty(format))
                        {
                            value = GetFormatedValue(vv.Value, dataType, format);
                        }
                        else
                        {
                            value = vv.Value.ToString();
                        }

                        // check if the value is a missing value and should be replaced
                        if (variable.MissingValues.Any(mv => mv.Placeholder.Equals(value)))
                        {
                            value = variable.MissingValues.FirstOrDefault(mv => mv.Placeholder.Equals(value)).DisplayName;
                        }

                        // Add value to row
                        line[i] = escapeValue(value);
                    }
                }
            }

            // add line to result
            data.AppendLine(String.Join(this.separator, line));

            return(true);
        }
示例#3
0
        protected string GetFormatedValue(object value, Dlm.Entities.DataStructure.DataType datatype, string format)
        {
            string tmp = value.ToString();

            if (DataTypeUtility.IsTypeOf(value, datatype.SystemType))
            {
                //Type type = Type.GetType("System." + datatype.SystemType);

                switch (DataTypeUtility.GetTypeCode(datatype.SystemType))
                {
                case DataTypeCode.Int16:
                case DataTypeCode.Int32:
                case DataTypeCode.Int64:
                {
                    Int64 newValue = Convert.ToInt64(tmp);
                    return(newValue.ToString(format));
                }

                case DataTypeCode.UInt16:
                case DataTypeCode.UInt32:
                case DataTypeCode.UInt64:
                {
                    UInt64 newValue = Convert.ToUInt64(tmp);
                    return(newValue.ToString(format));
                }

                case DataTypeCode.Decimal:
                case DataTypeCode.Double:
                {
                    Double newValue = Convert.ToDouble(tmp);
                    return(newValue.ToString(format));
                }

                case DataTypeCode.DateTime:
                {
                    DateTime dateTime;

                    return(IOUtility.ExportDateTimeString(value.ToString(), format, out dateTime));
                }

                default: return(tmp);
                }
            }

            return("");
        }
示例#4
0
        protected override bool AddRow(DataRow row, long rowIndex)
        {
            // number of columns
            int colCount = row.Table.Columns.Count;

            // content of one line
            string[] line = new string[colCount];

            // append contents
            for (int i = 0; i < colCount; i++)
            {
                // get value as string
                string value = row[i].ToString();

                // check if the value is a missing value and should be replaced
                Variable variable = dataStructure.Variables.ElementAt(i);

                if (variable != null)
                {
                    //checking for display pattern
                    Dlm.Entities.DataStructure.DataType dataType = variable.DataAttribute.DataType;
                    string format = GetStringFormat(dataType);
                    if (!string.IsNullOrEmpty(format))
                    {
                        value = GetFormatedValue(value, dataType, format);
                    }
                    else
                    {
                        value = value.ToString();
                    }

                    // checking for missing values
                    if (variable.MissingValues.Any(mv => mv.Placeholder.Equals(value)))
                    {
                        value = variable.MissingValues.FirstOrDefault(mv => mv.Placeholder.Equals(value)).DisplayName;
                    }
                }
                // add value to row
                line[i] = escapeValue(value);
            }

            // Add to result
            data.AppendLine(String.Join(this.separator, line));

            return(true);
        }
示例#5
0
        public DataTypeElement(long dataTypeId)
        {
            DataTypeManager dtm = null;

            try
            {
                dtm = new DataTypeManager();
                Dlm.Entities.DataStructure.DataType dataType = dtm.Repo.Get(dataTypeId);
                Id          = dataType.Id;
                Name        = dataType.Name;
                Description = dataType.Description;
                SystemType  = dataType.SystemType;
            }
            finally
            {
                dtm.Dispose();
            }
        }
示例#6
0
        protected override bool AddRow(string[] row, long rowIndex)
        {
            List <string> newRow = new List <string>();

            // set vor missing values

            for (int i = 0; i < row.Length; i++)
            {
                var value = row[i];
                // check if the value is a missing value and should be replaced
                var variable = dataStructure.Variables.ElementAt(i);

                if (variable != null)
                {
                    //checking for display pattern
                    Dlm.Entities.DataStructure.DataType dataType = variable.DataAttribute.DataType;
                    string format = GetStringFormat(dataType);
                    if (!string.IsNullOrEmpty(format))
                    {
                        value = GetFormatedValue(value, dataType, format);
                    }
                    else
                    {
                        value = value.ToString();
                    }

                    if (variable.MissingValues.Any(mv => mv.Placeholder.Equals(value)))
                    {
                        value = variable.MissingValues.FirstOrDefault(mv => mv.Placeholder.Equals(value)).DisplayName;
                    }
                }
                newRow.Add(value);
            }

            // Add to result
            data.AppendLine(String.Join(this.separator, newRow.ToArray()));

            return(true);
        }
示例#7
0
 public DataTypeModel()
 {
     dataType = new Dlm.Entities.DataStructure.DataType();
     pattern  = null;
 }
示例#8
0
        /// <summary>
        /// Read Row and convert each value into a variableValue
        /// and each row to a Datatuple
        /// </summary>
        /// <param name="row">List of values in one row</param>
        /// <param name="indexOfRow">Currently row index</param>
        /// <returns>DataTuple</returns>
        public DataTuple ReadRow(List <string> row, int indexOfRow)
        {
            DataTuple dt    = new DataTuple();
            string    value = "";

            // convert row to List<VariableValue>
            for (int i = 0; i < row.Count(); i++)
            {
                VariableIdentifier variableIdentifier = this.SubmitedVariableIdentifiers.ElementAt(i);
                long variableId = 0;
                if (variableIdentifier.id > 0)
                {
                    variableId = this.SubmitedVariableIdentifiers.ElementAt(i).id;
                }
                else
                {
                    variableId = getVariableUsage(variableIdentifier).Id;
                }



                // if variable from systemtype datatime
                // maybee needs to convert into the default datetime culture format
                if (this.StructuredDataStructure.Variables.Where(p => p.Id.Equals(variableId)).FirstOrDefault().DataAttribute.DataType.SystemType.Equals("DateTime"))
                {
                    Dlm.Entities.DataStructure.DataType dataType = this.StructuredDataStructure.Variables.Where(p => p.Id.Equals(variableId)).FirstOrDefault().DataAttribute.DataType;

                    if (dataType != null && dataType.Extra != null)
                    {
                        DataTypeDisplayPattern dp = DataTypeDisplayPattern.Materialize(dataType.Extra);
                        if (dp != null && !string.IsNullOrEmpty(dp.StringPattern))
                        {
                            value = IOUtility.ConvertToDateUS(row[i], dp.StringPattern);
                        }
                        else
                        {
                            value = IOUtility.ConvertDateToCulture(row[i]);
                        }
                    }
                    else
                    {
                        value = IOUtility.ConvertDateToCulture(row[i]);
                    }
                }
                else
                {
                    if (this.StructuredDataStructure.Variables.Where(p => p.Id.Equals(variableId)).FirstOrDefault().DataAttribute.DataType.SystemType.Equals("Double") ||
                        this.StructuredDataStructure.Variables.Where(p => p.Id.Equals(variableId)).FirstOrDefault().DataAttribute.DataType.SystemType.Equals("Decimal") ||
                        this.StructuredDataStructure.Variables.Where(p => p.Id.Equals(variableId)).FirstOrDefault().DataAttribute.DataType.SystemType.Equals("Float"))
                    {
                        value = row[i];

                        if (Info.Decimal.Equals(DecimalCharacter.comma))
                        {
                            if (value.Contains("."))
                            {
                                value = value.Replace(".", "");
                            }
                            if (value.Contains(","))
                            {
                                value = value.Replace(',', '.');
                            }
                        }

                        if (Info.Decimal.Equals(DecimalCharacter.point))
                        {
                            if (value.Contains(","))
                            {
                                value = value.Remove(',');
                            }
                        }
                    }
                    else
                    {
                        value = row[i];
                    }
                }

                dt.VariableValues.Add(DatasetManager.CreateVariableValue(value, "", DateTime.Now, DateTime.Now, new ObtainingMethod(), variableId, new List <ParameterValue>()));
            }


            return(dt);
        }
示例#9
0
 public DataTypeModel()
 {
     dataType = new Dlm.Entities.DataStructure.DataType();
     pattern = null;
 }
示例#10
0
        /// <summary>
        /// Read Row and convert each value into a variableValue
        /// and each row to a Datatuple
        /// </summary>
        /// <param name="row">List of values in one row</param>
        /// <param name="indexOfRow">Currently row index</param>
        /// <returns>DataTuple</returns>
        public DataTuple ReadRow(List <string> row, int indexOfRow)
        {
            if (row == null)
            {
                return(null);
            }
            if (row.Count == 1 && string.IsNullOrEmpty(row.ElementAt(0)))
            {
                return(null);
            }
            if (row.Count > this.StructuredDataStructure.Variables.Count || row.Count < this.StructuredDataStructure.Variables.Count)
            {
                throw new Exception("Number of values different then the number of values.");
            }

            DataTuple dt    = new DataTuple();
            string    value = "";

            // convert row to List<VariableValue>
            for (int i = 0; i < row.Count(); i++)
            {
                VariableIdentifier variableIdentifier = this.SubmitedVariableIdentifiers.ElementAt(i);

                long variableId = 0;
                if (variableIdentifier.id > 0)
                {
                    variableId = this.SubmitedVariableIdentifiers.ElementAt(i).id;
                }
                else
                {
                    variableId = getVariableUsage(variableIdentifier).Id;
                }

                //if the value is a missing value get the placeholder
                ValueValidationManager validationManager = ValueValidationManagerDic[variableId];
                if (!validationManager.ValueIsMissingValueGetPlaceHolder(row[i], i, out value)) // jump over this code if its a missing value
                {
                    // if variable from systemtype datatime
                    // maybee needs to convert into the default datetime culture format
                    if (this.StructuredDataStructure.Variables.Where(p => p.Id.Equals(variableId)).FirstOrDefault().DataAttribute.DataType.SystemType.Equals("DateTime"))
                    {
                        Dlm.Entities.DataStructure.DataType dataType = this.StructuredDataStructure.Variables.Where(p => p.Id.Equals(variableId)).FirstOrDefault().DataAttribute.DataType;

                        if (dataType != null && dataType.Extra != null)
                        {
                            DataTypeDisplayPattern dp = DataTypeDisplayPattern.Materialize(dataType.Extra);
                            if (dp != null && !string.IsNullOrEmpty(dp.StringPattern))
                            {
                                value = IOUtility.ConvertToDateUS(row[i], dp.StringPattern);
                            }
                            else
                            {
                                value = IOUtility.ConvertDateToCulture(row[i]);
                            }
                        }
                        else
                        {
                            value = IOUtility.ConvertDateToCulture(row[i]);
                        }
                    }
                    else
                    {
                        if (this.StructuredDataStructure.Variables.Where(p => p.Id.Equals(variableId)).FirstOrDefault().DataAttribute.DataType.SystemType.Equals("Double") ||
                            this.StructuredDataStructure.Variables.Where(p => p.Id.Equals(variableId)).FirstOrDefault().DataAttribute.DataType.SystemType.Equals("Decimal") ||
                            this.StructuredDataStructure.Variables.Where(p => p.Id.Equals(variableId)).FirstOrDefault().DataAttribute.DataType.SystemType.Equals("Float"))
                        {
                            var datatype = this.StructuredDataStructure.Variables.Where(p => p.Id.Equals(variableId)).FirstOrDefault().DataAttribute.DataType.SystemType;
                            value = row[i];

                            if (Info.Decimal.Equals(DecimalCharacter.comma))
                            {
                                if (value.Contains("."))
                                {
                                    value = value.Replace(".", "");
                                }
                                if (value.Contains(","))
                                {
                                    value = value.Replace(',', '.');
                                }
                            }

                            if (Info.Decimal.Equals(DecimalCharacter.point))
                            {
                                if (value.Contains(","))
                                {
                                    value = value.Remove(',');
                                }
                            }

                            switch (datatype)
                            {
                            case "Double": {
                                double tmp = 0;
                                if (double.TryParse(value, NumberStyles.Any, new CultureInfo("en-US"), out tmp))
                                {
                                    value = tmp.ToString("G16", new CultureInfo("en-US"));
                                }
                                break;
                            }

                            case "Decimal":
                            {
                                decimal tmp = 0;
                                if (decimal.TryParse(value, NumberStyles.Any, new CultureInfo("en-US"), out tmp))
                                {
                                    value = "" + tmp.ToString("G29", new CultureInfo("en-US"));
                                }
                                break;
                            }

                            case "Float":
                            {
                                float tmp = 0;
                                if (float.TryParse(value, NumberStyles.Any, new CultureInfo("en-US"), out tmp))
                                {
                                    value = "" + tmp.ToString("G7", new CultureInfo("en-US"));
                                }
                                break;
                            }
                            }
                        }
                        else
                        {
                            value = row[i].Trim();
                        }
                    }
                }

                dt.VariableValues.Add(DatasetManager.CreateVariableValue(value, "", DateTime.Now, DateTime.Now, new ObtainingMethod(), variableId, new List <ParameterValue>()));
            }

            return(dt);
        }
示例#11
0
        protected string GetFormatedValue(object value, Dlm.Entities.DataStructure.DataType datatype, string format)
        {
            string tmp = value.ToString();

            if (DataTypeUtility.IsTypeOf(value, datatype.SystemType))
            {
                //Type type = Type.GetType("System." + datatype.SystemType);

                switch (DataTypeUtility.GetTypeCode(datatype.SystemType))
                {
                case DataTypeCode.Int16:
                case DataTypeCode.Int32:
                case DataTypeCode.Int64:
                {
                    Int64 newValue = Convert.ToInt64(tmp);
                    return(newValue.ToString(format));
                }

                case DataTypeCode.UInt16:
                case DataTypeCode.UInt32:
                case DataTypeCode.UInt64:
                {
                    UInt64 newValue = Convert.ToUInt64(tmp);
                    return(newValue.ToString(format));
                }

                case DataTypeCode.Decimal:
                case DataTypeCode.Double:
                {
                    Double newValue = Convert.ToDouble(tmp);
                    return(newValue.ToString(format));
                }

                case DataTypeCode.DateTime:
                {
                    DateTime dateTime;

                    if (DateTime.TryParse(tmp, out dateTime))
                    {
                        return(dateTime.ToString(format));
                    }

                    if (DateTime.TryParse(tmp, new CultureInfo("de-DE", false), DateTimeStyles.None, out dateTime))
                    {
                        return(dateTime.ToString(format));
                    }

                    if (DateTime.TryParse(tmp, new CultureInfo("en-US", false), DateTimeStyles.None, out dateTime))
                    {
                        return(dateTime.ToString(format));
                    }

                    if (DateTime.TryParse(tmp, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime))
                    {
                        return(dateTime.ToString(format));
                    }

                    return(tmp);

                    ;
                }

                default: return(tmp);
                }
            }

            return("");
        }