/**
   * Convert {@link TraceData} value object into {@link TraceSequence} object with the given
   * depositor and {@link Entry}.
   *
   * @param traceData TraceData object to convert.
   * @param depositor Depositor email.
   * @param entry Entry to associate.
   * @return TraceSequence object.
   */
  public static TraceSequence traceDataToTraceSequence(
      TraceData traceData, String depositor, Entry entry) {
    TraceSequence resultTraceSequence = new TraceSequence();

    if (traceData == null) {
      return resultTraceSequence;
    }

    resultTraceSequence.setFilename(traceData.getFilename());
    resultTraceSequence.setSequence(traceData.getSequence());
    resultTraceSequence.setEntry(entry);
    resultTraceSequence.setDepositor(depositor);

    TraceSequenceAlignment traceSequenceAlignment = new TraceSequenceAlignment();
    resultTraceSequence.setTraceSequenceAlignment(traceSequenceAlignment);

    if (traceData.getScore() >= 0) {
      traceSequenceAlignment.setScore(traceData.getScore());
      traceSequenceAlignment.setStrand(traceData.getStrand());
      traceSequenceAlignment.setQueryStart(traceData.getQueryStart());
      traceSequenceAlignment.setQueryEnd(traceData.getQueryEnd());
      traceSequenceAlignment.setSubjectStart(traceData.getSubjectStart());
      traceSequenceAlignment.setSubjectEnd(traceData.getSubjectEnd());
      traceSequenceAlignment.setQueryAlignment(traceData.getQueryAlignment());
      traceSequenceAlignment.setSubjectAlignment(traceData.getSubjectAlignment());
    }

    return resultTraceSequence;
  }