Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.impl / src / main / java / org / gvsig / expressionevaluator / impl / converterstocode / FeatureToCode.java @ 47174

History | View | Annotate | Download (1.65 KB)

1 47174 jjdelcerro
package org.gvsig.expressionevaluator.impl.converterstocode;
2
3
import java.util.Map;
4
import org.gvsig.expressionevaluator.Code;
5
import org.gvsig.expressionevaluator.CodeBuilder;
6
import org.gvsig.expressionevaluator.ConverterToCode;
7
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
8
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
9
import org.gvsig.expressionevaluator.MutableCodes;
10
import org.gvsig.fmap.dal.feature.Feature;
11
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
12
import org.gvsig.fmap.dal.feature.FeatureType;
13
14
/**
15
 *
16
 * @author jjdelcerro
17
 */
18
public class FeatureToCode implements ConverterToCode {
19
20
    @Override
21
    public String getName() {
22
        return "Feature";
23
    }
24
25
    @Override
26
    public boolean isApplicable(Object... os) {
27
        return os[0] instanceof Feature;
28
    }
29
30
    @Override
31
    public Code toCode(CodeBuilder builder, Object obj, Map props) {
32
        Feature f = (Feature) obj;
33
        FeatureType ftype = f.getType();
34
        if( ftype.size() == 1 ) {
35
            return builder.constant(f.get(0));
36
        } else {
37
            ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getExpressionEvaluatorManager();
38
            MutableCodes args = builder.args();
39
            for (FeatureAttributeDescriptor desc : ftype) {
40
                args.add(manager.convertToCode(builder, f.get(desc.getName()), props));
41
            }
42
            return builder.tuple(args);
43
        }
44
    }
45
46
47
    public static void selfRegister() {
48
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getExpressionEvaluatorManager();
49
        manager.registerCodeConverter(new FeatureToCode());
50
    }
51
}