1/* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package android.arch.persistence.room.ext 18 19import com.squareup.javapoet.ArrayTypeName 20import com.squareup.javapoet.ClassName 21import com.squareup.javapoet.TypeName 22import javax.lang.model.type.TypeMirror 23import kotlin.reflect.KClass 24 25val L = "\$L" 26val T = "\$T" 27val N = "\$N" 28val S = "\$S" 29 30fun KClass<*>.typeName() = ClassName.get(this.java) 31fun KClass<*>.arrayTypeName() = ArrayTypeName.of(typeName()) 32fun TypeMirror.typeName() = TypeName.get(this) 33 34object SupportDbTypeNames { 35 val DB: ClassName = ClassName.get("android.arch.persistence.db", "SupportSQLiteDatabase") 36 val SQLITE_STMT : ClassName = 37 ClassName.get("android.arch.persistence.db", "SupportSQLiteStatement") 38 val SQLITE_OPEN_HELPER : ClassName = 39 ClassName.get("android.arch.persistence.db", "SupportSQLiteOpenHelper") 40 val SQLITE_OPEN_HELPER_CALLBACK : ClassName = 41 ClassName.get("android.arch.persistence.db", "SupportSQLiteOpenHelper.Callback") 42 val SQLITE_OPEN_HELPER_FACTORY : ClassName = 43 ClassName.get("android.arch.persistence.db", "SupportSQLiteOpenHelper.Factory") 44 val SQLITE_OPEN_HELPER_CONFIG : ClassName = 45 ClassName.get("android.arch.persistence.db", "SupportSQLiteOpenHelper.Configuration") 46 val SQLITE_OPEN_HELPER_CONFIG_BUILDER : ClassName = 47 ClassName.get("android.arch.persistence.db", 48 "SupportSQLiteOpenHelper.Configuration.Builder") 49} 50 51object RoomTypeNames { 52 val STRING_UTIL: ClassName = ClassName.get("android.arch.persistence.room.util", "StringUtil") 53 val CURSOR_CONVERTER : ClassName = 54 ClassName.get("android.arch.persistence.room", "CursorConverter") 55 val ROOM : ClassName = ClassName.get("android.arch.persistence.room", "Room") 56 val ROOM_DB : ClassName = ClassName.get("android.arch.persistence.room", "RoomDatabase") 57 val ROOM_DB_CONFIG : ClassName = ClassName.get("android.arch.persistence.room", 58 "DatabaseConfiguration") 59 val INSERTION_ADAPTER : ClassName = 60 ClassName.get("android.arch.persistence.room", "EntityInsertionAdapter") 61 val DELETE_OR_UPDATE_ADAPTER : ClassName = 62 ClassName.get("android.arch.persistence.room", "EntityDeletionOrUpdateAdapter") 63 val SHARED_SQLITE_STMT : ClassName = 64 ClassName.get("android.arch.persistence.room", "SharedSQLiteStatement") 65 val INVALIDATION_TRACKER : ClassName = 66 ClassName.get("android.arch.persistence.room", "InvalidationTracker") 67 val INVALIDATION_OBSERVER : ClassName = 68 ClassName.get("android.arch.persistence.room.InvalidationTracker", "Observer") 69 val ROOM_SQL_QUERY : ClassName = 70 ClassName.get("android.arch.persistence.room", "RoomSQLiteQuery") 71 val OPEN_HELPER : ClassName = 72 ClassName.get("android.arch.persistence.room", "RoomOpenHelper") 73 val OPEN_HELPER_DELEGATE: ClassName = 74 ClassName.get("android.arch.persistence.room", "RoomOpenHelper.Delegate") 75 val TABLE_INFO : ClassName = 76 ClassName.get("android.arch.persistence.room.util", "TableInfo") 77 val TABLE_INFO_COLUMN : ClassName = 78 ClassName.get("android.arch.persistence.room.util", "TableInfo.Column") 79 val TABLE_INFO_FOREIGN_KEY : ClassName = 80 ClassName.get("android.arch.persistence.room.util", "TableInfo.ForeignKey") 81 val LIMIT_OFFSET_DATA_SOURCE : ClassName = 82 ClassName.get("android.arch.persistence.room.paging", "LimitOffsetDataSource") 83} 84 85object ArchTypeNames { 86 val APP_EXECUTOR : ClassName = 87 ClassName.get("android.arch.core.executor", "AppToolkitTaskExecutor") 88} 89 90object PagingTypeNames { 91 val DATA_SOURCE: ClassName = 92 ClassName.get("android.arch.paging", "DataSource") 93 val TILED_DATA_SOURCE: ClassName = 94 ClassName.get("android.arch.paging", "TiledDataSource") 95 val LIVE_PAGED_LIST_PROVIDER: ClassName = 96 ClassName.get("android.arch.paging", "LivePagedListProvider") 97 98} 99 100object LifecyclesTypeNames { 101 val LIVE_DATA: ClassName = ClassName.get("android.arch.lifecycle", "LiveData") 102 val COMPUTABLE_LIVE_DATA : ClassName = ClassName.get("android.arch.lifecycle", 103 "ComputableLiveData") 104} 105 106object AndroidTypeNames { 107 val CURSOR : ClassName = ClassName.get("android.database", "Cursor") 108 val ARRAY_MAP : ClassName = ClassName.get("android.support.v4.util", "ArrayMap") 109} 110 111object CommonTypeNames { 112 val LIST = ClassName.get("java.util", "List") 113 val SET = ClassName.get("java.util", "Set") 114 val STRING = ClassName.get("java.lang", "String") 115 val INTEGER = ClassName.get("java.lang", "Integer") 116} 117 118object RxJava2TypeNames { 119 val FLOWABLE = ClassName.get("io.reactivex", "Flowable") 120 val MAYBE = ClassName.get("io.reactivex", "Maybe") 121 val SINGLE = ClassName.get("io.reactivex", "Single") 122} 123 124object ReactiveStreamsTypeNames { 125 val PUBLISHER = ClassName.get("org.reactivestreams", "Publisher") 126} 127 128object RoomRxJava2TypeNames { 129 val RX_ROOM = ClassName.get("android.arch.persistence.room", "RxRoom") 130 val RX_EMPTY_RESULT_SET_EXCEPTION = ClassName.get("android.arch.persistence.room", 131 "EmptyResultSetException") 132} 133 134fun TypeName.defaultValue() : String { 135 return if (!isPrimitive) { 136 "null" 137 } else if (this == TypeName.BOOLEAN) { 138 "false" 139 } else { 140 "0" 141 } 142} 143