Free cookie consent management tool by TermsFeed Policy Generator

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

Last change on this file since 11053 was 11053, checked in by mroscoe, 10 years ago
File size: 3.9 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 limit, string userName, DateTime? start = null, DateTime? end = null, string jobId = null, string taskState = 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          select new
27          {
28            TaskID = tasks.TaskId,
29            ErrorMessage = tasks.Exception,
30            StartDate = tasks.StartTime
31          }).OrderByDescending(s => s.StartDate).Take(Convert.ToInt32(limit)).ToList();
32
33        List<string> Task = new List<string>();
34        List<string> Error = new List<string>();
35        data.ForEach(t => Task.Add(t.TaskID.ToString()));
36        data.ForEach(e => Error.Add(e.ErrorMessage));
37
38        return Json(new KeyValuePair<List<string>, List<string>>(Task, Error), JsonRequestBehavior.AllowGet);
39      }
40    }
41
42    public JsonResult SlaveExceptions(string limit, DateTime? start = null, DateTime? end = null, string clientId = null) {
43      using (var db = new HiveDataContext(Settings.Default.HeuristicLab_Hive_LinqConnectionString)) {
44        var data =
45        (from tasks in db.FactTasks
46         join jobs in db.DimJobs
47           on tasks.JobId equals jobs.JobId
48         where tasks.Exception != null &&
49          !tasks.Exception.Equals(string.Empty) &&
50          (!start.HasValue || tasks.StartTime >= start) &&
51         (!end.HasValue || tasks.EndTime < end) &&
52         (string.IsNullOrEmpty(clientId) || tasks.LastClientId.ToString() == clientId)
53         select new {
54           TaskID = tasks.TaskId,
55           ErrorMessage = tasks.Exception,
56           ClientID = tasks.LastClientId,
57           UserName = jobs.UserName,
58           StartDate = tasks.StartTime
59         }).OrderByDescending(s => s.StartDate).Take(Convert.ToInt32(limit)).ToList();
60
61        List<List<string>> results = new List<List<string>>();
62
63        for (int i = 0; i < data.Count; i++) {
64          results.Add(
65            new List<string> { data[i].TaskID.ToString(), data[i].ErrorMessage, data[i].ClientID.ToString(), data[i].UserName,
66              data[i].StartDate.ToString("dd/MM/yyyy HH:mm")}
67          );
68        }
69        return Json(results, JsonRequestBehavior.AllowGet);
70      }
71    }
72
73    private static TaskState GetTaskState(string taskState) {
74      TaskState state = TaskState.Finished;
75      switch (taskState) {
76        case "Aborted":
77          state = TaskState.Aborted;
78          break;
79        case "Calculating":
80          state = TaskState.Calculating;
81          break;
82        case "Failed":
83          state = TaskState.Failed;
84          break;
85        case "Finished":
86          state = TaskState.Finished;
87          break;
88        case "Offline":
89          state = TaskState.Offline;
90          break;
91        case "Paused":
92          state = TaskState.Paused;
93          break;
94        case "Transferring":
95          state = TaskState.Transferring;
96          break;
97        case "Waiting":
98          state = TaskState.Waiting;
99          break;
100      }
101      return state;
102    }
103  }
104}
Note: See TracBrowser for help on using the repository browser.