Free cookie consent management tool by TermsFeed Policy Generator

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

Last change on this file since 11084 was 11084, checked in by mroscoe, 10 years ago
File size: 4.0 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         where tasks.Exception != null &&
50          !tasks.Exception.Equals(string.Empty) &&
51          (!start.HasValue || tasks.StartTime >= start) &&
52         (!end.HasValue || tasks.EndTime < end) &&
53         (string.IsNullOrEmpty(clientId) || tasks.LastClientId.ToString() == clientId)
54         select new {
55           TaskID = tasks.TaskId,
56           ErrorMessage = tasks.Exception,
57           ClientID = tasks.LastClientId,
58           UserName = jobs.UserName,
59           StartDate = tasks.StartTime
60         }).OrderByDescending(s => s.StartDate).ToList();
61
62        List<List<string>> results = new List<List<string>>();
63
64        for (int i = 0; i < data.Count; i++) {
65          results.Add(
66            new List<string> { data[i].TaskID.ToString(), data[i].ErrorMessage, data[i].ClientID.ToString(), data[i].UserName,
67              data[i].StartDate.ToString("dd/MM/yyyy HH:mm")}
68          );
69        }
70        return Json(results, JsonRequestBehavior.AllowGet);
71      }
72    }
73
74    private static TaskState GetTaskState(string taskState) {
75      TaskState state = TaskState.Finished;
76      switch (taskState) {
77        case "Aborted":
78          state = TaskState.Aborted;
79          break;
80        case "Calculating":
81          state = TaskState.Calculating;
82          break;
83        case "Failed":
84          state = TaskState.Failed;
85          break;
86        case "Finished":
87          state = TaskState.Finished;
88          break;
89        case "Offline":
90          state = TaskState.Offline;
91          break;
92        case "Paused":
93          state = TaskState.Paused;
94          break;
95        case "Transferring":
96          state = TaskState.Transferring;
97          break;
98        case "Waiting":
99          state = TaskState.Waiting;
100          break;
101      }
102      return state;
103    }
104  }
105}
Note: See TracBrowser for help on using the repository browser.