package org.infoglue.calendar.util; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Locale; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.infoglue.calendar.actions.CalendarAbstractAction; import com.sun.syndication.feed.synd.SyndContent; import com.sun.syndication.feed.synd.SyndEntry; public class CalendarHelper { private static Log log = LogFactory.getLog(CalendarHelper.class); public static List getDates(SyndEntry entry, String languageCode) { List dates = new ArrayList(); try { if(entry != null && entry.getContents() != null && entry.getContents().size() > 0) { SyndContent metaData = (SyndContent)entry.getContents().get(0); String content = metaData.getValue(); int indexStart = content.indexOf("<startDateTime>") + "<startDateTime>".length(); if(indexStart > -1) { int indexEnd = content.indexOf("</startDateTime>", indexStart); if(indexEnd > -1) { String startDateTimeString = content.substring(indexStart, indexEnd); dates.add(parseDate(startDateTimeString, "yyyy-MM-dd HH:mm", languageCode)); } } indexStart = content.indexOf("<endDateTime>") + "<endDateTime>".length(); if(indexStart > -1) { int indexEnd = content.indexOf("</endDateTime>", indexStart); if(indexEnd > -1) { String endDateTimeString = content.substring(indexStart, indexEnd); dates.add(parseDate(endDateTimeString, "yyyy-MM-dd HH:mm", languageCode)); } } } if(dates.size() < 2) { dates.add(new Date()); dates.add(new Date()); } } catch (Exception e) { e.printStackTrace(); } return dates; } public static Date parseDate(String dateString, String pattern, String languageCode) { if(dateString == null) return new Date(); Date date = new Date(); try { // Format the current time. SimpleDateFormat formatter = new SimpleDateFormat(pattern, new Locale(languageCode)); date = formatter.parse(dateString); } catch(Exception e) { log.info("Could not parse date:" + e.getMessage() + " - defaulting to now..."); } return date; } public static Date parseDate(String dateString, String pattern, Locale locale) { if(dateString == null) return new Date(); Date date = new Date(); try { // Format the current time. SimpleDateFormat formatter = new SimpleDateFormat(pattern, locale); date = formatter.parse(dateString); } catch(Exception e) { log.info("Could not parse date:" + e.getMessage() + " - defaulting to now..."); } return date; } }