rev version
[lwes-java.git] / src / org / lwes / BaseType.java
blobbb0e73dcdad9cf1afaf551700cfcdb92e7d907ad
1 package org.lwes;
3 import org.lwes.serializer.StringParser;
4 import org.lwes.util.EncodedString;
6 /**
7 * This class provides a base type for the base types in the event system. acts
8 * partially as an interface and partially to provide encapsulation of the
9 * TypeIDs used in serialization.
11 * It also provides a sizeof() type method called getByteSize() used to
12 * determine how many bytes must be used to serialize an object of the given
13 * type.
15 * @author Anthony Molinaro
17 public class BaseType {
18 /**
19 * The name of this type used in the ESF file
21 String typeName = null;
23 /**
24 * The type token used during serialization
26 byte typeToken = TypeID.UNDEFINED_TOKEN;
28 /**
29 * The object stored in this type
31 Object typeObject = null;
33 public BaseType() {
36 public BaseType(String typeName, byte typeToken) {
37 this.typeName = typeName;
38 this.typeToken = typeToken;
41 public BaseType(String typeName, byte typeToken, Object typeObject) {
42 this.typeName = typeName;
43 this.typeToken = typeToken;
44 this.typeObject = typeObject;
47 public void setTypeName(String typeName) {
48 this.typeName = typeName;
51 public String getTypeName() {
52 return typeName;
55 public void setTypeToken(byte typeToken) {
56 this.typeToken = typeToken;
59 public byte getTypeToken() {
60 return typeToken;
63 public void setTypeObject(Object typeObject) {
64 this.typeObject = typeObject;
67 public Object getTypeObject() {
68 return typeObject;
71 public int getByteSize(short encoding) throws NoSuchAttributeTypeException {
72 int size;
73 switch (typeToken) {
74 case TypeID.UINT16_TOKEN:
75 size = 2;
76 break;
77 case TypeID.INT16_TOKEN:
78 size = 2;
79 break;
80 case TypeID.UINT32_TOKEN:
81 size = 4;
82 break;
83 case TypeID.INT32_TOKEN:
84 size = 4;
85 break;
86 case TypeID.INT64_TOKEN:
87 size = 8;
88 break;
89 case TypeID.UINT64_TOKEN:
90 size = 8;
91 break;
92 case TypeID.STRING_TOKEN:
93 String aString = (String) typeObject;
94 /* add size of string plus two bytes for the length */
95 size = EncodedString.getBytes(aString,
96 Event.ENCODING_STRINGS[encoding]).length + 2;
97 break;
98 case TypeID.IPADDR_TOKEN:
99 size = 4;
100 break;
101 case TypeID.BOOLEAN_TOKEN:
102 size = 1;
103 break;
104 default:
105 throw new NoSuchAttributeTypeException("Unknown size of BaseType "
106 + typeName);
108 return size;
111 public int bytesStoreSize(short encoding) {
112 /* add size of data plus size of token denoting data type */
113 try {
114 return getByteSize(encoding) + 1;
115 } catch (NoSuchAttributeTypeException e) {
116 return 0;
120 public Object parseFromString(String string) throws EventSystemException {
121 Object toReturn = null;
122 switch (typeToken) {
123 case TypeID.UINT16_TOKEN:
124 toReturn = StringParser.fromStringUINT16(string);
125 break;
126 case TypeID.INT16_TOKEN:
127 toReturn = StringParser.fromStringINT16(string);
128 break;
129 case TypeID.UINT32_TOKEN:
130 toReturn = StringParser.fromStringUINT32(string);
131 break;
132 case TypeID.INT32_TOKEN:
133 toReturn = StringParser.fromStringINT32(string);
134 break;
135 case TypeID.INT64_TOKEN:
136 toReturn = StringParser.fromStringINT64(string);
137 break;
138 case TypeID.UINT64_TOKEN:
139 toReturn = StringParser.fromStringUINT64(string);
140 break;
141 case TypeID.STRING_TOKEN:
142 toReturn = StringParser.fromStringSTRING(string);
143 break;
144 case TypeID.IPADDR_TOKEN:
145 toReturn = StringParser.fromStringIPADDR(string);
146 break;
147 case TypeID.BOOLEAN_TOKEN:
148 toReturn = StringParser.fromStringBOOLEAN(string);
149 break;
150 default:
151 throw new NoSuchAttributeTypeException("Unknown size of BaseType "
152 + typeName);
154 return toReturn;
157 public BaseType cloneBaseType() {
158 BaseType newBaseType = new BaseType(getTypeName(), getTypeToken(),
159 getTypeObject());
160 return newBaseType;
163 public String toString() {
164 return typeObject.toString();