/**
   * Set the "gtf.feature.exon" and "gtf.tag.exon.parent.transcript" parameter from the expression
   * step parameters.
   *
   * @param context the context of the task
   * @throws EoulsanException if more than one expression step exists
   */
  private void searchExpressionStepParameters(final TaskContext context) throws EoulsanException {

    int count = 0;

    for (Step step : context.getWorkflow().getSteps()) {

      if (AbstractExpressionModule.MODULE_NAME.equals(step.getModuleName())) {

        for (Parameter p : step.getParameters()) {

          switch (p.getName()) {
            case AbstractExpressionModule.OLD_GENOMIC_TYPE_PARAMETER_NAME:
            case AbstractExpressionModule.GENOMIC_TYPE_PARAMETER_NAME:
              gtfFeatureExon = p.getStringValue();
              break;

            case AbstractExpressionModule.OLD_ATTRIBUTE_ID_PARAMETER_NAME:
            case AbstractExpressionModule.ATTRIBUTE_ID_PARAMETER_NAME:
              gtfTagExonParentTranscript = p.getStringValue();
              break;

            default:
              break;
          }
        }
        count++;
      }
    }

    if (count == 0) {
      throw new EoulsanException("No expression step found in the workflow");
    }

    if (count > 1) {
      throw new EoulsanException("Found more than one expression step in the workflow");
    }
  }