1/*
2 * Copyright (C) 2015 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.tv.dvr.provider;
18
19import android.provider.BaseColumns;
20
21/**
22 * The contract between the DVR provider and applications. Contains definitions for the supported
23 * columns. It's for the internal use in Live TV.
24 */
25public final class DvrContract {
26    /** Column definition for Recording table. */
27    public static final class Recordings implements BaseColumns {
28        /** The table name. */
29        public static final String TABLE_NAME = "recording";
30
31        /** The recording type for program recording. */
32        public static final String TYPE_PROGRAM = "TYPE_PROGRAM";
33
34        /** The recording type for timed recording. */
35        public static final String TYPE_TIMED = "TYPE_TIMED";
36
37        /** The recording type for season recording. */
38        public static final String TYPE_SEASON_RECORDING = "TYPE_SEASON_RECORDING";
39
40        /** The recording has not been started yet. */
41        public static final String STATE_RECORDING_NOT_STARTED = "STATE_RECORDING_NOT_STARTED";
42
43        /** The recording is in progress. */
44        public static final String STATE_RECORDING_IN_PROGRESS = "STATE_RECORDING_IN_PROGRESS";
45
46        /** The recording was unexpectedly stopped. */
47        public static final String STATE_RECORDING_UNEXPECTEDLY_STOPPED =
48                "STATE_RECORDING_UNEXPECTEDLY_STOPPED";
49
50        /** The recording is finished. */
51        public static final String STATE_RECORDING_FINISHED = "STATE_RECORDING_FINISHED";
52
53        /**
54         * The priority of this recording.
55         *
56         * <p> The lowest number is recorded first. If there is a tie in priority then the lower id
57         * wins.  Defaults to {@value Long#MAX_VALUE}
58         *
59         * <p>Type: INTEGER (long)
60         */
61        public static final String COLUMN_PRIORITY = "priority";
62
63        /**
64         * The type of this recording.
65         *
66         * <p>This value should be one of the followings: {@link #TYPE_PROGRAM},
67         * {@link #TYPE_TIMED}, and {@link #TYPE_SEASON_RECORDING}.
68         *
69         * <p>This is a required field.
70         *
71         * <p>Type: String
72         */
73        public static final String COLUMN_TYPE = "type";
74
75        /**
76         * The ID of the channel for recording.
77         *
78         * <p>This is a required field.
79         *
80         * <p>Type: INTEGER (long)
81         */
82        public static final String COLUMN_CHANNEL_ID = "channel_id";
83
84
85        /**
86         * The  ID of the associated program for recording.
87         *
88         * <p>This is an optional field.
89         *
90         * <p>Type: INTEGER (long)
91         */
92        public static final String COLUMN_PROGRAM_ID = "program_id";
93
94        /**
95         * The start time of this recording, in milliseconds since the epoch.
96         *
97         * <p>This is a required field.
98         *
99         * <p>Type: INTEGER (long)
100         */
101        public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
102
103        /**
104         * The end time of this recording, in milliseconds since the epoch.
105         *
106         * <p>This is a required field.
107         *
108         * <p>Type: INTEGER (long)
109         */
110        public static final String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis";
111
112        /**
113         * The state of this recording.
114         *
115         * <p>This value should be one of the followings: {@link #STATE_RECORDING_NOT_STARTED},
116         * {@link #STATE_RECORDING_IN_PROGRESS}, {@link #STATE_RECORDING_UNEXPECTEDLY_STOPPED},
117         * and {@link #STATE_RECORDING_FINISHED}.
118         *
119         * <p>This is a required field.
120         *
121         * <p>Type: String
122         */
123        public static final String COLUMN_STATE = "state";
124
125        private Recordings() { }
126    }
127
128    private DvrContract() { }
129}
130