diff options
author | Fred Quintana <fredq@google.com> | 2009-09-23 17:19:06 -0700 |
---|---|---|
committer | Fred Quintana <fredq@google.com> | 2009-09-24 13:53:14 -0700 |
commit | ce6c67253fd6a8b2b2320aacd0935c03b0aa650e (patch) | |
tree | 3e136212a548f8032643a05f7939b3fa759914c0 | |
parent | f91b52754c8ca935af7d700078de1e6ba2b14ca4 (diff) | |
download | gdata-ce6c67253fd6a8b2b2320aacd0935c03b0aa650e.tar.gz |
various fixes
8 files changed, 93 insertions, 4 deletions
diff --git a/src/com/google/wireless/gdata2/contacts/data/CalendarLink.java b/src/com/google/wireless/gdata2/contacts/data/CalendarLink.java index ad1f9d1..71fef94 100644 --- a/src/com/google/wireless/gdata2/contacts/data/CalendarLink.java +++ b/src/com/google/wireless/gdata2/contacts/data/CalendarLink.java @@ -14,12 +14,19 @@ public class CalendarLink extends ContactsElement { public static final byte TYPE_WORK = 2; public static final byte TYPE_FREE_BUSY = 3; - /** * default empty constructor */ public CalendarLink() {} + /** + * constructor that allows initialization + */ + public CalendarLink(String href, byte type, String label, boolean isPrimary) { + super(type, label, isPrimary); + setHRef(href); + } + private String href; /** diff --git a/src/com/google/wireless/gdata2/contacts/data/ContactEntry.java b/src/com/google/wireless/gdata2/contacts/data/ContactEntry.java index e17aaed..00d7b4c 100644 --- a/src/com/google/wireless/gdata2/contacts/data/ContactEntry.java +++ b/src/com/google/wireless/gdata2/contacts/data/ContactEntry.java @@ -49,6 +49,8 @@ public class ContactEntry extends Entry { private String birthday; private String billingInformation; + public static final String GENDER_MALE = "male"; + public static final String GENDER_FEMALE = "female"; public static final byte TYPE_PRIORITY_HIGH = 1; public static final byte TYPE_PRIORITY_NORMAL = 2; public static final byte TYPE_PRIORITY_LOW = 3; @@ -666,6 +668,11 @@ public class ContactEntry extends Entry { public void validate() throws ParseException { super.validate(); + if (gender != null && !GENDER_FEMALE.equals(gender) && !GENDER_MALE.equals(gender)) { + throw new ParseException( + String.format("invalid gender \"%s\", must be one of \"%s\" or \"%s\"", + gender, GENDER_FEMALE, GENDER_MALE)); + } for (Enumeration iter = emailAddresses.elements(); iter.hasMoreElements(); ) { ((EmailAddress) iter.nextElement()).validate(); } diff --git a/src/com/google/wireless/gdata2/contacts/data/ExternalId.java b/src/com/google/wireless/gdata2/contacts/data/ExternalId.java index 25c124a..f0c1bc2 100644 --- a/src/com/google/wireless/gdata2/contacts/data/ExternalId.java +++ b/src/com/google/wireless/gdata2/contacts/data/ExternalId.java @@ -26,6 +26,14 @@ public class ExternalId extends TypedElement { public ExternalId() {} /** + * constructor that allows initialization + */ + public ExternalId(String value, byte type, String label) { + super(type, label); + setValue(value); + } + + /** * The value of this external ID. */ public String getValue() { @@ -40,10 +48,20 @@ public class ExternalId extends TypedElement { } public void toString(StringBuffer sb) { + sb.append("ExternalId"); super.toString(sb); if (!StringUtils.isEmpty(value)) { sb.append(" value:").append(value); } } + + /** + * override default behaviour, an externalId has its own rules for type and label + */ + public void validate() throws ParseException { + if (value == null) { + throw new ParseException("the value must be set"); + } + } } diff --git a/src/com/google/wireless/gdata2/contacts/data/GroupMembershipInfo.java b/src/com/google/wireless/gdata2/contacts/data/GroupMembershipInfo.java index 70136d0..d328773 100644 --- a/src/com/google/wireless/gdata2/contacts/data/GroupMembershipInfo.java +++ b/src/com/google/wireless/gdata2/contacts/data/GroupMembershipInfo.java @@ -15,6 +15,14 @@ public class GroupMembershipInfo { */ public GroupMembershipInfo() {} + /** + * constructor that allows initializing the GroupMembershipInfo + */ + public GroupMembershipInfo(String groupId, boolean deleted) { + setGroup(groupId); + setDeleted(deleted); + } + public String getGroup() { return group; } diff --git a/src/com/google/wireless/gdata2/contacts/data/Jot.java b/src/com/google/wireless/gdata2/contacts/data/Jot.java index ce896a7..81a92b9 100644 --- a/src/com/google/wireless/gdata2/contacts/data/Jot.java +++ b/src/com/google/wireless/gdata2/contacts/data/Jot.java @@ -4,6 +4,7 @@ package com.google.wireless.gdata2.contacts.data; import com.google.wireless.gdata2.parser.ParseException; +import com.google.wireless.gdata2.data.StringUtils; /** @@ -18,14 +19,46 @@ public class Jot extends TypedElement { public static final byte TYPE_USER = 4; public static final byte TYPE_OTHER = 5; + private String value; + /** * default empty constructor */ public Jot() {} /** + * constructor that allows initialization + */ + public Jot(String value, byte type, String label) { + super(type, label); + setValue(value); + } + + /** * override default behaviour, a jot is not relying on either * label or type */ public void validate() throws ParseException {} + + /** + * The value of this Jot + */ + public String getValue() { + return this.value; + } + + /** + * The value of this Jot. + */ + public void setValue(String value) { + this.value = value; + } + + public void toString(StringBuffer sb) { + sb.append("Jot"); + super.toString(sb); + if (!StringUtils.isEmpty(value)) { + sb.append(" value:").append(value); + } + } } diff --git a/src/com/google/wireless/gdata2/contacts/data/Language.java b/src/com/google/wireless/gdata2/contacts/data/Language.java index e04c1e4..0ca6ae3 100644 --- a/src/com/google/wireless/gdata2/contacts/data/Language.java +++ b/src/com/google/wireless/gdata2/contacts/data/Language.java @@ -26,6 +26,14 @@ public class Language { */ public Language() {} + /** + * constructor that allows initialization + */ + public Language(String label, String code) { + setLabel(label); + setCode(code); + } + /** * A freeform name of a language. Must not be empty or all * whitespace. @@ -70,7 +78,7 @@ public class Language { public void toString(StringBuffer sb) { - sb.append("ExternalId"); + sb.append("Language"); if (!StringUtils.isEmpty(code)) { sb.append(" code:").append(code); } diff --git a/src/com/google/wireless/gdata2/contacts/parser/xml/XmlContactsGDataParser.java b/src/com/google/wireless/gdata2/contacts/parser/xml/XmlContactsGDataParser.java index bcc3469..47ef50a 100644 --- a/src/com/google/wireless/gdata2/contacts/parser/xml/XmlContactsGDataParser.java +++ b/src/com/google/wireless/gdata2/contacts/parser/xml/XmlContactsGDataParser.java @@ -445,7 +445,7 @@ public class XmlContactsGDataParser extends XmlGDataParser { } else if (XmlNametable.GC_LANGUAGE.equals(name)) { Language language = new Language(); language.setCode(parser.getAttributeValue(null /* ns */, XmlNametable.CODE)); - language.setLabel(parser.getAttributeValue(null /* */, XmlNametable.VALUE)); + language.setLabel(parser.getAttributeValue(null /* */, XmlNametable.LABEL)); contactEntry.addLanguage(language); } else if (XmlNametable.GC_MAIDENNAME.equals(name)) { contactEntry.setMaidenName(XmlUtils.extractChildText(parser)); diff --git a/src/com/google/wireless/gdata2/contacts/serializer/xml/XmlContactEntryGDataSerializer.java b/src/com/google/wireless/gdata2/contacts/serializer/xml/XmlContactEntryGDataSerializer.java index 2efb158..78e898a 100644 --- a/src/com/google/wireless/gdata2/contacts/serializer/xml/XmlContactEntryGDataSerializer.java +++ b/src/com/google/wireless/gdata2/contacts/serializer/xml/XmlContactEntryGDataSerializer.java @@ -151,7 +151,7 @@ public class XmlContactEntryGDataSerializer extends XmlEntryGDataSerializer { // now serialize simple properties serializeElement(serializer, entry.getDirectoryServer(), XmlNametable.GC_DIRECTORYSERVER); - serializeElement(serializer, entry.getGender(), XmlNametable.GC_GENDER); + serializeGenderElement(serializer, entry.getGender()); serializeElement(serializer, entry.getInitials(), XmlNametable.GC_INITIALS); serializeElement(serializer, entry.getMaidenName(), XmlNametable.GC_MAIDENNAME); serializeElement(serializer, entry.getMileage(), XmlNametable.GC_MILEAGE); @@ -508,6 +508,14 @@ public class XmlContactEntryGDataSerializer extends XmlEntryGDataSerializer { serializer.endTag(XmlContactsGDataParser.NAMESPACE_CONTACTS_URI, elementName); } + private static void serializeGenderElement(XmlSerializer serializer, String value) + throws IOException { + if (StringUtils.isEmpty(value)) return; + serializer.startTag(XmlContactsGDataParser.NAMESPACE_CONTACTS_URI, XmlNametable.GC_GENDER); + serializer.attribute(null /* ns */, XmlNametable.VALUE, value); + serializer.endTag(XmlContactsGDataParser.NAMESPACE_CONTACTS_URI, XmlNametable.GC_GENDER); + } + private static void serializeElement(XmlSerializer serializer, byte value, String elementName, Hashtable typeToRelMap) throws IOException { if (value == TypedElement.TYPE_NONE) return; |