/* (c) 2014 - 2015 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.transform;
import java.util.List;
import java.util.logging.Logger;
import org.geoserver.importer.ImportTask;
import org.geotools.data.DataStore;
import org.geotools.util.logging.Logging;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
/**
* Transform chain for vectors.
*
* @author Justin Deoliveira, OpenGeo
*/
public class VectorTransformChain extends TransformChain<VectorTransform> {
private static final long serialVersionUID = 7406010540766743012L;
static Logger LOGGER = Logging.getLogger(VectorTransformChain.class);
public VectorTransformChain(List<VectorTransform> transforms) {
super(transforms);
}
public VectorTransformChain(VectorTransform... transforms) {
super(transforms);
}
public SimpleFeatureType inline(ImportTask task, DataStore dataStore, SimpleFeatureType featureType)
throws Exception {
for (InlineVectorTransform tx : filter(transforms, InlineVectorTransform.class)) {
try {
tx.init();
featureType = tx.apply(task, dataStore, featureType);
} catch (Exception e) {
error(tx, e);
}
}
return featureType;
}
public SimpleFeature inline(ImportTask task, DataStore dataStore, SimpleFeature oldFeature,
SimpleFeature feature) throws Exception {
for (InlineVectorTransform tx : filter(transforms, InlineVectorTransform.class)) {
try {
feature = tx.apply(task, dataStore, oldFeature, feature);
if (feature == null) {
break;
}
} catch (Exception e) {
error(tx, e);
}
}
return feature;
}
}