KickJava   Java API By Example, From Geeks To Geeks.

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


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 javax.jmi.reflect.ConstraintViolationException;
23 import org.netbeans.jmi.javamodel.CharLiteral;
24 import org.netbeans.jmi.javamodel.Element;
25 import org.netbeans.jmi.javamodel.JavaModelPackage;
26 import org.netbeans.jmi.javamodel.PrimitiveTypeKindEnum;
27 import org.netbeans.lib.java.parser.Token;
28 import org.netbeans.mdr.storagemodel.StorableObject;
29
30 /**
31  *
32  * @author Martin Matula
33  */

34 public abstract class CharLiteralImpl extends LiteralImpl implements CharLiteral {
35     private String JavaDoc value;
36     
37     public CharLiteralImpl(StorableObject o) {
38         super(o);
39         type = ((JavaModelPackage) refImmediatePackage()).getType().resolve(PrimitiveTypeKindEnum.CHAR.toString());
40     }
41
42     public void setValue(String JavaDoc value) {
43         objectChanged(CHANGED_VALUE);
44         doValueChange(value);
45     }
46     
47     public String JavaDoc getValue() {
48         if (isChanged(CHANGED_VALUE)) {
49             return value;
50         } else {
51             return "" + ((Token) getASTree()).getValue();
52         }
53     }
54     
55     public String JavaDoc getSourceText() {
56         String JavaDoc origElem;
57         if ((origElem = checkChange()) != null)
58             return origElem;
59         return getText();
60     }
61     
62     public void getDiff(List JavaDoc diff) {
63         replaceNode(diff, getParser(), getASTree(), getText(), 0, null);
64     }
65     
66     private String JavaDoc getText() {
67         return "'" + String.valueOf(getValue()) + '\''; // NOI18N
68
}
69     
70     void setData(String JavaDoc value) {
71         doValueChange(value);
72     }
73     
74     private void doValueChange(String JavaDoc value) {
75         if (value == null) {
76             this.value = "\000"; // NOI18N
77
} else {
78             if (value.length() != 1) throw new ConstraintViolationException(null, null, "Must pass exactly one character."); // NOI18N
79
this.value = value;
80         }
81     }
82     
83     public Element duplicate(JavaModelPackage targetExtent) {
84         return targetExtent.getCharLiteral().createCharLiteral(getValue());
85     }
86 }
87
Popular Tags