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 GetRelatedOne extends MethodOperation { 43 44 public static final String module = GetRelatedOne.class.getName(); 45 46 ContextAccessor valueAcsr; 47 ContextAccessor toValueAcsr; 48 String relationName; 49 String useCacheStr; 50 51 public GetRelatedOne(Element element, SimpleMethod simpleMethod) { 52 super(element, simpleMethod); 53 valueAcsr = new ContextAccessor(element.getAttribute("value-name")); 54 toValueAcsr = new ContextAccessor(element.getAttribute("to-value-name")); 55 relationName = element.getAttribute("relation-name"); 56 useCacheStr = element.getAttribute("use-cache"); 57 } 58 59 public boolean exec(MethodContext methodContext) { 60 String relationName = methodContext.expandString(this.relationName); 61 String useCacheStr = methodContext.expandString(this.useCacheStr); 62 boolean useCache = "true".equals(useCacheStr); 63 64 Object valueObject = valueAcsr.get(methodContext); 65 if (!(valueObject instanceof GenericValue)) { 66 String errMsg = "ERROR: Could not complete the " + simpleMethod.getShortDescription() + " process [env variable for value-name " + valueAcsr.toString() + " is not a GenericValue object; for the relation-name: " + relationName + "]"; 67 Debug.logError(errMsg, module); 68 methodContext.setErrorReturn(errMsg, simpleMethod); 69 return false; 70 } 71 GenericValue value = (GenericValue) valueObject; 72 if (value == null) { 73 Debug.logWarning("Value not found with name: " + valueAcsr + ", not getting related...", module); 74 return true; 75 } 76 try { 77 if (useCache) { 78 toValueAcsr.put(methodContext, value.getRelatedOneCache(relationName)); 79 } else { 80 toValueAcsr.put(methodContext, value.getRelatedOne(relationName)); 81 } 82 } catch (GenericEntityException e) { 83 String errMsg = "ERROR: Could not complete the " + simpleMethod.getShortDescription() + " process [problem getting related one from entity with name " + value.getEntityName() + " for the relation-name: " + relationName + ": " + e.getMessage() + "]"; 84 Debug.logError(e, errMsg, module); 85 methodContext.setErrorReturn(errMsg, simpleMethod); 86 return false; 87 } 88 return true; 89 } 90 91 public String rawString() { 92 return "<get-related-one/>"; 94 } 95 public String expandedString(MethodContext methodContext) { 96 return this.rawString(); 98 } 99 } 100 | Popular Tags |