1 24 package org.ofbiz.minilang.method.entityops; 25 26 import org.ofbiz.base.util.Debug; 27 import org.ofbiz.entity.GenericEntityException; 28 import org.ofbiz.entity.GenericValue; 29 import org.ofbiz.minilang.SimpleMethod; 30 import org.ofbiz.minilang.method.ContextAccessor; 31 import org.ofbiz.minilang.method.MethodContext; 32 import org.ofbiz.minilang.method.MethodOperation; 33 import org.w3c.dom.Element ; 34 35 42 public class RemoveRelated extends MethodOperation { 43 44 public static final String module = RemoveRelated.class.getName(); 45 46 ContextAccessor valueAcsr; 47 String relationName; 48 String doCacheClearStr; 49 50 public RemoveRelated(Element element, SimpleMethod simpleMethod) { 51 super(element, simpleMethod); 52 valueAcsr = new ContextAccessor(element.getAttribute("value-name")); 53 relationName = element.getAttribute("relation-name"); 54 doCacheClearStr = element.getAttribute("do-cache-clear"); 55 } 56 57 public boolean exec(MethodContext methodContext) { 58 boolean doCacheClear = !"false".equals(doCacheClearStr); 59 String relationName = methodContext.expandString(this.relationName); 60 61 GenericValue value = (GenericValue) valueAcsr.get(methodContext); 62 if (value == null) { 63 String errMsg = "In remove-related a value was not found with the specified valueAcsr: " + valueAcsr + ", not removing related"; 64 65 Debug.logWarning(errMsg, module); 66 if (methodContext.getMethodType() == MethodContext.EVENT) { 67 methodContext.putEnv(simpleMethod.getEventErrorMessageName(), errMsg); 68 methodContext.putEnv(simpleMethod.getEventResponseCodeName(), simpleMethod.getDefaultErrorCode()); 69 } else if (methodContext.getMethodType() == MethodContext.SERVICE) { 70 methodContext.putEnv(simpleMethod.getServiceErrorMessageName(), errMsg); 71 methodContext.putEnv(simpleMethod.getServiceResponseMessageName(), simpleMethod.getDefaultErrorCode()); 72 } 73 return false; 74 } 75 76 try { 77 methodContext.getDelegator().removeRelated(relationName, value, doCacheClear); 78 } catch (GenericEntityException e) { 79 Debug.logError(e, module); 80 String errMsg = "ERROR: Could not complete the " + simpleMethod.getShortDescription() + " process [problem removing the relation " + relationName + " of the value " + valueAcsr + " value: " + e.getMessage() + "]"; 81 82 if (methodContext.getMethodType() == MethodContext.EVENT) { 83 methodContext.putEnv(simpleMethod.getEventErrorMessageName(), errMsg); 84 methodContext.putEnv(simpleMethod.getEventResponseCodeName(), simpleMethod.getDefaultErrorCode()); 85 } else if (methodContext.getMethodType() == MethodContext.SERVICE) { 86 methodContext.putEnv(simpleMethod.getServiceErrorMessageName(), errMsg); 87 methodContext.putEnv(simpleMethod.getServiceResponseMessageName(), simpleMethod.getDefaultErrorCode()); 88 } 89 return false; 90 } 91 return true; 92 } 93 94 public String rawString() { 95 return "<remove-related/>"; 97 } 98 public String expandedString(MethodContext methodContext) { 99 return this.rawString(); 101 } 102 } 103 | Popular Tags |