root / trunk / extensions / extSymbology / src / org / gvsig / remoteClient / sld / filterEncoding / FilterFactory.java @ 20768
History | View | Annotate | Download (4.52 KB)
1 |
package org.gvsig.remoteClient.sld.filterEncoding; |
---|---|
2 |
|
3 |
import org.gvsig.symbology.fmap.rendering.filter.operations.AddOperator; |
4 |
import org.gvsig.symbology.fmap.rendering.filter.operations.AndOperator; |
5 |
import org.gvsig.symbology.fmap.rendering.filter.operations.BooleanConstant; |
6 |
import org.gvsig.symbology.fmap.rendering.filter.operations.DivOperator; |
7 |
import org.gvsig.symbology.fmap.rendering.filter.operations.DoubleConstant; |
8 |
import org.gvsig.symbology.fmap.rendering.filter.operations.EqOperator; |
9 |
import org.gvsig.symbology.fmap.rendering.filter.operations.Expression; |
10 |
import org.gvsig.symbology.fmap.rendering.filter.operations.GreaterThanOperator; |
11 |
import org.gvsig.symbology.fmap.rendering.filter.operations.GreaterThanOrEqualsOperator; |
12 |
import org.gvsig.symbology.fmap.rendering.filter.operations.IsBetweenOperator; |
13 |
import org.gvsig.symbology.fmap.rendering.filter.operations.IsNullOperator; |
14 |
import org.gvsig.symbology.fmap.rendering.filter.operations.LessThanOperator; |
15 |
import org.gvsig.symbology.fmap.rendering.filter.operations.LessThanOrEqualsOperator; |
16 |
import org.gvsig.symbology.fmap.rendering.filter.operations.MinusOperator; |
17 |
import org.gvsig.symbology.fmap.rendering.filter.operations.MultOperator; |
18 |
import org.gvsig.symbology.fmap.rendering.filter.operations.NeOperator; |
19 |
import org.gvsig.symbology.fmap.rendering.filter.operations.NotOperator; |
20 |
import org.gvsig.symbology.fmap.rendering.filter.operations.NullConstant; |
21 |
import org.gvsig.symbology.fmap.rendering.filter.operations.OrOperator; |
22 |
import org.gvsig.symbology.fmap.rendering.filter.operations.ReplaceOperator; |
23 |
|
24 |
import com.iver.cit.gvsig.fmap.rendering.XmlBuilder; |
25 |
|
26 |
/**
|
27 |
* Implements a class that allows the user to create an XML document
|
28 |
* from an expression
|
29 |
*
|
30 |
* @see http://www.opengeospatial.org/standards/filter
|
31 |
* @author Pepe Vidal Salvador - jose.vidal.salvador@iver.es
|
32 |
*/
|
33 |
|
34 |
public class FilterFactory { |
35 |
|
36 |
public String createXMLFromExpression(Expression filter4Symbol) { |
37 |
|
38 |
XmlBuilder xmlBuilder = new XmlBuilder();
|
39 |
|
40 |
if(filter4Symbol instanceof AndOperator) |
41 |
xmlBuilder.openTag(FilterTags.AND); |
42 |
else if(filter4Symbol instanceof OrOperator) |
43 |
xmlBuilder.openTag(FilterTags.OR); |
44 |
else if(filter4Symbol instanceof NotOperator) |
45 |
xmlBuilder.openTag(FilterTags.NOT); |
46 |
else if (filter4Symbol instanceof EqOperator) |
47 |
xmlBuilder.openTag(FilterTags.PROPERTYISEQUALTO); |
48 |
else if (filter4Symbol instanceof NeOperator) |
49 |
xmlBuilder.openTag(FilterTags.PROPERTYISNOTEQUALTO); |
50 |
else if (filter4Symbol instanceof AddOperator) |
51 |
xmlBuilder.openTag(FilterTags.ADD); |
52 |
else if (filter4Symbol instanceof MinusOperator) |
53 |
xmlBuilder.openTag(FilterTags.SUB); |
54 |
else if (filter4Symbol instanceof MultOperator) |
55 |
xmlBuilder.openTag(FilterTags.MULT); |
56 |
else if (filter4Symbol instanceof DivOperator) |
57 |
xmlBuilder.openTag(FilterTags.DIV); |
58 |
else if (filter4Symbol instanceof GreaterThanOperator) |
59 |
xmlBuilder.openTag(FilterTags.PROPERTYISGREATERTHAN); |
60 |
else if (filter4Symbol instanceof GreaterThanOrEqualsOperator) |
61 |
xmlBuilder.openTag(FilterTags.PROPERTYISGREATEROREQUALTHAN); |
62 |
else if (filter4Symbol instanceof LessThanOperator) |
63 |
xmlBuilder.openTag(FilterTags.PROPERTYISLESSTHAN); |
64 |
else if (filter4Symbol instanceof LessThanOrEqualsOperator) |
65 |
xmlBuilder.openTag(FilterTags.PROPERTYISLESSOREQUALTHAN); |
66 |
else if (filter4Symbol instanceof IsBetweenOperator) |
67 |
xmlBuilder.openTag(FilterTags.PROPERTYISBETWEEN); |
68 |
else if (filter4Symbol instanceof IsNullOperator) |
69 |
xmlBuilder.openTag(FilterTags.PROPERTYISNULL); |
70 |
else if (filter4Symbol instanceof ReplaceOperator) { |
71 |
ReplaceOperator replace = (ReplaceOperator)filter4Symbol; |
72 |
xmlBuilder.writeTag(FilterTags.PROPERTYNAME,replace.getValue()); |
73 |
return xmlBuilder.getXML();
|
74 |
} |
75 |
else if (filter4Symbol instanceof BooleanConstant) { |
76 |
BooleanConstant myBool = (BooleanConstant)filter4Symbol; |
77 |
xmlBuilder.writeTag(FilterTags.LITERAL,String.valueOf(myBool.getValue()));
|
78 |
return xmlBuilder.getXML();
|
79 |
} |
80 |
else if (filter4Symbol instanceof DoubleConstant) { |
81 |
DoubleConstant myDouble = (DoubleConstant)filter4Symbol; |
82 |
xmlBuilder.writeTag(FilterTags.LITERAL,String.valueOf(myDouble.getValue()));
|
83 |
return xmlBuilder.getXML();
|
84 |
} |
85 |
else if (filter4Symbol instanceof NullConstant) { |
86 |
xmlBuilder.writeTag(FilterTags.LITERAL,"null");
|
87 |
return xmlBuilder.getXML();
|
88 |
} |
89 |
|
90 |
for (int i = 0; i < filter4Symbol.getArguments().size(); i++) { |
91 |
xmlBuilder.writeRaw(createXMLFromExpression(filter4Symbol.getArguments().get(i))); |
92 |
} |
93 |
|
94 |
xmlBuilder.closeTag(); |
95 |
return xmlBuilder.getXML();
|
96 |
} |
97 |
|
98 |
|
99 |
|
100 |
} |