summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/Event.java')
-rw-r--r--src/Event.java286
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);
+ }
+}