summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFred Quintana <fredq@google.com>2009-09-23 17:19:06 -0700
committerFred Quintana <fredq@google.com>2009-09-24 13:53:14 -0700
commitce6c67253fd6a8b2b2320aacd0935c03b0aa650e (patch)
tree3e136212a548f8032643a05f7939b3fa759914c0
parentf91b52754c8ca935af7d700078de1e6ba2b14ca4 (diff)
downloadgdata-ce6c67253fd6a8b2b2320aacd0935c03b0aa650e.tar.gz
various fixes
-rw-r--r--src/com/google/wireless/gdata2/contacts/data/CalendarLink.java9
-rw-r--r--src/com/google/wireless/gdata2/contacts/data/ContactEntry.java7
-rw-r--r--src/com/google/wireless/gdata2/contacts/data/ExternalId.java18
-rw-r--r--src/com/google/wireless/gdata2/contacts/data/GroupMembershipInfo.java8
-rw-r--r--src/com/google/wireless/gdata2/contacts/data/Jot.java33
-rw-r--r--src/com/google/wireless/gdata2/contacts/data/Language.java10
-rw-r--r--src/com/google/wireless/gdata2/contacts/parser/xml/XmlContactsGDataParser.java2
-rw-r--r--src/com/google/wireless/gdata2/contacts/serializer/xml/XmlContactEntryGDataSerializer.java10
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;