KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > javacore > jmiimpl > javamodel > DoStatementImpl


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19 package org.netbeans.modules.javacore.jmiimpl.javamodel;
20
21 import java.util.List JavaDoc;
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 /**
32  *
33  * @author Martin Matula
34  */

35 public abstract class DoStatementImpl extends WhileStatementImpl implements DoStatement {
36     
37     /** Creates a new instance of DoStatementImpl */
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 JavaDoc getSourceText() {
54         String JavaDoc origElem;
55         if ((origElem = checkChange()) != null)
56             return origElem;
57         StringBuffer JavaDoc buf = new StringBuffer JavaDoc();
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 JavaDoc 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