/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.wms.eo.web;
import java.util.ArrayList;
import java.util.List;
import org.apache.wicket.model.IModel;
import org.geoserver.catalog.CoverageInfo;
import org.geoserver.catalog.CoverageStoreInfo;
import org.geoserver.catalog.LayerInfo;
import org.geoserver.catalog.PublishedInfo;
import org.geotools.gce.imagemosaic.ImageMosaicFormat;
/**
* A model that returns the layer group entries backed by an image mosaic, suitable for creating
* a vector outline layer
*
* @author Andrea Aime - GeoSolutions
*/
public class OutlineSourceModel implements IModel<List<? extends EoLayerGroupEntry>> {
private static final long serialVersionUID = -5194537044901789111L;
static final String IMAGE_MOSAIC_FORMAT_NAME = new ImageMosaicFormat().getName();
private List<EoLayerGroupEntry> items;
public OutlineSourceModel(List<EoLayerGroupEntry> items) {
this.items = items;
}
@Override
public void detach() {
// nothing to do I believe?
}
@Override
public List<? extends EoLayerGroupEntry> getObject() {
List<EoLayerGroupEntry> result = new ArrayList<EoLayerGroupEntry>();
// search for entries backed by a image mosaic
for (EoLayerGroupEntry entry : items) {
PublishedInfo pi = entry.getLayer();
if (pi instanceof LayerInfo) {
LayerInfo li = (LayerInfo) pi;
if (li.getResource() instanceof CoverageInfo) {
CoverageStoreInfo store = (CoverageStoreInfo) li.getResource().getStore();
if (IMAGE_MOSAIC_FORMAT_NAME.equals(store.getType())) {
result.add(entry);
}
}
}
}
return result;
}
@Override
public void setObject(List<? extends EoLayerGroupEntry> object) {
throw new UnsupportedOperationException(
"The list of image mosaic entries cannot be modified");
}
}