From 94b924963d7927fba0bafa268c8477de2794a6da Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Fri, 27 May 2016 15:50:00 +0200 Subject: Adds relevant data from antares --- src/CAMSIParser.java | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 src/CAMSIParser.java (limited to 'src/CAMSIParser.java') diff --git a/src/CAMSIParser.java b/src/CAMSIParser.java new file mode 100644 index 0000000..b074b16 --- /dev/null +++ b/src/CAMSIParser.java @@ -0,0 +1,125 @@ +import java.util.TimeZone; +import java.util.Calendar; +import java.util.Locale; + +import java.util.regex.Pattern; +import java.util.regex.Matcher; + +import java.io.BufferedReader; + +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamException; + +/** + * This class stores the incoming data from XML. + * It is needed because of the stream nature of the XML parser. + **/ +public class CAMSIParser +{ + final static Pattern event_pattern; + + static + { + event_pattern = Pattern.compile + ( + "[^<]*<[^>]*>([0-9]+)/([0-9]+)/([0-9]+)]*>" + + "<[^>]*>([0-9]+):([0-9]+)]*>" + + "<[^>]*>([0-9]+):([0-9]+)]*>" + + "<[^>]*>([^<]*)]*>" // 8th + + "<[^>]*>([^<]*)]*>" + + "<[^>]*>([^<]*)]*>" + ); + } + + public static void parse + ( + final BufferedReader reader, + final Group group, + final String uid_prefix + ) + throws Exception + { + int uid; + String line; + Matcher matcher; + + uid = 0; + + while (reader.ready()) + { + line = reader.readLine(); + matcher = event_pattern.matcher(line); + + if (matcher.matches()) + { + final Event e; + final java.util.Calendar c_start, c_end; + + c_start = java.util.Calendar.getInstance + ( + TimeZone.getTimeZone("Europe/Paris"), + Locale.FRENCH + ); + + c_start.set + ( + java.util.Calendar.DAY_OF_MONTH, + Integer.parseInt(matcher.group(1)) + ); + + c_start.set + ( + java.util.Calendar.MONTH, + /* It's Java... don't question it. */ + (Integer.parseInt(matcher.group(2)) - 1) + ); + + c_start.set + ( + java.util.Calendar.YEAR, + Integer.parseInt(matcher.group(3)) + ); + + c_start.set + ( + java.util.Calendar.HOUR_OF_DAY, + Integer.parseInt(matcher.group(4)) + ); + + c_start.set + ( + java.util.Calendar.MINUTE, + Integer.parseInt(matcher.group(5)) + ); + + + c_end = (java.util.Calendar) c_start.clone(); + + c_end.set + ( + java.util.Calendar.HOUR_OF_DAY, + Integer.parseInt(matcher.group(6)) + ); + + c_end.set + ( + java.util.Calendar.MINUTE, + Integer.parseInt(matcher.group(7)) + ); + + e = new Event(); + + e.set_start_time(c_start); + e.set_end_time(c_end); + e.set_name(matcher.group(8)); + e.add_speaker(matcher.group(9)); + e.add_location(matcher.group(10)); + e.set_uid(uid_prefix + (uid++)); + + group.add_event(e); + } + } + + reader.close(); + } +} -- cgit v1.2.3-70-g09d2