/* (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.wms.featureinfo; import static org.junit.Assert.*; import java.io.ByteArrayOutputStream; import java.io.OutputStreamWriter; import org.geoserver.template.FeatureWrapper; import org.geotools.data.DataUtilities; import org.geotools.feature.simple.SimpleFeatureBuilder; import org.junit.Test; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.GeometryFactory; import freemarker.template.Configuration; import freemarker.template.Template; public class FeatureDescriptionTemplateTest { @Test public void testTemplate() throws Exception { Configuration cfg = new Configuration(); cfg.setObjectWrapper(new FeatureWrapper()); cfg.setClassForTemplateLoading(FeatureTemplate.class, ""); Template template = cfg.getTemplate("description.ftl"); assertNotNull(template); // create some data GeometryFactory gf = new GeometryFactory(); SimpleFeatureType featureType = DataUtilities.createType("testType", "string:String,int:Integer,double:Double,geom:Point"); SimpleFeature f = SimpleFeatureBuilder.build(featureType, new Object[] { "three", new Integer(3), new Double(3.3), gf.createPoint(new Coordinate(3, 3)) }, "fid.3"); ByteArrayOutputStream output = new ByteArrayOutputStream(); template.process(f, new OutputStreamWriter(output)); // template.process(f, new OutputStreamWriter(System.out)); // This generates the following: // <h4>testType</h4> // <ul class="textattributes"> // <li><strong><span class="atr-name">string</span>:</strong> <span // class="atr-value">three</span></li> // <li><strong><span class="atr-name">int</span>:</strong> <span // class="atr-value">3</span></li> // <li><strong><span class="atr-name">double</span>:</strong> <span // class="atr-value">3.3</span></li> // // </ul> // TODO docbuilder cannot parse this? May expect encapsulation, which table did provide // DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); // Document document = docBuilder.parse(new ByteArrayInputStream(output.toByteArray())); // assertNotNull(document); // assertEquals("table", document.getDocumentElement().getNodeName()); } // public void testFeatureCollection() throws Exception { // Configuration cfg = new Configuration(); // cfg.setObjectWrapper(new FeatureWrapper()); // cfg.setClassForTemplateLoading(FeatureDescriptionTemplate.class, ""); // // Template template = cfg.getTemplate("description.ftl"); // assertNotNull(template); // // //create some data // GeometryFactory gf = new GeometryFactory(); // FeatureType featureType = DataUtilities.createType("testType", // "string:String,int:Integer,double:Double,geom:Point"); // // DefaultFeature f = new DefaultFeature((DefaultFeatureType) featureType, // new Object[] { // "three", new Integer(3), new Double(3.3), gf.createPoint(new Coordinate(3, 3)) // }, "fid.3") { // }; // DefaultFeature f4 = new DefaultFeature((DefaultFeatureType) featureType, // new Object[] { // "four", new Integer(4), new Double(4.4), gf.createPoint(new Coordinate(4, 4)) // }, "fid.4") { // }; // SimpleFeatureCollection features = new DefaultFeatureCollection(null,null) {}; // features.add( f ); // features.add( f4 ); // // template.process(features, new OutputStreamWriter( System.out )); // // } }