RLPark 1.0.0
Reinforcement Learning Framework in Java

LabelBuilder.java

Go to the documentation of this file.
00001 package zephyr.plugin.core.api.internal.parsing;
00002 
00003 import java.util.LinkedHashMap;
00004 import java.util.Map;
00005 import java.util.Stack;
00006 
00007 import zephyr.plugin.core.api.monitoring.abstracts.LabeledCollection;
00008 
00009 
00010 public class LabelBuilder {
00011   public static final String DefaultSeparator = "/";
00012   public static final String DefaultElementSeparator = ":";
00013 
00014   private final String separator;
00015   private final Stack<String> prefixStack = new Stack<String>();
00016   private final Stack<Map<String, LabeledCollection>> labelsMapStack = new Stack<Map<String, LabeledCollection>>();
00017   private final String elementSeparator;
00018 
00019   public LabelBuilder() {
00020     this(DefaultSeparator, DefaultElementSeparator);
00021   }
00022 
00023   public LabelBuilder(String separator, String elementSeparator) {
00024     this.separator = separator;
00025     this.elementSeparator = elementSeparator;
00026   }
00027 
00028   public void push(String prefix) {
00029     prefixStack.push(prefix);
00030   }
00031 
00032   public String pop() {
00033     return prefixStack.pop();
00034   }
00035 
00036   public String prefixed(String label) {
00037     return toString() + separator + label;
00038   }
00039 
00040   @Override
00041   public String toString() {
00042     StringBuilder prefixes = new StringBuilder();
00043     int prefixIndex = 0;
00044     for (String prefix : prefixStack) {
00045       if (prefixIndex > 0)
00046         prefixes.append(separator);
00047       prefixes.append(prefix);
00048       prefixIndex++;
00049     }
00050     return prefixes.toString();
00051   }
00052 
00053   public String buildLabel(String label) {
00054     String labelPrefix = toString();
00055     if (labelPrefix.isEmpty())
00056       return label;
00057     return labelPrefix + separator + label;
00058   }
00059 
00060   public void pushLabelMap(Map<String, LabeledCollection> labelsMap) {
00061     labelsMapStack.push(labelsMap);
00062   }
00063 
00064   public void pushLabelMap(String id, final String[] labels) {
00065     Map<String, LabeledCollection> labelsMap = new LinkedHashMap<String, LabeledCollection>();
00066     labelsMap.put(id, new LabeledCollection() {
00067       @Override
00068       public String label(int index) {
00069         return labels[index];
00070       }
00071     });
00072     pushLabelMap(labelsMap);
00073   }
00074 
00075   public void popLabelMaps() {
00076     labelsMapStack.pop();
00077   }
00078 
00079   public LabeledCollection getLabeledElement(String id) {
00080     for (Map<String, LabeledCollection> labelsMap : labelsMapStack) {
00081       LabeledCollection labeledElement = labelsMap.get(id);
00082       if (labeledElement != null)
00083         return labeledElement;
00084     }
00085     return null;
00086   }
00087 
00088   public String elementLabelSeparator() {
00089     return elementSeparator;
00090   }
00091 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark