RLPark 1.0.0
Reinforcement Learning Framework in Java

PrimitiveParser.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.ClassNode;
00007 import zephyr.plugin.core.api.internal.codeparser.codetree.CodeTrees;
00008 import zephyr.plugin.core.api.internal.codeparser.codetree.PrimitiveNode;
00009 import zephyr.plugin.core.api.internal.codeparser.interfaces.CodeNode;
00010 import zephyr.plugin.core.api.internal.codeparser.interfaces.CodeParser;
00011 import zephyr.plugin.core.api.internal.codeparser.interfaces.FieldParser;
00012 import zephyr.plugin.core.api.internal.codeparser.interfaces.MutableParentNode;
00013 import zephyr.plugin.core.api.internal.monitoring.wrappers.MonitorWrapper;
00014 import zephyr.plugin.core.api.internal.monitoring.wrappers.Wrappers;
00015 import zephyr.plugin.core.api.monitoring.abstracts.Monitored;
00016 
00017 public class PrimitiveParser implements FieldParser {
00018   @Override
00019   public boolean canParse(Object fieldValue) {
00020     return CodeTrees.isPrimitive(fieldValue.getClass());
00021   }
00022 
00023   @Override
00024   public CodeNode parse(CodeParser codeParser, MutableParentNode parentNode, Field instanceField, String instanceLabel,
00025       Object instance) {
00026     String label = CodeTrees.labelOf(instanceField);
00027     Object container = ((ClassNode) parentNode).instance();
00028     int level = CodeTrees.levelOf(instanceField);
00029     PrimitiveNode node = new PrimitiveNode(label, parentNode, instanceField, container, level);
00030     parentNode.addChild(node);
00031     List<MonitorWrapper> localWrappers = Wrappers.getWrappers(instanceField, null);
00032     if (localWrappers != null)
00033       addLocalWrapper(parentNode, label, level, node, localWrappers);
00034     CodeTrees.popupIFN(codeParser, instanceField, node);
00035     return node;
00036   }
00037 
00038   private static void addLocalWrapper(MutableParentNode parentNode, String label, int level, PrimitiveNode node,
00039       List<MonitorWrapper> localWrappers) {
00040     for (MonitorWrapper wrapper : localWrappers) {
00041       String wrapperLabel = label + wrapper.getClass().getSimpleName();
00042       Monitored wrapperMonitored = wrapper.createMonitored(node.monitored());
00043       PrimitiveNode wrapperNode = new PrimitiveNode(wrapperLabel, parentNode, wrapperMonitored, level);
00044       parentNode.addChild(wrapperNode);
00045     }
00046   }
00047 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark