[11030] | 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 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 | }
|
---|