Here is my ResponseParser.parseAppointment() method.
But you may also look at
nbobfin post that seems to be a better method (I didn't try it).
Code:
public class ResponseParser {
private final static Log log = LogFactory.getLog(ResponseParser.class);
/**
* Construction d'un objet Appointment à partir d'un arbre XML.
* @param app
* @return
* @throws ServiceException
* @throws LmcSoapClientException
*/
public static Appointment parseAppointment(Element app)
throws ServiceException, LmcSoapClientException {
Appointment result = new Appointment();
log.debug("Parse appointment : " + DomUtil.toString(app, false));
result.setId(DomUtil.getAttr(app, MailConstants.A_ID));
result.setLibelle(DomUtil.getAttr(app, MailConstants.A_NAME));
result.setInviteId(DomUtil.getAttr(app, MailConstants.A_CAL_INV_ID));
// On récupère l'attribut des tags, s'il existe
try {
String[] tags = DomUtil.getAttr(app, MailConstants.A_TAGS).split(
",");
result.setTagsId(Arrays.asList(tags));
} catch (ServiceException e) {
result.setTagsId(new ArrayList<String>());
}
Element inst = DomUtil.get(app, MailConstants.E_INSTANCE);
long debut = DomUtil.getAttrLong(inst, MailConstants.A_CAL_START_TIME);
long tzo = DomUtil.getAttrLong(inst, MailConstants.A_CAL_TZ_OFFSET, 3600000);
debut += tzo - TimeZone.getDefault().getOffset(debut);
result.setDateHeureDebut(new Date(debut));
long fin = DomUtil.getAttrLong(inst, MailConstants.A_CAL_END_TIME, 0);
if (fin != 0) {
fin += tzo - TimeZone.getDefault().getOffset(fin);
result.setDateHeureFin(new Date(fin));
} else {
long duree = DomUtil.getAttrLong(app, MailConstants.A_CAL_DURATION, 0);
result.setDateHeureFin(new Date(debut + duree - 1));
}
result.setFreeBusy(DomUtil.getAttr(app, MailConstants.A_APPT_FREEBUSY_ACTUAL));
if ("1".equals(DomUtil.getAttr(app, MailConstants.A_CAL_ALLDAY, "0"))) {
result.setJourneeEntiere(true);
} else {
result.setJourneeEntiere(false);
}
result.setLieu(DomUtil.getAttr(app, MailConstants.A_CAL_LOCATION));
// result.setFlags(app.attributeValue(MailService.A_FLAGS));
// result.setFolder(app.attributeValue(MailService.A_FOLDER));
log.debug("Appointment : " + result.toString());
return result;
}
}