Package Galaxy.Visitor.util

Source Code of Galaxy.Visitor.util.ToolStateContext

package Galaxy.Visitor.util;

import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Stack;

import Core.Option;
import Galaxy.Tree.Workflow.ToolState;
import Galaxy.Tree.Workflow.ToolState.Primitive;
import Galaxy.Tree.Workflow.ToolState.PrimitiveOrMap;

public class ToolStateContext {
  private Stack<Map<String,PrimitiveOrMap>> stateStack;
  public ToolStateContext(){
    stateStack = new Stack<Map<String,PrimitiveOrMap>>();
   
  }
 
  public void setContext(ToolState toolstate){
    stateStack.clear();
    stateStack.push(toolstate.getToolState().getSecond());
   
  }
  public void stepInto(String key){
    Map<String,PrimitiveOrMap> current = stateStack.peek();
    if(current.containsKey(key) && current.get(key).isSecond()){
      stateStack.push(current.get(key).getSecond());
    }
  }
  public void stepOut(){
      stateStack.pop();
  }
 
  public ToolStateContext copy(){
    ToolStateContext c = new ToolStateContext();
    for(Map<String,PrimitiveOrMap> mp : stateStack){
      c.stateStack.push(mp);
    }
   
    return c;
  }
  public Option<Primitive,ToolStateContext> get(String key){
    Map<String,PrimitiveOrMap> current= stateStack.peek();
    if(current.containsKey(key)){
      Option<Primitive,ToolStateContext> o;
      PrimitiveOrMap pm = current.get(key);
      o=new Option<Primitive,ToolStateContext>();
      if(pm == null)
        return null;
      else if(pm.isFirst())
        o.setFirst(pm.getFirst());
      else{
        ToolStateContext t = this.copy();
        t.stepInto(key);
        o.setSecond(t);
      }
      return o;
    }
    else 
      return null;
  }
 
  public String toString(){
    return stateStack.peek().toString();
  }
}
TOP

Related Classes of Galaxy.Visitor.util.ToolStateContext

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.