/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2014, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotools.coverage.io;
import java.io.IOException;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.SortedSet;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.geotools.coverage.grid.io.DimensionDescriptor;
import org.geotools.coverage.io.CoverageSource.AdditionalDomain;
import org.geotools.coverage.io.CoverageSource.SpatialDomain;
import org.geotools.coverage.io.CoverageSource.TemporalDomain;
import org.geotools.coverage.io.util.DateRangeTreeSet;
import org.geotools.feature.NameImpl;
import org.geotools.referencing.CRS;
import org.geotools.referencing.crs.DefaultTemporalCRS;
import org.geotools.util.DateRange;
import org.opengis.feature.type.Name;
import org.opengis.geometry.BoundingBox;
import org.opengis.referencing.FactoryException;
import org.opengis.referencing.NoSuchAuthorityCodeException;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.crs.TemporalCRS;
import org.opengis.referencing.operation.MathTransform2D;
import org.opengis.util.ProgressListener;
public class TestCoverageSourceDescriptor extends CoverageSourceDescriptor {
private final static Logger LOGGER = org.geotools.util.logging.Logging
.getLogger(TestCoverageSourceDescriptor.class.toString());
private static CoordinateReferenceSystem WGS84;
static {
try {
WGS84 = CRS.decode("EPSG:4326", true);
} catch (NoSuchAuthorityCodeException e) {
LOGGER.log(Level.FINER, e.getMessage(), e);
} catch (FactoryException e) {
LOGGER.log(Level.FINER, e.getMessage(), e);
}
}
static class TestSpatialDomain extends SpatialDomain {
Set<RasterLayout> layout;
public TestSpatialDomain() {
layout = Collections.singleton(RasterLayoutTest.testRasterLayout);
}
@Override
public Set<? extends BoundingBox> getSpatialElements(boolean overall,
ProgressListener listener) throws IOException {
// TODO Auto-generated method stub
return null;
}
@Override
public CoordinateReferenceSystem getCoordinateReferenceSystem2D() {
return WGS84;
}
@Override
public MathTransform2D getGridToWorldTransform(ProgressListener listener)
throws IOException {
// TODO Auto-generated method stub
return null;
}
@Override
public Set<? extends RasterLayout> getRasterElements(boolean overall,
ProgressListener listener) throws IOException {
return layout;
}
}
static class TestTemporalDomain extends TemporalDomain {
TemporalCRS temporalCrs;
Set<DateRange> dates;
public TestTemporalDomain(TemporalCRS temporalCrs, Set<DateRange> set) {
this.temporalCrs = temporalCrs;
dates = set;
}
@Override
public SortedSet<? extends DateRange> getTemporalElements(boolean overall,
ProgressListener listener) throws IOException {
return new DateRangeTreeSet(dates);
}
@Override
public CoordinateReferenceSystem getCoordinateReferenceSystem() {
return temporalCrs;
}
}
private static SpatialDomain testSpatialDomain;
private static TemporalDomain testTemporalDomain = new TestTemporalDomain(DefaultTemporalCRS.JAVA, Collections.singleton(new DateRange(new Date(10000), new Date(20000))));
public static final String TEST_COVERAGE = "testCoverage";
public static final Name TEST_NAME = new NameImpl(TEST_COVERAGE);
public TestCoverageSourceDescriptor(String name) {
setName(name);
setVerticalDomain(null);
setHasVerticalDomain(false);
setHasTemporalDomain(true);
List<DimensionDescriptor> dimensionDescriptors = Collections.emptyList();
setDimensionDescriptors(dimensionDescriptors);
List<AdditionalDomain> additionalDomains = Collections.emptyList();
setAdditionalDomains(additionalDomains);
setHasAdditionalDomains(false);
testSpatialDomain = new TestSpatialDomain();
setSpatialDomain(testSpatialDomain);
setTemporalDomain(testTemporalDomain);
}
}