public IFrontLoaderTO mapFromProject(Project_Data project) {

    // map.
    // it is IMPERATIVE, that the roles know nothing about the data objects.  data objects
    // are in a different world than these service objects.
    Map<String, Task_Data> task_index = new HashMap<String, Task_Data>();
    Map<String, IActivityTO> activity_index = new HashMap<String, IActivityTO>();
    FrontLoaderRole fl = new FrontLoaderRole();
    for (Task_Data t : project.getTasks()) {
      IActivityTO a = new ActivityRole(t.getId(), t.getEstimatedMinutes());
      fl.getActivities().add(a);

      activity_index.put(t.getId(), a);
      task_index.put(t.getId(), t);
    }

    // now map dependencies
    for (IActivityTO a : fl.getActivities()) {
      Task_Data t = task_index.get(((ActivityRole) a).getId());
      for (Task_Data t2 : t.getDependencies()) {
        a.getPredecessors().add(activity_index.get(t2.getId()));
      }
    }

    return fl;
  }
 public void mergeResults(Project_Data project, IFrontLoaderTO frontLoader) {
   for (IActivityTO activity : frontLoader.getActivities()) {
     ActivityRole ar = (ActivityRole) activity;
     for (Task_Data task : project.getTasks()) {
       if (ar.getId().equals(task.getId())) {
         task.setStart(ar.getStart());
         break;
       }
     }
   }
 }