Free cookie consent management tool by TermsFeed Policy Generator

source: branches/HiveStatistics/sources/HeuristicLab.Services.Hive.Statistics/3.3/Controllers/ExceptionDataController.cs @ 11222

Last change on this file since 11222 was 11222, checked in by mroscoe, 10 years ago
File size: 4.2 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Web;
5using System.Web.Mvc;
6using HeuristicLab.Services.Hive.DataAccess;
7
8namespace HeuristicLab.Services.Hive.Statistics.Controllers {
9  public class ExceptionDataController : Controller {
10
11    public JsonResult TaskExceptions(string userName, DateTime? start = null, DateTime? end = null, string jobId = null, string taskState = null, string slaveId = null)
12    {
13      using (var db = new HiveDataContext(Settings.Default.HeuristicLab_Hive_LinqConnectionString)) {
14        TaskState? state = GetTaskState(taskState);
15        var data =
16        (from tasks in db.FactTasks
17          join jobs in db.DimJobs
18            on tasks.JobId equals jobs.JobId
19          where tasks.Exception != null &&
20          !tasks.Exception.Equals(string.Empty) &&
21          (string.IsNullOrEmpty(userName) || jobs.UserName == userName) &&
22          (!start.HasValue || tasks.StartTime >= start) &&
23          (!end.HasValue || tasks.EndTime < end) &&
24          (string.IsNullOrEmpty(jobId) || tasks.JobId.ToString() == jobId) &&
25          (string.IsNullOrEmpty(taskState) || tasks.TaskState == state) &&
26          (string.IsNullOrEmpty(slaveId) || tasks.LastClientId.ToString() == slaveId)
27          select new
28          {
29            TaskID = tasks.TaskId,
30            ErrorMessage = tasks.Exception,
31            StartDate = tasks.StartTime
32          }).OrderByDescending(s => s.StartDate).ToList();
33
34        List<string> Task = new List<string>();
35        List<string> Error = new List<string>();
36        data.ForEach(t => Task.Add(t.TaskID.ToString()));
37        data.ForEach(e => Error.Add(e.ErrorMessage));
38
39        return Json(new KeyValuePair<List<string>, List<string>>(Task, Error), JsonRequestBehavior.AllowGet);
40      }
41    }
42
43    public JsonResult SlaveExceptions(string limit, DateTime? start = null, DateTime? end = null, string clientId = null) {
44      using (var db = new HiveDataContext(Settings.Default.HeuristicLab_Hive_LinqConnectionString)) {
45        var data =
46        (from tasks in db.FactTasks
47         join jobs in db.DimJobs
48           on tasks.JobId equals jobs.JobId
49         join clients in db.DimClients
50           on tasks.LastClientId equals clients.Id
51         where tasks.Exception != null &&
52          !tasks.Exception.Equals(string.Empty) &&
53          (!start.HasValue || tasks.StartTime >= start) &&
54         (!end.HasValue || tasks.EndTime < end) &&
55         (string.IsNullOrEmpty(clientId) || tasks.LastClientId.ToString() == clientId)
56         select new {
57           TaskID = tasks.TaskId,
58           ErrorMessage = tasks.Exception,
59           ClientID = tasks.LastClientId,
60           ClientName = clients.Name,
61           UserName = jobs.UserName,
62           JobName = jobs.JobName,
63           StartDate = tasks.StartTime
64         }).OrderByDescending(s => s.StartDate).ToList();
65
66        List<List<string>> results = new List<List<string>>();
67
68        for (int i = 0; i < data.Count; i++) {
69          results.Add(
70            new List<string> { data[i].TaskID.ToString(), data[i].ErrorMessage, data[i].ClientID.ToString(), data[i].ClientName,
71              data[i].UserName, data[i].JobName, data[i].StartDate.ToString("dd/MM/yyyy HH:mm")
72            }
73          );
74        }
75        return Json(results, JsonRequestBehavior.AllowGet);
76      }
77    }
78
79    private static TaskState? GetTaskState(string taskState) {
80      TaskState? state;
81      switch (taskState) {
82        case "Aborted":
83          state = TaskState.Aborted;
84          break;
85        case "Calculating":
86          state = TaskState.Calculating;
87          break;
88        case "Failed":
89          state = TaskState.Failed;
90          break;
91        case "Finished":
92          state = TaskState.Finished;
93          break;
94        case "Offline":
95          state = TaskState.Offline;
96          break;
97        case "Paused":
98          state = TaskState.Paused;
99          break;
100        case "Transferring":
101          state = TaskState.Transferring;
102          break;
103        case "Waiting":
104          state = TaskState.Waiting;
105          break;
106        default :
107          state = null;
108          break;
109      }
110      return state;
111    }
112  }
113}
Note: See TracBrowser for help on using the repository browser.