RLPark 1.0.0
Reinforcement Learning Framework in Java

PrimitiveNode.java

Go to the documentation of this file.
00001 package zephyr.plugin.core.api.internal.codeparser.codetree;
00002 
00003 import java.lang.reflect.Field;
00004 
00005 import zephyr.plugin.core.api.internal.codeparser.interfaces.ParentNode;
00006 import zephyr.plugin.core.api.internal.monitoring.abstracts.MonitorContainerNode;
00007 import zephyr.plugin.core.api.monitoring.abstracts.Monitored;
00008 
00009 public class PrimitiveNode extends AbstractCodeNode implements MonitorContainerNode {
00010   private final Monitored monitored;
00011 
00012   public PrimitiveNode(String label, ParentNode parent, Field field, Object container, int level) {
00013     this(label, parent, createMonitored(field, container), level);
00014   }
00015 
00016   public PrimitiveNode(String label, ParentNode parent, Monitored monitored, int level) {
00017     super(label, parent, level);
00018     this.monitored = monitored;
00019   }
00020 
00021   public Monitored monitored() {
00022     return monitored;
00023   }
00024 
00025   static private Monitored createMonitored(Field field, Object container) {
00026     if (field.getType().equals(Boolean.TYPE))
00027       return createBooleanLogged(field, container);
00028     return createValueLogged(field, container);
00029   }
00030 
00031   static private Monitored createValueLogged(final Field field, final Object container) {
00032     return new Monitored() {
00033       @Override
00034       public double monitoredValue() {
00035         try {
00036           return field.getDouble(container);
00037         } catch (IllegalArgumentException e) {
00038           e.printStackTrace();
00039         } catch (IllegalAccessException e) {
00040           e.printStackTrace();
00041         }
00042         return 0;
00043       }
00044     };
00045   }
00046 
00047   static private Monitored createBooleanLogged(final Field field, final Object container) {
00048     return new Monitored() {
00049       @Override
00050       public double monitoredValue() {
00051         try {
00052           return field.getBoolean(container) ? 1 : 0;
00053         } catch (IllegalArgumentException e) {
00054           e.printStackTrace();
00055         } catch (IllegalAccessException e) {
00056           e.printStackTrace();
00057         }
00058         return 0.0;
00059       }
00060     };
00061   }
00062 
00063   public double value() {
00064     return monitored.monitoredValue();
00065   }
00066 
00067   @Override
00068   public Monitored createMonitored(String label) {
00069     return monitored;
00070   }
00071 
00072   @Override
00073   public String[] createLabels() {
00074     return new String[] { "" };
00075   }
00076 
00077   @Override
00078   public Monitored[] createMonitored() {
00079     return new Monitored[] { createMonitored(null) };
00080   }
00081 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark