/**
  * This method only validate if the most important input properties are not null
  *
  * @param inputDto
  */
 private static void validateInputDto(LoadEndTemplatePatternInputDto inputDto) {
   if (inputDto == null || inputDto.getStatusMessagingList() == null) {
     throw new IllegalArgumentException(
         "UtilityNavigationPointerEnd loadEndTemplatePattern() invalid input object");
   } else if (inputDto.getEndTemplateList() == null
       || inputDto.getLinkToModel() == null
       || inputDto.getSystemDefinitionsParsed() == null
       || inputDto.getMapOptionSetIdNumber() == null
       || inputDto.getMapProdAccRows() == null) {
     UtilityStatusMessage.logNullObjDescription(inputDto);
     throw new IllegalArgumentException(
         "UtilityNavigationPointerEnd loadEndTemplatePattern() invalid input object has some required properties null");
   }
 }
  /**
   * This method is going to validate the input data on the inputDto object based on the minimal
   * data requirements to run the logic on this class
   *
   * @param inputDto
   * @return
   */
  private static boolean validateInputDtoData(LoadEndTemplatePatternInputDto inputDto) {
    boolean res = true;

    if (!inputDto.getEndTemplateList().isEmpty()) {
      if (!inputDto.getLinkToModel().isEmpty()) {
        String printerType =
            UtilityNavigationPointerEnd.getPrinterType(
                inputDto.getLinkToModel(),
                inputDto.getSystemDefinitionsParsed(),
                inputDto.getStatusMessagingList());
        if (!printerType.isEmpty()) {
          inputDto.setPrinterType(printerType);
          if (inputDto.getEndTemplateList().containsKey(printerType)) {
            if (!inputDto.getEndTemplateList().get(printerType).isEmpty()) {
              if (!inputDto.getMapProdAccRows().isEmpty()) {
                if (LOG.isDebugEnabled()) {
                  LOG.debug(
                      "UtilityNavigationPointerEnd validateInputDtoData() valid inptDto data");
                }
              } else {
                StatusMessage statusMessage =
                    new StatusMessage(
                        Rp3Constants.CODES_MSG.STATUS_MSG_LEVEL_METHOD,
                        MsgConstants.UNPE.STATUS_MSG_WARNING_MAP_PRODUCTS_ACCESORIES_EMPTY,
                        new ArrayList<String>(),
                        Rp3Constants.CODES_MSG.STATUS_MSG_LEVEL_WARNING);
                inputDto.getStatusMessagingList().add(statusMessage);
                res = false;
              }
            } else {
              StatusMessage statusMessage =
                  new StatusMessage(
                      Rp3Constants.CODES_MSG.STATUS_MSG_LEVEL_METHOD,
                      MsgConstants.UNPE.STATUS_MSG_WARNING_ENDTEMPLATE_RECORDS_EMPTY,
                      new ArrayList<String>(),
                      Rp3Constants.CODES_MSG.STATUS_MSG_LEVEL_WARNING);
              inputDto.getStatusMessagingList().add(statusMessage);
              res = false;
            }
          } else {
            StatusMessage statusMessage =
                new StatusMessage(
                    Rp3Constants.CODES_MSG.STATUS_MSG_LEVEL_METHOD,
                    MsgConstants.UAIR.STATUS_MSG_WARNING_TEMPLATE_LIST_NOT_FOND,
                    new String[] {printerType},
                    Rp3Constants.CODES_MSG.STATUS_MSG_LEVEL_WARNING);
            inputDto.getStatusMessagingList().add(statusMessage);
            res = false;
          }
        } else {
          StatusMessage statusMessage =
              new StatusMessage(
                  Rp3Constants.CODES_MSG.STATUS_MSG_LEVEL_METHOD,
                  MsgConstants.UNPE.STATUS_MSG_WARNING_PRINTERTYPE_EMPTY,
                  new ArrayList<String>(),
                  Rp3Constants.CODES_MSG.STATUS_MSG_LEVEL_WARNING);
          inputDto.getStatusMessagingList().add(statusMessage);
          res = false;
        }
      } else {
        StatusMessage statusMessage =
            new StatusMessage(
                Rp3Constants.CODES_MSG.STATUS_MSG_LEVEL_METHOD,
                MsgConstants.UNPE.STATUS_MSG_WARNING_LINKTOMODEL_EMPTY,
                new ArrayList<String>(),
                Rp3Constants.CODES_MSG.STATUS_MSG_LEVEL_WARNING);
        inputDto.getStatusMessagingList().add(statusMessage);
        res = false;
      }
    } else {
      StatusMessage statusMessage =
          new StatusMessage(
              Rp3Constants.CODES_MSG.STATUS_MSG_LEVEL_METHOD,
              MsgConstants.UNPE.STATUS_MSG_WARNING_ENDTEMPLATE_RECORDS_EMPTY,
              new ArrayList<String>(),
              Rp3Constants.CODES_MSG.STATUS_MSG_LEVEL_WARNING);
      inputDto.getStatusMessagingList().add(statusMessage);
      res = false;
    }

    return res;
  }