RLPark 1.0.0
Reinforcement Learning Framework in Java

PrimitiveCollectionParser.java

Go to the documentation of this file.
00001 package zephyr.plugin.core.api.internal.codeparser.parsers;
00002 
00003 import java.lang.reflect.Field;
00004 import java.util.List;
00005 
00006 import zephyr.plugin.core.api.internal.codeparser.codetree.CodeTrees;
00007 import zephyr.plugin.core.api.internal.codeparser.codetree.PrimitiveCollectionNode;
00008 import zephyr.plugin.core.api.internal.codeparser.interfaces.CodeNode;
00009 import zephyr.plugin.core.api.internal.codeparser.interfaces.CodeParser;
00010 import zephyr.plugin.core.api.internal.codeparser.interfaces.FieldParser;
00011 import zephyr.plugin.core.api.internal.codeparser.interfaces.MutableParentNode;
00012 import zephyr.plugin.core.api.internal.parsing.CollectionLabelBuilder;
00013 
00014 
00015 public class PrimitiveCollectionParser implements FieldParser {
00016   @Override
00017   public boolean canParse(Object fieldValue) {
00018     if (!(fieldValue instanceof List))
00019       return false;
00020     List<?> collection = (List<?>) fieldValue;
00021     if (collection.size() == 0)
00022       return false;
00023     Object firstElement = collection.get(0);
00024     if (firstElement == null)
00025       return false;
00026     return Number.class.isAssignableFrom(firstElement.getClass());
00027   }
00028 
00029   @SuppressWarnings("unchecked")
00030   @Override
00031   public CodeNode parse(CodeParser codeParser, MutableParentNode parentNode, Field instanceField, String instanceLabel, Object instance) {
00032     int level = CodeTrees.levelOf(instanceField);
00033     String label = CodeTrees.labelOf(instanceField);
00034     List<? extends Number> list = ((List<? extends Number>) instance);
00035     CollectionLabelBuilder labelBuilder = codeParser.newCollectionLabelBuilder(instanceField, list.size());
00036     PrimitiveCollectionNode arrayPrimitiveNode = new PrimitiveCollectionNode(label, parentNode, list, labelBuilder,
00037                                                                              level);
00038     parentNode.addChild(arrayPrimitiveNode);
00039     CodeTrees.popupIFN(codeParser, instanceField, arrayPrimitiveNode);
00040     return arrayPrimitiveNode;
00041   }
00042 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark