public String getMaxProgress() {
   CopyTransTaskHandle handle = copyTransManager.getCopyTransProcessHandle(getProjectIteration());
   if (handle != null) {
     return String.valueOf(handle.getMaxProgress());
   }
   return "";
 }
 public String getCopyTransEstimatedTimeLeft() {
   CopyTransTaskHandle handle = copyTransManager.getCopyTransProcessHandle(getProjectIteration());
   if (handle != null) {
     Optional<Long> estimatedTimeRemaining = handle.getEstimatedTimeRemaining();
     if (estimatedTimeRemaining.isPresent()) {
       return DateUtil.getTimeRemainingDescription(estimatedTimeRemaining.get());
     }
   }
   return "";
 }
  public void startCopyTrans() {
    identity.checkPermission(getProjectIteration(), "copy-trans");
    if (isInProgress()) {
      return;
    } else if (getProjectIteration().getDocuments().size() <= 0) {
      conversationScopeMessages.setMessage(
          FacesMessage.SEVERITY_INFO, msgs.get("jsf.iteration.CopyTrans.NoDocuments"));
      return;
    }

    HCopyTransOptions options = copyTransOptionsModel.getInstance();

    copyTransManager.startCopyTrans(getProjectIteration(), options);
    conversationScopeMessages.setMessage(
        FacesMessage.SEVERITY_INFO, msgs.get("jsf.iteration.CopyTrans.Started"));
  }
 public boolean isInProgress() {
   return copyTransManager.isCopyTransRunning(getProjectIteration());
 }
 public void cancel() {
   copyTransManager.cancelCopyTrans(getProjectIteration());
   conversationScopeMessages.setMessage(
       FacesMessage.SEVERITY_INFO, msgs.get("jsf.iteration.CopyTrans.Cancelled"));
 }
 @Override
 protected CopyTransTaskHandle getHandle() {
   return copyTransManager.getCopyTransProcessHandle(getProjectIteration());
 }