1 19 package org.netbeans.modules.javacore.jmiimpl.javamodel; 20 21 import java.util.List ; 22 import org.netbeans.jmi.javamodel.DoStatement; 23 import org.netbeans.jmi.javamodel.Element; 24 import org.netbeans.jmi.javamodel.Expression; 25 import org.netbeans.jmi.javamodel.JavaModelPackage; 26 import org.netbeans.jmi.javamodel.Statement; 27 import org.netbeans.lib.java.parser.ASTree; 28 import org.netbeans.mdr.storagemodel.StorableObject; 29 import org.netbeans.modules.javacore.parser.ASTProvider; 30 31 35 public abstract class DoStatementImpl extends WhileStatementImpl implements DoStatement { 36 37 38 public DoStatementImpl(StorableObject o) { 39 super(o); 40 } 41 42 protected void initChildren() { 43 childrenInited = false; 44 ASTree tree = getASTree(); 45 if (tree != null) { 46 ASTree[] parts = tree.getSubTrees(); 47 body = (Statement) initOrCreate(body, parts[0]); 48 expression = (Expression) initOrCreate(expression, parts[1]); 49 } 50 childrenInited = true; 51 } 52 53 public String getSourceText() { 54 String origElem; 55 if ((origElem = checkChange()) != null) 56 return origElem; 57 StringBuffer buf = new StringBuffer (); 58 StatementImpl cond = (StatementImpl) getExpression(); 59 StatementImpl body = (StatementImpl) getBody(); 60 buf.append('\n'); 61 formatElementPart(DO_KEYWORD, buf); 62 buf.append(body.getSourceText()); 63 buf.append(DO_WHILE_KEYWORD); 64 formatElementPart(STMT_OPEN_BRACKET, buf); 65 buf.append(cond.getSourceText()); 66 formatElementPart(STMT_CLOSE_BRACKET, buf); 67 return buf.toString(); 68 } 69 70 public void getDiff(List diff) { 71 ASTProvider parser = getParser(); 72 ASTree tree = getASTree(); 73 ASTree[] children = tree.getSubTrees(); 74 75 getChildDiff(diff, parser, children[0], (MetadataElement) getBody(), CHANGED_BODY); 76 getChildDiff(diff, parser, children[1], (MetadataElement) getExpression(), CHANGED_EXPRESSION); 77 } 78 79 public Element duplicate(JavaModelPackage targetExtent) { 80 return targetExtent.getDoStatement().createDoStatement( 81 (Expression) duplicateElement(getExpression(), targetExtent), 82 (Statement) duplicateElement(getBody(), targetExtent) 83 ); 84 } 85 } 86 | Popular Tags |