## org.autoplot.hapiserver.Util

helpful functions.

## Util( )

## HAPI_SERVER_HOME_PROPERTY

This should point to the name of the directory containing HAPI configuration. This directory should contain catalog.json, capabilities.json and a subdirectory "info" which contains files with the name <ID>.json, each containing the info response. Note these should also contain a tag "x_uri" which is the Autoplot URI that serves this data.

## csvSplit

csvSplit( String line, int nf ) → String[]

split, but not when comma is within quotes.

### Parameters

line - for example 'a,b,"c,d"'
nf - number of fields, or -1 for no constraint

### Returns:

['a','b','c,d']
[search for examples] [view on GitHub] [view on old javadoc]

## fileSystemSafeName

fileSystemSafeName( String s ) → String

convert IDs and NAMEs into safe names which will work on all platforms. If the name is modified, it will start with an underscore (_).

- poolTemperature -> poolTemperature
- Iowa City Conditions -> _Iowa+City+Conditions

  ### Parameters

  s - a String

  ### Returns:

  a String
  [search for examples] [view on GitHub] [view on old javadoc]

  ## getDurationForHumans

  getDurationForHumans( long dt ) → String

  return the duration in a easily-human-consumable form.

  ### Parameters

  dt - the duration in milliseconds.

  ### Returns:

  a duration like "2.6 hours"
  [search for examples] [view on GitHub] [view on old javadoc]

  ## getHapiHome

  getHapiHome( ) → java.io.File

  return the root of the HAPI server.

  ### Returns:

  the root of the HAPI server.
  [search for examples] [view on GitHub] [view on old javadoc]

  ## getNumberOfElements

  getNumberOfElements( JSONObject info ) → int[]

  return the total number of elements of each parameter.

  ### Parameters

  info - the info

  ### Returns:

  an int array with the number of elements in each parameter.
  [search for examples] [view on GitHub] [view on old javadoc]

  ## hapiVersion

  hapiVersion( ) → String

  return the HAPI protocol version.

  ### Returns:

  the HAPI protocol version.
  [search for examples] [view on GitHub] [view on old javadoc]

  ## isTrustedClient

  isTrustedClient( HttpServletRequest request ) → boolean

  return true if the client is trusted and additional information about the server for debugging can be included in the response.

  ### Parameters

  request - a HttpServletRequest

  ### Returns:

  a boolean
  [search for examples] [view on GitHub] [view on old javadoc]

  ## main

  main( String[] args ) → void

  ### Parameters

  args - a java.lang.String[]

  ### Returns:

  void (returns nothing)
  [search for examples] [view on GitHub] [view on old javadoc]

  ## maybeInitialize

  maybeInitialize( ServletContext context ) → void

  if HAPI_HOME has not been set, then set it.

  ### Parameters

  context - a ServletContext

  ### Returns:

  void (returns nothing)
  [search for examples] [view on GitHub] [view on old javadoc]

  ## raiseBadId

  raiseBadId( String id, HttpServletResponse response, java.io.PrintWriter out ) → void

  send a "bad id" response to the client.

  ### Parameters

  id - the id.
  response - the response object
  out - the print writer for the response object.

  ### Returns:

  void (returns nothing)
  [search for examples] [view on GitHub] [view on old javadoc]

  ## raiseMisconfiguration

  raiseMisconfiguration( String id, java.lang.Exception ex, HttpServletResponse response, java.io.PrintWriter out ) → void

  send a "bad id" response to the client.

  ### Parameters

  id - the id.
  ex - an exception
  response - the response object
  out - the print writer for the response object.

  ### Returns:

  void (returns nothing)
  [search for examples] [view on GitHub] [view on old javadoc]

  ## serverVersion

  serverVersion( ) → String

  return the server implementation version.

  ### Returns:

  the server implementation version.
  [search for examples] [view on GitHub] [view on old javadoc]

  ## setHapiHome

  setHapiHome( java.io.File f ) → void

  ### Parameters

  f - a File

  ### Returns:

  void (returns nothing)
  [search for examples] [view on GitHub] [view on old javadoc]

  ## subsetParams

  subsetParams( JSONObject info, String parameters ) → JSONObject

  return a new JSONObject for the info request, with the subset of parameters.

  ### Parameters

  info - the root node of the info response.
  parameters - comma-delimited list of parameters.

  ### Returns:

  the new JSONObject, with special tag __indexmap__ showing which columns are to be included in a data response.
  [search for examples] [view on GitHub] [view on old javadoc]

  ## transfer

  transfer( java.io.InputStream src, java.io.OutputStream dest ) → void

  transfers the data from one channel to another. src and dest are closed after the operation is complete.

  ### Parameters

  src - an InputStream
  dest - an OutputStream

  ### Returns:

  void (returns nothing)
  [search for examples] [view on GitHub] [view on old javadoc]

  ## trimUTF8

  trimUTF8( byte[] bytes, int k ) → byte[]

  properly trim the byte array containing a UTF-8 String to a limit

  ### Parameters

  bytes - the bytes
  k - the number of bytes

  ### Returns:

  a byte[]
  [search for examples] [view on GitHub] [view on old javadoc]

  ## validateJSON

  validateJSON( String json ) → boolean

  return true if this is valid JSON, false otherwise, and log the exception at SEVERE.

  ### Parameters

  json - a String

  ### Returns:

  a boolean
  [search for examples] [view on GitHub] [view on old javadoc]