コード例 #1
0
ファイル: ExcelHelper.cs プロジェクト: navabpourn/Core
        /// <summary>
        ///
        /// </summary>
        /// <remarks></remarks>
        /// <seealso cref=""/>
        /// <param name="systemType"></param>
        /// <param name="styleIndex"></param>
        /// <returns></returns>
        public static uint GetExcelStyleIndex(BExIS.Dlm.Entities.DataStructure.DataType dataType, List <StyleIndexStruct> styleIndex)
        {
            if (dataType.SystemType == DataTypeCode.Double.ToString() || dataType.SystemType == DataTypeCode.Decimal.ToString())
            {
                return(styleIndex.Where(p => p.Name.Equals("Decimal")).FirstOrDefault().Index);
            }
            if (dataType.SystemType == DataTypeCode.Int16.ToString() || dataType.SystemType == DataTypeCode.Int32.ToString() || dataType.SystemType == DataTypeCode.Int64.ToString() || dataType.SystemType == DataTypeCode.UInt16.ToString() || dataType.SystemType == DataTypeCode.Int32.ToString() || dataType.SystemType == DataTypeCode.Int64.ToString())
            {
                return(styleIndex.Where(p => p.Name.Equals("Number")).FirstOrDefault().Index);
            }
            if (dataType.SystemType == DataTypeCode.String.ToString() || dataType.SystemType == DataTypeCode.Char.ToString())
            {
                return(styleIndex.Where(p => p.Name.Equals("Text")).FirstOrDefault().Index);
            }
            if (dataType.SystemType == DataTypeCode.DateTime.ToString())
            {
                if (dataType.Extra != null)
                {
                    DataTypeDisplayPattern pattern = DataTypeDisplayPattern.Materialize(dataType.Extra);
                    if (pattern != null)
                    {
                        StyleIndexStruct tmp = styleIndex.Where(p => p.Name.Equals(pattern.Name)).FirstOrDefault();
                        return(tmp.Index);
                    }
                }

                return(styleIndex.Where(p => p.Name.Equals("DateTime")).FirstOrDefault().Index);
            }
            if (dataType.SystemType == DataTypeCode.Boolean.ToString())
            {
                return(styleIndex.Where(p => p.Name.Equals("Text")).FirstOrDefault().Index);
            }
            return(styleIndex.Where(p => p.Name.Equals("Text")).FirstOrDefault().Index);
        }
コード例 #2
0
ファイル: DataWriter.cs プロジェクト: navabpourn/Core
        protected string GetStringFormat(Dlm.Entities.DataStructure.DataType datatype)
        {
            DataTypeDisplayPattern ddp = DataTypeDisplayPattern.Materialize(datatype.Extra);

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

            return("");
        }
コード例 #3
0
        public JsonResult DisplayPattern(long id, string variable)
        {
            //id less then 1 is not possible so return empty string
            if (id <= 0)
            {
                return(Json("", JsonRequestBehavior.AllowGet));
            }

            using (var datasetManager = new DatasetManager())
                using (var dataStructureManager = new DataStructureManager())
                    using (var dataContainerManager = new DataContainerManager())
                        using (var dataTypeManager = new DataTypeManager())
                        {
                            var dataset = datasetManager.GetDataset(id);
                            if (dataset == null)
                            {
                                return(Json("", JsonRequestBehavior.AllowGet));
                            }

                            var datastructureId = dataset.DataStructure.Id;
                            var datastructure   = dataStructureManager.StructuredDataStructureRepo.Get(datastructureId);

                            var v = datastructure.Variables.Where(var => var.Label.ToLower().Equals(variable.ToLower())).FirstOrDefault();

                            //if variable not exit return false
                            if (v == null)
                            {
                                return(Json("", JsonRequestBehavior.AllowGet));
                            }

                            if (v.DataAttribute != null)
                            {
                                var attr = dataContainerManager.DataAttributeRepo.Get(v.DataAttribute.Id);
                                if (attr.DataType.SystemType.Equals("DateTime"))
                                {
                                    var dataType = dataTypeManager.Repo.Get(attr.DataType.Id);

                                    if (dataType != null && dataType.Extra != null)
                                    {
                                        DataTypeDisplayPattern dp = DataTypeDisplayPattern.Materialize(dataType.Extra);
                                        if (dp != null)
                                        {
                                            return(Json(dp.StringPattern, JsonRequestBehavior.AllowGet));
                                        }
                                    }
                                }
                            }
                        }

            return(Json("", JsonRequestBehavior.AllowGet));
        }
コード例 #4
0
        /// <summary>
        ///
        /// </summary>
        /// <remarks></remarks>
        /// <seealso cref=""/>
        /// <param name="styleIndex"></param>
        /// <param name="systemType"></param>
        /// <returns></returns>
        private uint getExcelStyleIndex(BExIS.Dlm.Entities.DataStructure.DataType dataType, uint[] styleIndex)
        {
            string systemType = dataType.SystemType;

            if (systemType == "Double" || systemType == "Decimal")
            {
                return(styleIndex[0]);
            }
            if (systemType == "Int16" || systemType == "Int32" || systemType == "Int64" || systemType == "UInt16" || systemType == "UInt32" || systemType == "UInt64")
            {
                return(styleIndex[1]);
            }
            if (systemType == "Char" || systemType == "String")
            {
                return(styleIndex[2]);
            }

            if (systemType == "Boolean")
            {
                return(styleIndex[2]);
            }

            //for time and date only
            if (dataType.Extra != null)
            {
                DataTypeDisplayPattern displayPattern = DataTypeDisplayPattern.Materialize(dataType.Extra);

                //date
                if (systemType == "DateTime" && displayPattern.Name.ToLower().Contains("date"))
                {
                    return(styleIndex[4]);
                }

                //time
                if (systemType == "DateTime" &&
                    (displayPattern.Name.ToLower().Equals("time") ||
                     displayPattern.Name.ToLower().Equals("time 12h")))
                {
                    return(styleIndex[5]);
                }
            }

            if (systemType == "DateTime")
            {
                return(styleIndex[3]);
            }

            return(styleIndex[2]);
        }
コード例 #5
0
ファイル: DataTypeManagerModel.cs プロジェクト: payamad/Core
        public DataTypeModel(long Id)
        {
            DataTypeManager dtm = null;

            try
            {
                dtm      = new DataTypeManager();
                dataType = dtm.Repo.Get(Id);
                pattern  = DataTypeDisplayPattern.Materialize(dataType.Extra);
            }
            finally
            {
                dtm.Dispose();
            }
        }
コード例 #6
0
ファイル: DataReader.cs プロジェクト: payamad/Core
        /// <summary>
        ///  Create ValueValidationManager of a Variable
        /// </summary>
        /// <remarks></remarks>
        /// <param name="varName"></param>
        /// <param name="dataType"></param>
        /// <param name="optional"></param>
        /// <param name="variable"></param>
        /// <returns></returns>
        private ValueValidationManager createValueValidationManager(string varName, string dataType, bool optional, DataAttribute variable)
        {
            string pattern = "";

            if (variable != null && variable.DataType != null && variable.DataType.Extra != null)
            {
                DataTypeDisplayPattern displayPattern = DataTypeDisplayPattern.Materialize(variable.DataType.Extra);
                if (displayPattern != null)
                {
                    pattern = displayPattern.StringPattern;
                }
            }

            ValueValidationManager vvm = new ValueValidationManager(varName, dataType, optional, Info.Decimal, pattern);

            return(vvm);
        }
コード例 #7
0
        private static List <DisplayFormatObject> getDisplayFormatObjects(StructuredDataStructure dataStructure)
        {
            List <DisplayFormatObject> tmp = new List <DisplayFormatObject>();

            foreach (var variable in  dataStructure.Variables)
            {
                string format = "";
                string unit   = "";
                string column = variable.Label;

                DataType dt = variable.DataAttribute.DataType;

                // add display pattern to DisplayFormatObject;
                DataTypeDisplayPattern ddp = DataTypeDisplayPattern.Materialize(dt.Extra);
                if (ddp != null)
                {
                    format = ddp.StringPattern;
                }

                // add unit abbr if exist do DisplayFormatObject
                // first variable, second dataattribute

                if (variable.Unit != null && !string.IsNullOrEmpty(variable.Unit.Abbreviation))
                {
                    unit = variable.Unit.Abbreviation;
                }
                else
                {
                    if (variable.DataAttribute.Unit != null &&
                        !string.IsNullOrEmpty(variable.DataAttribute.Unit.Abbreviation) &&
                        !variable.DataAttribute.Unit.Name.Equals("None"))
                    {
                        unit = variable.DataAttribute.Unit.Abbreviation;
                    }
                }

                if (!string.IsNullOrEmpty(column) && (!string.IsNullOrEmpty(format) || !string.IsNullOrEmpty(unit)))
                {
                    tmp.Add(new DisplayFormatObject(column, format, unit));
                }
            }


            return(tmp);
        }
コード例 #8
0
        public AttributePreviewStruct fill(DataAttribute dataAttribute, bool getConstraints)
        {
            this.Id               = dataAttribute.Id;
            this.Name             = dataAttribute.Name;
            this.Description      = dataAttribute.Description;
            this.Unit.Id          = dataAttribute.Unit.Id;
            this.Unit.Name        = dataAttribute.Unit.Name;
            this.Unit.Description = dataAttribute.Unit.Abbreviation;
            this.DataType         = dataAttribute.DataType.Name;
            this.Dimension        = dataAttribute.Unit.Dimension.Name;

            DataTypeDisplayPattern displayPattern = DataTypeDisplayPattern.Materialize(dataAttribute.DataType.Extra);

            if (displayPattern != null)
            {
                this.DisplayPattern = displayPattern.StringPattern;
            }

            if (getConstraints)
            {
                if (dataAttribute.Constraints != null)
                {
                    foreach (Constraint c in dataAttribute.Constraints)
                    {
                        c.Materialize();
                        this.Constraints.Add(c.Id, c.FormalDescription);
                    }
                }
            }

            if (dataAttribute.UsagesAsVariable.Any())
            {
                this.inUse = true;
            }
            else
            {
                this.inUse = false;
            }

            return(this);
        }
コード例 #9
0
 /// <summary>
 ///
 /// </summary>
 /// <remarks></remarks>
 /// <seealso cref=""/>
 /// <param name="systemType"></param>
 /// <param name="styleIndex"></param>
 /// <returns></returns>
 private uint getExcelStyleIndex(DataType dataType, List <StyleIndexStruct> styleIndex)
 {
     if (dataType.SystemType == DataTypeCode.Double.ToString() || dataType.SystemType == DataTypeCode.Decimal.ToString())
     {
         return(styleIndex.Where(p => p.Name.Equals("Decimal")).FirstOrDefault().Index);
     }
     if (dataType.SystemType == DataTypeCode.Int16.ToString() || dataType.SystemType == DataTypeCode.Int32.ToString() || dataType.SystemType == DataTypeCode.Int64.ToString() || dataType.SystemType == DataTypeCode.UInt16.ToString() || dataType.SystemType == DataTypeCode.Int32.ToString() || dataType.SystemType == DataTypeCode.Int64.ToString())
     {
         return(styleIndex.Where(p => p.Name.Equals("Number")).FirstOrDefault().Index);
     }
     if (dataType.SystemType == DataTypeCode.String.ToString() || dataType.SystemType == DataTypeCode.Char.ToString())
     {
         return(styleIndex.Where(p => p.Name.Equals("Text")).FirstOrDefault().Index);
     }
     if (dataType.SystemType == DataTypeCode.DateTime.ToString())
     {
         if (dataType.Extra != null)
         {
             if (DataTypeDisplayPattern.Materialize(dataType.Extra).Name == "DateTimeIso" && DataTypeDisplayPattern.Materialize(dataType.Extra).Systemtype == DataTypeCode.DateTime)
             {
                 return(styleIndex.Where(p => p.Name.Equals("DateTime")).FirstOrDefault().Index);
             }
             if ((DataTypeDisplayPattern.Materialize(dataType.Extra).Name == "DateIso" || DataTypeDisplayPattern.Materialize(dataType.Extra).Name == "DateUs" || DataTypeDisplayPattern.Materialize(dataType.Extra).Name == "DateUk" || DataTypeDisplayPattern.Materialize(dataType.Extra).Name == "DateEu") && DataTypeDisplayPattern.Materialize(dataType.Extra).Systemtype == DataTypeCode.DateTime)
             {
                 return(styleIndex.Where(p => p.Name.Equals("Date")).FirstOrDefault().Index);
             }
             if (DataTypeDisplayPattern.Materialize(dataType.Extra).Name == "Time" && DataTypeDisplayPattern.Materialize(dataType.Extra).Systemtype == DataTypeCode.DateTime)
             {
                 return(styleIndex.Where(p => p.Name.Equals("Time")).FirstOrDefault().Index);
             }
         }
         return(styleIndex.Where(p => p.Name.Equals("DateTime")).FirstOrDefault().Index);
     }
     if (dataType.SystemType == DataTypeCode.Boolean.ToString())
     {
         return(styleIndex.Where(p => p.Name.Equals("Text")).FirstOrDefault().Index);
     }
     return(styleIndex.Where(p => p.Name.Equals("Text")).FirstOrDefault().Index);
 }
コード例 #10
0
        /// <summary>
        ///  Create ValueValidationManager of a Variable
        /// </summary>
        /// <remarks></remarks>
        /// <param name="varName"></param>
        /// <param name="dataType"></param>
        /// <param name="optional"></param>
        /// <param name="variable"></param>
        /// <returns></returns>
        private ValueValidationManager createValueValidationManager(string varName, string dataType, bool optional, Variable variable)
        {
            string        pattern       = "";
            DataAttribute dataAttribute = variable.DataAttribute;

            if (string.IsNullOrEmpty(varName))
            {
                varName = variable.Label;
            }

            if (dataAttribute != null && dataAttribute.DataType != null && dataAttribute.DataType.Extra != null)
            {
                DataTypeDisplayPattern displayPattern = DataTypeDisplayPattern.Materialize(dataAttribute.DataType.Extra);
                if (displayPattern != null)
                {
                    pattern = displayPattern.StringPattern;
                }
            }

            ValueValidationManager vvm = new ValueValidationManager(varName, dataType, optional, Info.Decimal, pattern, variable.MissingValues, CultureInfo.CurrentCulture, variable.DataAttribute.Constraints);

            return(vvm);
        }
コード例 #11
0
        /// <summary>
        /// List of used datatypes and
        /// the maxvalue of the datatypes
        /// </summary>
        /// <returns></returns>
        private static List <string> CompareValues(StructuredDataStructure dataStructure)
        {
            List <string> cv = new List <string>();


            if (dataStructure != null)
            {
                foreach (var variable in dataStructure.Variables)
                {
                    StringBuilder sb = new StringBuilder();
                    foreach (var missingValue in variable.MissingValues)
                    {
                        if (DataTypeUtility.GetTypeCode(variable.DataAttribute.DataType.SystemType) == DataTypeCode.DateTime && DataTypeDisplayPattern.Materialize(variable.DataAttribute.DataType.Extra) != null)
                        {
                            DataTypeDisplayPattern ddp = DataTypeDisplayPattern.Materialize(variable.DataAttribute.DataType.Extra);
                            DateTime dateTime;
                            if (DateTime.TryParse(missingValue.Placeholder, new CultureInfo("en-US", false), DateTimeStyles.NoCurrentDateDefault, out dateTime))
                            {
                                sb.Append(missingValue.DisplayName + "|" + dateTime.ToString(ddp.StringPattern) + "#%#");;
                            }
                        }
                        else
                        {
                            sb.Append(missingValue.DisplayName + "|" + missingValue.Placeholder + "#%#");
                        }
                    }

                    //add also the case of the optional field
                    //replace the value with EMPTY String
                    sb.Append(" |" + getMaxvalueOfType(variable.DataAttribute.DataType.SystemType));

                    cv.Add(sb.ToString());
                }
            }

            return(cv);
        }
コード例 #12
0
ファイル: DataReader.cs プロジェクト: payamad/Core
        /// <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);
        }
コード例 #13
0
ファイル: ExcelWriter.cs プロジェクト: payamad/Core
        /// <summary>
        /// Convert a VariableValue to Cell
        /// </summary>
        /// <remarks></remarks>
        /// <seealso cref=""/>
        /// <param name="variableValue"></param>
        /// <param name="rowIndex"></param>
        /// <param name="columnIndex"></param>
        /// <returns></returns>
        protected Cell VariableValueToCell(VariableValue variableValue, int rowIndex, int columnIndex)
        {
            using (var uow = this.GetUnitOfWork())
            {
                DataAttribute dataAttribute = uow.GetReadOnlyRepository <Variable>().Query(p => p.Id == variableValue.VariableId).Select(p => p.DataAttribute).FirstOrDefault();



                string message = "row :" + rowIndex + "column:" + columnIndex;
                Debug.WriteLine(message);

                string cellRef = getColumnIndex(columnIndex);

                Cell cell = new Cell();
                cell.CellReference = cellRef;
                cell.StyleIndex    = ExcelHelper.GetExcelStyleIndex(dataAttribute.DataType, styleIndex);
                //cell.DataType = new EnumValue<CellValues>(getExcelType(dataAttribute.DataType.SystemType));
                //cell.CellValue = new CellValue(variableValue.Value.ToString());

                CellValues cellValueType = getExcelType(dataAttribute.DataType.SystemType);
                object     value         = variableValue.Value;

                if (value != null && !(value is DBNull) && cellValueType == CellValues.Number)
                {
                    cell.DataType = new EnumValue <CellValues>(CellValues.Number);

                    try
                    {
                        if (value.ToString() != "")
                        {
                            double d = Convert.ToDouble(value, System.Globalization.CultureInfo.InvariantCulture);
                            cell.CellValue = new CellValue(d.ToString(System.Globalization.CultureInfo.InvariantCulture));
                        }
                    }
                    catch (Exception ex)
                    {
                        throw new Exception(ex.Message + "\n|" + message);
                    }

                    return(cell);
                }
                else
                {
                    if (value != null && !(value is DBNull) && cellValueType == CellValues.Date)
                    {
                        cell.DataType = new EnumValue <CellValues>(CellValues.Number);
                        //CultureInfo provider = CultureInfo.InvariantCulture;
                        try
                        {
                            if (value.ToString() != "")
                            {
                                DateTime dt;
                                if (dataAttribute.DataType != null && dataAttribute.DataType.Extra != null)
                                {
                                    DataTypeDisplayPattern pattern = DataTypeDisplayPattern.Materialize(dataAttribute.DataType.Extra);
                                    if (!string.IsNullOrEmpty(pattern.StringPattern))
                                    {
                                        IOUtility.ExportDateTimeString(value.ToString(), pattern.StringPattern, out dt);
                                        cell.CellValue = new CellValue(dt.ToOADate().ToString());
                                    }
                                    else
                                    {
                                        if (IOUtility.IsDate(value.ToString(), out dt))
                                        {
                                            cell.CellValue = new CellValue(dt.ToOADate().ToString());
                                        }
                                    }
                                }
                                else
                                {
                                    if (IOUtility.IsDate(value.ToString(), out dt))
                                    {
                                        cell.CellValue = new CellValue(dt.ToOADate().ToString());
                                    }
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            throw new Exception(ex.Message + "|" + message);
                        }
                    }
                    else
                    {
                        cell.DataType = new EnumValue <CellValues>(CellValues.String);
                        if (value == null)
                        {
                            cell.CellValue = new CellValue("");
                        }
                        else
                        {
                            cell.CellValue = new CellValue(value.ToString());
                        }
                    }
                }

                return(cell);
            }
        }
コード例 #14
0
        public static MetadataAttributeModel CreateMetadataAttributeModel(BaseUsage current, BaseUsage parent, long metadataStructureId, int packageModelNumber, long parentStepId)
        {
            MetadataAttribute metadataAttribute;
            List <object>     domainConstraintList   = new List <object>();
            string            constraintsDescription = "";

            if (current is MetadataNestedAttributeUsage)
            {
                MetadataNestedAttributeUsage mnau = (MetadataNestedAttributeUsage)current;
                metadataAttribute = mnau.Member;
            }
            else
            {
                MetadataAttributeUsage mau = (MetadataAttributeUsage)current;
                metadataAttribute = mau.MetadataAttribute;
            }

            if (metadataAttribute.Constraints.Where(c => (c is DomainConstraint)).Count() > 0)
            {
                domainConstraintList = createDomainContraintList(metadataAttribute);
            }

            if (metadataAttribute.Constraints.Count > 0)
            {
                foreach (Constraint c in metadataAttribute.Constraints)
                {
                    if (string.IsNullOrEmpty(constraintsDescription))
                    {
                        constraintsDescription = c.FormalDescription;
                    }
                    else
                    {
                        constraintsDescription = String.Format("{0}\n{1}", constraintsDescription, c.FormalDescription);
                    }
                }
            }
            //load displayPattern
            DataTypeDisplayPattern dtdp = DataTypeDisplayPattern.Materialize(metadataAttribute.DataType.Extra);
            string displayPattern       = "";

            if (dtdp != null)
            {
                displayPattern = dtdp.StringPattern;
            }

            return(new MetadataAttributeModel
            {
                Id = current.Id,
                Number = 1,
                ParentModelNumber = packageModelNumber,
                MetadataStructureId = metadataStructureId,
                Parent = parent,
                Source = current,
                DisplayName = current.Label,
                Discription = current.Description,
                ConstraintDescription = constraintsDescription,
                DataType = metadataAttribute.DataType.Name,
                SystemType = metadataAttribute.DataType.SystemType,
                DisplayPattern = displayPattern,
                MinCardinality = current.MinCardinality,
                MaxCardinality = current.MaxCardinality,
                NumberOfSourceInPackage = 1,
                first = true,
                DomainList = domainConstraintList,
                last = true,
                MetadataAttributeId = metadataAttribute.Id,
                ParentStepId = parentStepId,
                Errors = null
            });
        }
コード例 #15
0
ファイル: ExcelHelper.cs プロジェクト: navabpourn/Core
        public static Stylesheet UpdateStylesheet(Stylesheet styleSheet, out List <StyleIndexStruct> styleIndex)
        {
            //start add numberingFormats after 164
            uint iExcelIndex   = 164;
            var  numberFormats = new NumberingFormats();

            styleIndex = new List <StyleIndexStruct>();

            if (styleSheet.CellFormats == null)
            {
                styleSheet.CellFormats       = new CellFormats();
                styleSheet.CellFormats.Count = 0;
            }

            CellFormats cellFormats = styleSheet.Elements <CellFormats>().First();


            //number 0,00
            CellFormat cellFormat = new CellFormat()
            {
                NumberFormatId = (UInt32Value)2U, FontId = (UInt32Value)0U, FillId = (UInt32Value)0U, BorderId = (UInt32Value)0U, FormatId = (UInt32Value)1U, ApplyNumberFormat = true
            };

            cellFormat.Protection        = new Protection();
            cellFormat.Protection.Locked = false;
            cellFormats.Append(cellFormat);
            styleIndex.Add(new StyleIndexStruct()
            {
                Name = "Decimal", Index = (uint)cellFormats.Count++, DisplayPattern = null
            });

            //number 0
            cellFormat = new CellFormat()
            {
                NumberFormatId = (UInt32Value)1U, FontId = (UInt32Value)0U, FillId = (UInt32Value)0U, BorderId = (UInt32Value)0U, FormatId = (UInt32Value)1U, ApplyNumberFormat = true
            };
            cellFormat.Protection        = new Protection();
            cellFormat.Protection.Locked = false;
            cellFormats.Append(cellFormat);
            //styleIndex.Add(new StyleIndexStruct() { Name = "Number", Index = (uint)(uint)cellFormats.ChildElements.Count + 1, DisplayPattern = null });
            styleIndex.Add(new StyleIndexStruct()
            {
                Name = "Number", Index = (uint)cellFormats.Count++, DisplayPattern = null
            });
            //text
            cellFormat = new CellFormat()
            {
                NumberFormatId = (UInt32Value)49U, FontId = (UInt32Value)0U, FillId = (UInt32Value)0U, BorderId = (UInt32Value)0U, FormatId = (UInt32Value)1U, ApplyNumberFormat = true
            };
            cellFormat.Protection        = new Protection();
            cellFormat.Protection.Locked = false;
            cellFormats.Append(cellFormat);
            styleIndex.Add(new StyleIndexStruct()
            {
                Name = "Text", Index = (uint)cellFormats.Count++, DisplayPattern = null
            });

            //default Date
            cellFormat = new CellFormat()
            {
                NumberFormatId = (UInt32Value)14U, FontId = (UInt32Value)0U, FillId = (UInt32Value)0U, BorderId = (UInt32Value)0U, FormatId = (UInt32Value)1U, ApplyNumberFormat = true
            };
            cellFormat.Protection        = new Protection();
            cellFormat.Protection.Locked = false;
            cellFormats.Append(cellFormat);
            styleIndex.Add(new StyleIndexStruct()
            {
                Name = "DateTime", Index = (uint)cellFormats.Count++, DisplayPattern = null
            });

            //add cellformats from displaypattern
            foreach (var pattern in DataTypeDisplayPattern.Pattern)
            {
                //Excel special cases

                //add numberFormats from displaypattern
                var newNumberFortmat = new NumberingFormat
                {
                    NumberFormatId = UInt32Value.FromUInt32(iExcelIndex++),
                    FormatCode     = StringValue.FromString(pattern.ExcelPattern)
                };
                numberFormats.Append(newNumberFortmat);

                //if (pattern.Name.Equals("DateTime")) uInt32Value = 22U;
                //if (pattern.Name.Equals("Date")) uInt32Value = 14U;
                //if (pattern.Name.Equals("Time")) uInt32Value = 21U;
                ///UInt32Value uInt32Value = 0U;



                cellFormat = new CellFormat()
                {
                    NumberFormatId = newNumberFortmat.NumberFormatId, FontId = (UInt32Value)0U, FillId = (UInt32Value)0U, BorderId = (UInt32Value)0U, FormatId = (UInt32Value)1U, ApplyNumberFormat = true
                };
                cellFormat.Protection        = new Protection();
                cellFormat.Protection.Locked = false;
                cellFormats.Append(cellFormat);

                DataTypeDisplayPattern tmp = new DataTypeDisplayPattern()
                {
                    Name          = pattern.Name,
                    Systemtype    = pattern.Systemtype,
                    StringPattern = pattern.ExcelPattern,
                    RegexPattern  = pattern.RegexPattern
                };

                styleIndex.Add(new StyleIndexStruct()
                {
                    Name = pattern.Name, Index = (uint)cellFormats.Count++, DisplayPattern = tmp
                });
            }

            styleSheet.NumberingFormats = numberFormats;

            return(styleSheet);
        }
コード例 #16
0
        public VariablePreviewStruct fill(Variable variable, bool getConstraints)
        {
            MissingValueManager missingValueManager = null;

            try
            {
                missingValueManager = new MissingValueManager();
                List <MissingValue> temp = missingValueManager.Repo.Query(mv => mv.Variable.Id.Equals(variable.Id)).ToList();

                variable.Unit                   = variable.Unit ?? new Unit();
                variable.Unit.Dimension         = variable.Unit.Dimension ?? new Dimension();
                variable.DataAttribute          = variable.DataAttribute ?? new DataAttribute();
                variable.DataAttribute.DataType = variable.DataAttribute.DataType ?? new DataType();

                this.Id               = variable.Id;
                this.Name             = variable.Label;
                this.Description      = variable.Description;
                this.isOptional       = variable.IsValueOptional;
                this.Unit.Id          = variable.Unit.Id;
                this.Unit.Name        = variable.Unit.Name;
                this.Unit.Description = variable.Unit.Abbreviation;
                this.convertibleUnits = getUnitListByDimenstionAndDataType(variable.Unit.Dimension.Id, variable.DataAttribute.DataType.Id);
                this.DataType         = variable.DataAttribute.DataType.Name;

                DataTypeDisplayPattern displayPattern = DataTypeDisplayPattern.Materialize(variable.DataAttribute.DataType.Extra);
                if (displayPattern != null)
                {
                    this.DisplayPattern = displayPattern.StringPattern;
                }

                TypeCode typeCode = TypeCode.String;

                foreach (TypeCode tc in Enum.GetValues(typeof(DataTypeCode)))
                {
                    if (tc.ToString() == variable.DataAttribute.DataType.SystemType)
                    {
                        typeCode = tc;
                        break;
                    }
                }

                if (missingValueManager.getPlaceholder(typeCode, this.Id) != null && temp.Any())
                {
                    foreach (MissingValue mv in temp)
                    {
                        this.MissingValues.Add(new MissingValueStruct()
                        {
                            Id          = mv.Id,
                            DisplayName = mv.DisplayName,
                            Description = mv.Description,
                            Placeholder = mv.Placeholder
                        });
                    }
                }
                else if (missingValueManager.getPlaceholder(typeCode, this.Id) == null)
                {
                    this.MissingValues = null;
                }

                if (getConstraints)
                {
                    if (variable.DataAttribute.Constraints != null)
                    {
                        foreach (Constraint c in variable.DataAttribute.Constraints)
                        {
                            c.Materialize();
                            this.Constraints.Add(c.Id, c.FormalDescription);
                        }
                    }
                }

                this.Attribute = Attribute.fill(variable.DataAttribute, false);

                return(this);
            }
            finally
            {
                missingValueManager.Dispose();
            }
        }
コード例 #17
0
ファイル: FormHelper.cs プロジェクト: navabpourn/Core
        public static MetadataAttributeModel CreateMetadataAttributeModel(BaseUsage current, BaseUsage parent, long metadataStructureId, int packageModelNumber, long parentStepId)
        {
            MetadataAttribute metadataAttribute;
            List <object>     domainConstraintList   = new List <object>();
            string            constraintsDescription = "";
            double            lowerBoundary          = 0;
            double            upperBoundary          = 0;
            LinkElementType   type  = LinkElementType.MetadataNestedAttributeUsage;
            bool locked             = false;
            bool entityMappingExist = false;
            bool partyMappingExist  = false;

            string metadataAttributeName = "";

            //simple
            bool partySimpleMappingExist = false;
            //complex
            bool partyComplexMappingExist = false;

            if (current is MetadataNestedAttributeUsage)
            {
                MetadataNestedAttributeUsage mnau = (MetadataNestedAttributeUsage)current;
                metadataAttribute = mnau.Member;
                type = LinkElementType.MetadataNestedAttributeUsage;
            }
            else
            {
                MetadataAttributeUsage mau = (MetadataAttributeUsage)current;
                metadataAttribute = mau.MetadataAttribute;
                type = LinkElementType.MetadataAttributeUsage;
            }

            if (metadataAttribute.Constraints.Where(c => (c is DomainConstraint)).Count() > 0)
            {
                domainConstraintList = createDomainContraintList(metadataAttribute);
            }

            if (metadataAttribute.Constraints.Count > 0)
            {
                foreach (Constraint c in metadataAttribute.Constraints)
                {
                    if (string.IsNullOrEmpty(constraintsDescription))
                    {
                        constraintsDescription = c.FormalDescription;
                    }
                    else
                    {
                        constraintsDescription = String.Format("{0}\n{1}", constraintsDescription, c.FormalDescription);
                    }
                }
                if (metadataAttribute.DataType.Name == "string" && metadataAttribute.Constraints.Where(c => (c is RangeConstraint)).Count() > 0)
                {
                    foreach (RangeConstraint r in metadataAttribute.Constraints.Where(c => (c is RangeConstraint)))
                    {
                        lowerBoundary = r.Lowerbound;
                        upperBoundary = r.Upperbound;
                    }
                }
            }

            //set metadata attr name
            metadataAttributeName = metadataAttribute.Name;

            //load displayPattern
            DataTypeDisplayPattern dtdp = DataTypeDisplayPattern.Materialize(metadataAttribute.DataType.Extra);
            string displayPattern       = "";

            if (dtdp != null)
            {
                displayPattern = dtdp.StringPattern;
            }

            //ToDO/Check if dim is active
            //check if its linked with a system field
            //
            locked = MappingUtils.ExistSystemFieldMappings(current.Id, type);

            // check if a mapping for parties exits
            partyMappingExist = MappingUtils.ExistMappingWithParty(current.Id, type);


            // check if mapping to this metadata attribute is simple or complex.
            // complex means, that the attribute is defined in the context of the parent
            // e.g. name of User
            // simple means, that the attribute is not defined in the context of the
            // e.g. DataCreator Name in Contacts as list of contacts
            partySimpleMappingExist  = hasSimpleMapping(current.Id, type);
            partyComplexMappingExist = hasComplexMapping(current.Id, type);

            // check if a mapping for entites exits
            entityMappingExist = MappingUtils.ExistMappingWithEntity(current.Id, type);

            return(new MetadataAttributeModel
            {
                Id = current.Id,
                Number = 1,
                ParentModelNumber = packageModelNumber,
                MetadataStructureId = metadataStructureId,
                MetadataAttributeName = metadataAttributeName,
                Parent = parent,
                Source = current,
                DisplayName = current.Label,
                Discription = current.Description,
                ConstraintDescription = constraintsDescription,
                DataType = metadataAttribute.DataType.Name,
                SystemType = metadataAttribute.DataType.SystemType,
                DisplayPattern = displayPattern,
                MinCardinality = current.MinCardinality,
                MaxCardinality = current.MaxCardinality,
                NumberOfSourceInPackage = 1,
                first = true,
                DomainList = domainConstraintList,
                last = true,
                MetadataAttributeId = metadataAttribute.Id,
                ParentStepId = parentStepId,
                Errors = null,
                Locked = locked,
                EntityMappingExist = entityMappingExist,
                PartyMappingExist = partyMappingExist,
                PartySimpleMappingExist = partySimpleMappingExist,
                PartyComplexMappingExist = partyComplexMappingExist,
                LowerBoundary = lowerBoundary,
                UpperBoundary = upperBoundary,
            });
        }
コード例 #18
0
ファイル: DataTypeManagerModel.cs プロジェクト: payamad/Core
 public DataTypeModel()
 {
     dataType = new Dlm.Entities.DataStructure.DataType();
     pattern  = null;
 }
コード例 #19
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);
        }
コード例 #20
0
        public string GenerateJsonTable(SheetFormat sheetFormat, String worksheetUri)
        {
            // open excel file
            using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(this.fileStream, false))
            {
                // get workbookpart
                WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
                _sharedStrings = workbookPart.SharedStringTablePart.SharedStringTable.Elements <SharedStringItem>().ToArray();
                _stylesheet    = workbookPart.WorkbookStylesPart.Stylesheet;

                WorksheetPart worksheetPart = null;
                foreach (Sheet worksheet in workbookPart.Workbook.Descendants <Sheet>())
                {
                    //Get the current worksheetpart and see if it is the correct one
                    WorksheetPart tmp = (WorksheetPart)workbookPart.GetPartById(worksheet.Id);
                    if (tmp.Uri.ToString() == worksheetUri)
                    {
                        //Found the correct WorksheetPart
                        worksheetPart = tmp;
                    }
                }

                using (OpenXmlReader reader = OpenXmlReader.Create(worksheetPart))
                {
                    int expectedRowIndex = 1;
                    while (reader.Read())
                    {
                        if (reader.ElementType == typeof(DocumentFormat.OpenXml.Spreadsheet.Row))
                        {
                            do
                            {
                                DocumentFormat.OpenXml.Spreadsheet.Row row = (DocumentFormat.OpenXml.Spreadsheet.Row)reader.LoadCurrentElement();

                                List <String> rowAsStringList = new List <string>();

                                //Since this library will ignore empty rows, check if we skipped some and add empty rows if necessary
                                //This will still ignore empty rows at the end of the file but those wouldn't have any influence on the indices of data & header anyway
                                while (row.RowIndex > expectedRowIndex)
                                {
                                    List <String> dummyRow = new List <string>();
                                    dummyRow.Add("");
                                    table.Add(dummyRow);
                                    expectedRowIndex++;
                                }

                                // create a new cell
                                Cell c = new Cell();

                                int expectedIndex = 0; //To check whether we skipped cells because they were empty
                                for (int i = 0; i < row.ChildElements.Count(); i++)
                                {
                                    // get current cell at i
                                    c = row.Elements <Cell>().ElementAt(i);

                                    string value = "";

                                    if (c != null)
                                    {
                                        //See if cells have been skipped (empty cells are not contained in the xml and therefore not contained in row.ChildElements)
                                        //See: https://stackoverflow.com/a/3981249

                                        // Gets the column index of the cell with data
                                        int cellColumnIndex = (int)GetColumnIndexFromName(GetColumnName(c.CellReference));
                                        if (expectedIndex < cellColumnIndex)
                                        {
                                            //We skipped one or more cells so add some blank data
                                            do
                                            {
                                                rowAsStringList.Add(""); //Insert blank data
                                                expectedIndex++;
                                            }while (expectedIndex < cellColumnIndex);
                                        }

                                        //We now have the correct index and can grab the value of the cell
                                        if (c.CellValue != null && !string.IsNullOrEmpty(c.CellValue.Text))
                                        {
                                            // if Value a text
                                            if (c.DataType != null && c.DataType.HasValue && c.DataType.Value == CellValues.SharedString)
                                            {
                                                int sharedStringIndex             = int.Parse(c.CellValue.Text, CultureInfo.InvariantCulture);
                                                SharedStringItem sharedStringItem = _sharedStrings[sharedStringIndex];
                                                value = sharedStringItem.InnerText;
                                            }
                                            //If cell contains boolean (doesn't always work for files saved with libre office)
                                            else if (c.DataType != null && c.DataType.HasValue && c.DataType.Value == CellValues.Boolean)
                                            {
                                                if (c.InnerText == "1")
                                                {
                                                    value = "true";
                                                }
                                                else
                                                {
                                                    value = "false";
                                                }
                                            }
                                            // not a text
                                            else if (c.StyleIndex != null && c.StyleIndex.HasValue)
                                            {
                                                uint       styleIndex = c.StyleIndex.Value;
                                                CellFormat cellFormat = _stylesheet.CellFormats.ChildElements[(int)styleIndex] as CellFormat;
                                                if (cellFormat != null && cellFormat.NumberFormatId != null && cellFormat.NumberFormatId.HasValue)
                                                {
                                                    uint numberFormatId = cellFormat.NumberFormatId.Value;

                                                    NumberingFormat numberFormat = _stylesheet.NumberingFormats?.FirstOrDefault(numFormat => ((NumberingFormat)numFormat).NumberFormatId.Value == numberFormatId) as NumberingFormat;

                                                    //
                                                    if (numberFormat != null)
                                                    {
                                                        if (numberFormat != null && numberFormat.FormatCode != null && numberFormat.FormatCode.HasValue)
                                                        {
                                                            string formatCode = numberFormat.FormatCode.Value;
                                                            if ((formatCode.ToLower().Contains("d") && formatCode.ToLower().Contains("m")) ||
                                                                (formatCode.ToLower().Contains("m") && formatCode.ToLower().Contains("y")) ||
                                                                (formatCode.ToLower().Contains("m") && formatCode.ToLower().Contains("d")) ||
                                                                (formatCode.ToLower().Contains("h") && formatCode.ToLower().Contains("m")) ||
                                                                (formatCode.ToLower().Contains("m") && formatCode.ToLower().Contains("s"))
                                                                )
                                                            {
                                                                DateTime dateTime = DateTime.FromOADate(double.Parse(c.CellValue.Text, CultureInfo.InvariantCulture));
                                                                //value = dateTime.ToString(new CultureInfo("en-us"));
                                                                //get c# display pattern

                                                                DataTypeDisplayPattern dataTypeDisplayPattern = DataTypeDisplayPattern.GetByExcelPattern(formatCode);
                                                                value = dataTypeDisplayPattern != null?dateTime.ToString(dataTypeDisplayPattern.StringPattern) : dateTime.ToString(new CultureInfo("en-us"));

                                                                //Debug.WriteLine("----");
                                                                //Debug.WriteLine(formatCode);
                                                            }
                                                        }
                                                    } // numberformat not null end
                                                }     // (cellFormat != null && cellFormat.NumberFormatId != null && cellFormat.NumberFormatId.HasValue)

                                                //It may happen that values are in a cell, but the associated information such as numberformat or style are missing.
                                                // In this case, we decide to display the values, even if they are incorrect.
                                                if (string.IsNullOrEmpty(value) && (!string.IsNullOrEmpty(c?.CellValue?.Text)))
                                                {
                                                    value = c.CellValue.Text;
                                                }
                                            }
                                            else
                                            {
                                                value = c.CellValue.Text;
                                            }

                                            rowAsStringList.Add(value);
                                        }//end if cell value null
                                        else
                                        {
                                            rowAsStringList.Add("");
                                        }
                                    }//end if cell null

                                    expectedIndex++;
                                }//for children of row

                                //Check if there's a new max length for the length of a row
                                maxCellCount = Math.Max(maxCellCount, rowAsStringList.Count);

                                //Just read a row, so increase the expected index for the next one
                                expectedRowIndex++;

                                table.Add(rowAsStringList);
                            } while (reader.ReadNextSibling()); // Skip to the next row

                            break;
                        }
                    }
                }


                //Make sure each row has the same number of values in it
                foreach (List <String> row in table)
                {
                    while (row.Count < maxCellCount)
                    {
                        row.Add("");
                    }
                }

                //Convert the Lists to Arrays
                List <String>[] rowArray   = table.ToArray(); //The elements of the Array are the rows in form of String-lists
                String[][]      tableArray = new String[rowArray.Length][];
                for (int i = 0; i < rowArray.Length; i++)
                {
                    tableArray[i] = rowArray[i].ToArray();
                }

                return(JsonConvert.SerializeObject(tableArray));
            }
        }
コード例 #21
0
        // create read data types in bpp
        public void CreateDataTypes(ref DataTable mappedDataTypes)
        {
            DataTypeManager dataTypeManager = null;

            try
            {
                dataTypeManager = new DataTypeManager();

                foreach (DataRow mappedDataType in mappedDataTypes.Rows)
                {
                    string dtName        = mappedDataType["Name"].ToString();
                    string dtDescription = mappedDataType["Description"].ToString();
                    DataTypeDisplayPattern dtDisplayPettern = new DataTypeDisplayPattern();
                    TypeCode dtSystemType = new TypeCode();
                    foreach (TypeCode type in Enum.GetValues(typeof(TypeCode)))
                    {
                        if (type.ToString().Equals(mappedDataType["SystemType"].ToString()))
                        {
                            dtSystemType = type;
                        }
                    }

                    if (dtSystemType == TypeCode.DateTime)
                    {
                        if (mappedDataType["DisplayPattern"] != null && mappedDataType["DisplayPattern"].ToString() != "")
                        {
                            dtDisplayPettern = DataTypeDisplayPattern.Pattern.Where(p => p.Systemtype.Equals(DataTypeCode.DateTime) && p.Name.Equals(mappedDataType["DisplayPattern"].ToString())).FirstOrDefault();
                        }
                        else
                        {
                            dtDisplayPettern = DataTypeDisplayPattern.Pattern.Where(p => p.Name.Equals("DateTimeIso")).FirstOrDefault();
                        }
                    }

                    DataType dataType = new DataType();
                    // get existing dataTypes
                    DataType existDT = dataTypeManager.Repo.Get().Where(d =>
                                                                        d.Name.Equals(dtName) &&
                                                                        d.SystemType.ToString().Equals(mappedDataType["SystemType"].ToString())
                                                                        ).FirstOrDefault();
                    // return ID of existing dataType or create dataType
                    if (existDT == null && dtSystemType != null)
                    {
                        dataType = dataTypeManager.Create(dtName, dtDescription, dtSystemType);

                        XmlDocument xmlDoc = new XmlDocument();
                        XmlNode     xmlNode;
                        xmlNode = xmlDoc.CreateNode(XmlNodeType.Element, "Extra", null);
                        xmlDoc.AppendChild(xmlNode);
                        xmlNode          = xmlDoc.CreateNode(XmlNodeType.Element, "DisplayPattern", null);
                        xmlNode.InnerXml = DataTypeDisplayPattern.Dematerialize(dtDisplayPettern).InnerXml;
                        xmlDoc.DocumentElement.AppendChild(xmlNode);
                        dataType.Extra = xmlDoc;

                        dataTypeManager.Update(dataType);
                    }
                    else
                    {
                        dataType = existDT;
                    }

                    mappedDataType["DataTypesId"] = dataType.Id;
                }
            }
            finally
            {
                dataTypeManager.Dispose();
            }
        }