RLPark 1.0.0
Reinforcement Learning Framework in Java
|
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 }