1 package jfun.yan.xml.nuts.optional; 2 3 import java.util.ArrayList ; 4 5 import jfun.yan.Component; 6 import jfun.yan.Components; 7 import jfun.yan.xml.nut.ComponentNut; 8 9 31 public class SwitchNut extends ComponentNut { 32 private Object val; 33 private final ArrayList cases = new ArrayList (); 34 private Component def; 35 36 public Object getVal() { 37 return val; 38 } 39 public void setVal(Object val) { 40 this.val = val; 41 } 42 public void addCase(Case cs){ 43 cases.add(cs); 44 } 45 public void addDefault(Default def){ 46 checkDuplicate("default", this.def); 47 this.def = def.getComponent(); 48 } 49 private boolean match(Object v){ 50 return val==null?v==null:val.equals(v); 51 } 52 public Component eval(){ 53 final int sz = cases.size(); 54 for(int i=0; i<sz; i++){ 55 final Case cs = (Case)cases.get(i); 56 if(match(cs.getOf())){ 57 return cs.getComponent(); 58 } 59 } 60 return def==null?Components.value(null):def; 61 } 62 63 } 64 | Popular Tags |