| summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'src/Event.java')
| -rw-r--r-- | src/Event.java | 286 |
1 files changed, 286 insertions, 0 deletions
diff --git a/src/Event.java b/src/Event.java new file mode 100644 index 0000000..4a56475 --- /dev/null +++ b/src/Event.java @@ -0,0 +1,286 @@ +import java.util.ArrayList; +import java.util.List; + +import java.util.Locale; +import java.util.Calendar; +import java.util.TimeZone; + +public class Event +{ + private final List<String> locations; + private final List<String> speakers; + private final List<String> attendees; + private String name; + private String category; + private String uid; + private String description; + private java.util.Calendar start_time; + private java.util.Calendar end_time; + private java.util.Calendar creation_time; + + public Event () + { + locations = new ArrayList<String>(); + speakers = new ArrayList<String>(); + attendees = new ArrayList<String>(); + + name = null; + category = null; + description = null; + start_time = null; + end_time = null; + + creation_time = + java.util.Calendar.getInstance + ( + TimeZone.getTimeZone("Europe/Paris"), + Locale.FRENCH + ); + } + + public String get_name () + { + return name; + } + + public void set_name (final String val) + { + if (val != null) + { + name = + val.trim + ( + ).replaceAll + ( + "(?<!\\\\),", + "\\\\," + ).replaceAll + ( + "(?<!\\\\);", + "\\\\;" + ); + } + } + + public void set_description (final String val) + { + if (val != null) + { + description = + val.replaceAll + ( + "(?<!\\\\),", + "\\\\," + ).replaceAll + ( + "(?<!\\\\);", + "\\\\;" + ); + } + } + + public void set_category (final String val) + { + if (val != null) + { + category = val; + } + } + + public void set_uid (final String val) + { + if (val != null) + { + uid = val; + } + } + + public void set_start_time (final java.util.Calendar val) + { + if (val != null) + { + start_time = val; + } + } + + public void set_end_time (final java.util.Calendar val) + { + if (val != null) + { + end_time = val; + } + } + + public void add_location (final String str) + { + locations.add(str); + } + + public void add_speaker (final String str) + { + speakers.add(str); + } + + public void add_attendee (final String str) + { + attendees.add(str); + } + + public String toString() + { + final StringBuilder sb; + final String creation_time_str; + + sb = new StringBuilder(); + + creation_time_str = get_time(creation_time); + + sb.append("BEGIN:VEVENT"); + + sb.append("\r\nSUMMARY:"); + + if (category != null) + { + sb.append("["); + sb.append(category); + sb.append("] "); + } + + if (name != null) + { + sb.append(name); + } + + if (!locations.isEmpty()) + { + sb.append("\r\nLOCATION:"); + + for (final String s: locations) + { + sb.append(s); + sb.append("\\n"); + } + + sb.delete(sb.length() - 2, sb.length()); + } + + sb.append("\r\nDESCRIPTION:"); + + if (description != null) + { + sb.append(description); + + if + ( + !speakers.isEmpty() + || !attendees.isEmpty() + ) + { + sb.append("\\n"); + } + } + if (!speakers.isEmpty()) + { + + for (final String s: speakers) + { + sb.append("[Speaker] "); + sb.append(s); + sb.append("\\n"); + } + + if (attendees.isEmpty()) + { + sb.delete(sb.length() - 2, sb.length()); + } + } + + if (!attendees.isEmpty()) + { + + for (final String s: attendees) + { + sb.append("[Attendee] "); + sb.append(s); + sb.append("\\n"); + } + + sb.delete(sb.length() - 2, sb.length()); + } + + + sb.append("\r\nUID:"); + sb.append(uid); + + sb.append("\r\nCREATED:"); + sb.append(creation_time_str); + + sb.append("\r\nLAST-MODIFIED:"); + sb.append(creation_time_str); + + sb.append("\r\nDTSTART:"); + sb.append(get_time(start_time)); + + sb.append("\r\nDTEND:"); + sb.append(get_time(end_time)); + + sb.append("\r\nSTATUS:CONFIRMED"); + + sb.append("\r\nSEQUENCE:0"); + + sb.append("\r\nTRANSP:OPAQUE"); + + sb.append("\r\nEND:VEVENT"); + + return sb.toString(); + } + + private String get_time (final java.util.Calendar cal) + { + final StringBuilder sb; + int val; + + sb = new StringBuilder(); + + sb.append(cal.get(java.util.Calendar.YEAR)); + + val = cal.get(java.util.Calendar.MONTH) + 1; /* Java... don't ask... */ + + if (val < 10) + { + sb.append("0"); + } + + sb.append(val); + + append_two_digit(sb, cal, java.util.Calendar.DAY_OF_MONTH); + + sb.append("T"); + + append_two_digit(sb, cal, java.util.Calendar.HOUR_OF_DAY); + append_two_digit(sb, cal, java.util.Calendar.MINUTE); + + sb.append("00"); + + return sb.toString(); + } + + private void append_two_digit + ( + final StringBuilder sb, + final java.util.Calendar cal, + final int val_id + ) + { + final int val; + + val = cal.get(val_id); + + if (val < 10) + { + sb.append("0"); + } + + sb.append(val); + } +} |


