private boolean columnChanged(
      final String key,
      final String keyValue,
      final String colType,
      final GenericResultsetData grs) {

    List<String> columnValues = grs.getData().get(0).getRow();

    String columnValue = null;
    for (int i = 0; i < grs.getColumnHeaders().size(); i++) {

      if (key.equals(grs.getColumnHeaders().get(i).getColumnName())) {
        columnValue = columnValues.get(i);

        if (notTheSame(columnValue, keyValue, colType)) {
          return true;
        }
        return false;
      }
    }

    throw new PlatformDataIntegrityException(
        "error.msg.invalid.columnName", "Parameter Column Name: " + key + " not found");
  }
  private Map<String, Object> getAffectedAndChangedColumns(
      final GenericResultsetData grs, final Map<String, String> queryParams, final String fkName) {

    final Map<String, String> affectedColumns =
        getAffectedColumns(grs.getColumnHeaders(), queryParams, fkName);
    final Map<String, Object> affectedAndChangedColumns = new HashMap<String, Object>();

    for (final String key : affectedColumns.keySet()) {
      final String columnValue = affectedColumns.get(key);
      final String colType = grs.getColTypeOfColumnNamed(key);
      if (columnChanged(key, columnValue, colType, grs)) {
        affectedAndChangedColumns.put(key, columnValue);
      }
    }

    return affectedAndChangedColumns;
  }