KickJava   Java API By Example, From Geeks To Geeks.

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


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.Element;
23 import org.netbeans.jmi.javamodel.JavaModelPackage;
24 import org.netbeans.jmi.javamodel.Operator;
25 import org.netbeans.jmi.javamodel.PostfixExpression;
26 import org.netbeans.jmi.javamodel.UnaryExpression;
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 mm109185
34  */

35 public abstract class PostfixExpressionImpl extends PrefixExpressionImpl implements PostfixExpression {
36     /** Creates a new instance of PostfixExpressionImpl */
37     public PostfixExpressionImpl(StorableObject o) {
38         super(o);
39     }
40
41     protected Operator extractOperator() {
42         if (getASTree().getSubTrees().length > 1) {
43             return getOperator(getASTree().getSubTrees()[1].getType());
44         } else {
45             return null;
46         }
47     }
48
49     protected void initChildren() {
50         childrenInited = false;
51         ASTree tree = getASTree();
52         if (tree != null) {
53             expression = (UnaryExpression) initOrCreate(expression, tree.getSubTrees()[0]);
54         }
55         childrenInited = true;
56     }
57     
58     public String JavaDoc getSourceText() {
59         String JavaDoc origElem;
60         if ((origElem = checkChange()) != null)
61             return origElem;
62         StringBuffer JavaDoc buf = new StringBuffer JavaDoc();
63         StatementImpl expr = (StatementImpl) getExpression();
64         Operator operator = getOperator();
65         buf.append(expr.getSourceText());
66         buf.append(operatorToString(operator));
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) getExpression(), CHANGED_EXPRESSION);
76         if (isChanged(CHANGED_OPERATOR)) {
77             int pos = parser.getToken(children[0].getLastToken()).getEndOffset();
78             replaceNode(diff, parser, children[1], operatorToString(operator), pos, "");
79         }
80     }
81     
82     public Element duplicate(JavaModelPackage targetExtent) {
83         return targetExtent.getPostfixExpression().createPostfixExpression(
84                 getOperator(),
85                 (UnaryExpression) duplicateElement(getExpression(), targetExtent)
86                );
87                 
88     }
89 }
90
Popular Tags