12259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar/* 22259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * Copyright (C) 2016 The Android Open Source Project 32259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * 42259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * Licensed under the Apache License, Version 2.0 (the "License"); 52259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * you may not use this file except in compliance with the License. 62259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * You may obtain a copy of the License at 72259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * 82259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * http://www.apache.org/licenses/LICENSE-2.0 92259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * 102259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * Unless required by applicable law or agreed to in writing, software 112259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * distributed under the License is distributed on an "AS IS" BASIS, 122259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * See the License for the specific language governing permissions and 142259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar * limitations under the License. 152259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar */ 162259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar 17ba069d50913c3fb250bb60ec310439db36895337Alan Viverettepackage androidx.room.ext 182259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyar 198e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyarimport com.squareup.javapoet.ArrayTypeName 208e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyarimport com.squareup.javapoet.ClassName 218e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyarimport com.squareup.javapoet.TypeName 228e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyarimport javax.lang.model.type.TypeMirror 238e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyarimport kotlin.reflect.KClass 248e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyar 252259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyarval L = "\$L" 262259e4dc433701d006db35df4c5e9f8d51e7d29bYigit Boyarval T = "\$T" 278e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyarval N = "\$N" 288e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyarval S = "\$S" 298e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyar 308e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyarfun KClass<*>.typeName() = ClassName.get(this.java) 318e543c445cb5559e579f54c1ac00d0ca83ec3fbbYigit Boyarfun KClass<*>.arrayTypeName() = ArrayTypeName.of(typeName()) 32250a3e6dc5d50c533575b7d276730b89eecc7c19Yigit Boyarfun TypeMirror.typeName() = TypeName.get(this) 33250a3e6dc5d50c533575b7d276730b89eecc7c19Yigit Boyar 34efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyarobject SupportDbTypeNames { 35ba069d50913c3fb250bb60ec310439db36895337Alan Viverette val DB: ClassName = ClassName.get("androidx.sqlite.db", "SupportSQLiteDatabase") 366f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas val SQLITE_STMT: ClassName = 37ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.sqlite.db", "SupportSQLiteStatement") 386f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas val SQLITE_OPEN_HELPER: ClassName = 39ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.sqlite.db", "SupportSQLiteOpenHelper") 406f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas val SQLITE_OPEN_HELPER_CALLBACK: ClassName = 41ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.sqlite.db", "SupportSQLiteOpenHelper.Callback") 426f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas val SQLITE_OPEN_HELPER_CONFIG: ClassName = 43ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.sqlite.db", "SupportSQLiteOpenHelper.Configuration") 44de23b91b2c982ef5c93349b16415654ae3fe5ac9Yigit Boyar val QUERY: ClassName = 45ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.sqlite.db", "SupportSQLiteQuery") 46efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar} 47efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar 48250a3e6dc5d50c533575b7d276730b89eecc7c19Yigit Boyarobject RoomTypeNames { 49ba069d50913c3fb250bb60ec310439db36895337Alan Viverette val STRING_UTIL: ClassName = ClassName.get("androidx.room.util", "StringUtil") 50ba069d50913c3fb250bb60ec310439db36895337Alan Viverette val ROOM_DB: ClassName = ClassName.get("androidx.room", "RoomDatabase") 51ba069d50913c3fb250bb60ec310439db36895337Alan Viverette val ROOM_DB_CONFIG: ClassName = ClassName.get("androidx.room", 52d72e20e472815b7d0918e0d309cee48a71c7988bYigit Boyar "DatabaseConfiguration") 536f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas val INSERTION_ADAPTER: ClassName = 54ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.room", "EntityInsertionAdapter") 556f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas val DELETE_OR_UPDATE_ADAPTER: ClassName = 56ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.room", "EntityDeletionOrUpdateAdapter") 576f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas val SHARED_SQLITE_STMT: ClassName = 58ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.room", "SharedSQLiteStatement") 596f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas val INVALIDATION_TRACKER: ClassName = 60ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.room", "InvalidationTracker") 616f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas val INVALIDATION_OBSERVER: ClassName = 62ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.room.InvalidationTracker", "Observer") 636f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas val ROOM_SQL_QUERY: ClassName = 64ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.room", "RoomSQLiteQuery") 656f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas val OPEN_HELPER: ClassName = 66ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.room", "RoomOpenHelper") 67a64756a18111a7312b3fa03b76d13381a8907176Yigit Boyar val OPEN_HELPER_DELEGATE: ClassName = 68ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.room", "RoomOpenHelper.Delegate") 696f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas val TABLE_INFO: ClassName = 70ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.room.util", "TableInfo") 716f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas val TABLE_INFO_COLUMN: ClassName = 72ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.room.util", "TableInfo.Column") 736f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas val TABLE_INFO_FOREIGN_KEY: ClassName = 74ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.room.util", "TableInfo.ForeignKey") 756f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas val TABLE_INFO_INDEX: ClassName = 76ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.room.util", "TableInfo.Index") 776f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas val LIMIT_OFFSET_DATA_SOURCE: ClassName = 78ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.room.paging", "LimitOffsetDataSource") 799fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craik} 809fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craik 819fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craikobject PagingTypeNames { 82abd098954d3fe996f336201ccb25884aaa34e07fYigit Boyar val DATA_SOURCE: ClassName = 83ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.paging", "DataSource") 84dc60cacc66972b47f27acdf727332878ce5958aeChris Craik val POSITIONAL_DATA_SOURCE: ClassName = 85ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.paging", "PositionalDataSource") 86dc60cacc66972b47f27acdf727332878ce5958aeChris Craik val DATA_SOURCE_FACTORY: ClassName = 87ba069d50913c3fb250bb60ec310439db36895337Alan Viverette ClassName.get("androidx.paging", "DataSource.Factory") 88846dfcf52e22de6d912f8ece05ff939c2c9bd154Yigit Boyar} 89846dfcf52e22de6d912f8ece05ff939c2c9bd154Yigit Boyar 90846dfcf52e22de6d912f8ece05ff939c2c9bd154Yigit Boyarobject LifecyclesTypeNames { 91ba069d50913c3fb250bb60ec310439db36895337Alan Viverette val LIVE_DATA: ClassName = ClassName.get("androidx.lifecycle", "LiveData") 92ba069d50913c3fb250bb60ec310439db36895337Alan Viverette val COMPUTABLE_LIVE_DATA: ClassName = ClassName.get("androidx.lifecycle", 93846dfcf52e22de6d912f8ece05ff939c2c9bd154Yigit Boyar "ComputableLiveData") 94efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar} 95efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar 96efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyarobject AndroidTypeNames { 976f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikas val CURSOR: ClassName = ClassName.get("android.database", "Cursor") 98ba069d50913c3fb250bb60ec310439db36895337Alan Viverette val ARRAY_MAP: ClassName = ClassName.get("androidx.collection", "ArrayMap") 993f426b1704c8037737ff3657d295ab23d978e9e2Yuichi Araki val BUILD: ClassName = ClassName.get("android.os", "Build") 100092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar} 101092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar 102092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyarobject CommonTypeNames { 103092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar val LIST = ClassName.get("java.util", "List") 104092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar val SET = ClassName.get("java.util", "Set") 1053a433f7ddbffa6131883cc3b23fc80edf54add19Yigit Boyar val STRING = ClassName.get("java.lang", "String") 1069fd8e6171bbdc37f5516fe15b2d96f4ae926ef1aChris Craik val INTEGER = ClassName.get("java.lang", "Integer") 107c1fa1f4c9d1d61e344d4310928014132cb4fa4f4Tyson Henning val OPTIONAL = ClassName.get("java.util", "Optional") 108250a3e6dc5d50c533575b7d276730b89eecc7c19Yigit Boyar} 1093c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar 11067ff17da9546803a38f8144b7a466a116e622866Tyson Henningobject GuavaBaseTypeNames { 11167ff17da9546803a38f8144b7a466a116e622866Tyson Henning val OPTIONAL = ClassName.get("com.google.common.base", "Optional") 11267ff17da9546803a38f8144b7a466a116e622866Tyson Henning} 11367ff17da9546803a38f8144b7a466a116e622866Tyson Henning 114f1ae0061c85cdb02bd124f8f8c7a934aa75e62feTyson Henningobject GuavaUtilConcurrentTypeNames { 115f1ae0061c85cdb02bd124f8f8c7a934aa75e62feTyson Henning val LISTENABLE_FUTURE = ClassName.get("com.google.common.util.concurrent", "ListenableFuture") 116f1ae0061c85cdb02bd124f8f8c7a934aa75e62feTyson Henning} 117f1ae0061c85cdb02bd124f8f8c7a934aa75e62feTyson Henning 1183c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyarobject RxJava2TypeNames { 1193c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar val FLOWABLE = ClassName.get("io.reactivex", "Flowable") 1200cf0bfe0e88f5d511a2a23495005c2da9ea91fd5Yigit Boyar val MAYBE = ClassName.get("io.reactivex", "Maybe") 1210cf0bfe0e88f5d511a2a23495005c2da9ea91fd5Yigit Boyar val SINGLE = ClassName.get("io.reactivex", "Single") 1223c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar} 1233c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar 1243c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyarobject ReactiveStreamsTypeNames { 1253c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar val PUBLISHER = ClassName.get("org.reactivestreams", "Publisher") 1263c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar} 1273c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar 128f1ae0061c85cdb02bd124f8f8c7a934aa75e62feTyson Henningobject RoomGuavaTypeNames { 129ba069d50913c3fb250bb60ec310439db36895337Alan Viverette val GUAVA_ROOM = ClassName.get("androidx.room.guava", "GuavaRoom") 130f1ae0061c85cdb02bd124f8f8c7a934aa75e62feTyson Henning} 131f1ae0061c85cdb02bd124f8f8c7a934aa75e62feTyson Henning 1323c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyarobject RoomRxJava2TypeNames { 133ba069d50913c3fb250bb60ec310439db36895337Alan Viverette val RX_ROOM = ClassName.get("androidx.room", "RxRoom") 134ba069d50913c3fb250bb60ec310439db36895337Alan Viverette val RX_EMPTY_RESULT_SET_EXCEPTION = ClassName.get("androidx.room", 1350cf0bfe0e88f5d511a2a23495005c2da9ea91fd5Yigit Boyar "EmptyResultSetException") 1363c592c4ccbc6052b11443b0fa575052c08fefa55Yigit Boyar} 137f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar 1386f1f5567abe765d30fda9c8fedce5617ecdeda9cAurimas Liutikasfun TypeName.defaultValue(): String { 139f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar return if (!isPrimitive) { 140f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar "null" 141f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar } else if (this == TypeName.BOOLEAN) { 142f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar "false" 143f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar } else { 144f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar "0" 145f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar } 146f8c3624579d5761a2d34a7199932492d267f5f85Yigit Boyar} 147