Merge change Icaf78440 into eclair-mr2
* changes: Split vCard composer into two parts: VCardComposer and VCardBuilder.
This commit is contained in:
1874
core/java/android/pim/vcard/VCardBuilder.java
Normal file
1874
core/java/android/pim/vcard/VCardBuilder.java
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -18,8 +18,7 @@ package android.pim.vcard;
|
||||
/**
|
||||
* Constants used in both exporter and importer code.
|
||||
*/
|
||||
/* package */ class Constants {
|
||||
|
||||
public class VCardConstants {
|
||||
public static final String VERSION_V21 = "2.1";
|
||||
public static final String VERSION_V30 = "3.0";
|
||||
|
||||
@@ -148,6 +147,6 @@ package android.pim.vcard;
|
||||
/* package */ static final int MAX_CHARACTER_NUMS_QP = 76;
|
||||
static final int MAX_CHARACTER_NUMS_BASE64_V30 = 75;
|
||||
|
||||
private Constants() {
|
||||
private VCardConstants() {
|
||||
}
|
||||
}
|
||||
@@ -65,14 +65,14 @@ public class VCardEntry {
|
||||
private static final Map<String, Integer> sImMap = new HashMap<String, Integer>();
|
||||
|
||||
static {
|
||||
sImMap.put(Constants.PROPERTY_X_AIM, Im.PROTOCOL_AIM);
|
||||
sImMap.put(Constants.PROPERTY_X_MSN, Im.PROTOCOL_MSN);
|
||||
sImMap.put(Constants.PROPERTY_X_YAHOO, Im.PROTOCOL_YAHOO);
|
||||
sImMap.put(Constants.PROPERTY_X_ICQ, Im.PROTOCOL_ICQ);
|
||||
sImMap.put(Constants.PROPERTY_X_JABBER, Im.PROTOCOL_JABBER);
|
||||
sImMap.put(Constants.PROPERTY_X_SKYPE_USERNAME, Im.PROTOCOL_SKYPE);
|
||||
sImMap.put(Constants.PROPERTY_X_GOOGLE_TALK, Im.PROTOCOL_GOOGLE_TALK);
|
||||
sImMap.put(Constants.ImportOnly.PROPERTY_X_GOOGLE_TALK_WITH_SPACE,
|
||||
sImMap.put(VCardConstants.PROPERTY_X_AIM, Im.PROTOCOL_AIM);
|
||||
sImMap.put(VCardConstants.PROPERTY_X_MSN, Im.PROTOCOL_MSN);
|
||||
sImMap.put(VCardConstants.PROPERTY_X_YAHOO, Im.PROTOCOL_YAHOO);
|
||||
sImMap.put(VCardConstants.PROPERTY_X_ICQ, Im.PROTOCOL_ICQ);
|
||||
sImMap.put(VCardConstants.PROPERTY_X_JABBER, Im.PROTOCOL_JABBER);
|
||||
sImMap.put(VCardConstants.PROPERTY_X_SKYPE_USERNAME, Im.PROTOCOL_SKYPE);
|
||||
sImMap.put(VCardConstants.PROPERTY_X_GOOGLE_TALK, Im.PROTOCOL_GOOGLE_TALK);
|
||||
sImMap.put(VCardConstants.ImportOnly.PROPERTY_X_GOOGLE_TALK_WITH_SPACE,
|
||||
Im.PROTOCOL_GOOGLE_TALK);
|
||||
}
|
||||
|
||||
@@ -749,24 +749,25 @@ public class VCardEntry {
|
||||
}
|
||||
final String propValue = listToString(propValueList).trim();
|
||||
|
||||
if (propName.equals(Constants.PROPERTY_VERSION)) {
|
||||
if (propName.equals(VCardConstants.PROPERTY_VERSION)) {
|
||||
// vCard version. Ignore this.
|
||||
} else if (propName.equals(Constants.PROPERTY_FN)) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_FN)) {
|
||||
mFullName = propValue;
|
||||
} else if (propName.equals(Constants.PROPERTY_NAME) && mFullName == null) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_NAME) && mFullName == null) {
|
||||
// Only in vCard 3.0. Use this if FN, which must exist in vCard 3.0 but may not
|
||||
// actually exist in the real vCard data, does not exist.
|
||||
mFullName = propValue;
|
||||
} else if (propName.equals(Constants.PROPERTY_N)) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_N)) {
|
||||
handleNProperty(propValueList);
|
||||
} else if (propName.equals(Constants.PROPERTY_SORT_STRING)) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_SORT_STRING)) {
|
||||
mPhoneticFullName = propValue;
|
||||
} else if (propName.equals(Constants.PROPERTY_NICKNAME) ||
|
||||
propName.equals(Constants.ImportOnly.PROPERTY_X_NICKNAME)) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_NICKNAME) ||
|
||||
propName.equals(VCardConstants.ImportOnly.PROPERTY_X_NICKNAME)) {
|
||||
addNickName(propValue);
|
||||
} else if (propName.equals(Constants.PROPERTY_SOUND)) {
|
||||
Collection<String> typeCollection = paramMap.get(Constants.PARAM_TYPE);
|
||||
if (typeCollection != null && typeCollection.contains(Constants.PARAM_TYPE_X_IRMC_N)) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_SOUND)) {
|
||||
Collection<String> typeCollection = paramMap.get(VCardConstants.PARAM_TYPE);
|
||||
if (typeCollection != null
|
||||
&& typeCollection.contains(VCardConstants.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.
|
||||
@@ -778,7 +779,7 @@ public class VCardEntry {
|
||||
} else {
|
||||
// Ignore this field since Android cannot understand what it is.
|
||||
}
|
||||
} else if (propName.equals(Constants.PROPERTY_ADR)) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_ADR)) {
|
||||
boolean valuesAreAllEmpty = true;
|
||||
for (String value : propValueList) {
|
||||
if (value.length() > 0) {
|
||||
@@ -793,25 +794,25 @@ public class VCardEntry {
|
||||
int type = -1;
|
||||
String label = "";
|
||||
boolean isPrimary = false;
|
||||
Collection<String> typeCollection = paramMap.get(Constants.PARAM_TYPE);
|
||||
Collection<String> typeCollection = paramMap.get(VCardConstants.PARAM_TYPE);
|
||||
if (typeCollection != null) {
|
||||
for (String typeString : typeCollection) {
|
||||
typeString = typeString.toUpperCase();
|
||||
if (typeString.equals(Constants.PARAM_TYPE_PREF)) {
|
||||
if (typeString.equals(VCardConstants.PARAM_TYPE_PREF)) {
|
||||
isPrimary = true;
|
||||
} else if (typeString.equals(Constants.PARAM_TYPE_HOME)) {
|
||||
} else if (typeString.equals(VCardConstants.PARAM_TYPE_HOME)) {
|
||||
type = StructuredPostal.TYPE_HOME;
|
||||
label = "";
|
||||
} else if (typeString.equals(Constants.PARAM_TYPE_WORK) ||
|
||||
typeString.equalsIgnoreCase(Constants.PARAM_EXTRA_TYPE_COMPANY)) {
|
||||
} else if (typeString.equals(VCardConstants.PARAM_TYPE_WORK) ||
|
||||
typeString.equalsIgnoreCase(VCardConstants.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.PARAM_ADR_TYPE_PARCEL) ||
|
||||
typeString.equals(Constants.PARAM_ADR_TYPE_DOM) ||
|
||||
typeString.equals(Constants.PARAM_ADR_TYPE_INTL)) {
|
||||
} else if (typeString.equals(VCardConstants.PARAM_ADR_TYPE_PARCEL) ||
|
||||
typeString.equals(VCardConstants.PARAM_ADR_TYPE_DOM) ||
|
||||
typeString.equals(VCardConstants.PARAM_ADR_TYPE_INTL)) {
|
||||
// We do not have any appropriate way to store this information.
|
||||
} else {
|
||||
if (typeString.startsWith("X-") && type < 0) {
|
||||
@@ -830,21 +831,21 @@ public class VCardEntry {
|
||||
}
|
||||
|
||||
addPostal(type, propValueList, label, isPrimary);
|
||||
} else if (propName.equals(Constants.PROPERTY_EMAIL)) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_EMAIL)) {
|
||||
int type = -1;
|
||||
String label = null;
|
||||
boolean isPrimary = false;
|
||||
Collection<String> typeCollection = paramMap.get(Constants.PARAM_TYPE);
|
||||
Collection<String> typeCollection = paramMap.get(VCardConstants.PARAM_TYPE);
|
||||
if (typeCollection != null) {
|
||||
for (String typeString : typeCollection) {
|
||||
typeString = typeString.toUpperCase();
|
||||
if (typeString.equals(Constants.PARAM_TYPE_PREF)) {
|
||||
if (typeString.equals(VCardConstants.PARAM_TYPE_PREF)) {
|
||||
isPrimary = true;
|
||||
} else if (typeString.equals(Constants.PARAM_TYPE_HOME)) {
|
||||
} else if (typeString.equals(VCardConstants.PARAM_TYPE_HOME)) {
|
||||
type = Email.TYPE_HOME;
|
||||
} else if (typeString.equals(Constants.PARAM_TYPE_WORK)) {
|
||||
} else if (typeString.equals(VCardConstants.PARAM_TYPE_WORK)) {
|
||||
type = Email.TYPE_WORK;
|
||||
} else if (typeString.equals(Constants.PARAM_TYPE_CELL)) {
|
||||
} else if (typeString.equals(VCardConstants.PARAM_TYPE_CELL)) {
|
||||
type = Email.TYPE_MOBILE;
|
||||
} else {
|
||||
if (typeString.startsWith("X-") && type < 0) {
|
||||
@@ -862,26 +863,26 @@ public class VCardEntry {
|
||||
type = Email.TYPE_OTHER;
|
||||
}
|
||||
addEmail(type, propValue, label, isPrimary);
|
||||
} else if (propName.equals(Constants.PROPERTY_ORG)) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_ORG)) {
|
||||
// vCard specification does not specify other types.
|
||||
final int type = Organization.TYPE_WORK;
|
||||
boolean isPrimary = false;
|
||||
Collection<String> typeCollection = paramMap.get(Constants.PARAM_TYPE);
|
||||
Collection<String> typeCollection = paramMap.get(VCardConstants.PARAM_TYPE);
|
||||
if (typeCollection != null) {
|
||||
for (String typeString : typeCollection) {
|
||||
if (typeString.equals(Constants.PARAM_TYPE_PREF)) {
|
||||
if (typeString.equals(VCardConstants.PARAM_TYPE_PREF)) {
|
||||
isPrimary = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
handleOrgValue(type, propValueList, isPrimary);
|
||||
} else if (propName.equals(Constants.PROPERTY_TITLE)) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_TITLE)) {
|
||||
handleTitleValue(propValue);
|
||||
} else if (propName.equals(Constants.PROPERTY_ROLE)) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_ROLE)) {
|
||||
// This conflicts with TITLE. Ignore for now...
|
||||
// handleTitleValue(propValue);
|
||||
} else if (propName.equals(Constants.PROPERTY_PHOTO) ||
|
||||
propName.equals(Constants.PROPERTY_LOGO)) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_PHOTO) ||
|
||||
propName.equals(VCardConstants.PROPERTY_LOGO)) {
|
||||
Collection<String> paramMapValue = paramMap.get("VALUE");
|
||||
if (paramMapValue != null && paramMapValue.contains("URL")) {
|
||||
// Currently we do not have appropriate example for testing this case.
|
||||
@@ -891,7 +892,7 @@ public class VCardEntry {
|
||||
boolean isPrimary = false;
|
||||
if (typeCollection != null) {
|
||||
for (String typeValue : typeCollection) {
|
||||
if (Constants.PARAM_TYPE_PREF.equals(typeValue)) {
|
||||
if (VCardConstants.PARAM_TYPE_PREF.equals(typeValue)) {
|
||||
isPrimary = true;
|
||||
} else if (formatName == null){
|
||||
formatName = typeValue;
|
||||
@@ -900,8 +901,8 @@ public class VCardEntry {
|
||||
}
|
||||
addPhotoBytes(formatName, propBytes, isPrimary);
|
||||
}
|
||||
} else if (propName.equals(Constants.PROPERTY_TEL)) {
|
||||
final Collection<String> typeCollection = paramMap.get(Constants.PARAM_TYPE);
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_TEL)) {
|
||||
final Collection<String> typeCollection = paramMap.get(VCardConstants.PARAM_TYPE);
|
||||
final Object typeObject =
|
||||
VCardUtils.getPhoneTypeFromStrings(typeCollection, propValue);
|
||||
final int type;
|
||||
@@ -915,18 +916,18 @@ public class VCardEntry {
|
||||
}
|
||||
|
||||
final boolean isPrimary;
|
||||
if (typeCollection != null && typeCollection.contains(Constants.PARAM_TYPE_PREF)) {
|
||||
if (typeCollection != null && typeCollection.contains(VCardConstants.PARAM_TYPE_PREF)) {
|
||||
isPrimary = true;
|
||||
} else {
|
||||
isPrimary = false;
|
||||
}
|
||||
addPhone(type, propValue, label, isPrimary);
|
||||
} else if (propName.equals(Constants.PROPERTY_X_SKYPE_PSTNNUMBER)) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_X_SKYPE_PSTNNUMBER)) {
|
||||
// The phone number available via Skype.
|
||||
Collection<String> typeCollection = paramMap.get(Constants.PARAM_TYPE);
|
||||
Collection<String> typeCollection = paramMap.get(VCardConstants.PARAM_TYPE);
|
||||
final int type = Phone.TYPE_OTHER;
|
||||
final boolean isPrimary;
|
||||
if (typeCollection != null && typeCollection.contains(Constants.PARAM_TYPE_PREF)) {
|
||||
if (typeCollection != null && typeCollection.contains(VCardConstants.PARAM_TYPE_PREF)) {
|
||||
isPrimary = true;
|
||||
} else {
|
||||
isPrimary = false;
|
||||
@@ -936,15 +937,15 @@ public class VCardEntry {
|
||||
final int protocol = sImMap.get(propName);
|
||||
boolean isPrimary = false;
|
||||
int type = -1;
|
||||
final Collection<String> typeCollection = paramMap.get(Constants.PARAM_TYPE);
|
||||
final Collection<String> typeCollection = paramMap.get(VCardConstants.PARAM_TYPE);
|
||||
if (typeCollection != null) {
|
||||
for (String typeString : typeCollection) {
|
||||
if (typeString.equals(Constants.PARAM_TYPE_PREF)) {
|
||||
if (typeString.equals(VCardConstants.PARAM_TYPE_PREF)) {
|
||||
isPrimary = true;
|
||||
} else if (type < 0) {
|
||||
if (typeString.equalsIgnoreCase(Constants.PARAM_TYPE_HOME)) {
|
||||
if (typeString.equalsIgnoreCase(VCardConstants.PARAM_TYPE_HOME)) {
|
||||
type = Im.TYPE_HOME;
|
||||
} else if (typeString.equalsIgnoreCase(Constants.PARAM_TYPE_WORK)) {
|
||||
} else if (typeString.equalsIgnoreCase(VCardConstants.PARAM_TYPE_WORK)) {
|
||||
type = Im.TYPE_WORK;
|
||||
}
|
||||
}
|
||||
@@ -954,22 +955,22 @@ public class VCardEntry {
|
||||
type = Phone.TYPE_HOME;
|
||||
}
|
||||
addIm(protocol, null, type, propValue, isPrimary);
|
||||
} else if (propName.equals(Constants.PROPERTY_NOTE)) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_NOTE)) {
|
||||
addNote(propValue);
|
||||
} else if (propName.equals(Constants.PROPERTY_URL)) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_URL)) {
|
||||
if (mWebsiteList == null) {
|
||||
mWebsiteList = new ArrayList<String>(1);
|
||||
}
|
||||
mWebsiteList.add(propValue);
|
||||
} else if (propName.equals(Constants.PROPERTY_BDAY)) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_BDAY)) {
|
||||
mBirthday = propValue;
|
||||
} else if (propName.equals(Constants.PROPERTY_X_PHONETIC_FIRST_NAME)) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_X_PHONETIC_FIRST_NAME)) {
|
||||
mPhoneticGivenName = propValue;
|
||||
} else if (propName.equals(Constants.PROPERTY_X_PHONETIC_MIDDLE_NAME)) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_X_PHONETIC_MIDDLE_NAME)) {
|
||||
mPhoneticMiddleName = propValue;
|
||||
} else if (propName.equals(Constants.PROPERTY_X_PHONETIC_LAST_NAME)) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_X_PHONETIC_LAST_NAME)) {
|
||||
mPhoneticFamilyName = propValue;
|
||||
} else if (propName.equals(Constants.PROPERTY_X_ANDROID_CUSTOM)) {
|
||||
} else if (propName.equals(VCardConstants.PROPERTY_X_ANDROID_CUSTOM)) {
|
||||
final List<String> customPropertyList =
|
||||
VCardUtils.constructListFromValue(propValue,
|
||||
VCardConfig.isV30(mVCardType));
|
||||
@@ -1247,10 +1248,10 @@ public class VCardEntry {
|
||||
int size = customPropertyList.size();
|
||||
if (size < 2 || TextUtils.isEmpty(customPropertyList.get(0))) {
|
||||
continue;
|
||||
} else if (size > Constants.MAX_DATA_COLUMN + 1) {
|
||||
size = Constants.MAX_DATA_COLUMN + 1;
|
||||
} else if (size > VCardConstants.MAX_DATA_COLUMN + 1) {
|
||||
size = VCardConstants.MAX_DATA_COLUMN + 1;
|
||||
customPropertyList =
|
||||
customPropertyList.subList(0, Constants.MAX_DATA_COLUMN + 2);
|
||||
customPropertyList.subList(0, VCardConstants.MAX_DATA_COLUMN + 2);
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
|
||||
@@ -178,7 +178,7 @@ public class VCardParser_V21 extends VCardParser {
|
||||
}
|
||||
|
||||
protected String getVersionString() {
|
||||
return Constants.VERSION_V21;
|
||||
return VCardConstants.VERSION_V21;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -84,7 +84,7 @@ public class VCardParser_V30 extends VCardParser_V21 {
|
||||
|
||||
@Override
|
||||
protected String getVersionString() {
|
||||
return Constants.VERSION_V30;
|
||||
return VCardConstants.VERSION_V30;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -50,41 +50,44 @@ public class VCardUtils {
|
||||
sKnownPhoneTypesMap_ItoS = new HashMap<Integer, String>();
|
||||
sKnownPhoneTypeMap_StoI = new HashMap<String, Integer>();
|
||||
|
||||
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);
|
||||
sKnownPhoneTypesMap_ItoS.put(Phone.TYPE_CAR, VCardConstants.PARAM_TYPE_CAR);
|
||||
sKnownPhoneTypeMap_StoI.put(VCardConstants.PARAM_TYPE_CAR, Phone.TYPE_CAR);
|
||||
sKnownPhoneTypesMap_ItoS.put(Phone.TYPE_PAGER, VCardConstants.PARAM_TYPE_PAGER);
|
||||
sKnownPhoneTypeMap_StoI.put(VCardConstants.PARAM_TYPE_PAGER, Phone.TYPE_PAGER);
|
||||
sKnownPhoneTypesMap_ItoS.put(Phone.TYPE_ISDN, VCardConstants.PARAM_TYPE_ISDN);
|
||||
sKnownPhoneTypeMap_StoI.put(VCardConstants.PARAM_TYPE_ISDN, Phone.TYPE_ISDN);
|
||||
|
||||
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(VCardConstants.PARAM_TYPE_HOME, Phone.TYPE_HOME);
|
||||
sKnownPhoneTypeMap_StoI.put(VCardConstants.PARAM_TYPE_WORK, Phone.TYPE_WORK);
|
||||
sKnownPhoneTypeMap_StoI.put(VCardConstants.PARAM_TYPE_CELL, Phone.TYPE_MOBILE);
|
||||
|
||||
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(VCardConstants.PARAM_PHONE_EXTRA_TYPE_OTHER, Phone.TYPE_OTHER);
|
||||
sKnownPhoneTypeMap_StoI.put(VCardConstants.PARAM_PHONE_EXTRA_TYPE_CALLBACK,
|
||||
Phone.TYPE_CALLBACK);
|
||||
sKnownPhoneTypeMap_StoI.put(
|
||||
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,
|
||||
VCardConstants.PARAM_PHONE_EXTRA_TYPE_COMPANY_MAIN, Phone.TYPE_COMPANY_MAIN);
|
||||
sKnownPhoneTypeMap_StoI.put(VCardConstants.PARAM_PHONE_EXTRA_TYPE_RADIO, Phone.TYPE_RADIO);
|
||||
sKnownPhoneTypeMap_StoI.put(VCardConstants.PARAM_PHONE_EXTRA_TYPE_TTY_TDD,
|
||||
Phone.TYPE_TTY_TDD);
|
||||
sKnownPhoneTypeMap_StoI.put(VCardConstants.PARAM_PHONE_EXTRA_TYPE_ASSISTANT,
|
||||
Phone.TYPE_ASSISTANT);
|
||||
|
||||
sPhoneTypesUnknownToContactsSet = new HashSet<String>();
|
||||
sPhoneTypesUnknownToContactsSet.add(Constants.PARAM_TYPE_MODEM);
|
||||
sPhoneTypesUnknownToContactsSet.add(Constants.PARAM_TYPE_BBS);
|
||||
sPhoneTypesUnknownToContactsSet.add(Constants.PARAM_TYPE_VIDEO);
|
||||
sPhoneTypesUnknownToContactsSet.add(VCardConstants.PARAM_TYPE_MODEM);
|
||||
sPhoneTypesUnknownToContactsSet.add(VCardConstants.PARAM_TYPE_BBS);
|
||||
sPhoneTypesUnknownToContactsSet.add(VCardConstants.PARAM_TYPE_VIDEO);
|
||||
|
||||
sKnownImPropNameMap_ItoS = new HashMap<Integer, String>();
|
||||
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_AIM, Constants.PROPERTY_X_AIM);
|
||||
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_MSN, Constants.PROPERTY_X_MSN);
|
||||
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_YAHOO, Constants.PROPERTY_X_YAHOO);
|
||||
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_SKYPE, Constants.PROPERTY_X_SKYPE_USERNAME);
|
||||
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_GOOGLE_TALK, Constants.PROPERTY_X_GOOGLE_TALK);
|
||||
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_ICQ, Constants.PROPERTY_X_ICQ);
|
||||
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_JABBER, Constants.PROPERTY_X_JABBER);
|
||||
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_QQ, Constants.PROPERTY_X_QQ);
|
||||
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_NETMEETING, Constants.PROPERTY_X_NETMEETING);
|
||||
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_AIM, VCardConstants.PROPERTY_X_AIM);
|
||||
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_MSN, VCardConstants.PROPERTY_X_MSN);
|
||||
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_YAHOO, VCardConstants.PROPERTY_X_YAHOO);
|
||||
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_SKYPE, VCardConstants.PROPERTY_X_SKYPE_USERNAME);
|
||||
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_GOOGLE_TALK,
|
||||
VCardConstants.PROPERTY_X_GOOGLE_TALK);
|
||||
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_ICQ, VCardConstants.PROPERTY_X_ICQ);
|
||||
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_JABBER, VCardConstants.PROPERTY_X_JABBER);
|
||||
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_QQ, VCardConstants.PROPERTY_X_QQ);
|
||||
sKnownImPropNameMap_ItoS.put(Im.PROTOCOL_NETMEETING, VCardConstants.PROPERTY_X_NETMEETING);
|
||||
|
||||
// \u643A\u5E2F\u96FB\u8A71 = Full-width Hiragana "Keitai-Denwa" (mobile phone)
|
||||
// \u643A\u5E2F = Full-width Hiragana "Keitai" (mobile phone)
|
||||
@@ -119,9 +122,9 @@ public class VCardUtils {
|
||||
continue;
|
||||
}
|
||||
typeString = typeString.toUpperCase();
|
||||
if (typeString.equals(Constants.PARAM_TYPE_PREF)) {
|
||||
if (typeString.equals(VCardConstants.PARAM_TYPE_PREF)) {
|
||||
hasPref = true;
|
||||
} else if (typeString.equals(Constants.PARAM_TYPE_FAX)) {
|
||||
} else if (typeString.equals(VCardConstants.PARAM_TYPE_FAX)) {
|
||||
isFax = true;
|
||||
} else {
|
||||
if (typeString.startsWith("X-") && type < 0) {
|
||||
|
||||
@@ -26,6 +26,7 @@ import android.provider.ContactsContract.CommonDataKinds.Note;
|
||||
import android.provider.ContactsContract.CommonDataKinds.Organization;
|
||||
import android.provider.ContactsContract.CommonDataKinds.Phone;
|
||||
import android.provider.ContactsContract.CommonDataKinds.Photo;
|
||||
import android.provider.ContactsContract.CommonDataKinds.Relation;
|
||||
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
|
||||
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
|
||||
import android.provider.ContactsContract.CommonDataKinds.Website;
|
||||
@@ -52,12 +53,13 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, V21);
|
||||
verifier.addPropertyNodesVerifierElem()
|
||||
.addNodeWithoutOrder("FN", "Roid Ando")
|
||||
.addNodeWithoutOrder("N", "Ando;Roid;;;", Arrays.asList("Ando", "Roid", "", "", ""));
|
||||
.addNodeWithoutOrder("N", "Ando;Roid;;;",
|
||||
Arrays.asList("Ando", "Roid", "", "", ""));
|
||||
verifier.verify();
|
||||
}
|
||||
|
||||
private void testStructuredNameBasic(int version) {
|
||||
final boolean isV30 = VCardConfig.isV30(version);
|
||||
private void testStructuredNameBasic(int vcardType) {
|
||||
final boolean isV30 = VCardConfig.isV30(vcardType);
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
|
||||
resolver.buildContactEntry().buildData(StructuredName.CONTENT_ITEM_TYPE)
|
||||
@@ -70,7 +72,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
.put(StructuredName.PHONETIC_GIVEN_NAME, "AppropriatePhoneticGiven")
|
||||
.put(StructuredName.PHONETIC_MIDDLE_NAME, "AppropriatePhoneticMiddle");
|
||||
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
PropertyNodesVerifierElem elem = verifier.addPropertyNodesVerifierElem()
|
||||
.addNodeWithOrder("N",
|
||||
"AppropriateFamilyName;AppropriateGivenName;AppropriateMiddleName;"
|
||||
@@ -107,8 +109,8 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
* which presume that there's only one property toward each of "N", "FN", etc.
|
||||
* Note that more than one "N", "FN", etc. properties are acceptable in vCard spec.
|
||||
*/
|
||||
private void testStructuredNameUsePrimaryCommon(int version) {
|
||||
final boolean isV30 = (version == V30);
|
||||
private void testStructuredNameUsePrimaryCommon(int vcardType) {
|
||||
final boolean isV30 = (vcardType == V30);
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
|
||||
ContactEntry entry = resolver.buildContactEntry();
|
||||
@@ -146,7 +148,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
.put(StructuredName.PHONETIC_MIDDLE_NAME, "DoNotEmitPhoneticMiddle2")
|
||||
.put(StructuredName.IS_PRIMARY, 1);
|
||||
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
PropertyNodesVerifierElem elem = verifier.addPropertyNodesVerifierElem()
|
||||
.addNodeWithOrder("N",
|
||||
"AppropriateFamilyName;AppropriateGivenName;AppropriateMiddleName;"
|
||||
@@ -181,8 +183,8 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
* Tests that only "super primary" StructuredName is emitted.
|
||||
* See also the comment in {@link #testStructuredNameUsePrimaryCommon(int)}.
|
||||
*/
|
||||
private void testStructuredNameUseSuperPrimaryCommon(int version) {
|
||||
final boolean isV30 = (version == V30);
|
||||
private void testStructuredNameUseSuperPrimaryCommon(int vcardType) {
|
||||
final boolean isV30 = (vcardType == V30);
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
|
||||
ContactEntry entry = resolver.buildContactEntry();
|
||||
@@ -231,7 +233,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
.put(StructuredName.PHONETIC_MIDDLE_NAME, "DoNotEmitPhoneticMiddle3")
|
||||
.put(StructuredName.IS_PRIMARY, 1);
|
||||
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
PropertyNodesVerifierElem elem = verifier.addPropertyNodesVerifierElem()
|
||||
.addNodeWithOrder("N",
|
||||
"AppropriateFamilyName;AppropriateGivenName;AppropriateMiddleName;"
|
||||
@@ -274,14 +276,14 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
verifier.verify();
|
||||
}
|
||||
|
||||
private void testPhoneBasicCommon(int version) {
|
||||
private void testPhoneBasicCommon(int vcardType) {
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
|
||||
resolver.buildContactEntry().buildData(Phone.CONTENT_ITEM_TYPE)
|
||||
.put(Phone.NUMBER, "1")
|
||||
.put(Phone.TYPE, Phone.TYPE_HOME);
|
||||
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
verifier.addPropertyNodesVerifierElemWithEmptyName()
|
||||
.addNodeWithoutOrder("TEL", "1", new TypeSet("HOME"));
|
||||
|
||||
@@ -299,7 +301,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
/**
|
||||
* Tests that vCard composer emits corresponding type param which we expect.
|
||||
*/
|
||||
private void testPhoneVariousTypeSupport(int version) {
|
||||
private void testPhoneVariousTypeSupport(int vcardType) {
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
|
||||
ContactEntry entry = resolver.buildContactEntry();
|
||||
@@ -352,7 +354,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
.put(Phone.NUMBER, "160")
|
||||
.put(Phone.TYPE, Phone.TYPE_MMS);
|
||||
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
verifier.addPropertyNodesVerifierElemWithEmptyName()
|
||||
.addNodeWithoutOrder("TEL", "10", new TypeSet("HOME"))
|
||||
.addNodeWithoutOrder("TEL", "20", new TypeSet("WORK"))
|
||||
@@ -384,7 +386,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
/**
|
||||
* Tests that "PREF"s are emitted appropriately.
|
||||
*/
|
||||
private void testPhonePrefHandlingCommon(int version) {
|
||||
private void testPhonePrefHandlingCommon(int vcardType) {
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
ContactEntry entry = resolver.buildContactEntry();
|
||||
entry.buildData(Phone.CONTENT_ITEM_TYPE)
|
||||
@@ -402,7 +404,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
.put(Phone.NUMBER, "4")
|
||||
.put(Phone.TYPE, Phone.TYPE_FAX_WORK);
|
||||
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
verifier.addPropertyNodesVerifierElemWithEmptyName()
|
||||
.addNodeWithoutOrder("TEL", "4", new TypeSet("WORK", "FAX"))
|
||||
.addNodeWithoutOrder("TEL", "3", new TypeSet("HOME", "FAX", "PREF"))
|
||||
@@ -475,12 +477,12 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
testMiscPhoneTypeHandling(V30);
|
||||
}
|
||||
|
||||
private void testEmailBasicCommon(int version) {
|
||||
private void testEmailBasicCommon(int vcardType) {
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
resolver.buildContactEntry().buildData(Email.CONTENT_ITEM_TYPE)
|
||||
.put(Email.DATA, "sample@example.com");
|
||||
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
|
||||
verifier.addPropertyNodesVerifierElemWithEmptyName()
|
||||
.addNodeWithoutOrder("EMAIL", "sample@example.com");
|
||||
@@ -496,7 +498,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
testEmailBasicCommon(V30);
|
||||
}
|
||||
|
||||
private void testEmailVariousTypeSupportCommon(int version) {
|
||||
private void testEmailVariousTypeSupportCommon(int vcardType) {
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
|
||||
ContactEntry entry = resolver.buildContactEntry();
|
||||
@@ -513,7 +515,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
.put(Email.DATA, "type_other@example.com")
|
||||
.put(Email.TYPE, Email.TYPE_OTHER);
|
||||
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
|
||||
verifier.addPropertyNodesVerifierElemWithEmptyName()
|
||||
.addNodeWithoutOrder("EMAIL", "type_home@example.com", new TypeSet("HOME"))
|
||||
@@ -532,7 +534,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
testEmailVariousTypeSupportCommon(V30);
|
||||
}
|
||||
|
||||
private void testEmailPrefHandlingCommon(int version) {
|
||||
private void testEmailPrefHandlingCommon(int vcardType) {
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
|
||||
ContactEntry entry = resolver.buildContactEntry();
|
||||
@@ -544,7 +546,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
.put(Email.DATA, "type_notype@example.com")
|
||||
.put(Email.IS_PRIMARY, 1);
|
||||
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
|
||||
verifier.addPropertyNodesVerifierElemWithEmptyName()
|
||||
.addNodeWithoutOrder("EMAIL", "type_notype@example.com", new TypeSet("PREF"))
|
||||
@@ -561,7 +563,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
testEmailPrefHandlingCommon(V30);
|
||||
}
|
||||
|
||||
private void testPostalOnlyWithStructuredDataCommon(int version) {
|
||||
private void testPostalOnlyWithStructuredDataCommon(int vcardType) {
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
|
||||
// adr-value = 0*6(text-value ";") text-value
|
||||
@@ -575,7 +577,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
.put(StructuredPostal.REGION, "Region")
|
||||
.put(StructuredPostal.POSTCODE, "100")
|
||||
.put(StructuredPostal.COUNTRY, "Country");
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
verifier.addPropertyNodesVerifierElemWithEmptyName()
|
||||
.addNodeWithoutOrder("ADR", "Pobox;Neighborhood;Street;City;Region;100;Country",
|
||||
Arrays.asList("Pobox", "Neighborhood", "Street", "City",
|
||||
@@ -592,14 +594,14 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
testPostalOnlyWithStructuredDataCommon(V30);
|
||||
}
|
||||
|
||||
private void testPostalOnlyWithFormattedAddressCommon(int version) {
|
||||
private void testPostalOnlyWithFormattedAddressCommon(int vcardType) {
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
|
||||
resolver.buildContactEntry().buildData(StructuredPostal.CONTENT_ITEM_TYPE)
|
||||
.put(StructuredPostal.FORMATTED_ADDRESS,
|
||||
"Formatted address CA 123-334 United Statue");
|
||||
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
verifier.addPropertyNodesVerifierElemWithEmptyName()
|
||||
.addNodeWithOrder("ADR", ";Formatted address CA 123-334 United Statue;;;;;",
|
||||
Arrays.asList("", "Formatted address CA 123-334 United Statue",
|
||||
@@ -620,7 +622,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
* Tests that the vCard composer honors formatted data when it is available
|
||||
* even when it is partial.
|
||||
*/
|
||||
private void testPostalWithBothStructuredAndFormattedCommon(int version) {
|
||||
private void testPostalWithBothStructuredAndFormattedCommon(int vcardType) {
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
|
||||
resolver.buildContactEntry().buildData(StructuredPostal.CONTENT_ITEM_TYPE)
|
||||
@@ -629,7 +631,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
.put(StructuredPostal.FORMATTED_ADDRESS,
|
||||
"Formatted address CA 123-334 United Statue"); // Should be ignored
|
||||
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
verifier.addPropertyNodesVerifierElemWithEmptyName()
|
||||
.addNodeWithoutOrder("ADR", "Pobox;;;;;;Country",
|
||||
Arrays.asList("Pobox", "", "", "", "", "", "Country"),
|
||||
@@ -646,7 +648,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
testPostalWithBothStructuredAndFormattedCommon(V30);
|
||||
}
|
||||
|
||||
private void testOrganizationCommon(int version) {
|
||||
private void testOrganizationCommon(int vcardType) {
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
ContactEntry entry = resolver.buildContactEntry();
|
||||
entry.buildData(Organization.CONTENT_ITEM_TYPE)
|
||||
@@ -668,7 +670,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
.putNull(Organization.DEPARTMENT)
|
||||
.put(Organization.TITLE, "TitleXYZYX");
|
||||
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
|
||||
// Currently we do not use group but depend on the order.
|
||||
verifier.addPropertyNodesVerifierElemWithEmptyName()
|
||||
@@ -690,7 +692,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
testOrganizationCommon(V30);
|
||||
}
|
||||
|
||||
private void testImVariousTypeSupportCommon(int version) {
|
||||
private void testImVariousTypeSupportCommon(int vcardType) {
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
|
||||
ContactEntry entry = resolver.buildContactEntry();
|
||||
@@ -732,7 +734,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
|
||||
// No determined way to express unknown type...
|
||||
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
verifier.addPropertyNodesVerifierElemWithEmptyName()
|
||||
.addNodeWithoutOrder("X-JABBER", "jabber")
|
||||
.addNodeWithoutOrder("X-ICQ", "icq")
|
||||
@@ -755,7 +757,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
testImVariousTypeSupportCommon(V30);
|
||||
}
|
||||
|
||||
private void testImPrefHandlingCommon(int version) {
|
||||
private void testImPrefHandlingCommon(int vcardType) {
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
|
||||
ContactEntry entry = resolver.buildContactEntry();
|
||||
@@ -769,7 +771,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
.put(Im.TYPE, Im.TYPE_HOME)
|
||||
.put(Im.IS_PRIMARY, 1);
|
||||
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
verifier.addPropertyNodesVerifierElemWithEmptyName()
|
||||
.addNodeWithoutOrder("X-AIM", "aim1")
|
||||
.addNodeWithoutOrder("X-AIM", "aim2", new TypeSet("HOME", "PREF"));
|
||||
@@ -785,7 +787,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
testImPrefHandlingCommon(V30);
|
||||
}
|
||||
|
||||
private void testWebsiteCommon(int version) {
|
||||
private void testWebsiteCommon(int vcardType) {
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
|
||||
ContactEntry entry = resolver.buildContactEntry();
|
||||
@@ -798,7 +800,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
.put(Website.TYPE, Website.TYPE_FTP);
|
||||
|
||||
// We drop TYPE information since vCard (especially 3.0) does not allow us to emit it.
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
verifier.addPropertyNodesVerifierElemWithEmptyName()
|
||||
.addNodeWithoutOrder("URL", "ftp://ftp.example.android.com/index.html")
|
||||
.addNodeWithoutOrder("URL", "http://website.example.android.com/index.html");
|
||||
@@ -813,7 +815,19 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
testWebsiteCommon(V30);
|
||||
}
|
||||
|
||||
private void testEventCommon(int version) {
|
||||
private String getAndroidPropValue(final String mimeType, String value,
|
||||
Integer type) {
|
||||
return getAndroidPropValue(mimeType, value, type, null);
|
||||
}
|
||||
|
||||
private String getAndroidPropValue(final String mimeType, String value,
|
||||
Integer type, String label) {
|
||||
return (mimeType + ";" + value + ";"
|
||||
+ (type != null ? type : "") + ";"
|
||||
+ (label != null ? label : "") + ";;;;;;;;;;;;");
|
||||
}
|
||||
|
||||
private void testEventCommon(int vcardType) {
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
|
||||
ContactEntry entry = resolver.buildContactEntry();
|
||||
@@ -832,12 +846,22 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
.put(Event.START_DATE, "When the Tower of Hanoi with 64 rings is completed.");
|
||||
entry.buildData(Event.CONTENT_ITEM_TYPE)
|
||||
.put(Event.TYPE, Event.TYPE_BIRTHDAY)
|
||||
.put(Event.START_DATE, "2009-05-19");
|
||||
.put(Event.START_DATE, "2009-05-19"); // Should be ignored.
|
||||
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
verifier.addPropertyNodesVerifierElemWithEmptyName()
|
||||
.addNodeWithoutOrder("BDAY", "2008-10-22");
|
||||
|
||||
.addNodeWithoutOrder("BDAY", "2008-10-22")
|
||||
.addNodeWithoutOrder("X-ANDROID-CUSTOM",
|
||||
getAndroidPropValue(
|
||||
Event.CONTENT_ITEM_TYPE, "1982-06-16", Event.TYPE_ANNIVERSARY))
|
||||
.addNodeWithoutOrder("X-ANDROID-CUSTOM",
|
||||
getAndroidPropValue(
|
||||
Event.CONTENT_ITEM_TYPE, "2018-03-12", Event.TYPE_OTHER))
|
||||
.addNodeWithoutOrder("X-ANDROID-CUSTOM",
|
||||
getAndroidPropValue(
|
||||
Event.CONTENT_ITEM_TYPE,
|
||||
"When the Tower of Hanoi with 64 rings is completed.",
|
||||
Event.TYPE_CUSTOM, "The last day"));
|
||||
verifier.verify();
|
||||
}
|
||||
|
||||
@@ -849,7 +873,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
testEventCommon(V30);
|
||||
}
|
||||
|
||||
private void testNoteCommon(int version) {
|
||||
private void testNoteCommon(int vcardType) {
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
|
||||
ContactEntry entry = resolver.buildContactEntry();
|
||||
@@ -859,7 +883,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
.put(Note.NOTE, "note2")
|
||||
.put(Note.IS_PRIMARY, 1); // Just ignored.
|
||||
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
verifier.addPropertyNodesVerifierElemWithEmptyName()
|
||||
.addNodeWithOrder("NOTE", "note1")
|
||||
.addNodeWithOrder("NOTE", "note2");
|
||||
@@ -875,8 +899,8 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
testNoteCommon(V30);
|
||||
}
|
||||
|
||||
private void testPhotoCommon(int version) {
|
||||
final boolean isV30 = version == V30;
|
||||
private void testPhotoCommon(int vcardType) {
|
||||
final boolean isV30 = vcardType == V30;
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
ContactEntry entry = resolver.buildContactEntry();
|
||||
entry.buildData(StructuredName.CONTENT_ITEM_TYPE)
|
||||
@@ -886,7 +910,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
|
||||
ContentValues contentValuesForPhoto = new ContentValues();
|
||||
contentValuesForPhoto.put("ENCODING", (isV30 ? "b" : "BASE64"));
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
verifier.addPropertyNodesVerifierElem()
|
||||
.addNodeWithoutOrder("FN", "PhotoTest")
|
||||
.addNodeWithoutOrder("N", "PhotoTest;;;;",
|
||||
@@ -905,8 +929,31 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
testPhotoCommon(V30);
|
||||
}
|
||||
|
||||
private void testRelationCommon(int vcardType) {
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
ContactEntry entry = resolver.buildContactEntry();
|
||||
entry.buildData(Relation.CONTENT_ITEM_TYPE)
|
||||
.put(Relation.TYPE, Relation.TYPE_MOTHER)
|
||||
.put(Relation.NAME, "Ms. Mother");
|
||||
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
ImportVerifierElem elem = verifier.addImportVerifier();
|
||||
elem.addExpected(Relation.CONTENT_ITEM_TYPE)
|
||||
.put(Relation.TYPE, Relation.TYPE_MOTHER)
|
||||
.put(Relation.NAME, "Ms. Mother");
|
||||
verifier.verify();
|
||||
}
|
||||
|
||||
public void testRelationV21() {
|
||||
testRelationCommon(V21);
|
||||
}
|
||||
|
||||
public void testRelationV30() {
|
||||
testRelationCommon(V30);
|
||||
}
|
||||
|
||||
public void testV30HandleEscape() {
|
||||
final int version = V30;
|
||||
final int vcardType = V30;
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
resolver.buildContactEntry().buildData(StructuredName.CONTENT_ITEM_TYPE)
|
||||
.put(StructuredName.FAMILY_NAME, "\\")
|
||||
@@ -914,7 +961,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
.put(StructuredName.MIDDLE_NAME, ",")
|
||||
.put(StructuredName.PREFIX, "\n")
|
||||
.put(StructuredName.DISPLAY_NAME, "[<{Unescaped:Asciis}>]");
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
// Verifies the vCard String correctly escapes each character which must be escaped.
|
||||
verifier.addLineVerifier()
|
||||
.addExpected("N:\\\\;\\;;\\,;\\n;")
|
||||
@@ -960,7 +1007,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
verifier.verify();
|
||||
}
|
||||
|
||||
private void testPickUpNonEmptyContentValuesCommon(int version) {
|
||||
private void testPickUpNonEmptyContentValuesCommon(int vcardType) {
|
||||
ExportTestResolver resolver = new ExportTestResolver();
|
||||
ContactEntry entry = resolver.buildContactEntry();
|
||||
entry.buildData(StructuredName.CONTENT_ITEM_TYPE)
|
||||
@@ -975,7 +1022,7 @@ public class VCardExporterTests extends VCardTestsBase {
|
||||
.put(StructuredName.FAMILY_NAME, "family3");
|
||||
entry.buildData(StructuredName.CONTENT_ITEM_TYPE)
|
||||
.put(StructuredName.FAMILY_NAME, "family4");
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, version);
|
||||
VCardVerifier verifier = new VCardVerifier(resolver, vcardType);
|
||||
verifier.addPropertyNodesVerifierElem()
|
||||
.addNodeWithoutOrder("N", Arrays.asList("family2", "", "", "", ""))
|
||||
.addNodeWithoutOrder("FN", "family2");
|
||||
|
||||
Reference in New Issue
Block a user