edu.sdsc.grid.io
Class MetaDataSet

java.lang.Object
  extended by edu.sdsc.grid.io.MetaDataSet
All Implemented Interfaces:
GeneralMetaData, StandardMetaData
Direct Known Subclasses:
IRODSMetaDataSet, SRBMetaDataSet

public abstract class MetaDataSet
extends java.lang.Object
implements GeneralMetaData

A "Meta data group" is a group of meta data fields. Each MetaDataGroup class includes documentation and introspection methods that describe the group as a whole, the list of fields in the group, a description for those fields, the data types for those fields, and the expected field values.

Each subclass has a constructor. None of the constructors are ever public. Leaf classes in the class tree have private constructors, while the rest are protected. The constructors are called by a static initializer method for each class and are strictly used to create a single object for the class that is passed to the MetaDataGroup parent class to register it in a master list. That object also should be saved by the child class and will be passed to constructors for condition and select objects (so that generic handlers of those objects can get back to the metadata group).

Each of the subclasses group together meta data for a specific purpose. All of the SRB meta data groups are subclassed off of SRBMetaData. The subclasses may add methods, but most will only implement the required methods.

Some meta groups are standard regardless of implementation. To handle standard metadata, we defined interfaces that are implemented by protocol-specific metadata groups. The GeneralMetaData interface contract is that the implementor supports meta data we might find for any file system, such as:

An implementation specific class, such as SRBGeneralMetaData must support these fields, but also may support further general metadata fields, such as:




 Meta data groups
 ------------------------------------------------------------------------
 Interfaces
 ----------
  StandardMetaData
   |
   +-->GeneralMetaData
   |
   +-->DublinCoreMetaData
   |
   +-->UserMetaData


Field Summary
static java.lang.String GROUP_ANNOTATIONS
          Group name for metadata relating to Annotations attributes.
static java.lang.String GROUP_AUDIT
          Group name for metadata relating to Audit attributes.
static java.lang.String GROUP_AUTHENTICATION
          Group name for metadata relating to Authentication attributes.
static java.lang.String GROUP_AUTHORIZATION
          Group name for metadata relating to Authorization attributes.
static java.lang.String GROUP_COMPOUND_RESOURCE
          Group name for metadata relating to Compound resource attributes.
static java.lang.String GROUP_CONTAINER
          Group name for metadata relating to Container attributes.
static java.lang.String GROUP_DATA
          Group name for metadata relating to File/Dataset attributes.
static java.lang.String GROUP_DEFINABLE_METADATA
          Group name for metadata relating to Definable metadata attributes.
static java.lang.String GROUP_DIRECTORY
          Group name for metadata relating to Directory/Collection attributes.
static java.lang.String GROUP_DUBLIN_CORE
          Group name for metadata relating to Dublin Core attributes.
static java.lang.String GROUP_EXTENSIBLE
          Group name for metadata relating to Extensible metadata attributes.
static java.lang.String GROUP_GUID
          Group name for metadata relating to GUID attributes.
static java.lang.String GROUP_INDEX
          Group name for metadata relating to Index attributes.
static java.lang.String GROUP_LOGICAL_RESOURCE
          Group name for metadata relating to Logical resource attributes.
static java.lang.String GROUP_METHOD
          Group name for metadata relating to Method attributes.
static java.lang.String GROUP_PHYSICAL_RESOURCE
          Group name for metadata relating to Physical resource attributes.
static java.lang.String GROUP_RESOURCE
          Group name for metadata relating to resource attributes.
static java.lang.String GROUP_SERVER
          Group name for metadata relating to Server attributes.
static java.lang.String GROUP_STRUCTURED_METADATA
          Group name for metadata relating to Structured Metadata attributes.
static java.lang.String GROUP_TICKET
          Group name for metadata relating to Ticket attributes.
static java.lang.String GROUP_UNDEFINED
          Group name for metadata relating to Undefined attributes.
static java.lang.String GROUP_USER
          Group name for metadata relating to User attributes.
static java.lang.String GROUP_USER_GROUP
          Group name for metadata relating to User group attributes.
static java.lang.String GROUP_ZONE
          Group name for metadata relating to Zone attributes.
protected static java.util.HashMap metaDataFields
           
protected static java.util.HashMap metaDataGroups
           
 
Fields inherited from interface edu.sdsc.grid.io.GeneralMetaData
ACCESS_CONSTRAINT, CREATION_DATE, FILE_GROUP_NAME, MODIFICATION_DATE, OWNER, SIZE
 
Fields inherited from interface edu.sdsc.grid.io.StandardMetaData
DIRECTORY_NAME, FILE_NAME
 
Constructor Summary
MetaDataSet()
           
 
Method Summary
protected static void add(MetaDataGroup group)
           
static MetaDataField getField(java.lang.String fieldName)
          Returns the MetaDataField object associated with this fieldName string.
static MetaDataGroup[] getMetaDataGroups()
          Return all the various metadata groups.
static MetaDataGroup[] getMetaDataGroups(boolean sort)
           
static MetaDataCondition[] mergeConditions(MetaDataCondition[] condition1, MetaDataCondition[] condition2)
          The mergeConditons( ...
static MetaDataCondition[] mergeConditions(MetaDataCondition condition1, MetaDataCondition condition2)
          The mergeConditons( ...
static MetaDataCondition[] mergeConditions(MetaDataCondition condition1, MetaDataCondition[] condition2)
          The mergeConditons( ...
static MetaDataSelect[] mergeSelects(MetaDataSelect[] select1, MetaDataSelect[] select2)
          The mergeSelects( ...
static MetaDataSelect[] mergeSelects(MetaDataSelect select1, MetaDataSelect select2)
          The mergeSelects( ...
static MetaDataSelect[] mergeSelects(MetaDataSelect select1, MetaDataSelect[] select2)
          The mergeSelects( ...
static MetaDataCondition newCondition(java.lang.String fieldName, int operator, float value)
          Returns a new condition object that requests that a given field match/not match a given value.
static MetaDataCondition newCondition(java.lang.String fieldName, int operator, float[] valueList)
          Returns a new condition object that requests that a given field match/not match the given values.
static MetaDataCondition newCondition(java.lang.String fieldName, int operator, float value1, float value2)
          Returns a new condition object that requests that a given field match/not match a given value range.
static MetaDataCondition newCondition(java.lang.String fieldName, int operator, int value)
          Returns a new condition object that requests that a given field match/not match a given value.
static MetaDataCondition newCondition(java.lang.String fieldName, int operator, int[] valueList)
          Returns a new condition object that requests that a given field match/not match the given values.
static MetaDataCondition newCondition(java.lang.String fieldName, int operator, int value1, int value2)
          Returns a new condition object that requests that a given field match/not match a given value range.
static MetaDataCondition newCondition(java.lang.String fieldName, int operator, MetaDataTable table)
          Returns a new condition object that requests that a given field match the given values as described by the MetaDataTable.
static MetaDataCondition newCondition(java.lang.String fieldName, int operator, java.lang.String value)
          Returns a new condition object that requests that a given field match/not match a given value.
static MetaDataCondition newCondition(java.lang.String fieldName, int operator, java.lang.String[] valueList)
          Returns a new condition object that requests that a given field match/not match the given values.
static MetaDataCondition newCondition(java.lang.String fieldName, int operator, java.lang.String value1, java.lang.String value2)
          Returns a new condition object that requests that a given field match/not match a given value range.
static MetaDataCondition newCondition(java.lang.String fieldName, MetaDataTable table)
          Returns a new condition object that requests that a given field match the given values as described by the MetaDataTable.
static MetaDataSelect[] newSelection(MetaDataGroup group)
          Returns a new array of selection objects that request that all fields in this group be included in returned records from a query.
static MetaDataSelect newSelection(java.lang.String fieldName)
          Returns a new selection object that requests that records returned by a query include this field.
static MetaDataSelect[] newSelection(java.lang.String[] fieldNames)
          Returns a new array of selection objects that request that all fields in this group be included in returned records from a query.
static MetaDataSelect newSelection(java.lang.String fieldName, int operation)
          Returns a new selection object that requests a specific operation be performed on query results involving this field.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

GROUP_DIRECTORY

public static final java.lang.String GROUP_DIRECTORY
Group name for metadata relating to Directory/Collection attributes.

See Also:
Constant Field Values

GROUP_DATA

public static final java.lang.String GROUP_DATA
Group name for metadata relating to File/Dataset attributes.

See Also:
Constant Field Values

GROUP_USER

public static final java.lang.String GROUP_USER
Group name for metadata relating to User attributes.

See Also:
Constant Field Values

GROUP_RESOURCE

public static final java.lang.String GROUP_RESOURCE
Group name for metadata relating to resource attributes.

See Also:
Constant Field Values

GROUP_ZONE

public static final java.lang.String GROUP_ZONE
Group name for metadata relating to Zone attributes.

See Also:
Constant Field Values

GROUP_PHYSICAL_RESOURCE

public static final java.lang.String GROUP_PHYSICAL_RESOURCE
Group name for metadata relating to Physical resource attributes.

See Also:
Constant Field Values

GROUP_LOGICAL_RESOURCE

public static final java.lang.String GROUP_LOGICAL_RESOURCE
Group name for metadata relating to Logical resource attributes.

See Also:
Constant Field Values

GROUP_SERVER

public static final java.lang.String GROUP_SERVER
Group name for metadata relating to Server attributes.

See Also:
Constant Field Values

GROUP_USER_GROUP

public static final java.lang.String GROUP_USER_GROUP
Group name for metadata relating to User group attributes.

See Also:
Constant Field Values

GROUP_AUTHENTICATION

public static final java.lang.String GROUP_AUTHENTICATION
Group name for metadata relating to Authentication attributes.

See Also:
Constant Field Values

GROUP_AUTHORIZATION

public static final java.lang.String GROUP_AUTHORIZATION
Group name for metadata relating to Authorization attributes.

See Also:
Constant Field Values

GROUP_AUDIT

public static final java.lang.String GROUP_AUDIT
Group name for metadata relating to Audit attributes.

See Also:
Constant Field Values

GROUP_TICKET

public static final java.lang.String GROUP_TICKET
Group name for metadata relating to Ticket attributes.

See Also:
Constant Field Values

GROUP_CONTAINER

public static final java.lang.String GROUP_CONTAINER
Group name for metadata relating to Container attributes.

See Also:
Constant Field Values

GROUP_ANNOTATIONS

public static final java.lang.String GROUP_ANNOTATIONS
Group name for metadata relating to Annotations attributes.

See Also:
Constant Field Values

GROUP_COMPOUND_RESOURCE

public static final java.lang.String GROUP_COMPOUND_RESOURCE
Group name for metadata relating to Compound resource attributes.

See Also:
Constant Field Values

GROUP_DUBLIN_CORE

public static final java.lang.String GROUP_DUBLIN_CORE
Group name for metadata relating to Dublin Core attributes.

See Also:
Constant Field Values

GROUP_DEFINABLE_METADATA

public static final java.lang.String GROUP_DEFINABLE_METADATA
Group name for metadata relating to Definable metadata attributes.

See Also:
Constant Field Values

GROUP_INDEX

public static final java.lang.String GROUP_INDEX
Group name for metadata relating to Index attributes.

See Also:
Constant Field Values

GROUP_STRUCTURED_METADATA

public static final java.lang.String GROUP_STRUCTURED_METADATA
Group name for metadata relating to Structured Metadata attributes.

See Also:
Constant Field Values

GROUP_METHOD

public static final java.lang.String GROUP_METHOD
Group name for metadata relating to Method attributes.

See Also:
Constant Field Values

GROUP_GUID

public static final java.lang.String GROUP_GUID
Group name for metadata relating to GUID attributes.

See Also:
Constant Field Values

GROUP_UNDEFINED

public static final java.lang.String GROUP_UNDEFINED
Group name for metadata relating to Undefined attributes.

See Also:
Constant Field Values

GROUP_EXTENSIBLE

public static final java.lang.String GROUP_EXTENSIBLE
Group name for metadata relating to Extensible metadata attributes.

See Also:
Constant Field Values

metaDataGroups

protected static java.util.HashMap metaDataGroups

metaDataFields

protected static java.util.HashMap metaDataFields
Constructor Detail

MetaDataSet

public MetaDataSet()
Method Detail

add

protected static void add(MetaDataGroup group)

getMetaDataGroups

public static MetaDataGroup[] getMetaDataGroups()
Return all the various metadata groups.


getMetaDataGroups

public static MetaDataGroup[] getMetaDataGroups(boolean sort)
Parameters:
sort - if true, sort alphabetically by name.
Returns:
all the various metadata groups.
See Also:
MetaDataGroup.compareTo( Object )

getField

public static MetaDataField getField(java.lang.String fieldName)
Returns the MetaDataField object associated with this fieldName string. If there is no match a null value is returned.


newCondition

public static MetaDataCondition newCondition(java.lang.String fieldName,
                                             int operator,
                                             java.lang.String value)
Returns a new condition object that requests that a given field match/not match a given value. Valid MetaDataCondition operator codes are: =, <>, >, <, like, not like, sounds like. If supported by the filesystem being queried.


newCondition

public static MetaDataCondition newCondition(java.lang.String fieldName,
                                             int operator,
                                             float value)
Returns a new condition object that requests that a given field match/not match a given value. Valid MetaDataCondition operator codes are: =, <>, >, <, like, not like, sounds like. If supported by the filesystem being queried.


newCondition

public static MetaDataCondition newCondition(java.lang.String fieldName,
                                             int operator,
                                             int value)
Returns a new condition object that requests that a given field match/not match a given value. Valid MetaDataCondition operator codes are: =, <>, >, <, like, not like, sounds like. If supported by the filesystem being queried.


newCondition

public static MetaDataCondition newCondition(java.lang.String fieldName,
                                             int operator,
                                             int value1,
                                             int value2)
Returns a new condition object that requests that a given field match/not match a given value range. Valid operator codes are: MetaDataCondition.BETWEEN and MetaDataCondition.NOT_BETWEEN If supported by the filesystem being queried.


newCondition

public static MetaDataCondition newCondition(java.lang.String fieldName,
                                             int operator,
                                             float value1,
                                             float value2)
Returns a new condition object that requests that a given field match/not match a given value range. Valid operator codes are: MetaDataCondition.BETWEEN and MetaDataCondition.NOT_BETWEEN If supported by the filesystem being queried.


newCondition

public static MetaDataCondition newCondition(java.lang.String fieldName,
                                             int operator,
                                             java.lang.String value1,
                                             java.lang.String value2)
Returns a new condition object that requests that a given field match/not match a given value range. Valid operator codes are: MetaDataCondition.BETWEEN and MetaDataCondition.NOT_BETWEEN If supported by the filesystem being queried.


newCondition

public static MetaDataCondition newCondition(java.lang.String fieldName,
                                             int operator,
                                             int[] valueList)
Returns a new condition object that requests that a given field match/not match the given values. Valid operator codes are: MetaDataCondition.IN and MetaDataCondition.NOT_IN If supported by the filesystem being queried.


newCondition

public static MetaDataCondition newCondition(java.lang.String fieldName,
                                             int operator,
                                             float[] valueList)
Returns a new condition object that requests that a given field match/not match the given values. Valid operator codes are: MetaDataCondition.IN and MetaDataCondition.NOT_IN If supported by the filesystem being queried.


newCondition

public static MetaDataCondition newCondition(java.lang.String fieldName,
                                             int operator,
                                             java.lang.String[] valueList)
Returns a new condition object that requests that a given field match/not match the given values. Valid operator codes are: MetaDataCondition.IN and MetaDataCondition.NOT_IN If supported by the filesystem being queried.


newCondition

public static MetaDataCondition newCondition(java.lang.String fieldName,
                                             MetaDataTable table)
Returns a new condition object that requests that a given field match the given values as described by the MetaDataTable. If supported by the filesystem being queried.


newCondition

public static MetaDataCondition newCondition(java.lang.String fieldName,
                                             int operator,
                                             MetaDataTable table)
Returns a new condition object that requests that a given field match the given values as described by the MetaDataTable. If supported by the filesystem being queried.


mergeConditions

public static MetaDataCondition[] mergeConditions(MetaDataCondition condition1,
                                                  MetaDataCondition condition2)
The mergeConditons( ... ) methods are conveniences to creates a single MetaDataCondition array from two (or more) conditions.


mergeConditions

public static MetaDataCondition[] mergeConditions(MetaDataCondition condition1,
                                                  MetaDataCondition[] condition2)
The mergeConditons( ... ) methods are conveniences to creates a single MetaDataCondition array from two (or more) conditions.


mergeConditions

public static MetaDataCondition[] mergeConditions(MetaDataCondition[] condition1,
                                                  MetaDataCondition[] condition2)
The mergeConditons( ... ) methods are conveniences to creates a single MetaDataCondition array from two (or more) conditions.


newSelection

public static MetaDataSelect newSelection(java.lang.String fieldName)
Returns a new selection object that requests that records returned by a query include this field.


newSelection

public static MetaDataSelect[] newSelection(java.lang.String[] fieldNames)
Returns a new array of selection objects that request that all fields in this group be included in returned records from a query.


newSelection

public static MetaDataSelect newSelection(java.lang.String fieldName,
                                          int operation)
Returns a new selection object that requests a specific operation be performed on query results involving this field. Operations include:


newSelection

public static MetaDataSelect[] newSelection(MetaDataGroup group)
Returns a new array of selection objects that request that all fields in this group be included in returned records from a query.


mergeSelects

public static MetaDataSelect[] mergeSelects(MetaDataSelect select1,
                                            MetaDataSelect select2)
The mergeSelects( ... ) methods are conveniences to creates a single MetaDataSelect array from two (or more) selects.


mergeSelects

public static MetaDataSelect[] mergeSelects(MetaDataSelect select1,
                                            MetaDataSelect[] select2)
The mergeSelects( ... ) methods are conveniences to creates a single MetaDataSelect array from two (or more) selects.


mergeSelects

public static MetaDataSelect[] mergeSelects(MetaDataSelect[] select1,
                                            MetaDataSelect[] select2)
The mergeSelects( ... ) methods are conveniences to creates a single MetaDataSelect array from two (or more) selects.