package de.flower.rmt.service.mail;
import de.flower.common.util.IO;
import de.flower.rmt.model.db.entity.Venue;
import de.flower.rmt.model.db.entity.event.Event;
import org.joda.time.DateTime;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
/**
* @author flowerrrr
*/
public class ICalendarHelper {
public static final String CHARSET = IO.CharacterEncoding.UTF8.toString();
/**
* 'text/calendar' has problems with non-ascii characters when sending mail attachments.
*/
public static final String CONTENT_TYPE_MAIL = "application/octet-stream";
public static final String CONTENT_TYPE_HTTP = "text/calendar; charset=" + CHARSET;
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd'T'HHmmss");
private Event event;
public ICalendarHelper(final Event event) {
this.event = event;
}
public String getUid() {
return event.getId() + ".das-tool.flower.de";
}
public String getDtstart() {
return sdf.format(event.getDateTimeAsDate());
}
public String getDtend() {
DateTime end = event.getDateTimeEnd();
return sdf.format(end.toDate());
}
public String getDtstamp() {
return sdf.format(new DateTime().toDate());
}
public String getSummary() {
return event.getTeam().getName() + " - " + event.getSummary();
}
public String getDescription(final String eventDetails) {
return sanitize(eventDetails);
}
public String getLocation() {
Venue venue = event.getVenue();
return venue == null ? "" : venue.getName();
}
public String sanitize(String in) {
// replace newlines with literal \n
return in.replace("\r", "").replace("\n", "\\n");
}
public static byte[] getBytes(final String iCalendar) {
try {
return iCalendar.getBytes(CHARSET);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
}