/**
   * Check if a message already exists in the list of overridden or displayed messages
   *
   * @param screenSetId - screen set Id
   * @param scrnNo - the screen where the message occurred
   * @param fieldName - the field that generated the message
   * @param sequence - sequence number
   * @param fieldData - the field data
   * @param eqMessage - the Equation message
   * @return the Equation message if it it not existing<br>
   *     Otherwise, return NULL
   * @throws EQException
   */
  public EQMessage chkMessage(
      int screenSetId,
      int scrnNo,
      String fieldName,
      int sequence,
      FieldData fieldData,
      EQMessage eqMessage) {
    // check the message severity
    int msgSev = Toolbox.parseInt(eqMessage.getSeverity(), FunctionMessages.MSG_ERROR);

    // if this is a warning check if it has already been overridden, if is has, then do not issue
    // this anymore
    if (msgSev == FunctionMessages.MSG_WARN) {
      if (overWarnMessages.chkMessageExists(
          screenSetId, scrnNo, fieldName, sequence, eqMessage.getDsepms())) {
        return null;
      }
    }

    // if this is an informational message check if it has already been displayed to the user, if it
    // has, then do not issue
    // this anymore
    else if (msgSev == FunctionMessages.MSG_INFO) {
      if (dispInfoMessages.chkMessageExists(
          screenSetId, scrnNo, fieldName, sequence, eqMessage.getDsepms())) {
        return null;
      }
    }

    // not found
    return eqMessage;
  }
  /**
   * Generate a message only if the message has not been overridden and has the same severity or
   * worse than the existing messages
   *
   * @param fms - function messages to add the the new message
   * @param screenSetId - screen set Id
   * @param scrnNo - the screen where the message occurred
   * @param fieldName - the field that generated the message
   * @param sequence - sequence number
   * @param fieldData - the field data
   * @param eqMessage - the Equation message
   * @param firstLevelText - text to be appended to the start of messageText
   * @param secondLevelText - text to be appended to the end of messageText
   * @param ignoreMessages - the message severity to ignore. All equal/lower message severity will
   *     be ignored
   * @return the function message added
   */
  public FunctionMessage generateMessage(
      FunctionMessages fms,
      int screenSetId,
      int scrnNo,
      String fieldName,
      int sequence,
      FieldData fieldData,
      EQMessage eqMessage,
      String firstLevelText,
      String secondLevelText,
      int ignoreMessages) {
    // message to be ignored?
    if (Toolbox.parseInt(eqMessage.getSeverity(), FunctionMessages.MSG_ERROR) <= ignoreMessages) {
      return null;
    }

    // is the message already existing?
    eqMessage = chkMessage(screenSetId, scrnNo, fieldName, sequence, fieldData, eqMessage);

    if (eqMessage == null) {
      return null;
    }

    // is the message already exists in the list?
    if (fms.chkMessageExists(screenSetId, scrnNo, fieldName, sequence, eqMessage.getDsepms())) {
      return null;
    }

    // add the message
    FunctionMessage fm =
        fms.insertMessage(
            screenSetId, scrnNo, fieldName, sequence, eqMessage, firstLevelText, secondLevelText);
    if (fm == null) {
      return null;
    }

    // add the error message to the field
    if (fieldData != null) {
      fieldData
          .getFunctionMessages()
          .insertMessage(
              screenSetId, scrnNo, fieldName, sequence, eqMessage, firstLevelText, secondLevelText);
    }

    // message severity
    return fm;
  }