001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041: package org.netbeans.modules.vmd.midp.components;
042:
043: import org.netbeans.modules.vmd.api.model.PrimitiveDescriptor;
044: import org.netbeans.modules.vmd.api.model.PrimitiveDescriptorFactory;
045:
046: /**
047: * @author David Kaspar
048: */
049: // HINT - after making change, update MidpCodeSupport too
050: public final class MidpPrimitiveDescriptor implements
051: PrimitiveDescriptorFactory {
052:
053: static final CharPD charPD = new CharPD();
054: static final BytePD bytePD = new BytePD();
055: static final ShortPD shortPD = new ShortPD();
056: static final IntPD intPD = new IntPD();
057: static final LongPD longPD = new LongPD();
058: static final FloatPD floatPD = new FloatPD();
059: static final DoublePD doublePD = new DoublePD();
060: static final StringPD stringPD = new StringPD();
061: static final BooleanPD booleanPD = new BooleanPD();
062:
063: public String getProjectType() {
064: return MidpDocumentSupport.PROJECT_TYPE_MIDP;
065: }
066:
067: public PrimitiveDescriptor getDescriptorForTypeIDString(
068: String string) {
069: if (MidpTypes.TYPEID_CHAR.getString().equals(string))
070: return intPD;
071: if (MidpTypes.TYPEID_BYTE.getString().equals(string))
072: return bytePD;
073: if (MidpTypes.TYPEID_SHORT.getString().equals(string))
074: return shortPD;
075: if (MidpTypes.TYPEID_INT.getString().equals(string))
076: return intPD;
077: if (MidpTypes.TYPEID_LONG.getString().equals(string))
078: return longPD;
079: if (MidpTypes.TYPEID_FLOAT.getString().equals(string))
080: return floatPD;
081: if (MidpTypes.TYPEID_DOUBLE.getString().equals(string))
082: return doublePD;
083: if (MidpTypes.TYPEID_BOOLEAN.getString().equals(string))
084: return booleanPD;
085: if (MidpTypes.TYPEID_JAVA_LANG_STRING.getString()
086: .equals(string))
087: return stringPD;
088: if (MidpTypes.TYPEID_JAVA_CODE.getString().equals(string))
089: return stringPD;
090: //TODO
091: return null;
092: }
093:
094: private static class CharPD implements PrimitiveDescriptor {
095:
096: public String serialize(Object value) {
097: return value.toString();
098: }
099:
100: public Object deserialize(String serialized) {
101: return serialized.charAt(0);
102: }
103:
104: public boolean isValidInstance(Object object) {
105: return object instanceof Character;
106: }
107:
108: }
109:
110: private static class BytePD implements PrimitiveDescriptor {
111:
112: public String serialize(Object value) {
113: return value.toString();
114: }
115:
116: public Object deserialize(String serialized) {
117: return Byte.parseByte(serialized);
118: }
119:
120: public boolean isValidInstance(Object object) {
121: return object instanceof Byte;
122: }
123:
124: }
125:
126: private static class ShortPD implements PrimitiveDescriptor {
127:
128: public String serialize(Object value) {
129: return value.toString();
130: }
131:
132: public Object deserialize(String serialized) {
133: return Short.parseShort(serialized);
134: }
135:
136: public boolean isValidInstance(Object object) {
137: return object instanceof Short;
138: }
139:
140: }
141:
142: private static class IntPD implements PrimitiveDescriptor {
143:
144: public String serialize(Object value) {
145: return value.toString();
146: }
147:
148: public Object deserialize(String serialized) {
149: return Integer.parseInt(serialized);
150: }
151:
152: public boolean isValidInstance(Object object) {
153: return object instanceof Integer;
154: }
155:
156: }
157:
158: private static class LongPD implements PrimitiveDescriptor {
159:
160: public String serialize(Object value) {
161: return value.toString();
162: }
163:
164: public Object deserialize(String serialized) {
165: return Long.parseLong(serialized);
166: }
167:
168: public boolean isValidInstance(Object object) {
169: return object instanceof Long;
170: }
171:
172: }
173:
174: private static class FloatPD implements PrimitiveDescriptor {
175:
176: public String serialize(Object value) {
177: return value.toString();
178: }
179:
180: public Object deserialize(String serialized) {
181: return Float.parseFloat(serialized);
182: }
183:
184: public boolean isValidInstance(Object object) {
185: return object instanceof Float;
186: }
187:
188: }
189:
190: private static class DoublePD implements PrimitiveDescriptor {
191:
192: public String serialize(Object value) {
193: return value.toString();
194: }
195:
196: public Object deserialize(String serialized) {
197: return Double.parseDouble(serialized);
198: }
199:
200: public boolean isValidInstance(Object object) {
201: return object instanceof Double;
202: }
203:
204: }
205:
206: private static class BooleanPD implements PrimitiveDescriptor {
207:
208: public String serialize(Object value) {
209: return value.toString();
210: }
211:
212: public Object deserialize(String serialized) {
213: return Boolean.parseBoolean(serialized);
214: }
215:
216: public boolean isValidInstance(Object object) {
217: return object instanceof Boolean;
218: }
219:
220: }
221:
222: private static class StringPD implements PrimitiveDescriptor {
223:
224: public String serialize(Object value) {
225: return (String) value;
226: }
227:
228: public Object deserialize(String serialized) {
229: return serialized;
230: }
231:
232: public boolean isValidInstance(Object object) {
233: return object instanceof String;
234: }
235:
236: }
237:
238: }
|