package org.geotools.styling.builder; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import java.awt.Color; import org.geotools.factory.CommonFactoryFinder; import org.geotools.filter.expression.ExpressionBuilder; import org.geotools.styling.AnchorPoint; import org.geotools.styling.Description; import org.geotools.styling.FeatureTypeConstraint; import org.geotools.styling.FeatureTypeStyle; import org.geotools.styling.Fill; import org.geotools.styling.Mark; import org.geotools.styling.PointSymbolizer; import org.geotools.styling.Rule; import org.geotools.styling.Style; import org.geotools.styling.StyleFactory; import org.geotools.styling.StyledLayerDescriptor; import org.geotools.styling.UserLayer; import org.junit.Ignore; import org.junit.Test; import org.opengis.filter.Filter; import org.opengis.filter.expression.Expression; import org.opengis.style.Halo; public class StyleBuilderTest { public void example() { StyleFactory sf = CommonFactoryFinder.getStyleFactory(null); StyledLayerDescriptor sld = sf.createStyledLayerDescriptor(); sld.setName("example"); sld.setAbstract("Example Style Layer Descriptor"); UserLayer layer = sf.createUserLayer(); layer.setName("layer"); FeatureTypeConstraint constraint = sf.createFeatureTypeConstraint("Feature", Filter.INCLUDE, null); layer.layerFeatureConstraints().add(constraint); Style style = sf.createStyle(); style.getDescription().setTitle("Style"); style.getDescription().setAbstract("Definition of Style"); // define feature type styles used to actually // define how features are rendered // layer.userStyles().add(style); sld.layers().add(layer); } @Test public void emailExample() { StyleBuilder<?> builder = new StyleBuilder(); RuleBuilder rule = builder.newFeatureTypeStyle().featureTypeName("Feature").rule(); rule.newPoint().graphic().externalGraphic("file:///C:/images/house.gif", "image/gid").mark( "circle"); Style style = builder.build(); assertNotNull(style); } @Test public void anchorPoint() { AnchorPointBuilder<?> b = new AnchorPointBuilder(); AnchorPoint anchor = b.build(); assertEquals(0.0, anchor.getAnchorPointX().evaluate(null, Double.class), 0.0); assertEquals(0.0, anchor.getAnchorPointY().evaluate(null, Double.class), 0.0); anchor = b.x(0.5).y(0.9).build(); assertEquals(0.5, anchor.getAnchorPointX().evaluate(null, Double.class), 0.0); assertEquals(0.9, anchor.getAnchorPointY().evaluate(null, Double.class), 0.0); } @Test public void description() { DescriptionBuilder<?> b = new DescriptionBuilder(); Description d = b.build(); assertNull(d.getTitle()); assertNull(d.getAbstract()); assertNull(b.unset().build()); b = new DescriptionBuilder(); b.description("here be dragons"); d = b.build(); assertEquals("here be dragons", d.getAbstract().toString()); assertNull(b.build().getAbstract()); b = new DescriptionBuilder(this); b.description("here be dragons"); d = b.build(); assertEquals("here be dragons", d.getAbstract().toString()); assertNotNull(b.build().getAbstract()); } @Test public void testDisplacementBuilder() { DisplacementBuilder<?> b = new DisplacementBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new DisplacementBuilder(this); } @Test public void testExtensionSymbolizerBuilder() { ExtensionSymbolizerBuilder<?> b = new ExtensionSymbolizerBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new ExtensionSymbolizerBuilder(this); } @Test public void testExtentBuilder() { ExtentBuilder<?> b = new ExtentBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new ExtentBuilder(this); } @Test public void testExternalGraphicBuilder() { ExternalGraphicBuilder<?> b = new ExternalGraphicBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new ExternalGraphicBuilder(this); } @Test public void testExternalMarkBuilder() { ExternalMarkBuilder<?> b = new ExternalMarkBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new ExternalMarkBuilder(this); } @Test public void testFeatureTypeConstraintBuilder() { FeatureTypeConstraintBuilder<?> b = new FeatureTypeConstraintBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new FeatureTypeConstraintBuilder(this); } @Test public void testFeatureTypeStyleBuilder() { FeatureTypeStyleBuilder<?> b = new FeatureTypeStyleBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new FeatureTypeStyleBuilder(this); } @Test public void testFillBuilder() { FillBuilder<?> b = new FillBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new FillBuilder(this); } @Test public void testFontBuilder() { DisplacementBuilder<?> b = new DisplacementBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new DisplacementBuilder(this); } @Test public void testGraphicBuilder() { GraphicBuilder<?> b = new GraphicBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new GraphicBuilder(this); } @Test public void testGraphicLegendBuilder() { GraphicLegendBuilder<?> b = new GraphicLegendBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new GraphicLegendBuilder(this); } @Test public void testHaloBuilder() { HaloBuilder<?> b = new HaloBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new HaloBuilder(this); } @Test public void testImageOutlineBuilder() { ImageOutlineBuilder<?> b = new ImageOutlineBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new ImageOutlineBuilder(this); } @Test public void testLabelPlacementBuilder() { LabelPlacementBuilder<?> b = new LabelPlacementBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new LabelPlacementBuilder(this); } @Test public void testLayerFeatureConstraintsBuilder() { LayerFeatureConstraintsBuilder<?> b = new LayerFeatureConstraintsBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new LayerFeatureConstraintsBuilder(this); } @Test public void testLinePlacementBuilder() { LinePlacementBuilder<?> b = new LinePlacementBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new LinePlacementBuilder(this); } @Test public void testLineSymbolizerBuilder() { LineSymbolizerBuilder<?> b = new LineSymbolizerBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new LineSymbolizerBuilder(this); } @Test public void testMarkBuilder() { MarkBuilder<?> b = new MarkBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new MarkBuilder(this); } @Test public void testNamedLayerBuilder() { NamedLayerBuilder<?> b = new NamedLayerBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new NamedLayerBuilder(this); } @Test public void testPointPlacementBuilder() { PointPlacementBuilder<?> b = new PointPlacementBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new PointPlacementBuilder(this); } @Test public void testPointSymbolizerBuilder() { PointSymbolizerBuilder<?> b = new PointSymbolizerBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new PointSymbolizerBuilder(this); } @Test public void testPolygonSymbolizerBuilder() { PolygonSymbolizerBuilder<?> b = new PolygonSymbolizerBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new PolygonSymbolizerBuilder(this); } @Test public void testRasterSymbolizerBuilder() { RasterSymbolizerBuilder<?> b = new RasterSymbolizerBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new RasterSymbolizerBuilder(this); } @Test public void testRemoteOWSBuilder() { RemoteOWSBuilder<?> b = new RemoteOWSBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().resource("localhost").service("WMS").build()); b = new RemoteOWSBuilder(this); } @Test public void testRuleBuilder() { RuleBuilder<?> b = new RuleBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new RuleBuilder(this); } @Test public void testSelectedChannelTypeBuilder() { SelectedChannelTypeBuilder<?> b = new SelectedChannelTypeBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new SelectedChannelTypeBuilder(this); } @Test public void testShadedReliefBuilder() { ShadedReliefBuilder<?> b = new ShadedReliefBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new ShadedReliefBuilder(this); } @Test public void testStrokeBuilder() { StrokeBuilder<?> b = new StrokeBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new StrokeBuilder(this); } @Test public void testStyleBuilder() { StyleBuilder<?> b = new StyleBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new StyleBuilder(this); } @Test public void testStyledLayerBuilder() { StyledLayerBuilder<?> b = new StyledLayerBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new StyledLayerBuilder(this); } @Test public void testStyledLayerDescriptorBuilder() { StyledLayerDescriptorBuilder b = new StyledLayerDescriptorBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); } @Test public void testSymbolBuilder() { DisplacementBuilder<?> b = new DisplacementBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new DisplacementBuilder(this); } @Test public void testSymbolizerBuilder() { SymbolizerBuilder<?> b = new SymbolizerBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new SymbolizerBuilder(this); } @Test public void testTextSymbolizerBuilder() { TextSymbolizerBuilder<?> b = new TextSymbolizerBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new TextSymbolizerBuilder(this); } @Test public void testUserLayerBuilder() { UserLayerBuilder<?> b = new UserLayerBuilder(); assertNull(b.unset().build()); assertNotNull(b.reset().build()); b = new UserLayerBuilder(this); } @Test public void expression() { ExpressionBuilder b = new ExpressionBuilder(); assertNotNull(b.build()); assertNull(b.unset().build()); assertEquals(Expression.NIL, b.reset().build()); assertNotNull(b.reset().literal(1).build()); assertEquals(b.unset().literal(1).build(), b.reset().literal(1).build()); } public void defaults() { Style style = new StyleBuilder().build(); assertNotNull(style); assertNull(style.getName()); assertEquals(1, style.featureTypeStyles().size()); FeatureTypeStyle fts = style.featureTypeStyles().get(0); assertNotNull(fts); assertEquals(0, fts.featureTypeNames().size()); assertEquals(1, fts.rules().size()); Rule r = fts.rules().get(0); assertNotNull(r); assertNull(r.getName()); assertEquals(1, r.symbolizers().size()); PointSymbolizer ps = (PointSymbolizer) r.symbolizers().get(0); assertNull(ps.getGeometryPropertyName()); assertEquals(1, ps.getGraphic().graphicalSymbols().size()); Mark mark = (Mark) ps.getGraphic().graphicalSymbols().get(0); assertEquals("square", mark.getWellKnownName().evaluate(null)); } @Test public void fill() throws Exception { FillBuilder<?> b = new FillBuilder(); Fill fill = b.color("#0000FF").opacity(0.75).build(); assertNotNull(fill); assertNotNull(b.color); assertEquals(Color.BLUE, fill.getColor().evaluate(null, Color.class)); } @Test public void halo() { HaloBuilder<?> b = new HaloBuilder(null); Halo halo = b.build(); assertNotNull(halo); } @Ignore @Test public void testPolygonStyle() { StyleBuilder sb = new StyleBuilder(); PolygonSymbolizerBuilder symb = sb.newFeatureTypeStyle().name("Simple polygon style") .rule().newPolygon(); symb.stroke().color(Color.BLUE).width(1).opacity(0.5); symb.fill().color(Color.CYAN).opacity(0.5); Style style = sb.build(); // now what do we test :-) } /* * public void test(){ FeatureTypeFactory factory = * CommonFactoryFinder.getFeatureTypeFactory(null); * * AttributeTypeBuilder b = new AttributeTypeBuilder(factory); AttributeType ANY_URI = * b.name("anyURI").binding(URI.class).buildType(); AttributeType DOUBLE = * b.name("Double").binding(Double.class).buildType(); * * AttributeDescriptor uom = b.buildDescriptor("uom", ANY_URI ); AttributeDescriptor value = * b.inline(true).buildDescriptor("value", DOUBLE ); * * Set<PropertyDescriptor> properties = new HashSet<PropertyDescriptor>(); properties.add( value * ); properties.add( uom ); * * ComplexType MEASURE_TYPE = factory.createComplexType( new NameImpl("MeasureType"), * properties, true, false, Collections.EMPTY_LIST, null, null ); * * * } */ }