18ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde/* 28ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * Copyright (C) 2013 The Android Open Source Project 38ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * 48ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * Licensed under the Apache License, Version 2.0 (the "License"); 58ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * you may not use this file except in compliance with the License. 68ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * You may obtain a copy of the License at 78ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * 88ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * http://www.apache.org/licenses/LICENSE-2.0 98ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * 108ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * Unless required by applicable law or agreed to in writing, software 118ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * distributed under the License is distributed on an "AS IS" BASIS, 128ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * See the License for the specific language governing permissions and 148ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * limitations under the License. 158ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde */ 168ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 178ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohdepackage com.android.camera.data; 188ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 198ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohdeimport android.net.Uri; 208ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 218ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohdeimport com.android.camera.util.Size; 228ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 238ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohdeimport java.util.Date; 248ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 258ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde/** 268ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * Represents an immutable set of backing data. No object or value 278ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * returned from this object should be mutable. 288ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde */ 298ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohdepublic class FilmstripItemData { 308ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde // TODO Make these enum values. 318ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public static final String MIME_TYPE_JPEG = "image/jpeg"; 328ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public static final String MIME_TYPE_GIF = "image/gif"; 338ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public static final String MIME_TYPE_PHOTOSPHERE = "application/vnd.google.panorama360+jpg"; 348ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public static final String MIME_TYPE_MP4 = "video/mp4"; 358ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 368ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private final long mContentId; 378ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private final String mTitle; 388ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private final String mMimeType; 398ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private final Date mCreationDate; 408ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private final Date mLastModifiedDate; 418ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private final String mFilePath; 428ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private final Uri mUri; 438ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private final Size mDimensions; 448ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private final long mSizeInBytes; 458ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private final int mOrientation; 468ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private final Location mLocation; 478ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 488ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public FilmstripItemData( 498ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde long contentId, 508ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde String title, 518ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde String mimeType, 528ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde Date creationDate, 538ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde Date lastModifiedDate, 548ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde String filePath, 558ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde Uri uri, 568ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde Size dimensions, 578ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde long sizeInBytes, 588ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde int orientation, 598ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde Location location) { 608ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mContentId = contentId; 618ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mTitle = title; 628ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mMimeType = mimeType; 638ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mCreationDate = creationDate; 648ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mLastModifiedDate = lastModifiedDate; 658ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mFilePath = filePath; 668ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mUri = uri; 678ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mDimensions = dimensions; 688ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mSizeInBytes = sizeInBytes; 698ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mOrientation = orientation; 708ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mLocation = location; 718ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 728ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 738ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public long getContentId() { 748ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return mContentId; 758ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 768ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 778ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde /** 788ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * Gets the string title of this item. May be used for sorting. 798ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde */ 808ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public String getTitle() { 818ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return mTitle; 828ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 838ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 848ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde /** 858ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * @return The mimetype of this data item, or null, if this item has no 868ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * mimetype associated with it. 878ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde */ 888ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public String getMimeType() { 898ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return mMimeType; 908ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 918ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 928ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde /** 938ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * Gets the date when this item was created. The returned date may be used 948ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * for sorting. 958ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde */ 968ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public Date getCreationDate() { 978ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return mCreationDate; 988ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 998ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 1008ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde /** 1018ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * Gets the date when this item was last modified. The returned date may 1028ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * be used for sorting. 1038ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde */ 1048ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public Date getLastModifiedDate() { 1058ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return mLastModifiedDate; 1068ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 1078ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 1088ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde /** 1098ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * Returns the path to the data on the storage. 1108ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde */ 1118ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public String getFilePath() { 1128ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return mFilePath; 1138ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 1148ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 1158ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde /** 1168ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * @return The URI of this data. Must be a unique one and not null. 1178ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde */ 1188ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public Uri getUri() { 1198ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return mUri; 1208ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 1218ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 1228ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde /** 1238ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * Dimensions of this item. 1248ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * 1258ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * @return physical width and height in pixels. 1268ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde */ 12751cafa0a35546a42c573357aa7a031a79cf9ba1bAlan Newberger /* package */ Size getDimensions() { 1288ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return mDimensions; 1298ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 1308ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 1318ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde /** 1328ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * @return total number of bytes that represent this item. 1338ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde */ 1348ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public long getSizeInBytes() { 1358ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return mSizeInBytes; 1368ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 1378ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 1388ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde /** 1398ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * Returns the rotation of the image in degrees clockwise. The valid values 1408ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * are 0, 90, 180, and 270. 1418ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde */ 14251cafa0a35546a42c573357aa7a031a79cf9ba1bAlan Newberger /* package */ int getOrientation() { 1438ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return mOrientation; 1448ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 1458ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 1468ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public Location getLocation() { 1478ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return mLocation; 1488ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 1498ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 1508ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde @Override 1518ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public String toString() { 1528ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde StringBuilder sb = new StringBuilder(); 1538ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append("FilmstripItemData {"); 1548ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append("id:"); 1558ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(mContentId); 1568ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(",title:"); 1578ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(mTitle); 1588ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(",mimeType:"); 1598ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(mMimeType); 1608ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(",creationDate:"); 1618ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(mCreationDate); 1628ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(",lastModifiedDate:"); 1638ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(mLastModifiedDate); 1648ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(",filePath:"); 1658ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(mFilePath); 1668ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(",uri:"); 1678ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(mUri); 1688ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(",dimensions:"); 1698ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(mDimensions); 1708ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(",sizeInBytes:"); 1718ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(mSizeInBytes); 1728ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(",orientation:"); 1738ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(mOrientation); 1748ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(",location:"); 1758ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append(mLocation); 1768ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde sb.append("}"); 1778ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return sb.toString(); 1788ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 1798ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 1808ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public static class Builder { 1818ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public static final Date EMPTY = new Date(0); 1828ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public static final Size ZERO = new Size(0, 0); 1838ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 1848ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private long mContentId = -1; 1858ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private String mTitle = ""; 1868ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private String mMimeType = ""; 1878ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private Date mCreationDate = EMPTY; 1888ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private Date mLastModifiedDate = EMPTY; 1898ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private String mFilePath = ""; 1908ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private final Uri mUri; 1918ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private Size mDimensions = ZERO; 1928ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private long mSizeInBytes = 0; 1938ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private int mOrientation = 0; 1948ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private Location mLocation = Location.UNKNOWN; 1958ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 1968ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public Builder(Uri uri) { 1978ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mUri = uri; 1988ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 1998ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 2008ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public FilmstripItemData build() { 2018ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return new FilmstripItemData( 2028ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mContentId, 2038ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mTitle, 2048ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mMimeType, 2058ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mCreationDate, 2068ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mLastModifiedDate, 2078ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mFilePath, 2088ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mUri, 2098ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mDimensions, 2108ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mSizeInBytes, 2118ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mOrientation, 2128ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mLocation 2138ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde ); 2148ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 2158ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 2168ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public static Builder from(FilmstripItemData data) { 2178ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde Builder builder = new Builder(data.getUri()); 2188ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde builder.mContentId = data.getContentId(); 2198ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde builder.mTitle = data.getTitle(); 2208ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde builder.mMimeType = data.getMimeType(); 2218ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde builder.mCreationDate = data.getCreationDate(); 2228ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde builder.mLastModifiedDate = data.getLastModifiedDate(); 2238ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde builder.mFilePath = data.getFilePath(); 2248ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde builder.mDimensions = data.getDimensions(); 2258ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde builder.mSizeInBytes = data.getSizeInBytes(); 2268ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde builder.mOrientation = data.getOrientation(); 2278ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde builder.mLocation = data.getLocation(); 2288ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return builder; 2298ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 2308ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 2318ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public Builder withContentId(long contentId) { 2328ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mContentId = contentId; 2338ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return this; 2348ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 2358ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 2368ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public Builder withTitle(String title) { 2378ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mTitle = title; 2388ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return this; 2398ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 2408ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 2418ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public Builder withMimeType(String mimeType) { 2428ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mMimeType = mimeType; 2438ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return this; 2448ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 2458ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 2468ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public Builder withCreationDate(Date creationDate) { 2478ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mCreationDate = creationDate; 2488ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return this; 2498ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 2508ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 2518ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public Builder withLastModifiedDate(Date lastModifiedDate) { 2528ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mLastModifiedDate = lastModifiedDate; 2538ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return this; 2548ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 2558ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 2568ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public Builder withFilePath(String filePath) { 2578ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mFilePath = filePath; 2588ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return this; 2598ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 2608ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 2618ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public Builder withDimensions(Size dimensions) { 2628ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mDimensions = dimensions; 2638ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return this; 2648ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 2658ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 2668ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public Builder withSizeInBytes(long sizeInBytes) { 2678ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mSizeInBytes = sizeInBytes; 2688ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return this; 2698ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 2708ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 2718ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public Builder withOrientation(int orientation) { 2728ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mOrientation = orientation; 2738ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return this; 2748ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 2758ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 2768ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public Builder withLocation(Location location) { 2778ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mLocation = location; 2788ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return this; 2798ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 2808ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 2818ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde} 282