/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, availible at the root
* application directory.
*/
package org.geoserver.wfsv.response.v1_1_0;
import java.util.Arrays;
import java.util.HashMap;
import org.geoserver.template.FeatureWrapper;
import org.geotools.data.FeatureDiffReader;
import freemarker.ext.beans.CollectionModel;
import freemarker.template.SimpleHash;
import freemarker.template.SimpleSequence;
import freemarker.template.TemplateModel;
import freemarker.template.TemplateModelException;
/**
* Extends the FeatureWrapper so that FeatureDiffReaders can be provided to the
* template as well
*
* @author Andrea Aime - TOPP
*/
public class FeatureDiffWrapper extends FeatureWrapper {
public TemplateModel wrap(Object object) throws TemplateModelException {
if (object instanceof FeatureDiffReader[]) {
HashMap map = new HashMap();
map.put("queryDiffs",
new SimpleSequence(Arrays.asList((FeatureDiffReader[]) object), this));
return new SimpleHash(map);
} else if (object instanceof FeatureDiffReader) {
HashMap map = new HashMap();
FeatureDiffReader reader = (FeatureDiffReader) object;
map.put("differences", new CollectionModel(new FeatureDiffCollection(reader), this));
map.put("fromVersion", reader.getFromVersion());
map.put("toVersion", reader.getToVersion());
map.put("typeName", reader.getSchema().getTypeName());
return new SimpleHash(map);
}
return super.wrap(object);
}
}