120c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn/* 220c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * Copyright (C) 2014 The Android Open Source Project 320c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * 420c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 520c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * in compliance with the License. You may obtain a copy of the License at 620c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * 720c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * http://www.apache.org/licenses/LICENSE-2.0 820c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * 920c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * Unless required by applicable law or agreed to in writing, software distributed under the License 1020c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 1120c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * or implied. See the License for the specific language governing permissions and limitations under 1220c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * the License. 1320c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn */ 1420c094c196271089a7119a965b6a99786ea9ed36Tim Kilbournpackage android.support.v17.leanback.database; 1520c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn 1620c094c196271089a7119a965b6a99786ea9ed36Tim Kilbournimport android.database.Cursor; 1720c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn 1820c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn/** 1920c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * Abstract class used to convert the current {@link Cursor} row to a single 2020c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * object. 2120c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn */ 2220c094c196271089a7119a965b6a99786ea9ed36Tim Kilbournpublic abstract class CursorMapper { 2320c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn 2420c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn private Cursor mCursor; 2520c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn 2620c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn /** 2720c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * Called once when the associated {@link Cursor} is changed. A subclass 2820c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * should bind column indexes to column names in this method. This method is 2920c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * not intended to be called outside of CursorMapper. 3020c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn */ 3120c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn protected abstract void bindColumns(Cursor cursor); 3220c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn 3320c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn /** 3420c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * A subclass should implement this method to create a single object using 3520c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * binding information. This method is not intended to be called 3620c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * outside of CursorMapper. 3720c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn */ 3820c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn protected abstract Object bind(Cursor cursor); 3920c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn 4020c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn /** 4120c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn * Convert a {@link Cursor} at its current position to an Object. 4220c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn */ 4320c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn public Object convert(Cursor cursor) { 4420c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn if (cursor != mCursor) { 4520c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn mCursor = cursor; 4620c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn bindColumns(mCursor); 4720c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn } 4820c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn return bind(mCursor); 4920c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn } 5020c094c196271089a7119a965b6a99786ea9ed36Tim Kilbourn} 51