blob: 1d75bbe0b5978ade47c8a31191e0bb36cae716ba [file] [log] [blame]
/*
* 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;
}
}
}