1 /* 2 * Copyright (C) 2010 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.contacts.common.vcard; 17 18 import android.accounts.Account; 19 import android.net.Uri; 20 21 import com.android.contacts.common.model.account.AccountWithDataSet; 22 import com.android.vcard.VCardSourceDetector; 23 24 /** 25 * Class representing one request for importing vCard (given as a Uri). 26 * 27 * Mainly used when {@link ImportVCardActivity} requests {@link VCardService} 28 * to import some specific Uri. 29 * 30 * Note: This object's accepting only One Uri does NOT mean that 31 * there's only one vCard entry inside the instance, as one Uri often has multiple 32 * vCard entries inside it. 33 */ 34 public class ImportRequest { 35 /** 36 * Can be null (typically when there's no Account available in the system). 37 */ 38 public final Account account; 39 40 /** 41 * Uri to be imported. May have different content than originally given from users, so 42 * when displaying user-friendly information (e.g. "importing xxx.vcf"), use 43 * {@link #displayName} instead. 44 * 45 * If this is null {@link #data} contains the byte stream of the vcard. 46 */ 47 public final Uri uri; 48 49 /** 50 * Holds the byte stream of the vcard, if {@link #uri} is null. 51 */ 52 public final byte[] data; 53 54 /** 55 * String to be displayed to the user to indicate the source of the VCARD. 56 */ 57 public final String displayName; 58 59 /** 60 * Can be {@link VCardSourceDetector#PARSE_TYPE_UNKNOWN}. 61 */ 62 public final int estimatedVCardType; 63 64 /** 65 * Can be null, meaning no preferable charset is available. 66 */ 67 public final String estimatedCharset; 68 69 /** 70 * Assumes that one Uri contains only one version, while there's a (tiny) possibility 71 * we may have two types in one vCard. 72 * 73 * e.g. 74 * BEGIN:VCARD 75 * VERSION:2.1 76 * ... 77 * END:VCARD 78 * BEGIN:VCARD 79 * VERSION:3.0 80 * ... 81 * END:VCARD 82 * 83 * We've never seen this kind of a file, but we may have to cope with it in the future. 84 */ 85 public final int vcardVersion; 86 87 /** 88 * The count of vCard entries in {@link #uri}. A receiver of this object can use it 89 * when showing the progress of import. Thus a receiver must be able to torelate this 90 * variable being invalid because of vCard's limitation. 91 * 92 * vCard does not let us know this count without looking over a whole file content, 93 * which means we have to open and scan over {@link #uri} to know this value, while 94 * it may not be opened more than once (Uri does not require it to be opened multiple times 95 * and may become invalid after its close() request). 96 */ 97 public final int entryCount; 98 99 public ImportRequest(AccountWithDataSet account, 100 byte[] data, Uri uri, String displayName, int estimatedType, String estimatedCharset, 101 int vcardVersion, int entryCount) { 102 this.account = account != null ? account.getAccountOrNull() : null; 103 this.data = data; 104 this.uri = uri; 105 this.displayName = displayName; 106 this.estimatedVCardType = estimatedType; 107 this.estimatedCharset = estimatedCharset; 108 this.vcardVersion = vcardVersion; 109 this.entryCount = entryCount; 110 } 111 } 112