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