1 | using System;
|
---|
2 | using System.Collections.Generic;
|
---|
3 | using System.Linq;
|
---|
4 | using System.Web;
|
---|
5 | using System.Web.Mvc;
|
---|
6 | using HeuristicLab.Services.Hive.DataAccess;
|
---|
7 |
|
---|
8 | namespace 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 | }
|
---|