public static List <QualityCenterDefectEntry> ParseSearchResult(string xml) { var results = new List <QualityCenterDefectEntry>(); var doc = XDocument.Parse(xml); foreach (var entity in doc.Root.Descendants("Entity")) { var fields = entity.Descendants("Fields").First().Descendants("Field"); var defect = new QualityCenterDefectEntry { Id = int.Parse(GetFieldStringValue(fields, "id")), Summary = WordUtil.SanitizeSubject(GetFieldStringValue(fields, "name")), Description = HtmlUtil.ConvertHtml(GetFieldStringValue(fields, "description")), Severity = TranslateSeverity(GetFieldStringValue(fields, "severity")), DetectedBy = GetFieldStringValue(fields, "detected-by"), Status = GetFieldStringValue(fields, "status"), DetectedOnDate = GetFieldDateValue(fields, QualityCenterField.DetectedonDate), AssignedTo = GetFieldStringValue(fields, QualityCenterField.AssignTo), Tags = GetFieldStringValue(fields, QualityCenterField.Tags) }; results.Add(defect); } return(results); }
private static QualityCenterDefectEntry BuildDefectFromNode(XElement node) { var fields = node.Descendants("Fields").First().Descendants("Field"); var defect = new QualityCenterDefectEntry { Id = int.Parse(GetFieldStringValue(fields, "id")), Product = GetFieldStringValue(fields, QualityCenterField.Product), SubSystem = GetFieldStringValue(fields, QualityCenterField.Subsystem), Component = GetFieldStringValue(fields, QualityCenterField.Component), FoundInRelease = GetFieldStringValue(fields, QualityCenterField.FoundinRelease), Priority = GetFieldStringValue(fields, QualityCenterField.Priority), State = GetFieldStringValue(fields, QualityCenterField.State), TargetVersion = GetFieldStringValue(fields, QualityCenterField.TargetVersion), TargetRelease = GetFieldStringValue(fields, QualityCenterField.TargetRelease), Summary = WordUtil.SanitizeSubject(GetFieldStringValue(fields, "name")), Description = HtmlUtil.ConvertHtml(GetFieldStringValue(fields, "description")), Severity = TranslateSeverity(GetFieldStringValue(fields, "severity")), ReadyForTestDate = GetFieldDateValue(fields, QualityCenterField.ReadyforTestDate), CodeCompleteDate = GetFieldDateValue(fields, QualityCenterField.CodeCompleteDate), ReadyForBuildDate = GetFieldDateValue(fields, QualityCenterField.ReadyForBuildDate), ClosedDate = GetFieldDateValue(fields, QualityCenterField.ClosedDate), DevReqCloseDate = GetFieldDateValue(fields, QualityCenterField.DevReqCloseDate), LastChangedBy = GetFieldStringValue(fields, QualityCenterField.LastChangeBy), LastChangeDate = GetFieldDateValue(fields, QualityCenterField.LastChangeDate), DetectedBy = GetFieldStringValue(fields, "detected-by"), Status = GetFieldStringValue(fields, "status"), DetectedOnDate = GetFieldDateValue(fields, QualityCenterField.DetectedonDate), AssignedTo = GetFieldStringValue(fields, QualityCenterField.AssignTo), Tags = GetFieldStringValue(fields, QualityCenterField.Tags) }; return(defect); }
private static QualityCenterAuditEntry BuildAuditEntryFromNode(XElement node) { var id = node.Descendants("Id").FirstOrDefault(); var action = node.Descendants("Action").FirstOrDefault(); var time = node.Descendants("Time").FirstOrDefault(); var user = node.Descendants("User").FirstOrDefault(); var propChanges = node.Descendants("Property"); /* * var element = fields.Where(f => f.Attribute("Name").Value == name).First(); * var value = (element.Descendants("Value").FirstOrDefault() == null ? defaultValue : element.Descendants("Value").FirstOrDefault().Value); * return value; */ var entry = new QualityCenterAuditEntry { Id = int.Parse(id.Value), Action = action.Value, Time = DateTime.Parse(time.Value), User = user.Value, Changes = new List <PropertyChange>() }; foreach (var propChange in propChanges) { var label = propChange.Attributes("Label").FirstOrDefault().Value; var name = propChange.Attributes("Name").FirstOrDefault().Value; var oldValue = propChange.Descendants("OldValue").FirstOrDefault(); var newValue = propChange.Descendants("NewValue").FirstOrDefault(); entry.Changes.Add(new PropertyChange { Label = label, Name = name, OldValue = (oldValue != null ? HtmlUtil.ConvertHtml(oldValue.Value) : null), NewValue = (newValue != null ? HtmlUtil.ConvertHtml(newValue.Value) : null) }); } return(entry); }
public string ToQualityCenterXml() { /* * <Entity Type="defect"> * <Fields> * <Field Name="detected-by"> * <Value>henry_tilney</Value> * </Field> * <Field Name="creation-time"> * <Value>2010-03-02</Value> * </Field> * <Field Name="severity"> * <Value>2-Medium</Value> * </Field> * <Field Name="name"> * <Value>Returned value not does not match * value in database.</Value> * </Field> * </Fields> * </Entity> */ var FIELD_VALUE_TEMPLATE = "<Field Name=\"{0}\"><Value>{1}</Value></Field>"; StringBuilder sb = new StringBuilder(); sb.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); sb.Append("<Entity Type=\"defect\">"); sb.Append("<Fields>"); sb.Append(String.Format(FIELD_VALUE_TEMPLATE, QualityCenterField.Type, FileAsType)); sb.Append(String.Format(FIELD_VALUE_TEMPLATE, QualityCenterField.DetectedBy, DetectedBy)); sb.Append(String.Format(FIELD_VALUE_TEMPLATE, QualityCenterField.Product, XmlUtil.EncodeValue(Product))); sb.Append(String.Format(FIELD_VALUE_TEMPLATE, QualityCenterField.DetectedinVersion, TargetVersion)); sb.Append(String.Format(FIELD_VALUE_TEMPLATE, QualityCenterField.Subsystem, XmlUtil.EncodeValue(SubSystem))); sb.Append(String.Format(FIELD_VALUE_TEMPLATE, QualityCenterField.Component, XmlUtil.EncodeValue(Component))); sb.Append(String.Format(FIELD_VALUE_TEMPLATE, QualityCenterField.DetectedonDate, DetectedOnDate.Value.ToString("yyyy-MM-dd"))); sb.Append(String.Format(FIELD_VALUE_TEMPLATE, QualityCenterField.FoundinRelease, "R10")); sb.Append(String.Format(FIELD_VALUE_TEMPLATE, QualityCenterField.State, "New")); switch (Severity) { case Severity.Critical: sb.Append(String.Format(FIELD_VALUE_TEMPLATE, QualityCenterField.Severity, "1 - Critical")); break; case Severity.High: sb.Append(String.Format(FIELD_VALUE_TEMPLATE, QualityCenterField.Severity, "2 - High")); break; case Severity.Medium: sb.Append(String.Format(FIELD_VALUE_TEMPLATE, QualityCenterField.Severity, "3 - Medium")); break; case Severity.Low: sb.Append(String.Format(FIELD_VALUE_TEMPLATE, QualityCenterField.Severity, "4 - Low")); break; } sb.Append(String.Format(FIELD_VALUE_TEMPLATE, QualityCenterField.Summary, "[Support Butler] " + XmlUtil.EncodeValue(Summary))); sb.Append(String.Format(FIELD_VALUE_TEMPLATE, QualityCenterField.Description, "<![CDATA[<html><body>" + HtmlUtil.ConvertHtml(Description).Replace("\r\n", "<br />") + "<br />Source = " + Source + "<br />[Issue Created by Support Butler v" + AppInfo.Version + "]" + "</body></html>]]>")); sb.Append(String.Format(FIELD_VALUE_TEMPLATE, QualityCenterField.AssignTo, AssignedTo)); sb.Append(String.Format(FIELD_VALUE_TEMPLATE, QualityCenterField.Tags, Tags)); sb.Append(String.Format(FIELD_VALUE_TEMPLATE, QualityCenterField.TargetVersion, TargetVersion)); sb.Append("</Fields>"); sb.Append("</Entity>"); return(sb.ToString()); }