public boolean createTable() {
    List<String> databaseCreationSqlStatements = new ArrayList<>();

    if (DatabaseConfiguration.getType() == DatabaseConfiguration.MYSQL) {
      databaseCreationSqlStatements.add(NotificationGroupsSql.CreateTable_NotificationGroups_MySQL);
    } else {
      databaseCreationSqlStatements.add(NotificationGroupsSql.CreateTable_NotificationGroups_Derby);
      databaseCreationSqlStatements.add(
          NotificationGroupsSql.CreateIndex_NotificationGroups_PrimaryKey);
    }

    databaseCreationSqlStatements.add(
        NotificationGroupsSql.CreateIndex_NotificationGroups_Unique_Name);
    databaseCreationSqlStatements.add(
        NotificationGroupsSql.CreateIndex_NotificationGroups_Unique_UppercaseName);

    return createTable(databaseCreationSqlStatements);
  }
  public JSONObject getNotificationGroups(int offset, int pageSize) {
    logger.debug("getNotificationGroups");
    List<Object> parametersList = new ArrayList<>(2);

    JSONArray notificationGroupsList = new JSONArray();
    JSONObject notificationGroupsJson = new JSONObject();
    int alertsCount = 0;

    try {
      if (!isConnectionValid()) {
        return null;
      }

      if ((offset == 0) && (pageSize == 0)) {
        notificationGroupsJson.put("notificationgroups", notificationGroupsList);
        notificationGroupsJson.put("count", alertsCount);
        return notificationGroupsJson;
      }

      parametersList.add(offset);
      parametersList.add(pageSize);

      if (DatabaseConfiguration.getType() == DatabaseConfiguration.MYSQL) {
        databaseInterface_.createPreparedStatement(
            NotificationGroupsSql.Select_NotificationGroups_ByPageNumberAndPageSize_MySQL,
            pageSize);
      } else {
        databaseInterface_.createPreparedStatement(
            NotificationGroupsSql.Select_NotificationGroups_ByPageNumberAndPageSize_Derby,
            pageSize);
      }
      databaseInterface_.addPreparedStatementParameters(parametersList);

      databaseInterface_.executePreparedStatement();

      if (!databaseInterface_.isResultSetValid()) {
        logger.debug("Invalid resultset");
        return null;
      }

      ResultSet resultSet = databaseInterface_.getResults();

      while (resultSet.next()) {
        JSONObject alert = new JSONObject();
        alert.put("name", resultSet.getString("NAME"));
        alert.put("id", resultSet.getString("ID"));
        notificationGroupsList.add(alert);
        alertsCount++;
      }

      notificationGroupsJson.put("notificationgroups", notificationGroupsList);
      notificationGroupsJson.put("count", alertsCount);

      return notificationGroupsJson;
    } catch (Exception e) {
      logger.error(e.toString() + System.lineSeparator() + StackTrace.getStringFromStackTrace(e));
      return null;
    } finally {
      databaseInterface_.cleanupAutomatic();
    }
  }