001: /*
002: * GeoTools - OpenSource mapping toolkit
003: * http://geotools.org
004: * (C) 2004-2006, GeoTools Project Managment Committee (PMC)
005: * (C) 2004, Institut de Recherche pour le Développement
006: *
007: * This library is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU Lesser General Public
009: * License as published by the Free Software Foundation;
010: * version 2.1 of the License.
011: *
012: * This library is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * This package contains documentation from OpenGIS specifications.
018: * OpenGIS consortium's work is fully acknowledged here.
019: */
020: package org.geotools.metadata.iso.spatial;
021:
022: // J2SE direct dependencies
023: import java.util.Collections;
024: import java.util.List;
025:
026: // OpenGIS dependencies
027: import org.opengis.metadata.spatial.Dimension;
028: import org.opengis.metadata.spatial.CellGeometry;
029: import org.opengis.metadata.spatial.GridSpatialRepresentation;
030:
031: /**
032: * Basic information required to uniquely identify a resource or resources.
033: *
034: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/library/metadata/src/main/java/org/geotools/metadata/iso/spatial/GridSpatialRepresentationImpl.java $
035: * @version $Id: GridSpatialRepresentationImpl.java 25189 2007-04-17 13:23:47Z desruisseaux $
036: * @author Martin Desruisseaux
037: * @author Touraïvane
038: *
039: * @since 2.1
040: */
041: public class GridSpatialRepresentationImpl extends
042: SpatialRepresentationImpl implements GridSpatialRepresentation {
043: /**
044: * Serial number for interoperability with different versions.
045: */
046: private static final long serialVersionUID = -8400572307442433979L;
047:
048: /**
049: * Number of independent spatial-temporal axes.
050: */
051: private Integer numberOfDimensions;
052:
053: /**
054: * Information about spatial-temporal axis properties.
055: */
056: private List axisDimensionsProperties;
057:
058: /**
059: * Identification of grid data as point or cell.
060: */
061: private CellGeometry cellGeometry;
062:
063: /**
064: * Indication of whether or not parameters for transformation exists.
065: */
066: private boolean transformationParameterAvailable;
067:
068: /**
069: * Constructs an initially empty grid spatial representation.
070: */
071: public GridSpatialRepresentationImpl() {
072: }
073:
074: /**
075: * Constructs a metadata entity initialized with the values from the specified metadata.
076: *
077: * @since 2.4
078: */
079: public GridSpatialRepresentationImpl(
080: final GridSpatialRepresentation source) {
081: super (source);
082: }
083:
084: /**
085: * Creates a grid spatial representation initialized to the given values.
086: * <p>
087: * <b>Note:</b> this is a convenience constructor. The argument types don't need to
088: * match exactly the types expected by getters and setters.
089: */
090: public GridSpatialRepresentationImpl(final int numberOfDimensions,
091: final List axisDimensionsProperties,
092: final CellGeometry cellGeometry,
093: final boolean transformationParameterAvailable) {
094: setNumberOfDimensions(new Integer(numberOfDimensions));
095: setAxisDimensionsProperties(axisDimensionsProperties);
096: setCellGeometry(cellGeometry);
097: setTransformationParameterAvailable(transformationParameterAvailable);
098: }
099:
100: /**
101: * Number of independent spatial-temporal axes.
102: */
103: public Integer getNumberOfDimensions() {
104: return numberOfDimensions;
105: }
106:
107: /**
108: * Set the number of independent spatial-temporal axes.
109: */
110: public synchronized void setNumberOfDimensions(
111: final Integer newValue) {
112: checkWritePermission();
113: numberOfDimensions = newValue;
114: }
115:
116: /**
117: * Information about spatial-temporal axis properties.
118: */
119: public synchronized List getAxisDimensionsProperties() {
120: return axisDimensionsProperties = nonNullList(
121: axisDimensionsProperties, Dimension.class);
122: }
123:
124: /**
125: * Set information about spatial-temporal axis properties.
126: */
127: public synchronized void setAxisDimensionsProperties(
128: final List newValues) {
129: checkWritePermission();
130: axisDimensionsProperties = (List) copyCollection(newValues,
131: axisDimensionsProperties, Dimension.class);
132: }
133:
134: /**
135: * Identification of grid data as point or cell.
136: */
137: public CellGeometry getCellGeometry() {
138: return cellGeometry;
139: }
140:
141: /**
142: * Set identification of grid data as point or cell.
143: */
144: public synchronized void setCellGeometry(final CellGeometry newValue) {
145: checkWritePermission();
146: cellGeometry = newValue;
147: }
148:
149: /**
150: * Indication of whether or not parameters for transformation exists.
151: */
152: public boolean isTransformationParameterAvailable() {
153: return transformationParameterAvailable;
154: }
155:
156: /**
157: * Set indication of whether or not parameters for transformation exists.
158: */
159: public synchronized void setTransformationParameterAvailable(
160: final boolean newValue) {
161: checkWritePermission();
162: transformationParameterAvailable = newValue;
163: }
164: }
|