Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/13/15 15:22:51 (9 years ago)
Author:
ascheibe
Message:

#2388

  • prevent disposing of hive data context
  • more cleanups
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HiveStatistics/sources/HeuristicLab.Services.WebApp.Statistics/3.3/WebApi/TaskController.cs

    r12768 r12858  
    5151    [HttpPost]
    5252    public DT.TaskPage GetTasksByJobId(Guid id, int page, int size, IEnumerable<string> states) {
    53       using (var pm = PersistenceManager) {
    54         var dimJobDao = pm.DimJobDao;
    55         var dimClientDao = pm.DimClientDao;
    56         var factTaskDao = pm.FactTaskDao;
     53      var pm = PersistenceManager;
     54      var dimJobDao = pm.DimJobDao;
     55      var dimClientDao = pm.DimClientDao;
     56      var factTaskDao = pm.FactTaskDao;
    5757
    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         }
     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      }
    6565
    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      });
    106105    }
    107106
     
    109108    public DT.TaskPage GetTasksByClientId(Guid id, int page, int size, IEnumerable<string> states, Guid userId = default(Guid)) {
    110109      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      });
    159157    }
    160158
    161159    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      });
    179176    }
    180177  }
Note: See TracChangeset for help on using the changeset viewer.