RLPark 1.0.0
Reinforcement Learning Framework in Java
|
00001 package zephyr.plugin.core.api.internal.monitoring.wrappers; 00002 00003 import java.lang.reflect.Field; 00004 import java.util.ArrayList; 00005 import java.util.HashMap; 00006 import java.util.List; 00007 import java.util.Map; 00008 00009 import zephyr.plugin.core.api.labels.Labeled; 00010 import zephyr.plugin.core.api.monitoring.annotations.Monitor; 00011 00012 public class Wrappers { 00013 static final Map<String, MonitorWrapper> wrappers = new HashMap<String, MonitorWrapper>(); 00014 static { 00015 registerWrapper(Squared.ID, new Squared()); 00016 registerWrapper(Abs.ID, new Abs()); 00017 } 00018 00019 private Wrappers() { 00020 } 00021 00022 public static void registerWrapper(String id, MonitorWrapper wrapper) { 00023 wrappers.put(id, wrapper); 00024 } 00025 00026 public static List<MonitorWrapper> getWrappers(Field field, List<MonitorWrapper> parentWrappers) { 00027 Monitor monitorAnnotation = field.getAnnotation(Monitor.class); 00028 if (monitorAnnotation == null) 00029 return parentWrappers; 00030 List<MonitorWrapper> result = new ArrayList<MonitorWrapper>(); 00031 if (parentWrappers != null) 00032 result.addAll(parentWrappers); 00033 String[] wrapperIDs = monitorAnnotation.wrappers(); 00034 for (String id : wrapperIDs) { 00035 MonitorWrapper wrapper = wrappers.get(id); 00036 if (wrapper != null) 00037 result.add(wrapper); 00038 } 00039 return result; 00040 } 00041 00042 public static String wrapperLabel(MonitorWrapper wrapper) { 00043 if (wrapper instanceof Labeled) 00044 return ((Labeled) wrapper).label(); 00045 return wrapper.getClass().getSimpleName(); 00046 } 00047 }