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