public override bool Equals(object obj) { if (obj.GetType() != this.GetType()) { return(false); } BuildGraph Comparable = obj as BuildGraph; if (this.mybuildSpecifiers.Length != Comparable.mybuildSpecifiers.Length) { return(false); } for (int i = 0; i < this.mybuildSpecifiers.Length; i++) { if (!this.mybuildSpecifiers[i].Equals(Comparable.mybuildSpecifiers[i])) { return(false); } } return(true); }
public IResponse Execute(ICruiseRequest cruiseRequest) { Hashtable velocityContext = new Hashtable(); IProjectSpecifier projectSpecifier = cruiseRequest.ProjectSpecifier; IServerSpecifier serverSpecifier = FindServer(projectSpecifier); var sessionToken = cruiseRequest.RetrieveSessionToken(); IBuildSpecifier[] buildSpecifiers = farmService.GetMostRecentBuildSpecifiers(projectSpecifier, 1, sessionToken); if (buildSpecifiers.Length == 1) { velocityContext["mostRecentBuildUrl"] = linkFactory.CreateProjectLink(projectSpecifier, LatestBuildReportProjectPlugin.ACTION_NAME).Url; } velocityContext["projectName"] = projectSpecifier.ProjectName; velocityContext["server"] = serverSpecifier; velocityContext["externalLinks"] = farmService.GetExternalLinks(projectSpecifier, sessionToken); velocityContext["noLogsAvailable"] = (buildSpecifiers.Length == 0); velocityContext["StatusMessage"] = ForceBuildIfNecessary(projectSpecifier, cruiseRequest.Request, sessionToken); ProjectStatus status = FindProjectStatus(projectSpecifier, cruiseRequest); velocityContext["status"] = status; velocityContext["StartStopButtonName"] = (status.Status == ProjectIntegratorState.Running) ? "StopBuild" : "StartBuild"; velocityContext["StartStopButtonValue"] = (status.Status == ProjectIntegratorState.Running) ? "Stop" : "Start"; velocityContext["ForceAbortBuildButtonName"] = (status.Activity.IsSleeping() ? "ForceBuild" : "AbortBuild"); velocityContext["ForceAbortBuildButtonValue"] = (status.Activity.IsSleeping() ? "Force" : "Abort"); velocityContext["ParametersUrl"] = urlBuilder.BuildProjectUrl(ProjectParametersAction.ActionName, projectSpecifier); if (cruiseRequest.Request.ApplicationPath == "/") velocityContext["applicationPath"] = string.Empty; else velocityContext["applicationPath"] = cruiseRequest.Request.ApplicationPath; velocityContext["rssDataPresent"] = farmService.GetRSSFeed(projectSpecifier).Length > 0; // I (willemsruben) can not figure out why the line below does not work :-( // velocityContext["rss"] = linkFactory.CreateProjectLink(projectSpecifier, WebDashboard.Plugins.RSS.RSSFeed.ACTION_NAME).Url; // velocityContext["rss"] = RSSLinkBuilder.CreateRSSLink(linkFactory, projectSpecifier); velocityContext["ohloh"] = farmService.GetLinkedSiteId(projectSpecifier, sessionToken, "ohloh") ?? string.Empty; string subReportData = GetPluginSubReport(cruiseRequest, projectSpecifier, buildSpecifiers); if (subReportData != null && subReportData != String.Empty) velocityContext["pluginInfo"] = subReportData; BuildGraph GraphMaker; // if the amount of builds exceed this, foresee extra column(s) for the days // adjusting the Y-axis of the graph Int32 MaxBuildTreshhold = 15; // Limits the X-axis to this amount of days Int32 MaxAmountOfDaysToDisplay = 15; // the amount of columns to foresee for 1 day in the graph Int32 DateMultiPlier; GraphMaker = new BuildGraph( farmService.GetMostRecentBuildSpecifiers(projectSpecifier, AmountOfBuildsToRetrieve, sessionToken), this.linkFactory, Translations.RetrieveCurrent()); velocityContext["graphDayInfo"] = GraphMaker.GetBuildHistory(MaxAmountOfDaysToDisplay); velocityContext["highestAmountPerDay"] = GraphMaker.HighestAmountPerDay; DateMultiPlier = (GraphMaker.HighestAmountPerDay / MaxBuildTreshhold) + 1; velocityContext["dateMultiPlier"] = DateMultiPlier; Int32 okpercent = 100; if (GraphMaker.AmountOfOKBuilds + GraphMaker.AmountOfFailedBuilds > 0) { okpercent = 100 * GraphMaker.AmountOfOKBuilds / (GraphMaker.AmountOfOKBuilds + GraphMaker.AmountOfFailedBuilds); } velocityContext["OKPercent"] = okpercent; velocityContext["NOKPercent"] = 100 - okpercent; return viewGenerator.GenerateView(@"ProjectReport.vm", velocityContext); }