/* * Copyright 2013 Yoshihiro Miyama * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.kyakujin.android.autoeco.db; import android.net.Uri; import android.provider.BaseColumns; /** * Contract class for interacting with {@link AutoEcoProvider}. */ public class AutoEcoContract { private AutoEcoContract() { } interface EcoColumns { // eco設定名 public static final String NAME = "name"; public static final String UPDATE_DATE = "update_date"; public static final String WIFI_ENABLED = "wifi_enabled"; public static final String BLUETOOTH_ENABLED = "bluetooth_enabled"; public static final String ROTATE_ENABLED = "rotate_enabled"; public static final String SYNC_ENABLED = "sync_enabled"; public static final String BRIGHTNESS_ENABLED = "brightness_enabled"; public static final String BRIGHTNESS_VALUE = "brightness_value"; public static final String BRIGHTNESS_AUTO = "brightness_auto"; public static final String SLEEP_ENABLED = "sleep_enabled"; public static final String SLEEP_TIME = "sleep_time"; public static final String SILENT_ENABLED = "silent_enabled"; public static final String SILENT_MODE = "silent_mode"; } interface SchedColumns { // Enable/Disable状態 public static final String ENABLED = "enabled"; // 設定時刻(時) public static final String HOUR = "hourofday"; // 設定時刻(分) public static final String MINUTE = "minute"; // 設定時刻表示用 public static final String HOUR_MINUTE_STRING = "hour_minute_string"; // 曜日設定(並び順は「月..日」で1がONを表す) public static final String PATTERN = "pattern"; } interface BatteryColumns { // Enable/Disable状態 public static final String ENABLED = "enabled"; // しきい値 public static final String THRESHOLD = "threshold"; } interface ManualColumns { // Enable/Disable状態 public static final String NAME = "name"; } // スケジュールorバッテリー連動とeco設定を紐付けるためのテーブル interface MappingColumns { public static final String ECO_ID = "ecoid"; public static final String SCHED_ID = "schedid"; public static final String BATTERY_ID = "batteryid"; public static final String MANUAL_ID = "manualid"; } public static final String CONTENT_AUTHORITY = "com.kyakujin.android.autoeco"; public static final Uri BASE_CONTENT_URI = Uri.parse("content://" + CONTENT_AUTHORITY); private class Path { private static final String ECO = "eco"; private static final String SCHED = "sched"; private static final String BATTERY = "battery"; private static final String MANUAL = "manual"; private static final String MAPPING = "mapping"; } private static Uri getContentUri(String path) { return BASE_CONTENT_URI.buildUpon().appendPath(path).build(); } private static String getContentType(String path) { return "vnd.android.cursor.dir/vnd.autoeco." + path; } private static String getContentItemtype(String path) { return "vnd.android.cursor.item/vnd.autoeco." + path; } public static class SchedTbl implements SchedColumns, BaseColumns { private static String path = Path.SCHED; public static final Uri CONTENT_URI = getContentUri(path); public static final String CONTENT_TYPE = getContentType(path); public static final String CONTENT_ITEM_TYPE = getContentItemtype(path); // クエリ時のデフォルトソート public static final String DEFAULT_SORT = BaseColumns._ID + " ASC"; // パス名の取得 public static String getPath() { return path; } } public static class BatteryTbl implements BatteryColumns, BaseColumns { private static String path = Path.BATTERY; public static final Uri CONTENT_URI = getContentUri(path); public static final String CONTENT_TYPE = getContentType(path); public static final String CONTENT_ITEM_TYPE = getContentItemtype(path); // パス名の取得 public static String getPath() { return path; } } public static class EcoTbl implements EcoColumns, BaseColumns { private static String path = Path.ECO; public static final Uri CONTENT_URI = getContentUri(path); public static final String CONTENT_TYPE = getContentType(path); public static final String CONTENT_ITEM_TYPE = getContentItemtype(path); // クエリ時のデフォルトソート public static final String DEFAULT_SORT = EcoColumns.NAME + " DESC"; // パス名の取得 public static String getPath() { return path; } } public static class ManualTbl implements ManualColumns, BaseColumns { private static String path = Path.MANUAL; public static final Uri CONTENT_URI = getContentUri(path); public static final String CONTENT_TYPE = getContentType(path); public static final String CONTENT_ITEM_TYPE = getContentItemtype(path); // パス名の取得 public static String getPath() { return path; } } public static class MappingTbl implements MappingColumns, BaseColumns { private static String path = Path.MAPPING; public static final Uri CONTENT_URI = getContentUri(path); public static final String CONTENT_TYPE = getContentType(path); public static final String CONTENT_ITEM_TYPE = getContentItemtype(path); // パス名の取得 public static String getPath() { return path; } } // for loader /** * The Interface EcoQuery. */ public interface EcoQuery { int LOADER_ID = 0; String[] PROJECTION = { EcoTbl._ID, EcoTbl.NAME, EcoTbl.UPDATE_DATE, EcoTbl.WIFI_ENABLED, EcoTbl.BLUETOOTH_ENABLED, EcoTbl.ROTATE_ENABLED, EcoTbl.SYNC_ENABLED, EcoTbl.BRIGHTNESS_ENABLED, EcoTbl.BRIGHTNESS_VALUE, EcoTbl.BRIGHTNESS_AUTO, EcoTbl.SLEEP_ENABLED, EcoTbl.SLEEP_TIME, EcoTbl.SILENT_ENABLED, EcoTbl.SILENT_MODE, }; enum Idx { _ID, NAME, UPDATE_DATE, WIFI_ENABLED, BLUETOOTH_ENABLED, ROTATE_ENABLED, SYNC_ENABLED, BRIGHTNESS_ENABLED, BRIGHTNESS_VALUE, BRIGHTNESS_AUTO, SLEEP_ENABLED, SLEEP_TIME, SILENT_ENABLED, SILENT_MODE, } } /** * The Interface SchedQuery. */ public interface SchedQuery { int LOADER_ID = 1; String[] PROJECTION = { SchedTbl._ID, SchedTbl.ENABLED, SchedTbl.HOUR, SchedTbl.MINUTE, SchedTbl.HOUR_MINUTE_STRING, SchedTbl.PATTERN, }; enum Idx { _ID, ENABLED, HOUR, MINUTE, HOUR_MINUTE_STRING, PATTERN, } } /** * The Interface BatteryQuery. */ public interface BatteryQuery { int LOADER_ID = 2; String[] PROJECTION = { BatteryTbl._ID, BatteryTbl.ENABLED, BatteryTbl.THRESHOLD, }; enum Idx { _ID, ENABLED, THRESHOLD, } } /** * The Interface ManualQuery. */ public interface ManualQuery { int LOADER_ID = 3; String[] PROJECTION = { ManualTbl._ID, ManualTbl.NAME, }; enum Idx { _ID, NAME, } } /** * The Interface MappingQuery. */ public interface MappingQuery { int LOADER_ID = 4; String[] PROJECTION = { MappingTbl._ID, MappingTbl.ECO_ID, MappingTbl.SCHED_ID, MappingTbl.BATTERY_ID, }; enum Idx { _ID, ECO_ID, SCHED_ID, BATTERY_ID, } } }