/* (c) 2014 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.importer.mosaic; import java.io.IOException; import java.util.List; import org.geoserver.catalog.Catalog; import org.geoserver.catalog.CoverageStoreInfo; import org.geoserver.catalog.DimensionInfo; import org.geoserver.catalog.DimensionPresentation; import org.geoserver.catalog.ResourceInfo; import org.geoserver.catalog.WorkspaceInfo; import org.geoserver.catalog.impl.DimensionInfoImpl; import org.geotools.data.DataUtilities; import org.geotools.gce.imagemosaic.ImageMosaicFormat; import org.geoserver.importer.GridFormat; import org.geoserver.importer.ImportData; import org.geoserver.importer.ImportTask; import org.geoserver.importer.job.ProgressMonitor; public class MosaicFormat extends GridFormat { public MosaicFormat() { super(ImageMosaicFormat.class); } @Override public CoverageStoreInfo createStore(ImportData data, WorkspaceInfo workspace, Catalog catalog) throws IOException { MosaicIndex index = new MosaicIndex((Mosaic) data); index.write(); CoverageStoreInfo store = super.createStore(data, workspace, catalog); store.setURL(DataUtilities.fileToURL(index.getFile()).toString()); return store; } @Override public List<ImportTask> list(ImportData data, Catalog catalog, ProgressMonitor monitor) throws IOException { List<ImportTask> tasks = super.list(data, catalog, monitor); Mosaic m = (Mosaic) data; if (m.getTimeMode() != TimeMode.NONE) { //set up the time dimension object for (ImportTask task : tasks) { DimensionInfo dim = new DimensionInfoImpl(); dim.setEnabled(true); dim.setAttribute("time"); dim.setPresentation(DimensionPresentation.LIST); dim.setUnits("ISO8601"); //TODO: is there an enumeration for this? ResourceInfo r = task.getLayer().getResource(); r.getMetadata().put(ResourceInfo.TIME, dim); } } return tasks; } }