示例#1
0
 /// <summary>
 /// Creates the column to be created in the createscript
 /// </summary>
 /// <param name="name">The identifier of the column</param>
 /// <param name="type">The datatype of the column</param>
 /// <param name="isnull">The NULL or NOT NULL value of the column</param>
 public Column(string name, DataTypeColumn type, string typeDetails, bool isnull)
 {
     this.Name = name;
     this.Type = type;
     this.TypeDetails = typeDetails;
     this.isNull = isnull;
 }
 private DataGridColumn TextColumn(ColumnModel column)
 {
     if (column.Values != null && column.Values.Count > 0)
     {
         var gridColumn = new DataTypeColumn(column, SortDirection, SortColumn);
         gridColumn.ColumnTypeChanged += ColumnTypeChanged;
         return(gridColumn);
     }
     return(new TextColumn(column, SortDirection, SortColumn));
 }
        public void AddNew <T>(T entity)
        {
            Type   table      = typeof(T);
            string entityName = string.Empty;

            switch (table.Name)
            {
            case "TriggerEvent":
                TriggerEvent tr = entity as TriggerEvent;
                entityName = string.Format("{0}_{1}:{2}", tr.MessageType, tr.EventType, tr.Segment);
                this._dbCTX.TriggerEvents.Add(entity as TriggerEvent);
                break;

            case "Segment":
                Segment s = entity as Segment;
                entityName = string.Format("{0}:{1}", s.SegmentId, s.Name);
                this._dbCTX.Segments.Add(entity as Segment);
                break;

            case "DataType":
                DataType dt = entity as DataType;
                entityName = string.Format("{0}:{1}", dt.Name, dt.Version);
                this._dbCTX.DataTypes.Add(dt as DataType);
                break;

            case "DataTypeColumn":
                DataTypeColumn dtc = entity as DataTypeColumn;
                entityName = string.Format("{0}:{1}_{2}", dtc.DataType1.Version, dtc.DataType1.Name, dtc.Name);
                this._dbCTX.DataTypeColumns.Add(dtc);
                break;
            }

            try
            {
                this._dbCTX.SaveChanges();
            }
            catch (Exception ex)
            {
                string message = string.Format("Error saving entity {0}. ERROR: {1}. INNER EXCEPTION: {2}", entityName, ex.Message, ex.InnerException);
                LogErrorMessage(message);
            }
        }
示例#4
0
        private void ProcessDataTypeColumn(HL7SchemaRepository repo, string hl7Version, DataType dt)
        {
            HtmlNode scrapedData = null;

            _fileLogger.LogMessage(LogMessageType.INFO, string.Format("Scraping table information for data type {0} version {1}.", dt.Name, hl7Version));
            try
            {
                string       url    = string.Format("http://hl7-definition.caristix.com:9010/Default.aspx?version=HL7%20v{0}&dataType={1}", hl7Version, dt.Name);
                var          Webget = new HtmlWeb();
                HtmlDocument doc    = Webget.Load(url);
                scrapedData = doc.DocumentNode.SelectSingleNode("//table[@id='grdResult']");
            }
            catch (Exception ex)
            {
                _fileLogger.LogMessage(LogMessageType.INFO, string.Format("Failed to scrape DataTypeColumn for version {0} column {1}. ERROR: {2}", hl7Version, dt.Name, ex.Message));
            }

            if (scrapedData != null)
            {
                foreach (HtmlNode node in scrapedData.ChildNodes)
                {
                    if (node.Name == "tr")
                    {
                        bool          isValid   = true;
                        const string  tdPattern = @"<td\b[^>]*?>(?<V>[\s\S]*?)</\s*td>";
                        StringBuilder strNode   = new StringBuilder();
                        foreach (Match match in Regex.Matches(node.InnerHtml, tdPattern, RegexOptions.IgnoreCase))
                        {
                            string value = match.Groups["V"].Value;
                            strNode.Append(value + "|");
                        }

                        if (strNode.Length > 0)
                        {
                            strNode.Remove(strNode.Length - 1, 1);
                            DataTypeColumn newDataTypeColumn = new DataTypeColumn();
                            try
                            {
                                string[] splitData = strNode.ToString().Split('|');

                                newDataTypeColumn.Sequence   = splitData[0].Split('.')[1].Parse <long>();
                                newDataTypeColumn.Length     = splitData[1].Parse <long>();
                                newDataTypeColumn.IsOptional = bool.Parse(splitData[3] == "O" ? "true" : "false");
                                newDataTypeColumn.Name       = splitData[5];
                                newDataTypeColumn.DataType1  = dt;

                                const string aPattern = @"<a\b[^>]*?>(?<V>[\s\S]*?)</\s*a>";
                                foreach (Match match in Regex.Matches(splitData[2], aPattern, RegexOptions.IgnoreCase))
                                {
                                    string value = match.Groups["V"].Value;
                                    newDataTypeColumn.DataType = DataTypeMap(value);
                                }
                            }
                            catch (Exception ex)
                            {
                                _fileLogger.LogMessage(LogMessageType.ERROR, ex.Message);
                                isValid = false;
                            }

                            if (isValid)
                            {
                                repo.AddNew <DataTypeColumn>(newDataTypeColumn);
                            }
                        }
                    }
                }
            }
        }