33
44import java .util .Locale ;
55
6+ import javax .lang .model .type .DeclaredType ;
7+ import javax .lang .model .type .TypeMirror ;
8+
9+ import net .cattaka .util .cathandsgendroid .apt .util .Functions ;
10+
611class InnerFieldType {
7- public static final InnerFieldType BLOB = new InnerFieldType (false , false , "Accessors.BlobAccessor.createAccessor(byte[].class)" , "BLOB" , "byte[]" , null );
8- public static final InnerFieldType BOOLEAN = new InnerFieldType (false , false , "Accessors.BooleanAccessor.createAccessor(Boolean.class)" , "INTEGER" , "Boolean" , null );
9- public static final InnerFieldType BUNDLE = new InnerFieldType (false , false , "Accessors.BundleAccessor.createAccessor(Bundle.class)" , "BLOB" , "Bundle" , null );
10- public static final InnerFieldType BYTE = new InnerFieldType (false , true , "Accessors.ByteAccessor.createAccessor(Byte.class)" , "INTEGER" , "Byte" , "byte" );
11- public static final InnerFieldType CHARACTER = new InnerFieldType (false , true , "Accessors.CharacterAccessor.createAccessor(Character.class)" , "INTEGER" , "Character" , "char" );
12- public static final InnerFieldType DATE = new InnerFieldType (false , false , "Accessors.DateAccessor.createAccessor(java.util.Date.class)" , "INTEGER" , "java.util.Date" , null );
13- public static final InnerFieldType DOUBLE = new InnerFieldType (false , true , "Accessors.DoubleAccessor.createAccessor(Double.class)" , "REAL" , "Double" , "double" );
14- public static final InnerFieldType FLOAT = new InnerFieldType (false , true , "Accessors.FloatAccessor.createAccessor(Float.class)" , "REAL" , "Float" , "float" );
15- public static final InnerFieldType INTEGER = new InnerFieldType (false , true , "Accessors.IntegerAccessor.createAccessor(Integer.class)" , "INTEGER" , "Integer" , "int" );
16- public static final InnerFieldType LONG = new InnerFieldType (false , true , "Accessors.LongAccessor.createAccessor(Long.class)" , "INTEGER" , "Long" , "long" );
17- public static final InnerFieldType P_BOOLEAN = new InnerFieldType (true , false , "Accessors.PrimitiveBooleanAccessor.createAccessor(Boolean.class)" , "INTEGER" , "Boolean" , null );
18- public static final InnerFieldType P_BYTE = new InnerFieldType (true , true , "Accessors.PrimitiveByteAccessor.createAccessor(Byte.class)" , "INTEGER" , "Byte" , "byte" );
19- public static final InnerFieldType P_CHARACTER = new InnerFieldType (true , true , "Accessors.PrimitiveCharacterAccessor.createAccessor(Character.class)" , "INTEGER" , "Character" , "char" );
20- public static final InnerFieldType P_DOUBLE = new InnerFieldType (true , true , "Accessors.PrimitiveDoubleAccessor.createAccessor(Double.class)" , "REAL" , "Double" , "double" );
21- public static final InnerFieldType P_FLOAT = new InnerFieldType (true , true , "Accessors.PrimitiveFloatAccessor.createAccessor(Float.class)" , "REAL" , "Float" , "float" );
22- public static final InnerFieldType P_INTEGER = new InnerFieldType (true , true , "Accessors.PrimitiveIntegerAccessor.createAccessor(Integer.class)" , "INTEGER" , "Integer" , "int" );
23- public static final InnerFieldType P_LONG = new InnerFieldType (true , true , "Accessors.PrimitiveLongAccessor.createAccessor(Long.class)" , "INTEGER" , "Long" , "long" );
24- public static final InnerFieldType P_SHORT = new InnerFieldType (true , true , "Accessors.PrimitiveShortAccessor.createAccessor(Short.class)" , "INTEGER" , "Short" , "short" );
25- public static final InnerFieldType PARCELABLE = new InnerFieldType (false , false , "Accessors.ParcelableAccessor.createAccessor(android.os.Parcelable.class)" , "BLOB" , "android.os.Parcelable" , null );
26- public static final InnerFieldType SHORT = new InnerFieldType (false , true , "Accessors.ShortAccessor.createAccessor(Short.class)" , "INTEGER" , "Short" , "short" );
27- public static final InnerFieldType STRING = new InnerFieldType (false , false , "Accessors.StringAccessor.createAccessor(String.class)" , "TEXT" , "String" , null );
12+ public static final InnerFieldType BLOB = new InnerFieldType (false , false ,
13+ "Accessors.BlobAccessor.createAccessor(byte[].class)" , "BLOB" , "byte[]" , null );
14+ public static final InnerFieldType BOOLEAN = new InnerFieldType (false , false ,
15+ "Accessors.BooleanAccessor.createAccessor(Boolean.class)" , "INTEGER" , "Boolean" , null );
16+ public static final InnerFieldType BUNDLE = new InnerFieldType (false , false ,
17+ "Accessors.BundleAccessor.createAccessor(Bundle.class)" , "BLOB" , "Bundle" , null );
18+ public static final InnerFieldType BYTE = new InnerFieldType (false , true ,
19+ "Accessors.ByteAccessor.createAccessor(Byte.class)" , "INTEGER" , "Byte" , "byte" );
20+ public static final InnerFieldType CHARACTER = new InnerFieldType (false , true ,
21+ "Accessors.CharacterAccessor.createAccessor(Character.class)" , "INTEGER" , "Character" , "char" );
22+ public static final InnerFieldType DATE = new InnerFieldType (false , false ,
23+ "Accessors.DateAccessor.createAccessor(java.util.Date.class)" , "INTEGER" , "java.util.Date" , null );
24+ public static final InnerFieldType DOUBLE = new InnerFieldType (false , true ,
25+ "Accessors.DoubleAccessor.createAccessor(Double.class)" , "REAL" , "Double" , "double" );
26+ public static final InnerFieldType FLOAT = new InnerFieldType (false , true ,
27+ "Accessors.FloatAccessor.createAccessor(Float.class)" , "REAL" , "Float" , "float" );
28+ public static final InnerFieldType INTEGER = new InnerFieldType (false , true ,
29+ "Accessors.IntegerAccessor.createAccessor(Integer.class)" , "INTEGER" , "Integer" , "int" );
30+ public static final InnerFieldType LONG = new InnerFieldType (false , true ,
31+ "Accessors.LongAccessor.createAccessor(Long.class)" , "INTEGER" , "Long" , "long" );
32+ public static final InnerFieldType P_BOOLEAN = new InnerFieldType (true , false ,
33+ "Accessors.PrimitiveBooleanAccessor.createAccessor(Boolean.class)" , "INTEGER" , "Boolean" , null );
34+ public static final InnerFieldType P_BYTE = new InnerFieldType (true , true ,
35+ "Accessors.PrimitiveByteAccessor.createAccessor(Byte.class)" , "INTEGER" , "Byte" , "byte" );
36+ public static final InnerFieldType P_CHARACTER = new InnerFieldType (true , true ,
37+ "Accessors.PrimitiveCharacterAccessor.createAccessor(Character.class)" , "INTEGER" , "Character" , "char" );
38+ public static final InnerFieldType P_DOUBLE = new InnerFieldType (true , true ,
39+ "Accessors.PrimitiveDoubleAccessor.createAccessor(Double.class)" , "REAL" , "Double" , "double" );
40+ public static final InnerFieldType P_FLOAT = new InnerFieldType (true , true ,
41+ "Accessors.PrimitiveFloatAccessor.createAccessor(Float.class)" , "REAL" , "Float" , "float" );
42+ public static final InnerFieldType P_INTEGER = new InnerFieldType (true , true ,
43+ "Accessors.PrimitiveIntegerAccessor.createAccessor(Integer.class)" , "INTEGER" , "Integer" , "int" );
44+ public static final InnerFieldType P_LONG = new InnerFieldType (true , true ,
45+ "Accessors.PrimitiveLongAccessor.createAccessor(Long.class)" , "INTEGER" , "Long" , "long" );
46+ public static final InnerFieldType P_SHORT = new InnerFieldType (true , true ,
47+ "Accessors.PrimitiveShortAccessor.createAccessor(Short.class)" , "INTEGER" , "Short" , "short" );
48+ public static final InnerFieldType PARCELABLE = new InnerFieldType (false , false ,
49+ "Accessors.ParcelableAccessor.createAccessor(android.os.Parcelable.class)" , "BLOB" , "android.os.Parcelable" ,
50+ null );
51+ public static final InnerFieldType SHORT = new InnerFieldType (false , true ,
52+ "Accessors.ShortAccessor.createAccessor(Short.class)" , "INTEGER" , "Short" , "short" );
53+ public static final InnerFieldType STRING = new InnerFieldType (false , false ,
54+ "Accessors.StringAccessor.createAccessor(String.class)" , "TEXT" , "String" , null );
2855
2956 public final String accessor ;
3057 public final String dbDataType ;
@@ -34,31 +61,52 @@ class InnerFieldType {
3461 public final boolean primitiveType ;
3562 public final boolean isNumber ;
3663
37- public InnerFieldType (boolean primitiveType , boolean isNumber , String accessor , String dbDataType , String javaDataType , String primitiveJavaDataType ) {
38- this (primitiveType , isNumber , accessor , dbDataType , javaDataType , javaDataType , primitiveJavaDataType );
39- }
64+ public InnerFieldType (boolean primitiveType , boolean isNumber , String accessor , String dbDataType ,
65+ String javaDataType , String primitiveJavaDataType ) {
66+ this (primitiveType , isNumber , accessor , dbDataType , javaDataType , javaDataType , primitiveJavaDataType );
67+ }
68+
69+ private InnerFieldType (boolean primitiveType , boolean isNumber , String accessor , String dbDataType ,
70+ String javaDataType , String origJavaDataType , String primitiveJavaDataType ) {
71+ super ();
72+ this .primitiveType = primitiveType ;
73+ this .accessor = accessor ;
74+ this .dbDataType = dbDataType ;
75+ this .javaDataType = javaDataType ;
76+ this .origJavaDataType = origJavaDataType ;
77+ this .primitiveJavaDataType = (primitiveJavaDataType != null ) ? primitiveJavaDataType : "(not supported)" ;
78+ this .isNumber = isNumber ;
79+ }
80+
81+ public static InnerFieldType createCustomType (TypeMirror tm , String accessor , String dbDataType ) {
82+ String javaDataType = String .valueOf (tm );
83+ String args ;
84+ String typeParams ;
85+ if (tm instanceof DeclaredType ) {
86+ DeclaredType dt = (DeclaredType ) tm ;
87+ args = Functions .join (Functions .pullTypes (dt ), ".class, " ) + ".class" ;
88+ typeParams = "<" + String .valueOf (tm ) + ">" ;
89+ } else {
90+ args = String .valueOf (tm ) + ".class" ;
91+ typeParams = "" ;
92+ }
93+
94+ return new InnerFieldType (false , false ,
95+ String .format (Locale .ROOT , accessor + ".%2$screateAccessor(%1$s)" , args , typeParams ), dbDataType ,
96+ javaDataType , javaDataType , null );
97+ }
4098
41- private InnerFieldType (boolean primitiveType , boolean isNumber ,
42- String accessor , String dbDataType , String javaDataType , String origJavaDataType , String primitiveJavaDataType ) {
43- super ();
44- this .primitiveType = primitiveType ;
45- this .accessor = accessor ;
46- this .dbDataType = dbDataType ;
47- this .javaDataType = javaDataType ;
48- this .origJavaDataType = origJavaDataType ;
49- this .primitiveJavaDataType = (primitiveJavaDataType != null ) ? primitiveJavaDataType : "(not supported)" ;
50- this .isNumber = isNumber ;
51- }
52-
53- public static InnerFieldType createCustomType (String name , String accessor , String dbDataType ) {
54- return new InnerFieldType (false , false , String .format (Locale .ROOT , accessor + ".createAccessor(%1$s.class)" , name ), dbDataType , String .valueOf (name ), String .valueOf (name ), null );
99+ public static InnerFieldType createListType (InnerFieldType ift ) {
100+ String javaDataType = String .format ("java.util.List<%1$s>" , ift .javaDataType );
101+ return new InnerFieldType (false , false ,
102+ String .format (Locale .ROOT , "Accessors.createListAccessor(%1$s)" , ift .accessor ), "BLOB" , javaDataType ,
103+ null );
55104 }
56- public static InnerFieldType createListType (InnerFieldType ift ) {
57- String javaDataType = String .format ("java.util.List<%1$s>" , ift .javaDataType );
58- return new InnerFieldType (false , false , String .format (Locale .ROOT , "Accessors.createListAccessor(%1$s)" , ift .accessor ), "BLOB" , javaDataType , null );
59- }
60- public static InnerFieldType createArrayType (InnerFieldType ift ) {
105+
106+ public static InnerFieldType createArrayType (InnerFieldType ift ) {
61107 String javaDataType = String .format ("%1$s[]" , ift .javaDataType );
62- return new InnerFieldType (false , false , String .format (Locale .ROOT , "Accessors.createArrayAccessor(%1$s)" , ift .accessor ), "BLOB" , javaDataType , null );
63- }
108+ return new InnerFieldType (false , false ,
109+ String .format (Locale .ROOT , "Accessors.createArrayAccessor(%1$s)" , ift .accessor ), "BLOB" , javaDataType ,
110+ null );
111+ }
64112}
0 commit comments