private static void ReadStatistics(ProjectStatsData data, XmlReader xmlReader)
        {
            xmlReader.Read();

            int buildIdCounter = 0;

            while (xmlReader.NodeType != XmlNodeType.EndElement)
            {
                switch (xmlReader.Name)
                {
                case "timestamp":

                    xmlReader.Read();

                    break;

                case "integration":

                    ProjectStatsBuildEntry entry = new ProjectStatsBuildEntry(buildIdCounter++);
                    entry.BuildLabel = ReadAttribute(xmlReader, "build-label");

                    ReadIntegrationEntry(entry, ReadAttribute(xmlReader, "status"), xmlReader);

                    data.Builds.Add(entry);

                    break;

                default:
                    throw new NotSupportedException();
                }
            }

            xmlReader.Read();
        }
        private static void ReadIntegrationEntry(ProjectStatsBuildEntry data, string status, XmlReader xmlReader)
        {
            xmlReader.Read();

            AddBuildStatus(data, status);

            while (xmlReader.NodeType != XmlNodeType.EndElement)
            {
                switch (xmlReader.Name)
                {
                case "statistic":

                    string key   = ReadAttribute(xmlReader, "name");
                    string value = xmlReader.ReadElementContentAsString();

                    data.Parameters.Add(key, value);

                    break;

                default:
                    throw new NotSupportedException();
                }
            }

            xmlReader.Read();
        }
        private static void AddBuildStatus(ProjectStatsBuildEntry data, string status)
        {
            //Add build status parameters to parameter list
            data.Parameters.Add("Success", "0");
            data.Parameters.Add("Exception", "0");
            data.Parameters.Add("Failure", "0");

            switch (status)
            {
            case "Exception":
                data.Parameters["Exception"] = "1";
                break;

            case "Failure":
                data.Parameters["Failure"] = "1";
                break;

            case "Success":
                data.Parameters["Success"] = "1";
                break;
            }
        }
Exemple #4
0
        private void PrepareDataMatrix(
            ProjectStatsData data,
            ProjectStatsGraph graph,
            ProjectStatsGraphData graphData,
            List <string> xLabels)
        {
            int buildId = 0;

            xLabels.Clear();

            // go through all builds
            for (int i = 0; i < data.Builds.Count; i++)
            {
                // show last 50 builds on graph if parameter is set to false
                if (!showBuildProjectHistory)
                {
                    if (i < data.Builds.Count - BuildNumbers)
                    {
                        continue;
                    }
                }

                ProjectStatsBuildEntry entry = data.Builds[i];

                // ignore unsuccessful builds
                if (graph.IgnoreFailures && entry.Parameters["Success"] == "0")
                {
                    continue;
                }

                // flag, that marks if parameter value will be added to the list or
                // value will increase existing value (depends on buildId)
                bool addValue = false;

                // if the current build label has not already been added to the xLabels
                if (entry.BuildLabel != xLabels.Find(temp => temp == entry.BuildLabel))
                {
                    // add build name to list. Build name will be shown on x-axis
                    xLabels.Add(entry.BuildLabel);

                    addValue = true;
                    buildId  = entry.BuildId;
                }

                // go through all graph parameters
                foreach (ProjectStatsGraphParameter parameter in graph.GraphParameters)
                {
                    double value = 0;

                    // if parameter exists in build statistic then get parameter value
                    if (entry.Parameters.ContainsKey(parameter.ParameterName))
                    {
                        if (parameter.ParameterType == typeof(TimeSpan))
                        {
                            value = TimeSpan.Parse(entry.Parameters[parameter.ParameterName]).TotalSeconds;
                        }
                        else if (parameter.ParameterType == typeof(double))
                        {
                            value = Convert.ToDouble(
                                entry.Parameters[parameter.ParameterName],
                                CultureInfo.InvariantCulture);
                        }
                    }

                    if (addValue)
                    {
                        // set value
                        graphData.SetValue(buildId, parameter.ParameterName, value);
                    }
                    else
                    {
                        // increment value
                        graphData.IncValue(buildId, parameter.ParameterName, value);
                    }
                }
            }
        }