1 package jfun.yan.xml.nuts.optional; 2 3 import jfun.yan.xml.NutsFunction; 4 5 12 public abstract class AbstractLoopRegisterNut extends AbstractRegisterNut { 13 private String prefix; 14 private String suffix; 15 private NutsFunction body; 16 protected NutsFunction getMandatoryBody(){ 17 checkMandatory("body", body); 18 return body; 19 } 20 public NutsFunction getBody() { 21 return body; 22 } 23 public void setBody(NutsFunction body) { 24 this.body = body; 25 } 26 public String getPrefix() { 27 return prefix; 28 } 29 public void setPrefix(String prefix) { 30 this.prefix = prefix; 31 } 32 public String getSuffix() { 33 return suffix; 34 } 35 public void setSuffix(String postfix) { 36 this.suffix = postfix; 37 } 38 44 public void add(NutsFunction fun){ 45 checkDuplicate("body", this.body); 46 this.body = fun; 47 } 48 53 protected Object calcFQN(Object id){ 54 if(prefix==null){ 55 if(suffix==null) 56 return id; 57 else 58 return ""+id+suffix; 59 } 60 else if(suffix==null){ 61 return prefix+id; 62 } 63 else 64 return prefix+id+suffix; 65 } 66 72 protected Object [] createArgs(Object val){ 73 if(prefix==null){ 74 if(suffix==null){ 75 return new Object []{val}; 76 } 77 else{ 78 return new Object []{suffix, val}; 79 } 80 } 81 else{ 82 if(suffix==null){ 83 return new Object []{prefix, val}; 84 } 85 else{ 86 return new Object []{prefix, suffix, val}; 87 } 88 } 89 } 90 97 protected Object [] createArgs(Object val1, Object val2){ 98 if(prefix==null){ 99 if(suffix==null){ 100 return new Object []{val1, val2}; 101 } 102 else{ 103 return new Object []{suffix, val1, val2}; 104 } 105 } 106 else{ 107 if(suffix==null){ 108 return new Object []{prefix, val1, val2}; 109 } 110 else{ 111 return new Object []{prefix, suffix, val1, val2}; 112 } 113 } 114 } 115 116 122 protected void loop(Object id, Object val){ 123 registerValue(calcFQN(id), getMandatoryBody().call(createArgs(val))); 124 } 125 133 protected void loop(Object id, Object val1, Object val2){ 134 registerValue(calcFQN(id), getMandatoryBody().call(createArgs(val1, val2))); 135 } 136 } 137 | Popular Tags |