View Single Post
  #22 (permalink)  
Old 10-08-2008, 07:29 AM
marinew marinew is offline
Senior Member
 
Posts: 51
Default

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;
	}
}
Reply With Quote