1 24 package org.ofbiz.minilang.method.conditional; 25 26 import java.util.*; 27 28 import org.w3c.dom.*; 29 import org.ofbiz.base.util.*; 30 import org.ofbiz.minilang.*; 31 import org.ofbiz.minilang.method.*; 32 33 40 public class MasterIf extends MethodOperation { 41 42 Conditional condition; 43 44 List thenSubOps = new LinkedList(); 45 List elseSubOps = null; 46 47 List elseIfs = null; 48 49 public MasterIf(Element element, SimpleMethod simpleMethod) { 50 super(element, simpleMethod); 51 52 Element conditionElement = UtilXml.firstChildElement(element, "condition"); 53 Element conditionChildElement = UtilXml.firstChildElement(conditionElement); 54 this.condition = ConditionalFactory.makeConditional(conditionChildElement, simpleMethod); 55 56 Element thenElement = UtilXml.firstChildElement(element, "then"); 57 SimpleMethod.readOperations(thenElement, thenSubOps, simpleMethod); 58 59 List elseIfElements = UtilXml.childElementList(element, "else-if"); 60 if (elseIfElements != null && elseIfElements.size() > 0) { 61 elseIfs = new LinkedList(); 62 Iterator eieIter = elseIfElements.iterator(); 63 while (eieIter.hasNext()) { 64 Element elseIfElement = (Element) eieIter.next(); 65 elseIfs.add(new ElseIf(elseIfElement, simpleMethod)); 66 } 67 } 68 69 Element elseElement = UtilXml.firstChildElement(element, "else"); 70 if (elseElement != null) { 71 elseSubOps = new LinkedList(); 72 SimpleMethod.readOperations(elseElement, elseSubOps, simpleMethod); 73 } 74 } 75 76 public boolean exec(MethodContext methodContext) { 77 81 boolean runSubOps = condition.checkCondition(methodContext); 83 84 if (runSubOps) { 85 return SimpleMethod.runSubOps(thenSubOps, methodContext); 86 } else { 87 88 if (elseIfs != null && elseIfs.size() > 0) { 90 Iterator elseIfIter = elseIfs.iterator(); 91 while (elseIfIter.hasNext()) { 92 ElseIf elseIf = (ElseIf) elseIfIter.next(); 93 if (elseIf.checkCondition(methodContext)) { 94 return elseIf.runSubOps(methodContext); 95 } 96 } 97 } 98 99 if (elseSubOps != null) { 100 return SimpleMethod.runSubOps(elseSubOps, methodContext); 101 } else { 102 return true; 103 } 104 } 105 } 106 107 public String rawString() { 108 return expandedString(null); 109 } 110 111 public String expandedString(MethodContext methodContext) { 112 StringBuffer messageBuf = new StringBuffer (); 114 this.condition.prettyPrint(messageBuf, methodContext); 115 return "<if><condition>" + messageBuf + "</condition></if>"; 116 } 117 } 118 | Popular Tags |