Statistics
| Revision:

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
}