summaryrefslogtreecommitdiffstats
path: root/core/java/android/pim
diff options
context:
space:
mode:
authorDaisuke Miyakawa <dmiyakawa@google.com>2009-11-03 17:30:19 +0900
committerDaisuke Miyakawa <dmiyakawa@google.com>2009-11-03 17:30:19 +0900
commit6cb76ac37f1b4a36d81db7d7e8652d82b6f1b8b5 (patch)
tree362a76429280922128b499f8cdc3853f9c25a58f /core/java/android/pim
parent66da163d4115688a8be7abb96c409a9858f9a8cd (diff)
downloadframeworks_base-6cb76ac37f1b4a36d81db7d7e8652d82b6f1b8b5.zip
frameworks_base-6cb76ac37f1b4a36d81db7d7e8652d82b6f1b8b5.tar.gz
frameworks_base-6cb76ac37f1b4a36d81db7d7e8652d82b6f1b8b5.tar.bz2
Rename the term "attribute"/"attr" to "parameter"/param".
We had been using "parameter"/"param" by mistake, while both vCard formats uses theterm "attribute"/"attr". This is confusing. Internal issue number: 2233884
Diffstat (limited to 'core/java/android/pim')
-rw-r--r--core/java/android/pim/vcard/Constants.java79
-rw-r--r--core/java/android/pim/vcard/ContactStruct.java53
-rw-r--r--core/java/android/pim/vcard/VCardComposer.java378
-rw-r--r--core/java/android/pim/vcard/VCardConfig.java2
-rw-r--r--core/java/android/pim/vcard/VCardParser.java2
-rw-r--r--core/java/android/pim/vcard/VCardUtils.java50
6 files changed, 280 insertions, 284 deletions
diff --git a/core/java/android/pim/vcard/Constants.java b/core/java/android/pim/vcard/Constants.java
index 052f329..1e2ccdf 100644
--- a/core/java/android/pim/vcard/Constants.java
+++ b/core/java/android/pim/vcard/Constants.java
@@ -81,12 +81,7 @@ package android.pim.vcard;
public static final String PROPERTY_X_NO = "X-NO";
public static final String PROPERTY_X_DCM_HMN_MODE = "X-DCM-HMN-MODE";
- // For some historical reason, we often use the term "ATTR"/"attribute" especially toward
- // what is called "param" in both vCard specs, while vCard, while vCard importer side uses
- // "param".
- //
- // TODO: Confusing. Fix it.
- public static final String ATTR_TYPE = "TYPE";
+ public static final String PARAM_TYPE = "TYPE";
// How more than one TYPE fields are expressed is different between vCard 2.1 and vCard 3.0
//
@@ -100,62 +95,62 @@ package android.pim.vcard;
//
// So we are currently not sure which type is the best; probably we will have to change which
// type should be emitted depending on the device.
- public static final String ATTR_TYPE_HOME = "HOME";
- public static final String ATTR_TYPE_WORK = "WORK";
- public static final String ATTR_TYPE_FAX = "FAX";
- public static final String ATTR_TYPE_CELL = "CELL";
- public static final String ATTR_TYPE_VOICE = "VOICE";
- public static final String ATTR_TYPE_INTERNET = "INTERNET";
+ public static final String PARAM_TYPE_HOME = "HOME";
+ public static final String PARAM_TYPE_WORK = "WORK";
+ public static final String PARAM_TYPE_FAX = "FAX";
+ public static final String PARAM_TYPE_CELL = "CELL";
+ public static final String PARAM_TYPE_VOICE = "VOICE";
+ public static final String PARAM_TYPE_INTERNET = "INTERNET";
// Abbreviation of "prefered" according to vCard 2.1 specification.
// We interpret this value as "primary" property during import/export.
//
- // Note: Both vCard specs does anything about the requirement about this attribute,
+ // Note: Both vCard specs does not mention anything about the requirement for this parameter,
// but there may be some vCard importer which will get confused with more than
// one "PREF"s in one property name, while Android accepts them.
- public static final String ATTR_TYPE_PREF = "PREF";
+ public static final String PARAM_TYPE_PREF = "PREF";
- // Phone types valid in vCard and known to ContactsContract, but not so common.
- public static final String ATTR_TYPE_CAR = "CAR";
- public static final String ATTR_TYPE_ISDN = "ISDN";
- public static final String ATTR_TYPE_PAGER = "PAGER";
- public static final String ATTR_TYPE_TLX = "TLX"; // Telex
+ // Phone type parameters valid in vCard and known to ContactsContract, but not so common.
+ public static final String PARAM_TYPE_CAR = "CAR";
+ public static final String PARAM_TYPE_ISDN = "ISDN";
+ public static final String PARAM_TYPE_PAGER = "PAGER";
+ public static final String PARAM_TYPE_TLX = "TLX"; // Telex
// Phone types existing in vCard 2.1 but not known to ContactsContract.
// TODO: should make parser make these TYPE_CUSTOM.
- public static final String ATTR_TYPE_MODEM = "MODEM";
- public static final String ATTR_TYPE_MSG = "MSG";
- public static final String ATTR_TYPE_BBS = "BBS";
- public static final String ATTR_TYPE_VIDEO = "VIDEO";
-
- // Attribute for Phones, which are not formally valid in vCard (at least 2.1).
- // These types are basically encoded to "X-" attributes when composing vCard.
- // Parser passes these when "X-" is added to the attribute or not.
- public static final String ATTR_PHONE_EXTRA_TYPE_CALLBACK = "CALLBACK";
- public static final String ATTR_PHONE_EXTRA_TYPE_RADIO = "RADIO";
- public static final String ATTR_PHONE_EXTRA_TYPE_TTY_TDD = "TTY-TDD";
- public static final String ATTR_PHONE_EXTRA_TYPE_ASSISTANT = "ASSISTANT";
+ public static final String PARAM_TYPE_MODEM = "MODEM";
+ public static final String PARAM_TYPE_MSG = "MSG";
+ public static final String PARAM_TYPE_BBS = "BBS";
+ public static final String PARAM_TYPE_VIDEO = "VIDEO";
+
+ // TYPE parameters for Phones, which are not formally valid in vCard (at least 2.1).
+ // These types are basically encoded to "X-" parameters when composing vCard.
+ // Parser passes these when "X-" is added to the parameter or not.
+ public static final String PARAM_PHONE_EXTRA_TYPE_CALLBACK = "CALLBACK";
+ public static final String PARAM_PHONE_EXTRA_TYPE_RADIO = "RADIO";
+ public static final String PARAM_PHONE_EXTRA_TYPE_TTY_TDD = "TTY-TDD";
+ public static final String PARAM_PHONE_EXTRA_TYPE_ASSISTANT = "ASSISTANT";
// vCard composer translates this type to "WORK" + "PREF". Just for parsing.
- public static final String ATTR_PHONE_EXTRA_TYPE_COMPANY_MAIN = "COMPANY-MAIN";
+ public static final String PARAM_PHONE_EXTRA_TYPE_COMPANY_MAIN = "COMPANY-MAIN";
// vCard composer translates this type to "VOICE" Just for parsing.
- public static final String ATTR_PHONE_EXTRA_TYPE_OTHER = "OTHER";
+ public static final String PARAM_PHONE_EXTRA_TYPE_OTHER = "OTHER";
- // Attribute for addresses.
- public static final String ATTR_ADR_TYPE_PARCEL = "PARCEL";
- public static final String ATTR_ADR_TYPE_DOM = "DOM";
- public static final String ATTR_ADR_TYPE_INTL = "INTL";
+ // TYPE parameters for postal addresses.
+ public static final String PARAM_ADR_TYPE_PARCEL = "PARCEL";
+ public static final String PARAM_ADR_TYPE_DOM = "DOM";
+ public static final String PARAM_ADR_TYPE_INTL = "INTL";
- // Attribute types not officially valid but used in some vCard exporter.
+ // TYPE parameters not officially valid but used in some vCard exporter.
// Do not use in composer side.
- public static final String ATTR_EXTRA_TYPE_COMPANY = "COMPANY";
+ public static final String PARAM_EXTRA_TYPE_COMPANY = "COMPANY";
- // DoCoMo specific attribute. Used with "SOUND" property, which is alternate of SORT-STRING in
+ // DoCoMo specific type parameter. Used with "SOUND" property, which is alternate of SORT-STRING in
// vCard 3.0.
- public static final String ATTR_TYPE_X_IRMC_N = "X-IRMC-N";
+ public static final String PARAM_TYPE_X_IRMC_N = "X-IRMC-N";
public interface ImportOnly {
public static final String PROPERTY_X_NICKNAME = "X-NICKNAME";
- // Some device emits this "X-" attribute for expressing Google Talk,
+ // Some device emits this "X-" parameter for expressing Google Talk,
// which is specifically invalid but should be always properly accepted, and emitted
// in some special case (for that device/application).
public static final String PROPERTY_X_GOOGLE_TALK_WITH_SPACE = "X-GOOGLE TALK";
diff --git a/core/java/android/pim/vcard/ContactStruct.java b/core/java/android/pim/vcard/ContactStruct.java
index 67c47d1..cab9dc1 100644
--- a/core/java/android/pim/vcard/ContactStruct.java
+++ b/core/java/android/pim/vcard/ContactStruct.java
@@ -38,7 +38,6 @@ import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
import android.provider.ContactsContract.CommonDataKinds.Website;
import android.telephony.PhoneNumberUtils;
-import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.util.Log;
@@ -720,8 +719,8 @@ public class ContactStruct {
propName.equals(Constants.ImportOnly.PROPERTY_X_NICKNAME)) {
addNickName(propValue);
} else if (propName.equals(Constants.PROPERTY_SOUND)) {
- Collection<String> typeCollection = paramMap.get(Constants.ATTR_TYPE);
- if (typeCollection != null && typeCollection.contains(Constants.ATTR_TYPE_X_IRMC_N)) {
+ Collection<String> typeCollection = paramMap.get(Constants.PARAM_TYPE);
+ if (typeCollection != null && typeCollection.contains(Constants.PARAM_TYPE_X_IRMC_N)) {
// As of 2009-10-08, Parser side does not split a property value into separated
// values using ';' (in other words, propValueList.size() == 1),
// which is correct behavior from the view of vCard 2.1.
@@ -748,25 +747,25 @@ public class ContactStruct {
int type = -1;
String label = "";
boolean isPrimary = false;
- Collection<String> typeCollection = paramMap.get(Constants.ATTR_TYPE);
+ Collection<String> typeCollection = paramMap.get(Constants.PARAM_TYPE);
if (typeCollection != null) {
for (String typeString : typeCollection) {
typeString = typeString.toUpperCase();
- if (typeString.equals(Constants.ATTR_TYPE_PREF)) {
+ if (typeString.equals(Constants.PARAM_TYPE_PREF)) {
isPrimary = true;
- } else if (typeString.equals(Constants.ATTR_TYPE_HOME)) {
+ } else if (typeString.equals(Constants.PARAM_TYPE_HOME)) {
type = StructuredPostal.TYPE_HOME;
label = "";
- } else if (typeString.equals(Constants.ATTR_TYPE_WORK) ||
- typeString.equalsIgnoreCase(Constants.ATTR_EXTRA_TYPE_COMPANY)) {
+ } else if (typeString.equals(Constants.PARAM_TYPE_WORK) ||
+ typeString.equalsIgnoreCase(Constants.PARAM_EXTRA_TYPE_COMPANY)) {
// "COMPANY" seems emitted by Windows Mobile, which is not
// specifically supported by vCard 2.1. We assume this is same
// as "WORK".
type = StructuredPostal.TYPE_WORK;
label = "";
- } else if (typeString.equals(Constants.ATTR_ADR_TYPE_PARCEL) ||
- typeString.equals(Constants.ATTR_ADR_TYPE_DOM) ||
- typeString.equals(Constants.ATTR_ADR_TYPE_INTL)) {
+ } else if (typeString.equals(Constants.PARAM_ADR_TYPE_PARCEL) ||
+ typeString.equals(Constants.PARAM_ADR_TYPE_DOM) ||
+ typeString.equals(Constants.PARAM_ADR_TYPE_INTL)) {
// We do not have any appropriate way to store this information.
} else {
if (typeString.startsWith("X-") && type < 0) {
@@ -789,17 +788,17 @@ public class ContactStruct {
int type = -1;
String label = null;
boolean isPrimary = false;
- Collection<String> typeCollection = paramMap.get(Constants.ATTR_TYPE);
+ Collection<String> typeCollection = paramMap.get(Constants.PARAM_TYPE);
if (typeCollection != null) {
for (String typeString : typeCollection) {
typeString = typeString.toUpperCase();
- if (typeString.equals(Constants.ATTR_TYPE_PREF)) {
+ if (typeString.equals(Constants.PARAM_TYPE_PREF)) {
isPrimary = true;
- } else if (typeString.equals(Constants.ATTR_TYPE_HOME)) {
+ } else if (typeString.equals(Constants.PARAM_TYPE_HOME)) {
type = Email.TYPE_HOME;
- } else if (typeString.equals(Constants.ATTR_TYPE_WORK)) {
+ } else if (typeString.equals(Constants.PARAM_TYPE_WORK)) {
type = Email.TYPE_WORK;
- } else if (typeString.equals(Constants.ATTR_TYPE_CELL)) {
+ } else if (typeString.equals(Constants.PARAM_TYPE_CELL)) {
type = Email.TYPE_MOBILE;
} else {
if (typeString.startsWith("X-") && type < 0) {
@@ -821,10 +820,10 @@ public class ContactStruct {
// vCard specification does not specify other types.
final int type = Organization.TYPE_WORK;
boolean isPrimary = false;
- Collection<String> typeCollection = paramMap.get(Constants.ATTR_TYPE);
+ Collection<String> typeCollection = paramMap.get(Constants.PARAM_TYPE);
if (typeCollection != null) {
for (String typeString : typeCollection) {
- if (typeString.equals(Constants.ATTR_TYPE_PREF)) {
+ if (typeString.equals(Constants.PARAM_TYPE_PREF)) {
isPrimary = true;
}
}
@@ -846,7 +845,7 @@ public class ContactStruct {
boolean isPrimary = false;
if (typeCollection != null) {
for (String typeValue : typeCollection) {
- if (Constants.ATTR_TYPE_PREF.equals(typeValue)) {
+ if (Constants.PARAM_TYPE_PREF.equals(typeValue)) {
isPrimary = true;
} else if (formatName == null){
formatName = typeValue;
@@ -856,7 +855,7 @@ public class ContactStruct {
addPhotoBytes(formatName, propBytes, isPrimary);
}
} else if (propName.equals(Constants.PROPERTY_TEL)) {
- final Collection<String> typeCollection = paramMap.get(Constants.ATTR_TYPE);
+ final Collection<String> typeCollection = paramMap.get(Constants.PARAM_TYPE);
final Object typeObject = VCardUtils.getPhoneTypeFromStrings(typeCollection);
final int type;
final String label;
@@ -869,7 +868,7 @@ public class ContactStruct {
}
final boolean isPrimary;
- if (typeCollection != null && typeCollection.contains(Constants.ATTR_TYPE_PREF)) {
+ if (typeCollection != null && typeCollection.contains(Constants.PARAM_TYPE_PREF)) {
isPrimary = true;
} else {
isPrimary = false;
@@ -877,12 +876,12 @@ public class ContactStruct {
addPhone(type, propValue, label, isPrimary);
} else if (propName.equals(Constants.PROPERTY_X_SKYPE_PSTNNUMBER)) {
// The phone number available via Skype.
- Collection<String> typeCollection = paramMap.get(Constants.ATTR_TYPE);
+ Collection<String> typeCollection = paramMap.get(Constants.PARAM_TYPE);
// XXX: should use TYPE_CUSTOM + the label "Skype"? (which may need localization)
int type = Phone.TYPE_OTHER;
final String label = null;
final boolean isPrimary;
- if (typeCollection != null && typeCollection.contains(Constants.ATTR_TYPE_PREF)) {
+ if (typeCollection != null && typeCollection.contains(Constants.PARAM_TYPE_PREF)) {
isPrimary = true;
} else {
isPrimary = false;
@@ -892,15 +891,15 @@ public class ContactStruct {
final int protocol = sImMap.get(propName);
boolean isPrimary = false;
int type = -1;
- final Collection<String> typeCollection = paramMap.get(Constants.ATTR_TYPE);
+ final Collection<String> typeCollection = paramMap.get(Constants.PARAM_TYPE);
if (typeCollection != null) {
for (String typeString : typeCollection) {
- if (typeString.equals(Constants.ATTR_TYPE_PREF)) {
+ if (typeString.equals(Constants.PARAM_TYPE_PREF)) {
isPrimary = true;
} else if (type < 0) {
- if (typeString.equalsIgnoreCase(Constants.ATTR_TYPE_HOME)) {
+ if (typeString.equalsIgnoreCase(Constants.PARAM_TYPE_HOME)) {
type = Im.TYPE_HOME;
- } else if (typeString.equalsIgnoreCase(Constants.ATTR_TYPE_WORK)) {
+ } else if (typeString.equalsIgnoreCase(Constants.PARAM_TYPE_WORK)) {
type = Im.TYPE_WORK;
}
}
diff --git a/core/java/android/pim/vcard/VCardComposer.java b/core/java/android/pim/vcard/VCardComposer.java
index 6476e40..aff3831 100644
--- a/core/java/android/pim/vcard/VCardComposer.java
+++ b/core/java/android/pim/vcard/VCardComposer.java
@@ -131,17 +131,17 @@ public class VCardComposer {
private static final String VCARD_DATA_VCARD = "VCARD";
private static final String VCARD_DATA_PUBLIC = "PUBLIC";
- private static final String VCARD_ATTR_SEPARATOR = ";";
- private static final String VCARD_COL_SEPARATOR = "\r\n";
+ private static final String VCARD_PARAM_SEPARATOR = ";";
+ private static final String VCARD_END_OF_LINE = "\r\n";
private static final String VCARD_DATA_SEPARATOR = ":";
private static final String VCARD_ITEM_SEPARATOR = ";";
private static final String VCARD_WS = " ";
- private static final String VCARD_ATTR_EQUAL = "=";
+ private static final String VCARD_PARAM_EQUAL = "=";
- private static final String VCARD_ATTR_ENCODING_QP = "ENCODING=QUOTED-PRINTABLE";
+ private static final String VCARD_PARAM_ENCODING_QP = "ENCODING=QUOTED-PRINTABLE";
- private static final String VCARD_ATTR_ENCODING_BASE64_V21 = "ENCODING=BASE64";
- private static final String VCARD_ATTR_ENCODING_BASE64_V30 = "ENCODING=b";
+ private static final String VCARD_PARAM_ENCODING_BASE64_V21 = "ENCODING=BASE64";
+ private static final String VCARD_PARAM_ENCODING_BASE64_V30 = "ENCODING=b";
private static final String SHIFT_JIS = "SHIFT_JIS";
@@ -309,7 +309,7 @@ public class VCardComposer {
private int mIdColumn;
private final String mCharsetString;
- private final String mVCardAttributeCharset;
+ private final String mVCardCharsetParameter;
private boolean mTerminateIsCalled;
final private List<OneEntryHandler> mHandlerList;
@@ -378,13 +378,13 @@ public class VCardComposer {
// Do not use mCharsetString bellow since it is different from "SHIFT_JIS" but
// may be "DOCOMO_SHIFT_JIS" or something like that (internal expression used in
// Android, not shown to the public).
- mVCardAttributeCharset = "CHARSET=" + SHIFT_JIS;
+ mVCardCharsetParameter = "CHARSET=" + SHIFT_JIS;
} else if (mUsesShiftJis) {
mCharsetString = CharsetUtils.charsetForVendor(SHIFT_JIS).name();
- mVCardAttributeCharset = "CHARSET=" + SHIFT_JIS;
+ mVCardCharsetParameter = "CHARSET=" + SHIFT_JIS;
} else {
mCharsetString = "UTF-8";
- mVCardAttributeCharset = "CHARSET=UTF-8";
+ mVCardCharsetParameter = "CHARSET=UTF-8";
}
}
@@ -743,14 +743,14 @@ public class VCardComposer {
}
builder.append(Constants.PROPERTY_N);
- if (shouldAppendCharsetAttribute(Arrays.asList(
+ if (shouldAppendCharsetParameters(Arrays.asList(
encodedFamily, encodedGiven, encodedMiddle, encodedPrefix, encodedSuffix))) {
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(mVCardAttributeCharset);
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(mVCardCharsetParameter);
}
if (reallyUseQuotedPrintableToName) {
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(VCARD_ATTR_ENCODING_QP);
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(VCARD_PARAM_ENCODING_QP);
}
builder.append(VCARD_DATA_SEPARATOR);
@@ -763,7 +763,7 @@ public class VCardComposer {
builder.append(encodedPrefix);
builder.append(VCARD_ITEM_SEPARATOR);
builder.append(encodedSuffix);
- builder.append(VCARD_COL_SEPARATOR);
+ builder.append(VCARD_END_OF_LINE);
final String formattedName;
if (!TextUtils.isEmpty(displayName)) {
@@ -785,17 +785,17 @@ public class VCardComposer {
// FN property
builder.append(Constants.PROPERTY_FN);
- if (shouldAppendCharsetAttribute(encodedFullname)) {
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(mVCardAttributeCharset);
+ if (shouldAppendCharsetParameter(encodedFullname)) {
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(mVCardCharsetParameter);
}
if (reallyUseQuotedPrintableToFullname) {
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(VCARD_ATTR_ENCODING_QP);
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(VCARD_PARAM_ENCODING_QP);
}
builder.append(VCARD_DATA_SEPARATOR);
builder.append(encodedFullname);
- builder.append(VCARD_COL_SEPARATOR);
+ builder.append(VCARD_END_OF_LINE);
} else if (!TextUtils.isEmpty(displayName)) {
final boolean reallyUseQuotedPrintableToDisplayName =
(!mRefrainsQPToPrimaryProperties &&
@@ -806,13 +806,13 @@ public class VCardComposer {
escapeCharacters(displayName);
builder.append(Constants.PROPERTY_N);
- if (shouldAppendCharsetAttribute(encodedDisplayName)) {
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(mVCardAttributeCharset);
+ if (shouldAppendCharsetParameter(encodedDisplayName)) {
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(mVCardCharsetParameter);
}
if (reallyUseQuotedPrintableToDisplayName) {
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(VCARD_ATTR_ENCODING_QP);
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(VCARD_PARAM_ENCODING_QP);
}
builder.append(VCARD_DATA_SEPARATOR);
builder.append(encodedDisplayName);
@@ -820,17 +820,17 @@ public class VCardComposer {
builder.append(VCARD_ITEM_SEPARATOR);
builder.append(VCARD_ITEM_SEPARATOR);
builder.append(VCARD_ITEM_SEPARATOR);
- builder.append(VCARD_COL_SEPARATOR);
+ builder.append(VCARD_END_OF_LINE);
if (mIsV30) {
builder.append(Constants.PROPERTY_FN);
// TODO: Not allowed formally...
- if (shouldAppendCharsetAttribute(encodedDisplayName)) {
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(mVCardAttributeCharset);
+ if (shouldAppendCharsetParameter(encodedDisplayName)) {
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(mVCardCharsetParameter);
}
builder.append(VCARD_DATA_SEPARATOR);
builder.append(encodedDisplayName);
- builder.append(VCARD_COL_SEPARATOR);
+ builder.append(VCARD_END_OF_LINE);
}
} else if (mIsV30) {
// vCard 3.0 specification requires these fields.
@@ -872,13 +872,13 @@ public class VCardComposer {
// Do not need to care about QP, since vCard 3.0 does not allow it.
final String encodedSortString = escapeCharacters(sortString);
- if (shouldAppendCharsetAttribute(encodedSortString)) {
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(mVCardAttributeCharset);
+ if (shouldAppendCharsetParameter(encodedSortString)) {
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(mVCardCharsetParameter);
}
builder.append(VCARD_DATA_SEPARATOR);
builder.append(encodedSortString);
- builder.append(VCARD_COL_SEPARATOR);
+ builder.append(VCARD_END_OF_LINE);
} else if (mIsJapaneseMobilePhone) {
// Note: There is no appropriate property for expressing
// phonetic name in vCard 2.1, while there is in
@@ -888,8 +888,8 @@ public class VCardComposer {
// a lot of Japanese mobile phones. This is "X-" property, so
// any parser hopefully would not get confused with this.
builder.append(Constants.PROPERTY_SOUND);
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(Constants.ATTR_TYPE_X_IRMC_N);
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(Constants.PARAM_TYPE_X_IRMC_N);
boolean reallyUseQuotedPrintable =
(!mRefrainsQPToPrimaryProperties
@@ -913,11 +913,11 @@ public class VCardComposer {
encodedPhoneticGivenName = escapeCharacters(phoneticGivenName);
}
- if (shouldAppendCharsetAttribute(Arrays.asList(
+ if (shouldAppendCharsetParameters(Arrays.asList(
encodedPhoneticFamilyName, encodedPhoneticMiddleName,
encodedPhoneticGivenName))) {
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(mVCardAttributeCharset);
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(mVCardCharsetParameter);
}
builder.append(VCARD_DATA_SEPARATOR);
builder.append(encodedPhoneticFamilyName);
@@ -927,18 +927,18 @@ public class VCardComposer {
builder.append(encodedPhoneticMiddleName);
builder.append(VCARD_ITEM_SEPARATOR);
builder.append(VCARD_ITEM_SEPARATOR);
- builder.append(VCARD_COL_SEPARATOR);
+ builder.append(VCARD_END_OF_LINE);
}
} else if (mIsDoCoMo) {
builder.append(Constants.PROPERTY_SOUND);
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(Constants.ATTR_TYPE_X_IRMC_N);
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(Constants.PARAM_TYPE_X_IRMC_N);
builder.append(VCARD_DATA_SEPARATOR);
builder.append(VCARD_ITEM_SEPARATOR);
builder.append(VCARD_ITEM_SEPARATOR);
builder.append(VCARD_ITEM_SEPARATOR);
builder.append(VCARD_ITEM_SEPARATOR);
- builder.append(VCARD_COL_SEPARATOR);
+ builder.append(VCARD_END_OF_LINE);
}
if (mUsesDefactProperty) {
@@ -952,17 +952,17 @@ public class VCardComposer {
encodedPhoneticGivenName = escapeCharacters(phoneticGivenName);
}
builder.append(Constants.PROPERTY_X_PHONETIC_FIRST_NAME);
- if (shouldAppendCharsetAttribute(encodedPhoneticGivenName)) {
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(mVCardAttributeCharset);
+ if (shouldAppendCharsetParameter(encodedPhoneticGivenName)) {
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(mVCardCharsetParameter);
}
if (reallyUseQuotedPrintable) {
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(VCARD_ATTR_ENCODING_QP);
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(VCARD_PARAM_ENCODING_QP);
}
builder.append(VCARD_DATA_SEPARATOR);
builder.append(encodedPhoneticGivenName);
- builder.append(VCARD_COL_SEPARATOR);
+ builder.append(VCARD_END_OF_LINE);
}
if (!TextUtils.isEmpty(phoneticMiddleName)) {
final boolean reallyUseQuotedPrintable =
@@ -974,17 +974,17 @@ public class VCardComposer {
encodedPhoneticMiddleName = escapeCharacters(phoneticMiddleName);
}
builder.append(Constants.PROPERTY_X_PHONETIC_MIDDLE_NAME);
- if (shouldAppendCharsetAttribute(encodedPhoneticMiddleName)) {
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(mVCardAttributeCharset);
+ if (shouldAppendCharsetParameter(encodedPhoneticMiddleName)) {
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(mVCardCharsetParameter);
}
if (reallyUseQuotedPrintable) {
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(VCARD_ATTR_ENCODING_QP);
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(VCARD_PARAM_ENCODING_QP);
}
builder.append(VCARD_DATA_SEPARATOR);
builder.append(encodedPhoneticMiddleName);
- builder.append(VCARD_COL_SEPARATOR);
+ builder.append(VCARD_END_OF_LINE);
}
if (!TextUtils.isEmpty(phoneticFamilyName)) {
final boolean reallyUseQuotedPrintable =
@@ -996,17 +996,17 @@ public class VCardComposer {
encodedPhoneticFamilyName = escapeCharacters(phoneticFamilyName);
}
builder.append(Constants.PROPERTY_X_PHONETIC_LAST_NAME);
- if (shouldAppendCharsetAttribute(encodedPhoneticFamilyName)) {
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(mVCardAttributeCharset);
+ if (shouldAppendCharsetParameter(encodedPhoneticFamilyName)) {
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(mVCardCharsetParameter);
}
if (reallyUseQuotedPrintable) {
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(VCARD_ATTR_ENCODING_QP);
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(VCARD_PARAM_ENCODING_QP);
}
builder.append(VCARD_DATA_SEPARATOR);
builder.append(encodedPhoneticFamilyName);
- builder.append(VCARD_COL_SEPARATOR);
+ builder.append(VCARD_END_OF_LINE);
}
}
}
@@ -1128,10 +1128,10 @@ public class VCardComposer {
}
} else if (mIsDoCoMo) {
builder.append(Constants.PROPERTY_ADR);
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(Constants.ATTR_TYPE_HOME);
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(Constants.PARAM_TYPE_HOME);
builder.append(VCARD_DATA_SEPARATOR);
- builder.append(VCARD_COL_SEPARATOR);
+ builder.append(VCARD_END_OF_LINE);
}
}
@@ -1225,11 +1225,11 @@ public class VCardComposer {
final Integer typeAsInteger = contentValues.getAsInteger(Im.TYPE);
switch (typeAsInteger != null ? typeAsInteger : Im.TYPE_OTHER) {
case Im.TYPE_HOME: {
- typeAsString = Constants.ATTR_TYPE_HOME;
+ typeAsString = Constants.PARAM_TYPE_HOME;
break;
}
case Im.TYPE_WORK: {
- typeAsString = Constants.ATTR_TYPE_WORK;
+ typeAsString = Constants.PARAM_TYPE_WORK;
break;
}
case Im.TYPE_CUSTOM: {
@@ -1245,19 +1245,19 @@ public class VCardComposer {
}
}
- List<String> attributeList = new ArrayList<String>();
+ List<String> parameterList = new ArrayList<String>();
if (!TextUtils.isEmpty(typeAsString)) {
- attributeList.add(typeAsString);
+ parameterList.add(typeAsString);
}
final Integer isPrimaryAsInteger = contentValues.getAsInteger(Im.IS_PRIMARY);
final boolean isPrimary = (isPrimaryAsInteger != null ?
(isPrimaryAsInteger > 0) : false);
if (isPrimary) {
- attributeList.add(Constants.ATTR_TYPE_PREF);
+ parameterList.add(Constants.PARAM_TYPE_PREF);
}
appendVCardLineWithCharsetAndQPDetection(
- builder, propertyName, attributeList, data);
+ builder, propertyName, parameterList, data);
}
}
@@ -1273,7 +1273,8 @@ public class VCardComposer {
if (website != null) {
website = website.trim();
}
- // Note: vCard 3.0 does not allow any attribute addition toward "URL"
+
+ // Note: vCard 3.0 does not allow any parameter addition toward "URL"
// property, while there's no document in vCard 2.1.
//
// TODO: Should we allow adding it when appropriate?
@@ -1581,14 +1582,14 @@ public class VCardComposer {
final String encodedData, final String photoType) {
StringBuilder tmpBuilder = new StringBuilder();
tmpBuilder.append(Constants.PROPERTY_PHOTO);
- tmpBuilder.append(VCARD_ATTR_SEPARATOR);
+ tmpBuilder.append(VCARD_PARAM_SEPARATOR);
if (mIsV30) {
- tmpBuilder.append(VCARD_ATTR_ENCODING_BASE64_V30);
+ tmpBuilder.append(VCARD_PARAM_ENCODING_BASE64_V30);
} else {
- tmpBuilder.append(VCARD_ATTR_ENCODING_BASE64_V21);
+ tmpBuilder.append(VCARD_PARAM_ENCODING_BASE64_V21);
}
- tmpBuilder.append(VCARD_ATTR_SEPARATOR);
- appendTypeAttribute(tmpBuilder, photoType);
+ tmpBuilder.append(VCARD_PARAM_SEPARATOR);
+ appendTypeParameter(tmpBuilder, photoType);
tmpBuilder.append(VCARD_DATA_SEPARATOR);
tmpBuilder.append(encodedData);
@@ -1600,14 +1601,14 @@ public class VCardComposer {
tmpBuilder.append(tmpStr.charAt(i));
lineCount++;
if (lineCount > 72) {
- tmpBuilder.append(VCARD_COL_SEPARATOR);
+ tmpBuilder.append(VCARD_END_OF_LINE);
tmpBuilder.append(VCARD_WS);
lineCount = 0;
}
}
builder.append(tmpBuilder.toString());
- builder.append(VCARD_COL_SEPARATOR);
- builder.append(VCARD_COL_SEPARATOR);
+ builder.append(VCARD_END_OF_LINE);
+ builder.append(VCARD_END_OF_LINE);
}
private class PostalStruct {
@@ -1719,17 +1720,17 @@ public class VCardComposer {
}
}
- List<String> attributeList = new ArrayList<String>();
+ List<String> parameterList = new ArrayList<String>();
if (isPrimary) {
- attributeList.add(Constants.ATTR_TYPE_PREF);
+ parameterList.add(Constants.PARAM_TYPE_PREF);
}
switch (type) {
case StructuredPostal.TYPE_HOME: {
- attributeList.add(Constants.ATTR_TYPE_HOME);
+ parameterList.add(Constants.PARAM_TYPE_HOME);
break;
}
case StructuredPostal.TYPE_WORK: {
- attributeList.add(Constants.ATTR_TYPE_WORK);
+ parameterList.add(Constants.PARAM_TYPE_WORK);
break;
}
case StructuredPostal.TYPE_CUSTOM: {
@@ -1739,7 +1740,7 @@ public class VCardComposer {
// ("IANA-token" in the vCard 3.0 is unclear...)
// Just for safety, we add "X-" at the beggining of each label.
// Also checks the label obeys with vCard 3.0 spec.
- attributeList.add("X-" + label);
+ parameterList.add("X-" + label);
}
break;
}
@@ -1754,42 +1755,42 @@ public class VCardComposer {
// Actual data construction starts from here.
// TODO: add a new version of appendVCardLine() for this purpose.
-
+
builder.append(Constants.PROPERTY_ADR);
- builder.append(VCARD_ATTR_SEPARATOR);
+ builder.append(VCARD_PARAM_SEPARATOR);
- // Attributes
+ // Parameters
{
- boolean shouldAppendAttrSeparator = false;
- if (!attributeList.isEmpty()) {
- appendTypeAttributes(builder, attributeList);
- shouldAppendAttrSeparator = true;
+ boolean shouldAppendParamSeparator = false;
+ if (!parameterList.isEmpty()) {
+ appendTypeParameters(builder, parameterList);
+ shouldAppendParamSeparator = true;
}
if (appendCharset) {
// Strictly, vCard 3.0 does not allow exporters to emit charset information,
// but we will add it since the information should be useful for importers,
//
- // Assume no parser does not emit error with this attribute in vCard 3.0.
- if (shouldAppendAttrSeparator) {
- builder.append(VCARD_ATTR_SEPARATOR);
+ // Assume no parser does not emit error with this parameter in vCard 3.0.
+ if (shouldAppendParamSeparator) {
+ builder.append(VCARD_PARAM_SEPARATOR);
}
- builder.append(mVCardAttributeCharset);
- shouldAppendAttrSeparator = true;
+ builder.append(mVCardCharsetParameter);
+ shouldAppendParamSeparator = true;
}
if (reallyUseQuotedPrintable) {
- if (shouldAppendAttrSeparator) {
- builder.append(VCARD_ATTR_SEPARATOR);
+ if (shouldAppendParamSeparator) {
+ builder.append(VCARD_PARAM_SEPARATOR);
}
- builder.append(VCARD_ATTR_ENCODING_QP);
- shouldAppendAttrSeparator = true;
+ builder.append(VCARD_PARAM_ENCODING_QP);
+ shouldAppendParamSeparator = true;
}
}
builder.append(VCARD_DATA_SEPARATOR);
builder.append(addressData);
- builder.append(VCARD_COL_SEPARATOR);
+ builder.append(VCARD_END_OF_LINE);
}
private void appendVCardEmailLine(final StringBuilder builder,
@@ -1803,7 +1804,7 @@ public class VCardComposer {
// To support mobile type at that time, this custom label had been used.
if (android.provider.Contacts.ContactMethodsColumns.MOBILE_EMAIL_TYPE_NAME
.equals(label)) {
- typeAsString = Constants.ATTR_TYPE_CELL;
+ typeAsString = Constants.PARAM_TYPE_CELL;
} else if (mUsesAndroidProperty && !TextUtils.isEmpty(label)
&& VCardUtils.containsOnlyAlphaDigitHyphen(label)) {
typeAsString = "X-" + label;
@@ -1813,11 +1814,11 @@ public class VCardComposer {
break;
}
case Email.TYPE_HOME: {
- typeAsString = Constants.ATTR_TYPE_HOME;
+ typeAsString = Constants.PARAM_TYPE_HOME;
break;
}
case Email.TYPE_WORK: {
- typeAsString = Constants.ATTR_TYPE_WORK;
+ typeAsString = Constants.PARAM_TYPE_WORK;
break;
}
case Email.TYPE_OTHER: {
@@ -1825,7 +1826,7 @@ public class VCardComposer {
break;
}
case Email.TYPE_MOBILE: {
- typeAsString = Constants.ATTR_TYPE_CELL;
+ typeAsString = Constants.PARAM_TYPE_CELL;
break;
}
default: {
@@ -1835,23 +1836,23 @@ public class VCardComposer {
}
}
- final List<String> attributeList = new ArrayList<String>();
+ final List<String> parameterList = new ArrayList<String>();
if (isPrimary) {
- attributeList.add(Constants.ATTR_TYPE_PREF);
+ parameterList.add(Constants.PARAM_TYPE_PREF);
}
if (!TextUtils.isEmpty(typeAsString)) {
- attributeList.add(typeAsString);
+ parameterList.add(typeAsString);
}
appendVCardLineWithCharsetAndQPDetection(builder, Constants.PROPERTY_EMAIL,
- attributeList, rawData);
+ parameterList, rawData);
}
private void appendVCardTelephoneLine(final StringBuilder builder,
final Integer typeAsObject, final String label,
final String encodedData, boolean isPrimary) {
builder.append(Constants.PROPERTY_TEL);
- builder.append(VCARD_ATTR_SEPARATOR);
+ builder.append(VCARD_PARAM_SEPARATOR);
final int typeAsPrimitive;
if (typeAsObject == null) {
@@ -1860,84 +1861,84 @@ public class VCardComposer {
typeAsPrimitive = typeAsObject;
}
- ArrayList<String> attributeList = new ArrayList<String>();
+ ArrayList<String> parameterList = new ArrayList<String>();
switch (typeAsPrimitive) {
case Phone.TYPE_HOME:
- attributeList.addAll(
- Arrays.asList(Constants.ATTR_TYPE_HOME, Constants.ATTR_TYPE_VOICE));
+ parameterList.addAll(
+ Arrays.asList(Constants.PARAM_TYPE_HOME, Constants.PARAM_TYPE_VOICE));
break;
case Phone.TYPE_WORK:
- attributeList.addAll(
- Arrays.asList(Constants.ATTR_TYPE_WORK, Constants.ATTR_TYPE_VOICE));
+ parameterList.addAll(
+ Arrays.asList(Constants.PARAM_TYPE_WORK, Constants.PARAM_TYPE_VOICE));
break;
case Phone.TYPE_FAX_HOME:
- attributeList.addAll(
- Arrays.asList(Constants.ATTR_TYPE_HOME, Constants.ATTR_TYPE_FAX));
+ parameterList.addAll(
+ Arrays.asList(Constants.PARAM_TYPE_HOME, Constants.PARAM_TYPE_FAX));
break;
case Phone.TYPE_FAX_WORK:
- attributeList.addAll(
- Arrays.asList(Constants.ATTR_TYPE_WORK, Constants.ATTR_TYPE_FAX));
+ parameterList.addAll(
+ Arrays.asList(Constants.PARAM_TYPE_WORK, Constants.PARAM_TYPE_FAX));
break;
case Phone.TYPE_MOBILE:
- attributeList.add(Constants.ATTR_TYPE_CELL);
+ parameterList.add(Constants.PARAM_TYPE_CELL);
break;
case Phone.TYPE_PAGER:
if (mIsDoCoMo) {
// Not sure about the reason, but previous implementation had
// used "VOICE" instead of "PAGER"
- attributeList.add(Constants.ATTR_TYPE_VOICE);
+ parameterList.add(Constants.PARAM_TYPE_VOICE);
} else {
- attributeList.add(Constants.ATTR_TYPE_PAGER);
+ parameterList.add(Constants.PARAM_TYPE_PAGER);
}
break;
case Phone.TYPE_OTHER:
- attributeList.add(Constants.ATTR_TYPE_VOICE);
+ parameterList.add(Constants.PARAM_TYPE_VOICE);
break;
case Phone.TYPE_CAR:
- attributeList.add(Constants.ATTR_TYPE_CAR);
+ parameterList.add(Constants.PARAM_TYPE_CAR);
break;
case Phone.TYPE_COMPANY_MAIN:
// There's no relevant field in vCard (at least 2.1).
- attributeList.add(Constants.ATTR_TYPE_WORK);
+ parameterList.add(Constants.PARAM_TYPE_WORK);
isPrimary = true;
break;
case Phone.TYPE_ISDN:
- attributeList.add(Constants.ATTR_TYPE_ISDN);
+ parameterList.add(Constants.PARAM_TYPE_ISDN);
break;
case Phone.TYPE_MAIN:
isPrimary = true;
break;
case Phone.TYPE_OTHER_FAX:
- attributeList.add(Constants.ATTR_TYPE_FAX);
+ parameterList.add(Constants.PARAM_TYPE_FAX);
break;
case Phone.TYPE_TELEX:
- attributeList.add(Constants.ATTR_TYPE_TLX);
+ parameterList.add(Constants.PARAM_TYPE_TLX);
break;
case Phone.TYPE_WORK_MOBILE:
- attributeList.addAll(
- Arrays.asList(Constants.ATTR_TYPE_WORK, Constants.ATTR_TYPE_CELL));
+ parameterList.addAll(
+ Arrays.asList(Constants.PARAM_TYPE_WORK, Constants.PARAM_TYPE_CELL));
break;
case Phone.TYPE_WORK_PAGER:
- attributeList.add(Constants.ATTR_TYPE_WORK);
+ parameterList.add(Constants.PARAM_TYPE_WORK);
// See above.
if (mIsDoCoMo) {
- attributeList.add(Constants.ATTR_TYPE_VOICE);
+ parameterList.add(Constants.PARAM_TYPE_VOICE);
} else {
- attributeList.add(Constants.ATTR_TYPE_PAGER);
+ parameterList.add(Constants.PARAM_TYPE_PAGER);
}
break;
case Phone.TYPE_MMS:
- attributeList.add(Constants.ATTR_TYPE_MSG);
+ parameterList.add(Constants.PARAM_TYPE_MSG);
break;
case Phone.TYPE_CUSTOM:
if (mUsesAndroidProperty && !TextUtils.isEmpty(label)
&& VCardUtils.containsOnlyAlphaDigitHyphen(label)) {
- // Note: Strictly, vCard 2.1 does not allow "X-" attribute without
+ // Note: Strictly, vCard 2.1 does not allow "X-" parameter without
// "TYPE=" string.
- attributeList.add("X-" + label);
+ parameterList.add("X-" + label);
} else {
// Just ignore the custom type.
- attributeList.add(Constants.ATTR_TYPE_VOICE);
+ parameterList.add(Constants.PARAM_TYPE_VOICE);
}
break;
case Phone.TYPE_RADIO:
@@ -1947,18 +1948,18 @@ public class VCardComposer {
}
if (isPrimary) {
- attributeList.add(Constants.ATTR_TYPE_PREF);
+ parameterList.add(Constants.PARAM_TYPE_PREF);
}
- if (attributeList.isEmpty()) {
+ if (parameterList.isEmpty()) {
appendUncommonPhoneType(builder, typeAsPrimitive);
} else {
- appendTypeAttributes(builder, attributeList);
+ appendTypeParameters(builder, parameterList);
}
builder.append(VCARD_DATA_SEPARATOR);
builder.append(encodedData);
- builder.append(VCARD_COL_SEPARATOR);
+ builder.append(VCARD_END_OF_LINE);
}
/**
@@ -1968,11 +1969,11 @@ public class VCardComposer {
if (mIsDoCoMo) {
// The previous implementation for DoCoMo had been conservative
// about miscellaneous types.
- builder.append(Constants.ATTR_TYPE_VOICE);
+ builder.append(Constants.PARAM_TYPE_VOICE);
} else {
- String phoneAttribute = VCardUtils.getPhoneAttributeString(type);
- if (phoneAttribute != null) {
- appendTypeAttribute(builder, phoneAttribute);
+ String phoneType = VCardUtils.getPhoneTypeString(type);
+ if (phoneType != null) {
+ appendTypeParameter(builder, phoneType);
} else {
Log.e(LOG_TAG, "Unknown or unsupported (by vCard) Phone type: " + type);
}
@@ -1988,12 +1989,12 @@ public class VCardComposer {
private void appendVCardLineWithCharsetAndQPDetection(final StringBuilder builder,
final String propertyName,
- final List<String> attributeList, final String rawData) {
+ final List<String> parameterList, final String rawData) {
final boolean needCharset =
(mUsesQuotedPrintable && !VCardUtils.containsOnlyPrintableAscii(rawData));
final boolean reallyUseQuotedPrintable =
!VCardUtils.containsOnlyNonCrLfPrintableAscii(rawData);
- appendVCardLine(builder, propertyName, attributeList,
+ appendVCardLine(builder, propertyName, parameterList,
rawData, needCharset, reallyUseQuotedPrintable);
}
@@ -2010,23 +2011,23 @@ public class VCardComposer {
private void appendVCardLine(final StringBuilder builder,
final String propertyName,
- final List<String> attributeList,
+ final List<String> parameterList,
final String rawData, final boolean needCharset,
boolean needQuotedPrintable) {
builder.append(propertyName);
- if (attributeList != null && attributeList.size() > 0) {
- builder.append(VCARD_ATTR_SEPARATOR);
- appendTypeAttributes(builder, attributeList);
+ if (parameterList != null && parameterList.size() > 0) {
+ builder.append(VCARD_PARAM_SEPARATOR);
+ appendTypeParameters(builder, parameterList);
}
if (needCharset) {
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(mVCardAttributeCharset);
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(mVCardCharsetParameter);
}
final String encodedData;
if (needQuotedPrintable) {
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(VCARD_ATTR_ENCODING_QP);
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(VCARD_PARAM_ENCODING_QP);
encodedData = encodeQuotedPrintable(rawData);
} else {
// TODO: one line may be too huge, which may be invalid in vCard spec, though
@@ -2036,7 +2037,7 @@ public class VCardComposer {
builder.append(VCARD_DATA_SEPARATOR);
builder.append(encodedData);
- builder.append(VCARD_COL_SEPARATOR);
+ builder.append(VCARD_END_OF_LINE);
}
// appendVCardLine() variants accepting List<String>.
@@ -2048,7 +2049,7 @@ public class VCardComposer {
private void appendVCardLineWithCharsetAndQPDetection(final StringBuilder builder,
final String propertyName,
- final List<String> attributeList, final List<String> rawDataList) {
+ final List<String> parameterList, final List<String> rawDataList) {
boolean needCharset = false;
boolean reallyUseQuotedPrintable = false;
for (String rawData : rawDataList) {
@@ -2065,7 +2066,7 @@ public class VCardComposer {
}
}
- appendVCardLine(builder, propertyName, attributeList,
+ appendVCardLine(builder, propertyName, parameterList,
rawDataList, needCharset, reallyUseQuotedPrintable);
}
@@ -2083,17 +2084,17 @@ public class VCardComposer {
private void appendVCardLine(final StringBuilder builder,
final String propertyName,
- final List<String> attributeList,
+ final List<String> parameterList,
final List<String> rawDataList, final boolean needCharset,
boolean needQuotedPrintable) {
builder.append(propertyName);
- if (attributeList != null && attributeList.size() > 0) {
- builder.append(VCARD_ATTR_SEPARATOR);
- appendTypeAttributes(builder, attributeList);
+ if (parameterList != null && parameterList.size() > 0) {
+ builder.append(VCARD_PARAM_SEPARATOR);
+ appendTypeParameters(builder, parameterList);
}
if (needCharset) {
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(mVCardAttributeCharset);
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(mVCardCharsetParameter);
}
builder.append(VCARD_DATA_SEPARATOR);
@@ -2101,8 +2102,8 @@ public class VCardComposer {
for (String rawData : rawDataList) {
final String encodedData;
if (needQuotedPrintable) {
- builder.append(VCARD_ATTR_SEPARATOR);
- builder.append(VCARD_ATTR_ENCODING_QP);
+ builder.append(VCARD_PARAM_SEPARATOR);
+ builder.append(VCARD_PARAM_ENCODING_QP);
encodedData = encodeQuotedPrintable(rawData);
} else {
// TODO: one line may be too huge, which may be invalid in vCard spec, though
@@ -2117,13 +2118,13 @@ public class VCardComposer {
}
builder.append(encodedData);
}
- builder.append(VCARD_COL_SEPARATOR);
+ builder.append(VCARD_END_OF_LINE);
}
/**
- * VCARD_ATTR_SEPARATOR must be appended before this method being called.
+ * VCARD_PARAM_SEPARATOR must be appended before this method being called.
*/
- private void appendTypeAttributes(final StringBuilder builder,
+ private void appendTypeParameters(final StringBuilder builder,
final List<String> types) {
// We may have to make this comma separated form like "TYPE=DOM,WORK" in the future,
// which would be recommended way in vcard 3.0 though not valid in vCard 2.1.
@@ -2132,53 +2133,54 @@ public class VCardComposer {
if (first) {
first = false;
} else {
- builder.append(VCARD_ATTR_SEPARATOR);
+ builder.append(VCARD_PARAM_SEPARATOR);
}
- appendTypeAttribute(builder, type);
+ appendTypeParameter(builder, type);
}
}
/**
- * VCARD_ATTR_SEPARATOR must be appended before this method being called.
+ * VCARD_PARAM_SEPARATOR must be appended before this method being called.
*/
- private void appendTypeAttribute(final StringBuilder builder, final String type) {
+ private void appendTypeParameter(final StringBuilder builder, final String type) {
// Refrain from using appendType() so that "TYPE=" is not be appended when the
// device is DoCoMo's (just for safety).
//
// Note: In vCard 3.0, Type strings also can be like this: "TYPE=HOME,PREF"
if ((mIsV30 || mAppendTypeParamName) && !mIsDoCoMo) {
- builder.append(Constants.ATTR_TYPE).append(VCARD_ATTR_EQUAL);
+ builder.append(Constants.PARAM_TYPE).append(VCARD_PARAM_EQUAL);
}
builder.append(type);
}
/**
- * Returns true when the property line should contain charset attribute
+ * Returns true when the property line should contain charset parameter
* information. This method may return true even when vCard version is 3.0.
*
* Strictly, adding charset information is invalid in VCard 3.0.
- * However we'll add the info only when used charset is not UTF-8
+ * However we'll add the info only when charset we use is not UTF-8
* in vCard 3.0 format, since parser side may be able to use the charset
- * via this field, though we may encounter another problem by adding it...
+ * via this field, though we may encounter another problem by adding it.
*
* e.g. Japanese mobile phones use Shift_Jis while RFC 2426
* recommends UTF-8. By adding this field, parsers may be able
* to know this text is NOT UTF-8 but Shift_Jis.
*/
- private boolean shouldAppendCharsetAttribute(final String propertyValue) {
+ private boolean shouldAppendCharsetParameter(final String propertyValue) {
return (!VCardUtils.containsOnlyPrintableAscii(propertyValue) &&
(!mIsV30 || !mUsesUtf8));
}
- private boolean shouldAppendCharsetAttribute(final List<String> propertyValueList) {
- boolean shouldAppendBasically = false;
+ private boolean shouldAppendCharsetParameters(final List<String> propertyValueList) {
+ if (mIsV30 && mUsesUtf8) {
+ return false;
+ }
for (String propertyValue : propertyValueList) {
if (!VCardUtils.containsOnlyPrintableAscii(propertyValue)) {
- shouldAppendBasically = true;
- break;
+ return true;
}
}
- return shouldAppendBasically && (!mIsV30 || !mUsesUtf8);
+ return false;
}
private String encodeQuotedPrintable(String str) {
@@ -2315,11 +2317,11 @@ public class VCardComposer {
final long dateAsLong = mCursor.getLong(DATE_COLUMN_INDEX);
builder.append(VCARD_PROPERTY_X_TIMESTAMP);
- builder.append(VCARD_ATTR_SEPARATOR);
- appendTypeAttribute(builder, callLogTypeStr);
+ builder.append(VCARD_PARAM_SEPARATOR);
+ appendTypeParameter(builder, callLogTypeStr);
builder.append(VCARD_DATA_SEPARATOR);
builder.append(toRfc2455Format(dateAsLong));
- builder.append(VCARD_COL_SEPARATOR);
+ builder.append(VCARD_END_OF_LINE);
}
private String createOneCallLogEntryInternal() {
diff --git a/core/java/android/pim/vcard/VCardConfig.java b/core/java/android/pim/vcard/VCardConfig.java
index 9581c74..545c09b 100644
--- a/core/java/android/pim/vcard/VCardConfig.java
+++ b/core/java/android/pim/vcard/VCardConfig.java
@@ -163,7 +163,7 @@ public class VCardConfig {
* is also valid. In vCrad 3.0, this flag is unnecessary, since "TYPE=" is MUST in
* vCard 3.0 specification.
*
- * If you are targeting to some importer which cannot accept type attributes (params)
+ * If you are targeting to some importer which cannot accept type parameters
* without "TYPE=" string (which should be rare though), please use this flag.
*
* XXX: Really rare?
diff --git a/core/java/android/pim/vcard/VCardParser.java b/core/java/android/pim/vcard/VCardParser.java
index b5e5049..0ffdb6c 100644
--- a/core/java/android/pim/vcard/VCardParser.java
+++ b/core/java/android/pim/vcard/VCardParser.java
@@ -35,7 +35,7 @@ public abstract class VCardParser {
*
* In order to avoid "misunderstanding" charset as much as possible, this method
* use "ISO-8859-1" for reading the stream. When charset is specified in some property
- * (with "CHARSET=..." attribute), the string is decoded to raw bytes and encoded to
+ * (with "CHARSET=..." parameter), the string is decoded to raw bytes and encoded to
* the charset. This method assumes that "ISO-8859-1" has 1 to 1 mapping in all 8bit
* characters, which is not completely sure. In some cases, this "decoding-encoding"
* scheme may fail. To avoid the case,
diff --git a/core/java/android/pim/vcard/VCardUtils.java b/core/java/android/pim/vcard/VCardUtils.java
index 376327c..c59e258 100644
--- a/core/java/android/pim/vcard/VCardUtils.java
+++ b/core/java/android/pim/vcard/VCardUtils.java
@@ -40,7 +40,7 @@ public class VCardUtils {
*/
// Note that not all types are included in this map/set, since, for example, TYPE_HOME_FAX is
- // converted to two attribute Strings. These only contain some minor fields valid in both
+ // converted to two parameter Strings. These only contain some minor fields valid in both
// vCard and current (as of 2009-08-07) Contacts structure.
private static final Map<Integer, String> sKnownPhoneTypesMap_ItoS;
private static final Set<String> sPhoneTypesSetUnknownToContacts;
@@ -53,30 +53,30 @@ public class VCardUtils {
sKnownPhoneTypesMap_ItoS = new HashMap<Integer, String>();
sKnownPhoneTypeMap_StoI = new HashMap<String, Integer>();
- sKnownPhoneTypesMap_ItoS.put(Phone.TYPE_CAR, Constants.ATTR_TYPE_CAR);
- sKnownPhoneTypeMap_StoI.put(Constants.ATTR_TYPE_CAR, Phone.TYPE_CAR);
- sKnownPhoneTypesMap_ItoS.put(Phone.TYPE_PAGER, Constants.ATTR_TYPE_PAGER);
- sKnownPhoneTypeMap_StoI.put(Constants.ATTR_TYPE_PAGER, Phone.TYPE_PAGER);
- sKnownPhoneTypesMap_ItoS.put(Phone.TYPE_ISDN, Constants.ATTR_TYPE_ISDN);
- sKnownPhoneTypeMap_StoI.put(Constants.ATTR_TYPE_ISDN, Phone.TYPE_ISDN);
+ sKnownPhoneTypesMap_ItoS.put(Phone.TYPE_CAR, Constants.PARAM_TYPE_CAR);
+ sKnownPhoneTypeMap_StoI.put(Constants.PARAM_TYPE_CAR, Phone.TYPE_CAR);
+ sKnownPhoneTypesMap_ItoS.put(Phone.TYPE_PAGER, Constants.PARAM_TYPE_PAGER);
+ sKnownPhoneTypeMap_StoI.put(Constants.PARAM_TYPE_PAGER, Phone.TYPE_PAGER);
+ sKnownPhoneTypesMap_ItoS.put(Phone.TYPE_ISDN, Constants.PARAM_TYPE_ISDN);
+ sKnownPhoneTypeMap_StoI.put(Constants.PARAM_TYPE_ISDN, Phone.TYPE_ISDN);
- sKnownPhoneTypeMap_StoI.put(Constants.ATTR_TYPE_HOME, Phone.TYPE_HOME);
- sKnownPhoneTypeMap_StoI.put(Constants.ATTR_TYPE_WORK, Phone.TYPE_WORK);
- sKnownPhoneTypeMap_StoI.put(Constants.ATTR_TYPE_CELL, Phone.TYPE_MOBILE);
+ sKnownPhoneTypeMap_StoI.put(Constants.PARAM_TYPE_HOME, Phone.TYPE_HOME);
+ sKnownPhoneTypeMap_StoI.put(Constants.PARAM_TYPE_WORK, Phone.TYPE_WORK);
+ sKnownPhoneTypeMap_StoI.put(Constants.PARAM_TYPE_CELL, Phone.TYPE_MOBILE);
- sKnownPhoneTypeMap_StoI.put(Constants.ATTR_PHONE_EXTRA_TYPE_OTHER, Phone.TYPE_OTHER);
- sKnownPhoneTypeMap_StoI.put(Constants.ATTR_PHONE_EXTRA_TYPE_CALLBACK, Phone.TYPE_CALLBACK);
+ sKnownPhoneTypeMap_StoI.put(Constants.PARAM_PHONE_EXTRA_TYPE_OTHER, Phone.TYPE_OTHER);
+ sKnownPhoneTypeMap_StoI.put(Constants.PARAM_PHONE_EXTRA_TYPE_CALLBACK, Phone.TYPE_CALLBACK);
sKnownPhoneTypeMap_StoI.put(
- Constants.ATTR_PHONE_EXTRA_TYPE_COMPANY_MAIN, Phone.TYPE_COMPANY_MAIN);
- sKnownPhoneTypeMap_StoI.put(Constants.ATTR_PHONE_EXTRA_TYPE_RADIO, Phone.TYPE_RADIO);
- sKnownPhoneTypeMap_StoI.put(Constants.ATTR_PHONE_EXTRA_TYPE_TTY_TDD, Phone.TYPE_TTY_TDD);
- sKnownPhoneTypeMap_StoI.put(Constants.ATTR_PHONE_EXTRA_TYPE_ASSISTANT,
+ Constants.PARAM_PHONE_EXTRA_TYPE_COMPANY_MAIN, Phone.TYPE_COMPANY_MAIN);
+ sKnownPhoneTypeMap_StoI.put(Constants.PARAM_PHONE_EXTRA_TYPE_RADIO, Phone.TYPE_RADIO);
+ sKnownPhoneTypeMap_StoI.put(Constants.PARAM_PHONE_EXTRA_TYPE_TTY_TDD, Phone.TYPE_TTY_TDD);
+ sKnownPhoneTypeMap_StoI.put(Constants.PARAM_PHONE_EXTRA_TYPE_ASSISTANT,
Phone.TYPE_ASSISTANT);
sPhoneTypesSetUnknownToContacts = new HashSet<String>();
- sPhoneTypesSetUnknownToContacts.add(Constants.ATTR_TYPE_MODEM);
- sPhoneTypesSetUnknownToContacts.add(Constants.ATTR_TYPE_BBS);
- sPhoneTypesSetUnknownToContacts.add(Constants.ATTR_TYPE_VIDEO);
+ sPhoneTypesSetUnknownToContacts.add(Constants.PARAM_TYPE_MODEM);
+ sPhoneTypesSetUnknownToContacts.add(Constants.PARAM_TYPE_BBS);
+ sPhoneTypesSetUnknownToContacts.add(Constants.PARAM_TYPE_VIDEO);
sKnownImPropNameMap_ItoS = new HashMap<Integer, String>();
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_AIM, Constants.PROPERTY_X_AIM);
@@ -90,7 +90,7 @@ public class VCardUtils {
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_NETMEETING, Constants.PROPERTY_X_NETMEETING);
}
- public static String getPhoneAttributeString(Integer type) {
+ public static String getPhoneTypeString(Integer type) {
return sKnownPhoneTypesMap_ItoS.get(type);
}
@@ -107,9 +107,9 @@ public class VCardUtils {
if (types != null) {
for (String typeString : types) {
typeString = typeString.toUpperCase();
- if (typeString.equals(Constants.ATTR_TYPE_PREF)) {
+ if (typeString.equals(Constants.PARAM_TYPE_PREF)) {
hasPref = true;
- } else if (typeString.equals(Constants.ATTR_TYPE_FAX)) {
+ } else if (typeString.equals(Constants.PARAM_TYPE_FAX)) {
isFax = true;
} else {
if (typeString.startsWith("X-") && type < 0) {
@@ -153,14 +153,14 @@ public class VCardUtils {
return sKnownImPropNameMap_ItoS.get(protocol);
}
- public static boolean isValidPhoneAttribute(String phoneAttribute, int vcardType) {
+ public static boolean isValidPhoneType(String phoneType, int vcardType) {
// TODO: check the following.
// - it may violate vCard spec
// - it may contain non-ASCII characters
//
// TODO: use vcardType
- return (phoneAttribute.startsWith("X-") || phoneAttribute.startsWith("x-") ||
- sPhoneTypesSetUnknownToContacts.contains(phoneAttribute));
+ return (phoneType.startsWith("X-") || phoneType.startsWith("x-") ||
+ sPhoneTypesSetUnknownToContacts.contains(phoneType));
}
public static String[] sortNameElements(int vcardType,