Inheritance: MonkeyWrench.DataClasses.DBView
Exemple #1
0
		public object Any (LatestBuilds request)
		{
			var result = new List<KeyValuePair<DBHost, DBRevisionWorkView2>> ();
			List<DBLane> lanes = null;
			var hostLanes = new List<DBHostLane> ();

			using (DB db = new DB ()) {
				lanes = db.GetAllLanes ();

				using (IDbCommand cmd = db.CreateCommand ()) {
					cmd.CommandText = @"
SELECT HostLane.*
FROM HostLane
WHERE hidden = false";
					
					using (IDataReader reader = cmd.ExecuteReader ())
						while (reader.Read ())
							hostLanes.Add (new DBHostLane (reader));
				}

				foreach (DBHostLane hl in hostLanes) {
					DBRevisionWorkView2 revisionWork = null;
					using (IDbCommand cmd = db.CreateCommand ()) {
						cmd.CommandText = @"SELECT R.* FROM (" + DBRevisionWorkView2.SQL.Replace (';', ' ') + ") AS R WHERE R.host_id = @host_id AND R.lane_id = @lane_id LIMIT @limit";
						DB.CreateParameter (cmd, "host_id", hl.host_id);
						DB.CreateParameter (cmd, "lane_id", hl.lane_id);
						DB.CreateParameter (cmd, "limit", 1);
						
						using (IDataReader reader = cmd.ExecuteReader ())
							while (reader.Read ())
								revisionWork = new DBRevisionWorkView2 (reader);
					}

					result.Add (new KeyValuePair<DBHost, DBRevisionWorkView2> (Utils.FindHost (db, revisionWork.host_id), revisionWork));
				}
			}

			var list = result.Where (view => view.Value != null).Select (view => {
				var item = view.Value;
				var lane = lanes.Where (l => l.id == item.lane_id).FirstOrDefault ();
				var parent = Utils.GetTopMostParent (lane, lanes);
				return new Build {
					Commit = item.revision,
					CommitId = item.revision_id,
					Date = item.completed ? item.endtime : item.date,
					Lane = lane.lane,
					LaneID = lane.id,
					Project = parent.lane,
					State = item.State,
					Author = item.author,
					BuildBot = view.Key == null ? string.Empty : view.Key.host,
					HostID = item.host_id,
					Url = Utils.MakeBuildUrl (item.lane_id, item.host_id, item.revision_id)
				};
			}).OrderByDescending (b => b.Date).ToList ();

			return new LatestBuildsResponse {
				LatestBuilds = list
			};
		}
Exemple #2
0
		private Dictionary<string, object> RevisionWorkToDict(FrontPageResponse data, DBLane l, DBRevisionWorkView2 w) {
			return new Dictionary<string, object> {
				{ "id", w.id },
				{ "author", w.author },
				{ "host_id", w.host_id },
				{ "host", data.Hosts.Find( h => h.id == w.host_id).host },
				{ "revision", w.revision },
				{ "revision_id", w.revision_id },
				{ "completed", w.completed },
				{ "status", w.state.ToString().ToLowerInvariant() },
				{ "endtime", w.endtime },
				{ "date", w.date },
				{ "lane", l.lane },
				{ "repository", l.repository },
				{ "branch", l.max_revision }
			};
		}
Exemple #3
0
	void WriteWorkCell (StringBuilder row, DBRevisionWorkView2 work)
	{
		if (work == null) {
			row.Append ("<td>-</td>");
			return;
		}

		string revision = work.revision;
		int lane_id = work.lane_id;
		int host_id = work.host_id;
		int revision_id = work.revision_id;
		DBState state = work.State;
		bool completed = work.completed;
		string state_str = state.ToString ().ToLowerInvariant ();
		bool is_working;
		string str_date = string.Empty;

		if (work.endtime != null && work.endtime.Value.Year > 2000)
			str_date = "<br/>" + TimeDiffToString (work.endtime.Value, DateTime.UtcNow);

		switch (state) {
		case DBState.Executing:
			is_working = true;
			break;
		case DBState.NotDone:
		case DBState.Paused:
		case DBState.DependencyNotFulfilled:
		case DBState.Ignore:
			is_working = false;
			break;
		default:
			is_working = !completed;
			break;
		}

		long dummy;
		if (revision.Length > 16 && !long.TryParse (revision, out dummy))
			revision = revision.Substring (0, 8);

		if (is_working) {
			row.AppendFormat (
				@"<td class='{1}'>
							<center>
								<table class='executing'>
									<td>
										<a href='ViewLane.aspx?lane_id={2}&amp;host_id={3}&amp;revision_id={4}' title='{5}'>{0}{6}</a>
									</td>
								</table>
							<center>
						  </td>",
				revision, state_str, lane_id, host_id, revision_id, "", str_date);
		} else {
			row.AppendFormat ("<td class='{1}'><a href='ViewLane.aspx?lane_id={2}&amp;host_id={3}&amp;revision_id={4}' title='{5}'>{0}{6}</a></td>",
				revision, state_str, lane_id, host_id, revision_id, "", str_date);
		}
	}