1 30 package com.genimen.djeneric.tools.scriptengine.core.nodes; 31 32 import java.util.HashMap ; 33 34 import com.genimen.djeneric.language.Messages; 35 import com.genimen.djeneric.tools.scriptengine.core.DjScriptParserEngine; 36 import com.genimen.djeneric.tools.scriptengine.core.ParseException; 37 import com.genimen.djeneric.tools.scriptengine.core.SimpleNode; 38 import com.genimen.djeneric.tools.scriptengine.core.util.DjScriptCompileTimeScope; 39 import com.genimen.djeneric.tools.scriptengine.core.util.DjScriptExecutionException; 40 import com.genimen.djeneric.tools.scriptengine.core.util.DjScriptExecutionTimeScope; 41 42 public class PropertyPathNode extends SimpleNode implements ValueExpression 43 { 44 private String _path; 45 private boolean _negated = false; 46 47 public PropertyPathNode(int i) 48 { 49 super(i); 50 } 51 52 public PropertyPathNode(DjScriptParserEngine p, int i) 53 { 54 super(p, i); 55 } 56 57 public String getName() 58 { 59 return toString(); 60 } 61 62 public String toString() 63 { 64 if (isNegated()) return "!" + _path; 65 return _path; 66 } 67 68 public void setPath(String path) 69 { 70 this._path = path; 71 } 72 73 public String getPath() 74 { 75 return _path; 76 } 77 78 public void setNegated(boolean negated) 79 { 80 this._negated = negated; 81 } 82 83 public boolean isNegated() 84 { 85 return _negated; 86 } 87 88 public Object getValue(DjScriptExecutionTimeScope context) throws DjScriptExecutionException 89 { 90 try 91 { 92 if (_negated) 93 { 94 Object o = context.getPropertyValue(getPath(), this); 95 if (!(o instanceof Boolean )) throw new ParseException(Messages.getString("PropertyNode.CanNotNegate"), this); 96 Boolean b = (Boolean ) o; 97 return new Boolean (!b.booleanValue()); 98 } 99 else return context.getPropertyValue(getPath(), this); 100 } 101 catch (Exception x) 102 { 103 throw new DjScriptExecutionException(x, this); 104 } 105 } 106 107 public void translateOql(DjScriptExecutionTimeScope ctxt, StringBuffer result, HashMap parameters) 108 { 109 result.append("("); 110 111 if (isNegated()) result.append("! "); 112 113 result.append(_path); 114 result.append(")"); 115 } 116 117 public String getValidatedTypeName(DjScriptCompileTimeScope context) throws DjScriptExecutionException 118 { 119 return context.getPropertyType(_path, this); 120 } 121 122 public void validateScript(DjScriptCompileTimeScope ctxt) throws DjScriptExecutionException 123 { 124 getValidatedTypeName(ctxt); 125 } 126 127 } | Popular Tags |