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