org.geotools.metadata
Class MetadataStandard

java.lang.Object
  extended by org.geotools.metadata.MetadataStandard

public final class MetadataStandard
extends java.lang.Object

Enumeration of some metadata standards. A standard is defined by a set of Java interfaces in a specific package or subpackages. For example the ISO 19115 standard is defined by GeoAPI interfaces in the org.opengis.metadata package and subpackages.

This class provides some methods operating on metadata instances through Java reflection. The following rules are assumed:

Since:
2.4
Version:
$Id: MetadataStandard.java 30640 2008-06-12 17:34:32Z acuster $
Author:
Martin Desruisseaux (Geomatys)

Field Summary
static MetadataStandard ISO_19111
          An instance working on ISO 19111 standard as defined by GeoAPI interfaces in the org.opengis.referencing package and subpackages.
static MetadataStandard ISO_19115
          An instance working on ISO 19115 standard as defined by GeoAPI interfaces in the org.opengis.metadata package and subpackages.
static MetadataStandard ISO_19119
          An instance working on ISO 19119 standard as defined by GeoAPI interfaces in the org.opengis.service package and subpackages.
 
Constructor Summary
MetadataStandard(java.lang.String interfacePackage)
          Creates a new instance working on implementation of interfaces defined in the specified package.
 
Method Summary
 java.util.Map<java.lang.String,java.lang.Object> asMap(java.lang.Object metadata)
          Returns a view of the specified metadata object as a map.
 javax.swing.tree.TreeModel asTree(java.lang.Object metadata)
          Returns a view of the specified metadata as a tree.
 java.lang.Class<?> getInterface(java.lang.Class<?> implementation)
          Returns the metadata interface implemented by the specified implementation class.
 int hashCode(java.lang.Object metadata)
          Computes a hash code for the specified metadata.
 void shallowCopy(java.lang.Object source, java.lang.Object target, boolean skipNulls)
          Copies all metadata from source to target.
 boolean shallowEquals(java.lang.Object metadata1, java.lang.Object metadata2, boolean skipNulls)
          Compares the two specified metadata objects.
 java.lang.String toString(java.lang.Object metadata)
          Returns a string representation of the specified metadata.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ISO_19111

public static final MetadataStandard ISO_19111
An instance working on ISO 19111 standard as defined by GeoAPI interfaces in the org.opengis.referencing package and subpackages.

Since:
2.5

ISO_19115

public static final MetadataStandard ISO_19115
An instance working on ISO 19115 standard as defined by GeoAPI interfaces in the org.opengis.metadata package and subpackages.


ISO_19119

public static final MetadataStandard ISO_19119
An instance working on ISO 19119 standard as defined by GeoAPI interfaces in the org.opengis.service package and subpackages.

Since:
2.5
Constructor Detail

MetadataStandard

public MetadataStandard(java.lang.String interfacePackage)
Creates a new instance working on implementation of interfaces defined in the specified package. For the ISO 19115 standard reflected by GeoAPI interfaces, it should be the org.opengis.metadata package.

Parameters:
interfacePackage - The root package for metadata interfaces.
Method Detail

getInterface

public java.lang.Class<?> getInterface(java.lang.Class<?> implementation)
                                throws java.lang.ClassCastException
Returns the metadata interface implemented by the specified implementation class.

Parameters:
implementation - The implementation class.
Returns:
The interface implemented by the given implementation class.
Throws:
java.lang.ClassCastException - if the specified implementation class do not implements a metadata interface of the expected package.
See Also:
AbstractMap#getInterface

asMap

public java.util.Map<java.lang.String,java.lang.Object> asMap(java.lang.Object metadata)
                                                       throws java.lang.ClassCastException
Returns a view of the specified metadata object as a map. The map is backed by the metadata object using Java reflection, so changes in the underlying metadata object are immediately reflected in the map. The keys are the property names as determined by the list of get*() methods declared in the metadata interface.

The map supports the put operations if the underlying metadata object contains #set*(...) methods.

Parameters:
metadata - The metadata object to view as a map.
Returns:
A map view over the metadata object.
Throws:
java.lang.ClassCastException - if at the metadata object don't implements a metadata interface of the expected package.
See Also:
AbstractMap#asMap

asTree

public javax.swing.tree.TreeModel asTree(java.lang.Object metadata)
                                  throws java.lang.ClassCastException
Returns a view of the specified metadata as a tree. Note that while TreeModel is defined in the javax.swing.tree package, it can be seen as a data structure independent of Swing. It will not force class loading of Swing framework.

In current implementation, the tree is not live (i.e. changes in metadata are not reflected in the tree). However it may be improved in a future Geotools implementation.

Parameters:
metadata - The metadata object to formats as a string.
Returns:
A tree representation of the specified metadata.
Throws:
java.lang.ClassCastException - if at the metadata object don't implements a metadata interface of the expected package.
See Also:
AbstractMap#asTree

shallowCopy

public void shallowCopy(java.lang.Object source,
                        java.lang.Object target,
                        boolean skipNulls)
                 throws java.lang.ClassCastException,
                        UnmodifiableMetadataException
Copies all metadata from source to target. The source must implements the same metadata interface than the target.

Parameters:
source - The metadata to copy.
target - The target metadata.
skipNulls - If true, only non-null values will be copied.
Throws:
java.lang.ClassCastException - if the source or target object don't implements a metadata interface of the expected package.
UnmodifiableMetadataException - if the target metadata is unmodifiable, or if at least one setter method was required but not found.
See Also:
AbstractMap#AbstractMap(Object)

shallowEquals

public boolean shallowEquals(java.lang.Object metadata1,
                             java.lang.Object metadata2,
                             boolean skipNulls)
                      throws java.lang.ClassCastException
Compares the two specified metadata objects. The comparaison is shallow, i.e. all metadata attributes are compared using the Object.equals(java.lang.Object) method without recursive call to this shallowEquals(...) method for child metadata.

This method can optionaly excludes null values from the comparaison. In metadata, null value often means "don't know", so in some occasion we want to consider two metadata as different only if an attribute value is know for sure to be different.

The first arguments must be an implementation of a metadata interface, otherwise an exception will be thrown. The two argument do not need to be the same implementation however.

Parameters:
metadata1 - The first metadata object to compare.
metadata2 - The second metadata object to compare.
skipNulls - If true, only non-null values will be compared.
Returns:
true if the given metadata objects are equals.
Throws:
java.lang.ClassCastException - if at least one metadata object don't implements a metadata interface of the expected package.
See Also:
AbstractMetadata.equals(java.lang.Object)

hashCode

public int hashCode(java.lang.Object metadata)
             throws java.lang.ClassCastException
Computes a hash code for the specified metadata. The hash code is defined as the sum of hash code values of all non-null properties. This is the same contract than Set.hashCode() and ensure that the hash code value is insensitive to the ordering of properties.

Parameters:
metadata - The metadata object to compute hash code.
Returns:
A hash code value for the specified metadata.
Throws:
java.lang.ClassCastException - if at the metadata object don't implements a metadata interface of the expected package.
See Also:
AbstractMap#hashCode

toString

public java.lang.String toString(java.lang.Object metadata)
                          throws java.lang.ClassCastException
Returns a string representation of the specified metadata.

Parameters:
metadata - The metadata object to formats as a string.
Returns:
A string representation of the specified metadata.
Throws:
java.lang.ClassCastException - if at the metadata object don't implements a metadata interface of the expected package.
See Also:
AbstractMap#toString


Copyright © 1996-2010 Geotools. All Rights Reserved.