Attachment.java revision f944e9655562e321aff52fe5f437e1d2fa2950a9
17b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira/** 27b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira * Copyright (c) 2011, Google Inc. 37b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira * 47b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira * Licensed under the Apache License, Version 2.0 (the "License"); 57b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira * you may not use this file except in compliance with the License. 67b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira * You may obtain a copy of the License at 77b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira * 87b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira * http://www.apache.org/licenses/LICENSE-2.0 97b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira * 107b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira * Unless required by applicable law or agreed to in writing, software 117b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira * distributed under the License is distributed on an "AS IS" BASIS, 127b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira * See the License for the specific language governing permissions and 147b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira * limitations under the License. 157b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira */ 1630e2c24b056542f3b1b438aeb798305d1226d0c8Andy Huangpackage com.android.mail.providers; 177b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira 187aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereiraimport android.os.Parcel; 197aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereiraimport android.os.Parcelable; 20f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereiraimport android.text.TextUtils; 21f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira 22f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereiraimport com.google.common.collect.Lists; 237b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira 247aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereirapublic class Attachment implements Parcelable { 25f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira public static final int SERVER_ATTACHMENT = 0; 26f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira /** Extras are "<path>". */ 27f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira public static final int LOCAL_FILE = 1; 28f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira 297aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira /** 307aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira * Attachment name. 317aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira */ 327aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira public String name; 33f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira 34f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira public int origin; 35f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira 367aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira /** 377aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira * Attachment origin info. 387aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira * TODO: do we want this? Or location? 397aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira */ 407aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira public String originExtras; 417aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira /** 427aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira * Mime type of the file. 437aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira */ 447aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira public String mimeType; 457aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira /** 467aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira * Content uri location of the attachment. 477aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira */ 487aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira public String contentUri; 497aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira /** 507aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira * Part id of the attachment. 517aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira */ 527aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira public String partId; 537aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira /** 547aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira * isSynced is true if the attachment is available locally on the device. 557aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira */ 567aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira public boolean isSynced; 577aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira /** 587aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira * Attachment size in kb. 597aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira */ 607aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira public long size; 617b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira 627aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira public Attachment(Parcel in) { 637aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira name = in.readString(); 647aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira originExtras = in.readString(); 657aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira mimeType = in.readString(); 667aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira contentUri = in.readString(); 677aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira partId = in.readString(); 687a07fb4955e34250225287212b07d1b6f12bf671Mindy Pereira isSynced = in.readInt() == 1; 697aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira size = in.readLong(); 70f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira origin = in.readInt(); 717aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira } 727b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira 737aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira public Attachment() { 747aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira } 757b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira 76f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira public Attachment(String attachmentString) { 77f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira String[] attachmentValues = attachmentString.split("\\|"); 78f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira if (attachmentValues != null) { 79f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira partId = attachmentValues[0]; 80f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira name = attachmentValues[1]; 81f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira mimeType = attachmentValues[2]; 82f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira try { 83f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira size = Long.parseLong(attachmentValues[3]); 84f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira } catch (NumberFormatException e) { 85f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira size = 0; 86f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira } 87f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira mimeType = attachmentValues[4]; 88f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira origin = Integer.parseInt(attachmentValues[5]); 89f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira contentUri = attachmentValues[6]; 90f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira originExtras = attachmentValues[7]; 91f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira } 92f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira } 93f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira 947aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira @Override 957aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira public int describeContents() { 967aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira return 0; 977aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira } 987b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira 997aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira @Override 1007aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira public void writeToParcel(Parcel dest, int flags) { 1017aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira dest.writeString(name); 1027aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira dest.writeString(originExtras); 1037aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira dest.writeString(mimeType); 1047aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira dest.writeString(contentUri); 1057aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira dest.writeString(partId); 1067aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira dest.writeInt(isSynced? 1 : 0); 1077aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira dest.writeLong(size); 108f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira dest.writeInt(origin); 1097aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira } 1107b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira 1117aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira public static final Creator<Attachment> CREATOR = new Creator<Attachment>() { 1127aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira @Override 1137aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira public Attachment createFromParcel(Parcel source) { 1147aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira return new Attachment(source); 1157aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira } 1167b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira 1177aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira @Override 1187aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira public Attachment[] newArray(int size) { 1197aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira return new Attachment[size]; 1207aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira } 1217aee8f75f07eb39ecacdf0630d2199211aea5718Mindy Pereira }; 122f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira 123f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira 124f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira public String toJoinedString() { 125f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira return TextUtils.join("|", Lists.newArrayList(partId == null ? "" : partId, 126f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira name == null ? "" : name.replaceAll("[|\n]", ""), mimeType, size, mimeType, 127f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira origin + "", contentUri, TextUtils.isEmpty(originExtras) ? contentUri 128f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira : originExtras, "")); 129f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira } 130f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira 131f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira public boolean isImage() { 132f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira return mimeType.startsWith("image"); 133f944e9655562e321aff52fe5f437e1d2fa2950a9Mindy Pereira } 1347b56a61174eeb202eea468b7f68b79729737ded2Mindy Pereira} 135