/**
  * If necessary create a new task. Otherwise return the current task.
  *
  * @param logger a logger.
  * @param synopsis short description of task.
  * @param release release.
  * @param defaultTask should this task become the default task?
  * @param ccmAddr current Synergy session ID. Used to run in multi-session.
  * @return Task number
  * @throws ScmException
  */
 public int createTask(
     ScmLogger logger, String synopsis, String release, boolean defaultTask, String ccmAddr)
     throws ScmException {
   if (logger.isDebugEnabled()) {
     logger.debug("Synergy : Entering createTask method of SynergyTaskManager");
   }
   switch (currentTaskState) {
     case TASK_STATE_CREATED:
       if (defaultTask) {
         // make sure the current task is the default task
         if (SynergyUtil.getDefaultTask(logger, ccmAddr) != currentTaskNumber) {
           SynergyUtil.setDefaultTask(logger, currentTaskNumber, ccmAddr);
         }
       }
       break;
     case TASK_STATE_NONE: // fall through
     case TASK_STATE_COMPLETED:
       currentTaskNumber = SynergyUtil.createTask(logger, synopsis, release, defaultTask, ccmAddr);
       currentTaskState = TASK_STATE_CREATED;
       break;
     default:
       throw new IllegalStateException(
           "Programming error: SynergyTaskManager is in unkown state.");
   }
   if (logger.isDebugEnabled()) {
     logger.debug("createTask returns " + currentTaskNumber);
   }
   return currentTaskNumber;
 }