# Class CgiQuery

java.lang.Object
uk.ac.starlink.util.CgiQuery

public class CgiQuery extends Object
Utility class for constructing CGI query strings. The name is somewhat out of date or misleading; the intention is to provide URLs with a query part that can be interpreted as an application/x-www-form-urlencoded string.

Since:
  1 Oct 2004
Author:
  Mark Taylor (Starlink)

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`QUERY_CHARS`
Legal characters for query part of a URI - see RFC 2396.

## Constructor Summary

Constructors
Constructor
Description
`CgiQuery(String base)`
Constructs a CGI query.

## Method Summary

Modifier and Type
Method
Description
`CgiQuery`
`addArgument(String name, double value)`
Adds a floating point argument to this query.
`CgiQuery`
`addArgument(String name, float value)`
Adds a single-precision floating point argument to this query.
`CgiQuery`
`addArgument(String name, long value)`
Adds an integer argument to this query.
`CgiQuery`
`addArgument(String name, String value)`
Adds a string argument to this query.
`void`
`allowUnencodedChars(String extraChars)`
Provides a list of characters that will be passed as parameter or value content through without percent-encoding.
`boolean`
`equals(Object o)`
`static String`
`formatDouble(double value)`
Formats a double precision value.
`static String`
`formatDouble(double value, int nsf, int maxleng)`
Formats a floating point value.
`static String`
`formatFloat(float value)`
Formats a single precision value.
`int`
`hashCode()`
`String`
`toString()`
Returns this query as a string.
`URL`
`toURL()`
Returns this query as a URL.

### Methods inherited from class Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

## Field Details

### QUERY_CHARS

public static final String QUERY_CHARS
Legal characters for query part of a URI - see RFC 2396.

See Also:
  - Constant Field Values

## Constructor Details

### CgiQuery

public CgiQuery(String base)
Constructs a CGI query. The submitted `base` argument may optionally be a partially-formed CGI-query, that is, one ending in a '?' and zero or more '&name=value' pairs.

Parameters:
  `base` - base part of the CGI URL
Throws:
  `IllegalArgumentException` - if `base` is not a legal base URL

## Method Details

### allowUnencodedChars

public void allowUnencodedChars(String extraChars)
Provides a list of characters that will be passed as parameter or value content through without percent-encoding. The default behaviour is quite conservative, but in many cases this can be relaxed without causing trouble.

Parameters:
  `extraChars` - string each of whose characters will not be percent-encoded

### addArgument

public CgiQuery addArgument(String name, long value)
Adds an integer argument to this query. For convenience the return value is this query.

Parameters:
  `name` - argument name
  `value` - value for the argument
Returns:
  this query

### addArgument

public CgiQuery addArgument(String name, double value)
Adds a floating point argument to this query. For convenience the return value is this query.

Parameters:
  `name` - argument name
  `value` - value for the argument
Returns:
  this query

### addArgument

public CgiQuery addArgument(String name, float value)
Adds a single-precision floating point argument to this query. For convenience the return value is this query.

Parameters:
  `name` - argument name
  `value` - value for the argument
Returns:
  this query

### addArgument

public CgiQuery addArgument(String name, String value)
Adds a string argument to this query. For convenience the return value is this query.

Parameters:
  `name` - argument name
  `value` - unescaped value for the argument
Returns:
  this query

### toURL

public URL toURL()
Returns this query as a URL.

Returns:
  query URL

### equals

public boolean equals(Object o)

Overrides:
  `equals` in class `Object`

### hashCode

public int hashCode()

Overrides:
  `hashCode` in class `Object`

### toString

public String toString()
Returns this query as a string.

Overrides:
  `toString` in class `Object`
Returns:
  query string

### formatDouble

public static String formatDouble(double value)
Formats a double precision value.

Parameters:
  `value` - value
Returns:
  string representation

### formatFloat

public static String formatFloat(float value)
Formats a single precision value.

Parameters:
  `value` - value
Returns:
  string representation

### formatDouble

public static String formatDouble(double value, int nsf, int maxleng)
Formats a floating point value. It will be done in fixed point format if it can be done within the given number of characters, else exponential notation.

Parameters:
  `value` - value
  `nsf` - number of significant figures
  `maxleng` - maximum length of string - if longer than this, will return to exponential notation
Returns:
  fixed format string representation