| /* |
| * Copyright (C) 2013 The Android Open Source Project |
| * |
| * 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.android.camera.data; |
| |
| import android.net.Uri; |
| |
| import com.android.camera.util.Size; |
| |
| import java.util.Date; |
| |
| /** |
| * Represents an immutable set of backing data. No object or value |
| * returned from this object should be mutable. |
| */ |
| public class FilmstripItemData { |
| // TODO Make these enum values. |
| public static final String MIME_TYPE_JPEG = "image/jpeg"; |
| public static final String MIME_TYPE_GIF = "image/gif"; |
| public static final String MIME_TYPE_PHOTOSPHERE = "application/vnd.google.panorama360+jpg"; |
| public static final String MIME_TYPE_MP4 = "video/mp4"; |
| |
| private final long mContentId; |
| private final String mTitle; |
| private final String mMimeType; |
| private final Date mCreationDate; |
| private final Date mLastModifiedDate; |
| private final String mFilePath; |
| private final Uri mUri; |
| private final Size mDimensions; |
| private final long mSizeInBytes; |
| private final int mOrientation; |
| private final Location mLocation; |
| |
| public FilmstripItemData( |
| long contentId, |
| String title, |
| String mimeType, |
| Date creationDate, |
| Date lastModifiedDate, |
| String filePath, |
| Uri uri, |
| Size dimensions, |
| long sizeInBytes, |
| int orientation, |
| Location location) { |
| mContentId = contentId; |
| mTitle = title; |
| mMimeType = mimeType; |
| mCreationDate = creationDate; |
| mLastModifiedDate = lastModifiedDate; |
| mFilePath = filePath; |
| mUri = uri; |
| mDimensions = dimensions; |
| mSizeInBytes = sizeInBytes; |
| mOrientation = orientation; |
| mLocation = location; |
| } |
| |
| public long getContentId() { |
| return mContentId; |
| } |
| |
| /** |
| * Gets the string title of this item. May be used for sorting. |
| */ |
| public String getTitle() { |
| return mTitle; |
| } |
| |
| /** |
| * @return The mimetype of this data item, or null, if this item has no |
| * mimetype associated with it. |
| */ |
| public String getMimeType() { |
| return mMimeType; |
| } |
| |
| /** |
| * Gets the date when this item was created. The returned date may be used |
| * for sorting. |
| */ |
| public Date getCreationDate() { |
| return mCreationDate; |
| } |
| |
| /** |
| * Gets the date when this item was last modified. The returned date may |
| * be used for sorting. |
| */ |
| public Date getLastModifiedDate() { |
| return mLastModifiedDate; |
| } |
| |
| /** |
| * Returns the path to the data on the storage. |
| */ |
| public String getFilePath() { |
| return mFilePath; |
| } |
| |
| /** |
| * @return The URI of this data. Must be a unique one and not null. |
| */ |
| public Uri getUri() { |
| return mUri; |
| } |
| |
| /** |
| * Dimensions of this item. |
| * |
| * @return physical width and height in pixels. |
| */ |
| /* package */ Size getDimensions() { |
| return mDimensions; |
| } |
| |
| /** |
| * @return total number of bytes that represent this item. |
| */ |
| public long getSizeInBytes() { |
| return mSizeInBytes; |
| } |
| |
| /** |
| * Returns the rotation of the image in degrees clockwise. The valid values |
| * are 0, 90, 180, and 270. |
| */ |
| /* package */ int getOrientation() { |
| return mOrientation; |
| } |
| |
| public Location getLocation() { |
| return mLocation; |
| } |
| |
| @Override |
| public String toString() { |
| StringBuilder sb = new StringBuilder(); |
| sb.append("FilmstripItemData {"); |
| sb.append("id:"); |
| sb.append(mContentId); |
| sb.append(",title:"); |
| sb.append(mTitle); |
| sb.append(",mimeType:"); |
| sb.append(mMimeType); |
| sb.append(",creationDate:"); |
| sb.append(mCreationDate); |
| sb.append(",lastModifiedDate:"); |
| sb.append(mLastModifiedDate); |
| sb.append(",filePath:"); |
| sb.append(mFilePath); |
| sb.append(",uri:"); |
| sb.append(mUri); |
| sb.append(",dimensions:"); |
| sb.append(mDimensions); |
| sb.append(",sizeInBytes:"); |
| sb.append(mSizeInBytes); |
| sb.append(",orientation:"); |
| sb.append(mOrientation); |
| sb.append(",location:"); |
| sb.append(mLocation); |
| sb.append("}"); |
| return sb.toString(); |
| } |
| |
| public static class Builder { |
| public static final Date EMPTY = new Date(0); |
| public static final Size ZERO = new Size(0, 0); |
| |
| private long mContentId = -1; |
| private String mTitle = ""; |
| private String mMimeType = ""; |
| private Date mCreationDate = EMPTY; |
| private Date mLastModifiedDate = EMPTY; |
| private String mFilePath = ""; |
| private final Uri mUri; |
| private Size mDimensions = ZERO; |
| private long mSizeInBytes = 0; |
| private int mOrientation = 0; |
| private Location mLocation = Location.UNKNOWN; |
| |
| public Builder(Uri uri) { |
| mUri = uri; |
| } |
| |
| public FilmstripItemData build() { |
| return new FilmstripItemData( |
| mContentId, |
| mTitle, |
| mMimeType, |
| mCreationDate, |
| mLastModifiedDate, |
| mFilePath, |
| mUri, |
| mDimensions, |
| mSizeInBytes, |
| mOrientation, |
| mLocation |
| ); |
| } |
| |
| public static Builder from(FilmstripItemData data) { |
| Builder builder = new Builder(data.getUri()); |
| builder.mContentId = data.getContentId(); |
| builder.mTitle = data.getTitle(); |
| builder.mMimeType = data.getMimeType(); |
| builder.mCreationDate = data.getCreationDate(); |
| builder.mLastModifiedDate = data.getLastModifiedDate(); |
| builder.mFilePath = data.getFilePath(); |
| builder.mDimensions = data.getDimensions(); |
| builder.mSizeInBytes = data.getSizeInBytes(); |
| builder.mOrientation = data.getOrientation(); |
| builder.mLocation = data.getLocation(); |
| return builder; |
| } |
| |
| public Builder withContentId(long contentId) { |
| mContentId = contentId; |
| return this; |
| } |
| |
| public Builder withTitle(String title) { |
| mTitle = title; |
| return this; |
| } |
| |
| public Builder withMimeType(String mimeType) { |
| mMimeType = mimeType; |
| return this; |
| } |
| |
| public Builder withCreationDate(Date creationDate) { |
| mCreationDate = creationDate; |
| return this; |
| } |
| |
| public Builder withLastModifiedDate(Date lastModifiedDate) { |
| mLastModifiedDate = lastModifiedDate; |
| return this; |
| } |
| |
| public Builder withFilePath(String filePath) { |
| mFilePath = filePath; |
| return this; |
| } |
| |
| public Builder withDimensions(Size dimensions) { |
| mDimensions = dimensions; |
| return this; |
| } |
| |
| public Builder withSizeInBytes(long sizeInBytes) { |
| mSizeInBytes = sizeInBytes; |
| return this; |
| } |
| |
| public Builder withOrientation(int orientation) { |
| mOrientation = orientation; |
| return this; |
| } |
| |
| public Builder withLocation(Location location) { |
| mLocation = location; |
| return this; |
| } |
| } |
| } |