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