Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 4
0
        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());
        }