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 | } |