1d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd/*
2d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Copyright (C) 2015 The Android Open Source Project
3d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
4d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Licensed under the Apache License, Version 2.0 (the "License");
5d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * you may not use this file except in compliance with the License.
6d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * You may obtain a copy of the License at
7d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
8d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *      http://www.apache.org/licenses/LICENSE-2.0
9d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
10d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Unless required by applicable law or agreed to in writing, software
11d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * distributed under the License is distributed on an "AS IS" BASIS,
12d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * See the License for the specific language governing permissions and
14d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * limitations under the License.
15d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */
16d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
17d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpackage com.android.messaging.datamodel;
18d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
19d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.provider.BaseColumns;
20d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
21d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.ex.photo.provider.PhotoContract.PhotoViewColumns;
22d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
23d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.datamodel.DatabaseHelper.MessageColumns;
24d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.datamodel.DatabaseHelper.PartColumns;
25d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.datamodel.DatabaseHelper.ParticipantColumns;
26d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.util.ContentType;
27d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
28d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd/**
29d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * View for the image parts for the conversation. It is used to provide the photoviewer with a
30d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * a data source for all the photos in a conversation, so that the photoviewer can support paging
31d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * through all the photos of the conversation. The columns of the view are a superset of
32d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * {@link com.android.ex.photo.provider.PhotoContract.PhotoViewColumns}.
33d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */
34d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpublic class ConversationImagePartsView {
35d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    private static final String VIEW_NAME = "conversation_image_parts_view";
36d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
37d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    private static final String CREATE_SQL = "CREATE VIEW " +
38d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            VIEW_NAME + " AS SELECT "
39d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + DatabaseHelper.MESSAGES_TABLE + '.' + MessageColumns.CONVERSATION_ID
40d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + " as " + Columns.CONVERSATION_ID + ", "
41d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + DatabaseHelper.PARTS_TABLE + '.' + PartColumns.CONTENT_URI
42d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + " as " + Columns.URI + ", "
43d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + DatabaseHelper.PARTICIPANTS_TABLE + '.' + ParticipantColumns.FULL_NAME
44d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + " as " + Columns.SENDER_FULL_NAME + ", "
45d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + DatabaseHelper.PARTS_TABLE + '.' + PartColumns.CONTENT_URI
46d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + " as " + Columns.CONTENT_URI + ", "
47d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // Use NULL as the thumbnail uri
48d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + " NULL as " + Columns.THUMBNAIL_URI + ", "
49d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + DatabaseHelper.PARTS_TABLE + '.' + PartColumns.CONTENT_TYPE
50d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + " as " + Columns.CONTENT_TYPE + ", "
51d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            //
52d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // Columns in addition to those specified by PhotoContract
53d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            //
54d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + DatabaseHelper.PARTICIPANTS_TABLE + '.' + ParticipantColumns.DISPLAY_DESTINATION
55d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + " as " + Columns.DISPLAY_DESTINATION + ", "
56d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + DatabaseHelper.MESSAGES_TABLE + '.' + MessageColumns.RECEIVED_TIMESTAMP
57d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + " as " + Columns.RECEIVED_TIMESTAMP + ", "
58d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + DatabaseHelper.MESSAGES_TABLE + '.' + MessageColumns.STATUS
59d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + " as " + Columns.STATUS + " "
60d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
61d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + " FROM " + DatabaseHelper.MESSAGES_TABLE + " LEFT JOIN " + DatabaseHelper.PARTS_TABLE
62d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + " ON (" + DatabaseHelper.MESSAGES_TABLE + "." + MessageColumns._ID
63d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + "=" + DatabaseHelper.PARTS_TABLE + "." + PartColumns.MESSAGE_ID + ") "
64d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + " LEFT JOIN " + DatabaseHelper.PARTICIPANTS_TABLE + " ON ("
65d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + DatabaseHelper.MESSAGES_TABLE + '.' +  MessageColumns.SENDER_PARTICIPANT_ID
66d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + '=' + DatabaseHelper.PARTICIPANTS_TABLE + '.' + ParticipantColumns._ID + ")"
67d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
68d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // "content_type like 'image/%'"
69d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + " WHERE " + DatabaseHelper.PARTS_TABLE + "." + PartColumns.CONTENT_TYPE
70d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + " like '" + ContentType.IMAGE_PREFIX + "%'"
71d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
72d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + " ORDER BY "
73d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + DatabaseHelper.MESSAGES_TABLE + '.' + MessageColumns.RECEIVED_TIMESTAMP + " ASC, "
74d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            + DatabaseHelper.PARTS_TABLE + '.' + PartColumns._ID + " ASC";
75d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
76d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    static class Columns implements BaseColumns {
77d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        static final String CONVERSATION_ID = MessageColumns.CONVERSATION_ID;
78d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        static final String URI = PhotoViewColumns.URI;
79d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        static final String SENDER_FULL_NAME = PhotoViewColumns.NAME;
80d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        static final String CONTENT_URI = PhotoViewColumns.CONTENT_URI;
81d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        static final String THUMBNAIL_URI = PhotoViewColumns.THUMBNAIL_URI;
82d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        static final String CONTENT_TYPE = PhotoViewColumns.CONTENT_TYPE;
83d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        // Columns in addition to those specified by PhotoContract
84d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        static final String DISPLAY_DESTINATION = ParticipantColumns.DISPLAY_DESTINATION;
85d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        static final String RECEIVED_TIMESTAMP = MessageColumns.RECEIVED_TIMESTAMP;
86d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        static final String STATUS = MessageColumns.STATUS;
87d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
88d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
89d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public interface PhotoViewQuery {
90d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public final String[] PROJECTION = {
91d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            PhotoViewColumns.URI,
92d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            PhotoViewColumns.NAME,
93d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            PhotoViewColumns.CONTENT_URI,
94d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            PhotoViewColumns.THUMBNAIL_URI,
95d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            PhotoViewColumns.CONTENT_TYPE,
96d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // Columns in addition to those specified by PhotoContract
97d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            Columns.DISPLAY_DESTINATION,
98d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            Columns.RECEIVED_TIMESTAMP,
99d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            Columns.STATUS,
100d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        };
101d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
102d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public final int INDEX_URI = 0;
103d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public final int INDEX_SENDER_FULL_NAME = 1;
104d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public final int INDEX_CONTENT_URI = 2;
105d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public final int INDEX_THUMBNAIL_URI = 3;
106d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public final int INDEX_CONTENT_TYPE = 4;
107d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        // Columns in addition to those specified by PhotoContract
108d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public final int INDEX_DISPLAY_DESTINATION = 5;
109d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public final int INDEX_RECEIVED_TIMESTAMP = 6;
110d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public final int INDEX_STATUS = 7;
111d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
112d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
113d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    static final String getViewName() {
114d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return VIEW_NAME;
115d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
116d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
117d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    static final String getCreateSql() {
118d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return CREATE_SQL;
119d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
120d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd}
121