Package org.eigenbase.resgen

## Class ResourceDefinition

- java.lang.Object
- - org.eigenbase.resgen.ResourceDefinition

    public class ResourceDefinition
    extends java.lang.Object

Definition of a resource such as a parameterized message or exception.

A resource is identified within a `ResourceBundle` by a text key, and has a message in its base locale (which is usually US-English (en_US)). It may also have a set of properties, which are represented as name-value pairs.

A resource definition is immutable.

Since:
  19 September, 2005
Version:
  $Id: //open/util/resgen/src/org/eigenbase/resgen/ResourceDefinition.java#4 $
Author:
  jhyde

### Field Summary

Fields
`java.lang.String` `baseMessage`
`java.lang.String` `key`
`static int` `TYPE_DATE`
`static int` `TYPE_NUMBER`
`static int` `TYPE_STRING`
`static int` `TYPE_TIME`
`static int` `TYPE_UNKNOWN`

### Constructor Summary

Constructors
`ResourceDefinition​(java.lang.String key, java.lang.String baseMessage)` Creates a resource definition with no properties.
`ResourceDefinition​(java.lang.String key, java.lang.String baseMessage, java.lang.String[] props)` Creates a resource definition.

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`protected static int` `getArgType​(int i, java.lang.String message)` Returns the type of the `i`th argument inside a message, or `TYPE_UNKNOWN` if not found.
`java.lang.String[]` `getArgTypes()` Returns the types of arguments.
`protected static java.lang.String[]` `getArgTypes​(java.lang.String message, java.lang.String[] typeNames)` Parses a message for the arguments inside it, and returns an array with the types of those arguments.
`protected static java.lang.String[]` `getArgTypesByHand​(java.lang.String message, java.lang.String[] typeNames)`
`java.lang.String` `getBaseMessage()` Returns this resource definition's message in the base locale.
`java.lang.String` `getKey()` Returns this resource definition's key.
`java.util.Properties` `getProperties()` Returns the properties of this resource definition.
`ResourceInstance` `instantiate​(java.util.ResourceBundle bundle, java.lang.Object[] args)` Creates an instance of this definition with a set of parameters.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### key

    public final java.lang.String key

#### baseMessage

    public final java.lang.String baseMessage

#### TYPE_UNKNOWN

    public static final int TYPE_UNKNOWN

See Also:
  Constant Field Values

#### TYPE_STRING

    public static final int TYPE_STRING

See Also:
  Constant Field Values

#### TYPE_NUMBER

    public static final int TYPE_NUMBER

See Also:
  Constant Field Values

#### TYPE_DATE

    public static final int TYPE_DATE

See Also:
  Constant Field Values

#### TYPE_TIME

    public static final int TYPE_TIME

See Also:
  Constant Field Values

### Constructor Detail

#### ResourceDefinition

    public ResourceDefinition​(java.lang.String key,
                              java.lang.String baseMessage)

Creates a resource definition with no properties.

Parameters:
  `key` - Unique name for this resource definition.
  `baseMessage` - Message for this resource definition in the base locale.

#### ResourceDefinition

    public ResourceDefinition​(java.lang.String key,
                              java.lang.String baseMessage,
                              java.lang.String[] props)

Creates a resource definition.

Parameters:
  `key` - Unique name for this resource definition.
  `baseMessage` - Message for this resource definition in the base locale.
  `props` - Array of property name/value pairs. `null` means the same as an empty array.

### Method Detail

#### getKey

    public java.lang.String getKey()

Returns this resource definition's key.

#### getBaseMessage

    public java.lang.String getBaseMessage()

Returns this resource definition's message in the base locale. (To find the message in another locale, you will need to load a resource bundle for that locale.)

#### getProperties

    public java.util.Properties getProperties()

Returns the properties of this resource definition.

#### getArgTypes

    public java.lang.String[] getArgTypes()

Returns the types of arguments.

#### instantiate

    public ResourceInstance instantiate​(java.util.ResourceBundle bundle,
                                        java.lang.Object[] args)

Creates an instance of this definition with a set of parameters. This is a factory method, which may be overridden by a derived class.

Parameters:
  `bundle` - Resource bundle the resource instance will belong to (This contains the locale, among other things.)
  `args` - Arguments to populate the message's parameters. The arguments must be consistent in number and type with the results of `getArgTypes()`.

#### getArgTypes

    protected static java.lang.String[] getArgTypes​(java.lang.String message,
                                                    java.lang.String[] typeNames)

Parses a message for the arguments inside it, and returns an array with the types of those arguments.

For example, `getArgTypes("I bought {0,number} {2}s", new String[] {"string", "number", "date", "time"})` yields {"number", null, "string"}. Note the null corresponding to missing message #1.

Parameters:
  `message` - Message to be parsed.
  `typeNames` - Strings to return for types.
Returns:
  Array of type names

#### getArgTypesByHand

    protected static java.lang.String[] getArgTypesByHand​(java.lang.String message,
                                                          java.lang.String[] typeNames)

#### getArgType

    protected static int getArgType​(int i,
                                    java.lang.String message)

Returns the type of the `i`th argument inside a message, or `TYPE_UNKNOWN` if not found.

Parameters:
  `i` - Ordinal of argument
  `message` - Message to parse
Returns:
  Type code (`TYPE_STRING` etc.)