Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/06/13 11:38:38 (11 years ago)
Author:
ascheibe
Message:

#2030 merged r9665,r9666,r9675 into the stable branch

Location:
stable
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Services.Hive

  • stable/HeuristicLab.Services.Hive/3.3

    • Property svn:ignore
      •  

        old new  
        22bin
        33obj
         4*.user
  • stable/HeuristicLab.Services.Hive/3.3/HiveService.cs

    r9456 r9700  
    3737  /// </summary>
    3838  [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, IgnoreExtensionDataObject = true)]
     39  [HiveOperationContextBehavior]
    3940  public class HiveService : IHiveService {
    4041    private IHiveDao dao {
    4142      get { return ServiceLocator.Instance.HiveDao; }
    4243    }
     44    private IOptimizedHiveDao optimizedDao {
     45      get { return ServiceLocator.Instance.OptimizedHiveDao; }
     46    }
    4347    private Access.IRoleVerifier authen {
    4448      get { return ServiceLocator.Instance.RoleVerifier; }
     
    6468      authen.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
    6569      return trans.UseTransaction(() => {
    66         task.Id = dao.AddTask(task);
    67         taskData.TaskId = task.Id;
    68         taskData.LastUpdate = DateTime.Now;
    69         dao.AssignJobToResource(task.Id, resourceIds);
    70         dao.AddTaskData(taskData);
    71         dao.UpdateTaskState(task.Id, DA.TaskState.Waiting, null, userManager.CurrentUserId, null);
    72         return taskData.TaskId;
     70        var t = DT.Convert.ToEntity(task);
     71        t.RequiredPlugins.AddRange(task.PluginsNeededIds.Select(pluginId => new DA.RequiredPlugin { Task = t, PluginId = pluginId }));
     72
     73        t.JobData = DT.Convert.ToEntity(taskData);
     74        t.JobData.LastUpdate = DateTime.Now;
     75
     76        optimizedDao.AddTask(t);
     77
     78        dao.AssignJobToResource(t.TaskId, resourceIds);
     79
     80        optimizedDao.UpdateTaskState(t.TaskId, DA.TaskState.Waiting, null, userManager.CurrentUserId, null);
     81
     82        return t.TaskId;
    7383      }, false, true);
    7484    }
     
    7686    public Guid AddChildTask(Guid parentTaskId, Task task, TaskData taskData) {
    7787      authen.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client);
    78       return trans.UseTransaction(() => {
    79         task.ParentTaskId = parentTaskId;
    80         return AddTask(task, taskData, dao.GetAssignedResources(parentTaskId).Select(x => x.Id));
    81       }, false, true);
     88      task.ParentTaskId = parentTaskId;
     89      return AddTask(task, taskData, optimizedDao.GetAssignedResourceIds(parentTaskId));
    8290    }
    8391
     
    8795
    8896      return trans.UseTransaction(() => {
    89         return dao.GetTask(taskId);
     97        return DT.Convert.ToDto(optimizedDao.GetTaskById(taskId));
    9098      }, false, false);
    9199    }
     
    128136
    129137      return trans.UseTransaction(() => {
    130         return dao.GetLightweightTasks(task => task.JobId == jobId).ToArray();
     138        return optimizedDao.GetLightweightTasks(jobId).ToArray();
    131139      }, false, true);
    132140    }
     
    155163
    156164      trans.UseTransaction(() => {
    157         dao.UpdateTaskAndPlugins(taskDto);
     165        var task = optimizedDao.GetTaskByDto(taskDto);
     166        optimizedDao.UpdateTask(task);
    158167      });
    159168    }
     
    164173
    165174      trans.UseTransaction(() => {
    166         dao.UpdateTaskAndPlugins(task);
    167       });
    168 
    169       trans.UseTransaction(() => {
    170         taskData.LastUpdate = DateTime.Now;
    171         dao.UpdateTaskData(taskData);
     175        var t = optimizedDao.GetTaskByDto(task);
     176        optimizedDao.UpdateTask(t);
     177      });
     178
     179      trans.UseTransaction(() => {
     180        var data = optimizedDao.GetTaskDataByDto(taskData);
     181        data.LastUpdate = DateTime.Now;
     182        optimizedDao.UpdateTaskData(data);
    172183      });
    173184    }
     
    196207      authen.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client, HiveRoles.Slave);
    197208      author.AuthorizeForTask(taskId, Permission.Full);
    198       return trans.UseTransaction(() => {
    199         Task task = dao.UpdateTaskState(taskId, DataTransfer.Convert.ToEntity(taskState), slaveId, userId, exception);
    200 
    201         if (task.Command.HasValue && task.Command.Value == Command.Pause && task.State == TaskState.Paused) {
     209
     210      return trans.UseTransaction(() => {
     211        var task = optimizedDao.UpdateTaskState(taskId, DT.Convert.ToEntity(taskState), slaveId, userId, exception);
     212
     213        if (task.Command.HasValue && task.Command.Value == DA.Command.Pause && task.State == DA.TaskState.Paused) {
    202214          task.Command = null;
    203         } else if (task.Command.HasValue && task.Command.Value == Command.Abort && task.State == TaskState.Aborted) {
     215        } else if (task.Command.HasValue && task.Command.Value == DA.Command.Abort && task.State == DA.TaskState.Aborted) {
    204216          task.Command = null;
    205         } else if (task.Command.HasValue && task.Command.Value == Command.Stop && task.State == TaskState.Aborted) {
     217        } else if (task.Command.HasValue && task.Command.Value == DA.Command.Stop && task.State == DA.TaskState.Aborted) {
    206218          task.Command = null;
    207219        } else if (taskState == TaskState.Paused && !task.Command.HasValue) {
    208220          // slave paused and uploaded the task (no user-command) -> set waiting.
    209           task = dao.UpdateTaskState(taskId, DataTransfer.Convert.ToEntity(TaskState.Waiting), slaveId, userId, exception);
    210         }
    211 
    212         dao.UpdateTaskAndPlugins(task);
    213         return task;
     221          task = optimizedDao.UpdateTaskState(taskId, DA.TaskState.Waiting, slaveId, userId, exception);
     222        }
     223
     224        return DT.Convert.ToDto(task);
    214225      });
    215226    }
     
    463474      authen.AuthenticateForAnyRole(HiveRoles.Administrator, HiveRoles.Client, HiveRoles.Slave);
    464475      return trans.UseTransaction(() => {
    465         return dao.GetPlugin(pluginId);
     476        return DT.Convert.ToDto(optimizedDao.GetPluginById(pluginId));
    466477      });
    467478    }
Note: See TracChangeset for help on using the changeset viewer.