1efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar/* 2efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * Copyright (C) 2016 The Android Open Source Project 3efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * 4efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * Licensed under the Apache License, Version 2.0 (the "License"); 5efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * you may not use this file except in compliance with the License. 6efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * You may obtain a copy of the License at 7efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * 8efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * http://www.apache.org/licenses/LICENSE-2.0 9efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * 10efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * Unless required by applicable law or agreed to in writing, software 11efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * distributed under the License is distributed on an "AS IS" BASIS, 12efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * See the License for the specific language governing permissions and 14efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar * limitations under the License. 15efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar */ 16efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar 17bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viverettepackage androidx.room.solver.query.result 18efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar 19bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viveretteimport androidx.room.ext.L 20bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viveretteimport androidx.room.ext.N 21bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viveretteimport androidx.room.solver.CodeGenScope 22bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viveretteimport androidx.room.vo.Entity 23bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viveretteimport androidx.room.writer.EntityCursorConverterWriter 24092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyarimport com.squareup.javapoet.MethodSpec 25efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar 26092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyarclass EntityRowAdapter(val entity: Entity) : RowAdapter(entity.type) { 27092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar lateinit var methodSpec: MethodSpec 28092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar override fun onCursorReady(cursorVarName: String, scope: CodeGenScope) { 29092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar methodSpec = scope.writer.getOrCreateMethod(EntityCursorConverterWriter(entity)) 30092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar } 31092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar 32092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar override fun convert(outVarName: String, cursorVarName: String, scope: CodeGenScope) { 33092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar scope.builder() 34092164e5501d0a254001225acd9dca42e5fa57e9Yigit Boyar .addStatement("$L = $N($L)", outVarName, methodSpec, cursorVarName) 35efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar } 36efaf86afac3163868eda7f91a1c04e3f6e6d7520Yigit Boyar} 37