1 30 package com.genimen.djeneric.tools.scriptengine.core.nodes; 31 32 import com.genimen.djeneric.language.Messages; 33 import com.genimen.djeneric.repository.DjObject; 34 import com.genimen.djeneric.repository.exceptions.DjenericException; 35 import com.genimen.djeneric.repository.exceptions.ObjectNotDefinedException; 36 import com.genimen.djeneric.tools.scriptengine.core.DjScriptParserEngine; 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 DeleteStatementNode extends SimpleNode 43 { 44 45 public DeleteStatementNode(int i) 46 { 47 super(i); 48 } 49 50 public DeleteStatementNode(DjScriptParserEngine p, int i) 51 { 52 super(p, i); 53 } 54 55 public String getName() 56 { 57 return "delete"; 58 } 59 60 public String toString() 61 { 62 return getName(); 63 } 64 65 public void execute(DjScriptExecutionTimeScope context) throws DjScriptExecutionException 66 { 67 PropertyPathNode propNode = (PropertyPathNode) getChild(PropertyPathNode.class); 68 69 Object o = context.getPropertyValue(propNode.getPath(), this); 70 if (!(o instanceof DjObject)) throw new DjScriptExecutionException(Messages 71 .getString("DeleteStatementNode.NotAModelObject"), this); 72 try 73 { 74 ((DjObject) o).markForDelete(); 75 context.clearPointerVariables(o); 77 } 78 catch (DjenericException e) 79 { 80 throw new DjScriptExecutionException(e.getMessage(), this); 81 } 82 } 83 84 public void validateScript(DjScriptCompileTimeScope ctxt) throws DjScriptExecutionException 85 { 86 PropertyPathNode propNode = (PropertyPathNode) getChild(PropertyPathNode.class); 87 String tp = ctxt.getPropertyType(propNode.getPath(), this); 88 try 89 { 90 ctxt.getPersistenceManager().getExtentByObjectType(tp); 91 } 92 catch (ObjectNotDefinedException onde) 93 { 94 throw new DjScriptExecutionException(tp + " is geen persistent objecttype", this); 95 } 96 } 97 98 } | Popular Tags |