JormType.java

00001 
00026 package org.objectweb.jonas_ejb.lib;
00027 
00028 import javax.ejb.EJBLocalObject;
00029 import org.objectweb.jorm.type.api.PType;
00030 import org.objectweb.jorm.type.api.PTypeSpace;
00031 import org.objectweb.jorm.naming.api.PNamingContext;
00032 import org.objectweb.jorm.naming.api.PExceptionNaming;
00033 import org.objectweb.medor.type.lib.PTypeSpaceMedor;
00034 
00035 
00042 public class JormType {
00043 
00050     public static PType getPType(java.lang.Class cl, boolean isPkField) {
00051         if (cl.equals(Boolean.TYPE)) {
00052             return PTypeSpace.BOOLEAN;
00053         } else if (cl.equals(Boolean.class)) {
00054             return PTypeSpace.OBJBOOLEAN;
00055         } else if (cl.equals(Character.TYPE)) {
00056             return PTypeSpace.CHAR;
00057         } else if (cl.equals(Character.class)) {
00058             return PTypeSpace.OBJCHAR;
00059         } else if (cl.equals(Byte.TYPE)) {
00060             return PTypeSpace.BYTE;
00061         } else if (cl.equals(Byte.class)) {
00062             return PTypeSpace.OBJBYTE;
00063         } else if (cl.equals(Short.TYPE)) {
00064             return PTypeSpace.SHORT;
00065         } else if (cl.equals(Short.class)) {
00066             return PTypeSpace.OBJSHORT;
00067         } else if (cl.equals(Integer.TYPE)) {
00068             return PTypeSpace.INT;
00069         } else if (cl.equals(Integer.class)) {
00070             return PTypeSpace.OBJINT;
00071         } else if (cl.equals(Long.TYPE)) {
00072             return PTypeSpace.LONG;
00073         } else if (cl.equals(Long.class)) {
00074             return PTypeSpace.OBJLONG;
00075         } else if (cl.equals(Float.TYPE)) {
00076             return PTypeSpace.FLOAT;
00077         } else if (cl.equals(Float.class)) {
00078             if (isPkField) {
00079                 return (JormType.getPType(FloatPkFieldMapping.getStorageType(), false));
00080             } else {
00081                 return PTypeSpace.OBJFLOAT;
00082             }
00083         } else if (cl.equals(Double.TYPE)) {
00084             return PTypeSpace.DOUBLE;
00085         } else if (cl.equals(Double.class)) {
00086             return PTypeSpace.OBJDOUBLE;
00087         } else if (cl.equals(String.class)) {
00088             return PTypeSpace.STRING;
00089         } else if (cl.equals(java.util.Date.class)
00090                    || cl.equals(java.sql.Date.class)
00091                    || cl.equals(java.sql.Time.class)
00092                    || cl.equals(java.sql.Timestamp.class)) {
00093             return PTypeSpace.DATE;
00094         } else if (cl.equals(java.math.BigDecimal.class)) {
00095             return PTypeSpace.BIGDECIMAL;
00096         } else if (EJBLocalObject.class.isAssignableFrom(cl)) {
00097             return PTypeSpaceMedor.PNAME;
00098         } else if (cl.isArray() && java.lang.Byte.TYPE.equals(cl.getComponentType())) {
00099             return PTypeSpace.BYTEARRAY;
00100         } else if (cl.isArray() && java.lang.Character.TYPE.equals(cl.getComponentType())) {
00101             return PTypeSpace.CHARARRAY;
00102         }
00103         return PTypeSpace.SERIALIZED;
00104     }
00105 
00112     public static String getPTypeDef(Class cl, boolean isPkField) {
00113         if (cl.equals(Boolean.TYPE)) {
00114             return "PTypeSpace.BOOLEAN";
00115         } else if (cl.equals(Boolean.class)) {
00116             return "PTypeSpace.OBJBOOLEAN";
00117         } else if (cl.equals(String.class)) {
00118             return "PTypeSpace.STRING";
00119         } else if (cl.equals(Character.TYPE)) {
00120             return "PTypeSpace.CHAR";
00121         } else if (cl.equals(Character.class)) {
00122             return "PTypeSpace.OBJCHAR";
00123         } else if (cl.equals(Byte.TYPE)) {
00124             return "PTypeSpace.BYTE";
00125         } else if (cl.equals(Byte.class)) {
00126             return "PTypeSpace.OBJBYTE";
00127         } else if (cl.equals(Short.TYPE)) {
00128             return "PTypeSpace.SHORT";
00129         } else if (cl.equals(Short.class)) {
00130             return "PTypeSpace.OBJSHORT";
00131         } else if (cl.equals(Integer.TYPE)) {
00132             return "PTypeSpace.INT";
00133         } else if (cl.equals(Integer.class)) {
00134             return "PTypeSpace.OBJINT";
00135         } else if (cl.equals(Long.TYPE)) {
00136             return "PTypeSpace.LONG";
00137         } else if (cl.equals(Long.class)) {
00138             return "PTypeSpace.OBJLONG";
00139         } else if (cl.equals(Float.TYPE)) {
00140             return "PTypeSpace.FLOAT";
00141         } else if (cl.equals(Float.class)) {
00142             if (isPkField) {
00143                 return (JormType.getPTypeDef(FloatPkFieldMapping.getStorageType(), false));
00144             } else {
00145                 return "PTypeSpace.OBJFLOAT";
00146             }
00147         } else if (cl.equals(Double.TYPE)) {
00148             return "PTypeSpace.DOUBLE";
00149         } else if (cl.equals(Double.class)) {
00150             return "PTypeSpace.OBJDOUBLE";
00151         } else if (cl.equals(java.util.Date.class)
00152                    || cl.equals(java.sql.Date.class)
00153                    || cl.equals(java.sql.Time.class)
00154                    || cl.equals(java.sql.Timestamp.class)) {
00155             return "PTypeSpace.DATE";
00156         } else if (cl.equals(java.math.BigDecimal.class)) {
00157             return "PTypeSpace.BIGDECIMAL";
00158         } else if (EJBLocalObject.class.isAssignableFrom(cl)) {
00159             return "PTypeSpaceMedor.PNAME";
00160         } else if (cl.isArray() && java.lang.Byte.TYPE.equals(cl.getComponentType())) {
00161             return "PTypeSpace.BYTEARRAY";
00162         } else if (cl.isArray() && java.lang.Character.TYPE.equals(cl.getComponentType())) {
00163             return "PTypeSpace.CHARARRAY";
00164         }
00165         return "PTypeSpace.SERIALIZED";
00166     }
00167 
00177     public static short getCodingType(Class c, boolean isPkField) throws PExceptionNaming {
00178         if (c == null) {
00179             throw new PExceptionNaming("No CodingType associated to a null Class");
00180         }
00181         return getCodingType(getPType(c, isPkField).getTypeCode());
00182     }
00183 
00192     public static short getCodingType(PType pt) throws PExceptionNaming {
00193         if (pt == null) {
00194             throw new PExceptionNaming("No CodingType associated to a null PType");
00195         }
00196         return getCodingType(pt.getTypeCode());
00197     }
00198 
00207     public static short getCodingType(int typeCode) throws PExceptionNaming {
00208         switch(typeCode) {
00209         case PType.TYPECODE_CHAR:
00210             return PNamingContext.CTCHAR;
00211         case PType.TYPECODE_OBJCHAR:
00212             return PNamingContext.CTOCHAR;
00213 
00214         case PType.TYPECODE_BYTE:
00215             return PNamingContext.CTBYTE;
00216         case PType.TYPECODE_OBJBYTE:
00217             return PNamingContext.CTOBYTE;
00218 
00219         case PType.TYPECODE_SHORT:
00220             return PNamingContext.CTSHORT;
00221         case PType.TYPECODE_OBJSHORT:
00222             return PNamingContext.CTOSHORT;
00223 
00224         case PType.TYPECODE_INT:
00225             return PNamingContext.CTINT;
00226         case PType.TYPECODE_OBJINT:
00227             return PNamingContext.CTOINT;
00228 
00229         case PType.TYPECODE_LONG:
00230             return PNamingContext.CTLONG;
00231         case PType.TYPECODE_OBJLONG:
00232             return PNamingContext.CTOLONG;
00233 
00234         case PType.TYPECODE_BYTEARRAY:
00235             return PNamingContext.CTBYTEARRAY;
00236 
00237         case PType.TYPECODE_CHARARRAY:
00238             return PNamingContext.CTCHARARRAY;
00239 
00240         case PType.TYPECODE_STRING:
00241             return PNamingContext.CTSTRING;
00242 
00243         case PType.TYPECODE_DATE:
00244             return PNamingContext.CTDATE;
00245 
00246         default:
00247             throw new PExceptionNaming("This type is not suportted: typeCode=" + typeCode);
00248         }
00249     }
00250 
00251 }

Generated on Tue Feb 15 15:05:49 2005 for JOnAS by  doxygen 1.3.9.1