1 25 26 package org.objectweb.jonas_ejb.lib; 27 28 import javax.ejb.EJBLocalObject ; 29 import org.objectweb.jorm.type.api.PType; 30 import org.objectweb.jorm.type.api.PTypeSpace; 31 import org.objectweb.jorm.naming.api.PNamingContext; 32 import org.objectweb.jorm.naming.api.PExceptionNaming; 33 import org.objectweb.medor.type.lib.PTypeSpaceMedor; 34 35 36 42 public class JormType { 43 44 50 public static PType getPType(java.lang.Class cl, boolean isPkField) { 51 if (cl.equals(Boolean.TYPE)) { 52 return PTypeSpace.BOOLEAN; 53 } else if (cl.equals(Boolean .class)) { 54 return PTypeSpace.OBJBOOLEAN; 55 } else if (cl.equals(Character.TYPE)) { 56 return PTypeSpace.CHAR; 57 } else if (cl.equals(Character .class)) { 58 return PTypeSpace.OBJCHAR; 59 } else if (cl.equals(Byte.TYPE)) { 60 return PTypeSpace.BYTE; 61 } else if (cl.equals(Byte .class)) { 62 return PTypeSpace.OBJBYTE; 63 } else if (cl.equals(Short.TYPE)) { 64 return PTypeSpace.SHORT; 65 } else if (cl.equals(Short .class)) { 66 return PTypeSpace.OBJSHORT; 67 } else if (cl.equals(Integer.TYPE)) { 68 return PTypeSpace.INT; 69 } else if (cl.equals(Integer .class)) { 70 return PTypeSpace.OBJINT; 71 } else if (cl.equals(Long.TYPE)) { 72 return PTypeSpace.LONG; 73 } else if (cl.equals(Long .class)) { 74 return PTypeSpace.OBJLONG; 75 } else if (cl.equals(Float.TYPE)) { 76 return PTypeSpace.FLOAT; 77 } else if (cl.equals(Float .class)) { 78 if (isPkField) { 79 return (JormType.getPType(FloatPkFieldMapping.getStorageType(), false)); 80 } else { 81 return PTypeSpace.OBJFLOAT; 82 } 83 } else if (cl.equals(Double.TYPE)) { 84 return PTypeSpace.DOUBLE; 85 } else if (cl.equals(Double .class)) { 86 return PTypeSpace.OBJDOUBLE; 87 } else if (cl.equals(String .class)) { 88 return PTypeSpace.STRING; 89 } else if (cl.equals(java.util.Date .class) 90 || cl.equals(java.sql.Date .class) 91 || cl.equals(java.sql.Time .class) 92 || cl.equals(java.sql.Timestamp .class)) { 93 return PTypeSpace.DATE; 94 } else if (cl.equals(java.math.BigDecimal .class)) { 95 return PTypeSpace.BIGDECIMAL; 96 } else if (EJBLocalObject .class.isAssignableFrom(cl)) { 97 return PTypeSpaceMedor.PNAME; 98 } else if (cl.isArray() && java.lang.Byte.TYPE.equals(cl.getComponentType())) { 99 return PTypeSpace.BYTEARRAY; 100 } else if (cl.isArray() && java.lang.Character.TYPE.equals(cl.getComponentType())) { 101 return PTypeSpace.CHARARRAY; 102 } 103 return PTypeSpace.SERIALIZED; 104 } 105 106 112 public static String getPTypeDef(Class cl, boolean isPkField) { 113 if (cl.equals(Boolean.TYPE)) { 114 return "PTypeSpace.BOOLEAN"; 115 } else if (cl.equals(Boolean .class)) { 116 return "PTypeSpace.OBJBOOLEAN"; 117 } else if (cl.equals(String .class)) { 118 return "PTypeSpace.STRING"; 119 } else if (cl.equals(Character.TYPE)) { 120 return "PTypeSpace.CHAR"; 121 } else if (cl.equals(Character .class)) { 122 return "PTypeSpace.OBJCHAR"; 123 } else if (cl.equals(Byte.TYPE)) { 124 return "PTypeSpace.BYTE"; 125 } else if (cl.equals(Byte .class)) { 126 return "PTypeSpace.OBJBYTE"; 127 } else if (cl.equals(Short.TYPE)) { 128 return "PTypeSpace.SHORT"; 129 } else if (cl.equals(Short .class)) { 130 return "PTypeSpace.OBJSHORT"; 131 } else if (cl.equals(Integer.TYPE)) { 132 return "PTypeSpace.INT"; 133 } else if (cl.equals(Integer .class)) { 134 return "PTypeSpace.OBJINT"; 135 } else if (cl.equals(Long.TYPE)) { 136 return "PTypeSpace.LONG"; 137 } else if (cl.equals(Long .class)) { 138 return "PTypeSpace.OBJLONG"; 139 } else if (cl.equals(Float.TYPE)) { 140 return "PTypeSpace.FLOAT"; 141 } else if (cl.equals(Float .class)) { 142 if (isPkField) { 143 return (JormType.getPTypeDef(FloatPkFieldMapping.getStorageType(), false)); 144 } else { 145 return "PTypeSpace.OBJFLOAT"; 146 } 147 } else if (cl.equals(Double.TYPE)) { 148 return "PTypeSpace.DOUBLE"; 149 } else if (cl.equals(Double .class)) { 150 return "PTypeSpace.OBJDOUBLE"; 151 } else if (cl.equals(java.util.Date .class) 152 || cl.equals(java.sql.Date .class) 153 || cl.equals(java.sql.Time .class) 154 || cl.equals(java.sql.Timestamp .class)) { 155 return "PTypeSpace.DATE"; 156 } else if (cl.equals(java.math.BigDecimal .class)) { 157 return "PTypeSpace.BIGDECIMAL"; 158 } else if (EJBLocalObject .class.isAssignableFrom(cl)) { 159 return "PTypeSpaceMedor.PNAME"; 160 } else if (cl.isArray() && java.lang.Byte.TYPE.equals(cl.getComponentType())) { 161 return "PTypeSpace.BYTEARRAY"; 162 } else if (cl.isArray() && java.lang.Character.TYPE.equals(cl.getComponentType())) { 163 return "PTypeSpace.CHARARRAY"; 164 } 165 return "PTypeSpace.SERIALIZED"; 166 } 167 168 177 public static short getCodingType(Class c, boolean isPkField) throws PExceptionNaming { 178 if (c == null) { 179 throw new PExceptionNaming("No CodingType associated to a null Class"); 180 } 181 return getCodingType(getPType(c, isPkField).getTypeCode()); 182 } 183 184 192 public static short getCodingType(PType pt) throws PExceptionNaming { 193 if (pt == null) { 194 throw new PExceptionNaming("No CodingType associated to a null PType"); 195 } 196 return getCodingType(pt.getTypeCode()); 197 } 198 199 207 public static short getCodingType(int typeCode) throws PExceptionNaming { 208 switch(typeCode) { 209 case PType.TYPECODE_CHAR: 210 return PNamingContext.CTCHAR; 211 case PType.TYPECODE_OBJCHAR: 212 return PNamingContext.CTOCHAR; 213 214 case PType.TYPECODE_BYTE: 215 return PNamingContext.CTBYTE; 216 case PType.TYPECODE_OBJBYTE: 217 return PNamingContext.CTOBYTE; 218 219 case PType.TYPECODE_SHORT: 220 return PNamingContext.CTSHORT; 221 case PType.TYPECODE_OBJSHORT: 222 return PNamingContext.CTOSHORT; 223 224 case PType.TYPECODE_INT: 225 return PNamingContext.CTINT; 226 case PType.TYPECODE_OBJINT: 227 return PNamingContext.CTOINT; 228 229 case PType.TYPECODE_LONG: 230 return PNamingContext.CTLONG; 231 case PType.TYPECODE_OBJLONG: 232 return PNamingContext.CTOLONG; 233 234 case PType.TYPECODE_BYTEARRAY: 235 return PNamingContext.CTBYTEARRAY; 236 237 case PType.TYPECODE_CHARARRAY: 238 return PNamingContext.CTCHARARRAY; 239 240 case PType.TYPECODE_STRING: 241 return PNamingContext.CTSTRING; 242 243 case PType.TYPECODE_DATE: 244 return PNamingContext.CTDATE; 245 246 default: 247 throw new PExceptionNaming("This type is not suportted: typeCode=" + typeCode); 248 } 249 } 250 251 } 252 | Popular Tags |