@Override
  public MESSAGE analyseBottomTime(DiveletFeatures diveletFeatures, int diveNumber) {
    BOTTOM_TIME_ASSESSMENT message = new BOTTOM_TIME_ASSESSMENT();

    if (diveletFeatures.getExcessBottomTime() > 0) {
      message.setAssesment(BottomTimeQuality.BAD);
    } else {
      message.setAssesment(BottomTimeQuality.GOOD);
    }

    message.setBottomTime((int) diveletFeatures.getBottomTime());
    long NDL = PADITable.getNDL(diveletFeatures.getDiveDepth());
    double percent = (double) diveletFeatures.getBottomTime() / NDL * 100;
    message.setComparedToNDL((int) Math.round(percent) - 100);

    message.setDiveletNumber(diveNumber);

    message.setComparedToANDL((int) diveletFeatures.getExcessBottomTime());

    return message;
  }
  /*
   * (non-Javadoc)
   *
   * @see nlg.interpretation.DiveInterpretation#analyseAssessment(boolean)
   */
  @Override
  public MESSAGE analyseDive(
      DiveletFeatures diveletFeatures, int diveNumber, int numberOfDivelets) {
    OVERALL_ASSESSMENT message = new OVERALL_ASSESSMENT();
    if (diveletFeatures == null) {
      message.setDiveQuality(DiveQuality.NODIVE);
    } else if (diveletFeatures.getExcessDiveDepth() > 0) {
      message.setDiveQuality(DiveQuality.BAD);
    } else {
      message.setDiveQuality(DiveQuality.GOOD);
    }

    message.setDiveletNumber(diveNumber);
    message.setNumberOfDivelets(numberOfDivelets);

    return message;
  }