public JSONArray validateFields(MultivaluedMap<String, String> parameters) {
    JSONArray validationErrors = new JSONArray();

    // Dataset Validation ---------------------------------------------
    String datasetMetadata = parameters.get("meta").get(0);

    if (datasetMetadata != null) {
      datasetMetadata = URLDecoder.decode(datasetMetadata);
      try {
        if ((!datasetMetadata.equals("")) && (!datasetMetadata.equals("[]"))) {
          JSONObject metadataObject = JSONUtils.toJSONObject(datasetMetadata);
          JSONArray columnsMetadataArray = metadataObject.getJSONArray("columns");

          for (int j = 0; j < columnsMetadataArray.length(); j++) {
            JSONObject columnJsonObject = columnsMetadataArray.getJSONObject(j);
            String columnName = columnJsonObject.getString("column");
            if (columnJsonObject.getString("pname").equalsIgnoreCase("type")) {
              if (columnName == null) {
                validationErrors.put(
                    new JSONObject("{message: 'Validation error: Column name cannot be null'}"));
              } /* else if(Pattern.compile("\\s").matcher(columnName).find()){
                	validationErrors.put(new JSONObject("{message: 'Validation error: Space character not allowed for column name "+ columnName + "'}"));
                }else if(Pattern.compile("[ÀÈÌÒÙàèìòùÁÉÍÓÚÝáéíóúýÂÊÎÔÛâêîôûÃÑÕãñõÄËÏÖÜŸäëïöüŸ¡¿çÇŒœßØøÅåÆæÞþÐðÐð'.,&#@:?!()$\\/]").matcher(columnName).find()){
                	validationErrors.put(new JSONObject("{message: 'Validation error: Special characters not allowed for column name "+ columnName + "'}"));
                } */
            }
            String propertyName = columnJsonObject.getString("pname");
            if (propertyName == null) {
              validationErrors.put(
                  new JSONObject("{message: 'Validation error: Property name cannot be null'}"));
            } /* else if( Pattern.compile("\\s").matcher(propertyName).find()){
              	validationErrors.put(new JSONObject("{message: 'Validation error: Space character not allowed for Property name "+ propertyName + "'}"));
              }else if( Pattern.compile("[ÀÈÌÒÙàèìòùÁÉÍÓÚÝáéíóúýÂÊÎÔÛâêîôûÃÑÕãñõÄËÏÖÜŸäëïöüŸ¡¿çÇŒœßØøÅåÆæÞþÐðÐð'.,&#@:?!()$\\/]").matcher(propertyName).find()){
              	validationErrors.put(new JSONObject("{message: 'Validation error: Special characters not allowed for Property name "+ propertyName + "'}"));
              } */
            String propertyValue = columnJsonObject.getString("pvalue");
          }
        }

      } catch (JsonMappingException e1) {
        logger.error(e1.getMessage());
      } catch (JsonParseException e1) {
        logger.error(e1.getMessage());
      } catch (JSONException e1) {
        logger.error(e1.getMessage());
      } catch (IOException e1) {
        logger.error(e1.getMessage());
      }
    }
    return validationErrors;
  }
  // returns true if the dataset is geospazial
  public static boolean hasGeoHierarchy(String meta)
      throws JsonMappingException, JsonParseException, JSONException, IOException {

    JSONObject metadataObject = JSONUtils.toJSONObject(meta);
    if (metadataObject == null) return false;

    JSONArray columnsMetadataArray = metadataObject.getJSONArray("columns");

    for (int j = 0; j < columnsMetadataArray.length(); j++) {
      JSONObject columnJsonObject = columnsMetadataArray.getJSONObject(j);
      //				String columnName = columnJsonObject.getString("column");
      String propertyName = columnJsonObject.getString("pname");
      String propertyValue = columnJsonObject.getString("pvalue");

      if (propertyName.equalsIgnoreCase("hierarchy")) {
        if (propertyValue.equalsIgnoreCase("geo")) {
          return true;
        }
      }
    }
    return false;
  }