Free cookie consent management tool by TermsFeed Policy Generator

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

Last change on this file since 11030 was 11030, checked in by mroscoe, 10 years ago
File size: 2.6 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, string limit, DateTime? start = null, DateTime? end = null, string jobId = null, string taskState = null) {
12      using (var db = new HiveDataContext(Settings.Default.HeuristicLab_Hive_LinqConnectionString)) {
13        TaskState state = GetTaskState(taskState);
14        var data =
15        (from errors in db.StateLogs
16          join tasks in db.FactTasks
17            on errors.TaskId equals tasks.TaskId
18          join jobs in db.DimJobs
19            on tasks.JobId equals jobs.JobId
20          where jobs.UserName == userName &&
21          errors.Exception != null &&
22          !errors.Exception.Equals(string.Empty) &&
23          (!start.HasValue || tasks.StartTime >= start) &&
24          (!end.HasValue || tasks.EndTime < end) &&
25          (string.IsNullOrEmpty(jobId) || tasks.JobId.ToString() == jobId) &&
26          (string.IsNullOrEmpty(taskState) || tasks.TaskState == state)
27          select new
28          {
29            TaskID = errors.TaskId,
30            ErrorMessage = errors.Exception,
31            StartDate = tasks.StartTime
32          }).OrderByDescending(s => s.StartDate).Take(Convert.ToInt32(limit)).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    private static TaskState GetTaskState(string taskState) {
44      TaskState state = TaskState.Finished;
45      switch (taskState) {
46        case "Aborted":
47          state = TaskState.Aborted;
48          break;
49        case "Calculating":
50          state = TaskState.Calculating;
51          break;
52        case "Failed":
53          state = TaskState.Failed;
54          break;
55        case "Finished":
56          state = TaskState.Finished;
57          break;
58        case "Offline":
59          state = TaskState.Offline;
60          break;
61        case "Paused":
62          state = TaskState.Paused;
63          break;
64        case "Transferring":
65          state = TaskState.Transferring;
66          break;
67        case "Waiting":
68          state = TaskState.Waiting;
69          break;
70      }
71      return state;
72    }
73  }
74}
Note: See TracBrowser for help on using the repository browser.