Changeset 12858 for branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Statistics/3.3/WebApi/TaskController.cs
- Timestamp:
- 08/13/15 15:22:51 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Statistics/3.3/WebApi/TaskController.cs
r12768 r12858 51 51 [HttpPost] 52 52 public DT.TaskPage GetTasksByJobId(Guid id, int page, int size, IEnumerable<string> states) { 53 using (var pm = PersistenceManager) {54 55 56 53 var pm = PersistenceManager; 54 var dimJobDao = pm.DimJobDao; 55 var dimClientDao = pm.DimClientDao; 56 var factTaskDao = pm.FactTaskDao; 57 57 58 59 60 61 62 63 64 58 DA.DimJob job = pm.UseTransaction(() => dimJobDao.GetById(id)); 59 if (job == null) { 60 throw new ArgumentException("invalid job id"); 61 } 62 if (job.UserId != UserManager.CurrentUserId) { 63 RoleVerifier.AuthenticateForAnyRole(HiveRoles.Administrator); 64 } 65 65 66 return pm.UseTransaction(() => { 67 var tasks = factTaskDao.GetByJobId(id).Where(x => states.Contains(x.TaskState.ToString())); 68 return new DT.TaskPage { 69 TotalTasks = tasks.Count(), 70 Tasks = (from factTask in tasks 71 join dimJob in dimJobDao.GetAll() on factTask.JobId equals dimJob.JobId 72 join dimClient in dimClientDao.GetAll() on factTask.LastClientId equals 73 dimClient.Id into taskClientJoin 74 from a in taskClientJoin.DefaultIfEmpty() 75 let startTime = factTask.StartTime ?? DateTime.Now 76 let endTime = factTask.EndTime ?? DateTime.Now 77 select new DT.Task { 78 Id = factTask.TaskId, 79 JobId = factTask.JobId, 80 JobName = dimJob.JobName, 81 TotalTime = (long)(endTime - startTime).TotalSeconds, 82 CalculatingTime = factTask.CalculatingTime, 83 WaitingTime = factTask.WaitingTime, 84 TransferTime = factTask.TransferTime, 85 InitialWaitingTime = factTask.InitialWaitingTime, 86 NumCalculationRuns = factTask.NumCalculationRuns, 87 NumRetries = factTask.NumRetries, 88 CoresRequired = factTask.CoresRequired, 89 MemoryRequired = factTask.MemoryRequired, 90 Priority = factTask.Priority, 91 State = factTask.TaskState.ToString(), 92 LastClientId = factTask.LastClientId, 93 LastClientName = a != null ? a.Name : string.Empty, 94 UserId = dimJob.UserId, 95 UserName = dimJob.UserName, 96 StartTime = factTask.StartTime, 97 EndTime = factTask.EndTime, 98 Exception = factTask.Exception 99 }) 100 .Skip((page - 1) * size) 101 .Take(size) 102 .ToList() 103 }; 104 }); 105 } 66 return pm.UseTransaction(() => { 67 var tasks = factTaskDao.GetByJobId(id).Where(x => states.Contains(x.TaskState.ToString())); 68 return new DT.TaskPage { 69 TotalTasks = tasks.Count(), 70 Tasks = (from factTask in tasks 71 join dimJob in dimJobDao.GetAll() on factTask.JobId equals dimJob.JobId 72 join dimClient in dimClientDao.GetAll() on factTask.LastClientId equals 73 dimClient.Id into taskClientJoin 74 from a in taskClientJoin.DefaultIfEmpty() 75 let startTime = factTask.StartTime ?? DateTime.Now 76 let endTime = factTask.EndTime ?? DateTime.Now 77 select new DT.Task { 78 Id = factTask.TaskId, 79 JobId = factTask.JobId, 80 JobName = dimJob.JobName, 81 TotalTime = (long)(endTime - startTime).TotalSeconds, 82 CalculatingTime = factTask.CalculatingTime, 83 WaitingTime = factTask.WaitingTime, 84 TransferTime = factTask.TransferTime, 85 InitialWaitingTime = factTask.InitialWaitingTime, 86 NumCalculationRuns = factTask.NumCalculationRuns, 87 NumRetries = factTask.NumRetries, 88 CoresRequired = factTask.CoresRequired, 89 MemoryRequired = factTask.MemoryRequired, 90 Priority = factTask.Priority, 91 State = factTask.TaskState.ToString(), 92 LastClientId = factTask.LastClientId, 93 LastClientName = a != null ? a.Name : string.Empty, 94 UserId = dimJob.UserId, 95 UserName = dimJob.UserName, 96 StartTime = factTask.StartTime, 97 EndTime = factTask.EndTime, 98 Exception = factTask.Exception 99 }) 100 .Skip((page - 1) * size) 101 .Take(size) 102 .ToList() 103 }; 104 }); 106 105 } 107 106 … … 109 108 public DT.TaskPage GetTasksByClientId(Guid id, int page, int size, IEnumerable<string> states, Guid userId = default(Guid)) { 110 109 bool isAdministrator = User.IsInRole(HiveRoles.Administrator); 111 using (var pm = PersistenceManager) { 112 var dimJobDao = pm.DimJobDao; 113 var dimClientDao = pm.DimClientDao; 114 var factTaskDao = pm.FactTaskDao; 115 return pm.UseTransaction(() => { 116 var tasks = factTaskDao.GetByClientId(id).Where(x => states.Contains(x.TaskState.ToString())); 117 if (userId != Guid.Empty) { 118 tasks = tasks.Where(x => x.DimJob.UserId == userId); 119 } 120 return new DT.TaskPage { 121 TotalTasks = tasks.Count(), 122 Tasks = (from factTask in tasks 123 join dimJob in dimJobDao.GetAll() on factTask.JobId equals dimJob.JobId 124 join dimClient in dimClientDao.GetAll() on factTask.LastClientId equals 125 dimClient.Id into taskClientJoin 126 from a in taskClientJoin.DefaultIfEmpty() 127 let startTime = factTask.StartTime ?? DateTime.Now 128 let endTime = factTask.EndTime ?? DateTime.Now 129 select new DT.Task { 130 Id = isAdministrator ? factTask.TaskId : default(Guid), 131 JobId = isAdministrator ? factTask.JobId : default(Guid), 132 JobName = isAdministrator ? dimJob.JobName : string.Empty, 133 TotalTime = (long)(endTime - startTime).TotalSeconds, 134 CalculatingTime = factTask.CalculatingTime, 135 WaitingTime = factTask.WaitingTime, 136 TransferTime = factTask.TransferTime, 137 InitialWaitingTime = factTask.InitialWaitingTime, 138 NumCalculationRuns = factTask.NumCalculationRuns, 139 NumRetries = factTask.NumRetries, 140 CoresRequired = factTask.CoresRequired, 141 MemoryRequired = factTask.MemoryRequired, 142 Priority = factTask.Priority, 143 State = factTask.TaskState.ToString(), 144 LastClientId = factTask.LastClientId, 145 LastClientName = a != null ? a.Name : string.Empty, 146 UserId = isAdministrator ? dimJob.UserId : default(Guid), 147 UserName = isAdministrator ? dimJob.UserName : string.Empty, 148 StartTime = factTask.StartTime, 149 EndTime = factTask.EndTime, 150 Exception = isAdministrator ? factTask.Exception : string.Empty 151 }) 152 .OrderByDescending(x => x.EndTime ?? DateTime.MaxValue) 153 .Skip((page - 1) * size) 154 .Take(size) 155 .ToList() 156 }; 157 }); 158 } 110 var pm = PersistenceManager; 111 var dimJobDao = pm.DimJobDao; 112 var dimClientDao = pm.DimClientDao; 113 var factTaskDao = pm.FactTaskDao; 114 return pm.UseTransaction(() => { 115 var tasks = factTaskDao.GetByClientId(id).Where(x => states.Contains(x.TaskState.ToString())); 116 if (userId != Guid.Empty) { 117 tasks = tasks.Where(x => x.DimJob.UserId == userId); 118 } 119 return new DT.TaskPage { 120 TotalTasks = tasks.Count(), 121 Tasks = (from factTask in tasks 122 join dimJob in dimJobDao.GetAll() on factTask.JobId equals dimJob.JobId 123 join dimClient in dimClientDao.GetAll() on factTask.LastClientId equals 124 dimClient.Id into taskClientJoin 125 from a in taskClientJoin.DefaultIfEmpty() 126 let startTime = factTask.StartTime ?? DateTime.Now 127 let endTime = factTask.EndTime ?? DateTime.Now 128 select new DT.Task { 129 Id = isAdministrator ? factTask.TaskId : default(Guid), 130 JobId = isAdministrator ? factTask.JobId : default(Guid), 131 JobName = isAdministrator ? dimJob.JobName : string.Empty, 132 TotalTime = (long)(endTime - startTime).TotalSeconds, 133 CalculatingTime = factTask.CalculatingTime, 134 WaitingTime = factTask.WaitingTime, 135 TransferTime = factTask.TransferTime, 136 InitialWaitingTime = factTask.InitialWaitingTime, 137 NumCalculationRuns = factTask.NumCalculationRuns, 138 NumRetries = factTask.NumRetries, 139 CoresRequired = factTask.CoresRequired, 140 MemoryRequired = factTask.MemoryRequired, 141 Priority = factTask.Priority, 142 State = factTask.TaskState.ToString(), 143 LastClientId = factTask.LastClientId, 144 LastClientName = a != null ? a.Name : string.Empty, 145 UserId = isAdministrator ? dimJob.UserId : default(Guid), 146 UserName = isAdministrator ? dimJob.UserName : string.Empty, 147 StartTime = factTask.StartTime, 148 EndTime = factTask.EndTime, 149 Exception = isAdministrator ? factTask.Exception : string.Empty 150 }) 151 .OrderByDescending(x => x.EndTime ?? DateTime.MaxValue) 152 .Skip((page - 1) * size) 153 .Take(size) 154 .ToList() 155 }; 156 }); 159 157 } 160 158 161 159 public HttpResponseMessage GetTaskDataById(Guid id) { 162 using (var pm = PersistenceManager) { 163 var taskDataDao = pm.TaskDataDao; 164 return pm.UseTransaction(() => { 165 var taskData = taskDataDao.GetById(id); 166 if (taskData == null) 167 return new HttpResponseMessage(HttpStatusCode.NotFound); 168 HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); 169 var stream = new MemoryStream(taskData.Data); 170 result.Content = new StreamContent(stream); 171 result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); 172 result.Content.Headers.ContentDisposition = 173 new ContentDispositionHeaderValue("attachment") { 174 FileName = string.Format("{0}.hl", id) 175 }; 176 return result; 177 }); 178 } 160 var pm = PersistenceManager; 161 var taskDataDao = pm.TaskDataDao; 162 return pm.UseTransaction(() => { 163 var taskData = taskDataDao.GetById(id); 164 if (taskData == null) 165 return new HttpResponseMessage(HttpStatusCode.NotFound); 166 HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); 167 var stream = new MemoryStream(taskData.Data); 168 result.Content = new StreamContent(stream); 169 result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); 170 result.Content.Headers.ContentDisposition = 171 new ContentDispositionHeaderValue("attachment") { 172 FileName = string.Format("{0}.hl", id) 173 }; 174 return result; 175 }); 179 176 } 180 177 }
Note: See TracChangeset
for help on using the changeset viewer.