summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSebastian Schmelzer2012-09-11 15:08:21 +0200
committerSebastian Schmelzer2012-09-11 15:08:21 +0200
commitf025cccd6ccdf4a2272991932bfed92264ff2045 (patch)
treeacc2d2144cfc4af5ee36cba0b6db9f367f8f9c1a /src
parentinitia commit (diff)
downloadinfoscreen-f025cccd6ccdf4a2272991932bfed92264ff2045.tar.gz
infoscreen-f025cccd6ccdf4a2272991932bfed92264ff2045.tar.xz
infoscreen-f025cccd6ccdf4a2272991932bfed92264ff2045.zip
calendar, ics import working
Diffstat (limited to 'src')
-rw-r--r--src/main/java/de/unifr/rz/infoscreen/IcsEventProvider.java99
-rw-r--r--src/main/java/de/unifr/rz/infoscreen/Index.java3
-rw-r--r--src/main/java/de/unifr/rz/infoscreen/component/DayCalendar.java67
-rw-r--r--src/main/java/de/unifr/rz/infoscreen/component/WeekCalendar.java137
-rw-r--r--src/main/resources/de/unifr/rz/infoscreen/component/DayCalendar.html19
-rw-r--r--src/main/resources/de/unifr/rz/infoscreen/component/NavbarDateTime.html3
-rw-r--r--src/main/resources/de/unifr/rz/infoscreen/component/WeekCalendar.html3
7 files changed, 237 insertions, 94 deletions
diff --git a/src/main/java/de/unifr/rz/infoscreen/IcsEventProvider.java b/src/main/java/de/unifr/rz/infoscreen/IcsEventProvider.java
new file mode 100644
index 0000000..6615227
--- /dev/null
+++ b/src/main/java/de/unifr/rz/infoscreen/IcsEventProvider.java
@@ -0,0 +1,99 @@
+package de.unifr.rz.infoscreen;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.joda.time.DateTime;
+
+import net.fortuna.ical4j.data.CalendarBuilder;
+import net.fortuna.ical4j.filter.Filter;
+import net.fortuna.ical4j.filter.PeriodRule;
+import net.fortuna.ical4j.filter.Rule;
+import net.fortuna.ical4j.model.Calendar;
+import net.fortuna.ical4j.model.Component;
+import net.fortuna.ical4j.model.Dur;
+import net.fortuna.ical4j.model.Period;
+import net.fortuna.ical4j.model.component.VEvent;
+import net.ftlines.wicket.fullcalendar.Event;
+import net.ftlines.wicket.fullcalendar.EventNotFoundException;
+import net.ftlines.wicket.fullcalendar.EventProvider;
+
+public class IcsEventProvider implements EventProvider {
+
+ private static final long serialVersionUID = 1L;
+
+ private String icsUrl;
+
+ public IcsEventProvider(String icsUrl) {
+ super();
+ this.icsUrl = icsUrl;
+ }
+
+ @Override
+ public Collection<Event> getEvents(DateTime start, DateTime end) {
+ Collection<Event> ret = null;
+ try {
+ ret = _getEvents(start, end);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return ret;
+ }
+
+ public Collection<Event> _getEvents(DateTime start, DateTime end) throws Exception {
+
+ List<Event> events = new ArrayList<Event>();
+
+ URL calendarSource = new URL(icsUrl);
+ CalendarBuilder builder = new CalendarBuilder();
+
+ Calendar calendar = builder.build(calendarSource.openStream());
+ java.util.Calendar today = java.util.Calendar.getInstance();
+ java.util.Calendar yesterday = today;
+ yesterday.add(java.util.Calendar.DATE, -1);
+ Period period = new Period(new net.fortuna.ical4j.model.DateTime(yesterday.getTime()), new Dur(7, 0, 0, 0));
+
+ ArrayList<Rule> rules = new ArrayList<Rule>();
+ rules.add(new PeriodRule(period));
+
+ Filter filter = new Filter(rules.toArray(new Rule[rules.size()]), Filter.MATCH_ALL);
+
+
+ @SuppressWarnings("unchecked")
+ Collection<VEvent> c = filter.filter(calendar.getComponents(Component.VEVENT));
+ Iterator<VEvent> i = c.iterator();
+
+ while (i.hasNext()) {
+ final VEvent event = i.next();
+ System.out.println("Start: " + event.getStartDate().getDate());
+ System.out.println("End: " + event.getEndDate().getDate());
+ final Event e = new Event();
+ e.setStart(new DateTime(event.getStartDate().getDate()));
+ e.setEnd(new DateTime(event.getEndDate().getDate()));
+ e.setTitle(event.getSummary().getValue());
+// System.out.println(event.toString());
+ events.add(e);
+ }
+
+ return events;
+ }
+
+ @Override
+ public Event getEventForId(String id) throws EventNotFoundException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public String getIcsUrl() {
+ return icsUrl;
+ }
+
+ public void setIcsUrl(String icsUrl) {
+ this.icsUrl = icsUrl;
+ }
+
+}
diff --git a/src/main/java/de/unifr/rz/infoscreen/Index.java b/src/main/java/de/unifr/rz/infoscreen/Index.java
index 9f872f8..3cedc2e 100644
--- a/src/main/java/de/unifr/rz/infoscreen/Index.java
+++ b/src/main/java/de/unifr/rz/infoscreen/Index.java
@@ -11,6 +11,7 @@ import org.apache.wicket.markup.head.JavaScriptReferenceHeaderItem;
import de.unifr.rz.infoscreen.component.NavbarDateTime;
import de.unifr.rz.infoscreen.component.WeekCalendar;
+import de.unifr.rz.infoscreen.component.DayCalendar;
public class Index extends SimpleBootstrapPage {
@@ -28,7 +29,7 @@ public class Index extends SimpleBootstrapPage {
setPageTitle("Infoscreen");
setPageSubTitle("Videokonferenzraum");
- setMainContent(new WeekCalendar("content"));
+ setMainContent(new DayCalendar("content", new IcsEventProvider("http://www.verwaltung.uni-freiburg.de/lsfserver/rds?state=verpublish&status=transform&vmfile=no&termine=165887,165887,192598,192599,200957&moduleCall=iCalendarPlan&publishConfFile=reports&publishSubDir=veranstaltung")));
}
diff --git a/src/main/java/de/unifr/rz/infoscreen/component/DayCalendar.java b/src/main/java/de/unifr/rz/infoscreen/component/DayCalendar.java
new file mode 100644
index 0000000..5ad39fc
--- /dev/null
+++ b/src/main/java/de/unifr/rz/infoscreen/component/DayCalendar.java
@@ -0,0 +1,67 @@
+package de.unifr.rz.infoscreen.component;
+
+import java.util.Locale;
+
+import net.ftlines.wicket.fullcalendar.Config;
+import net.ftlines.wicket.fullcalendar.EventProvider;
+import net.ftlines.wicket.fullcalendar.EventSource;
+import net.ftlines.wicket.fullcalendar.FullCalendar;
+
+import org.apache.wicket.markup.html.panel.Panel;
+import org.joda.time.LocalTime;
+
+public class DayCalendar extends Panel {
+
+ private static final long serialVersionUID = 1L;
+ private EventProvider ep;
+
+ public DayCalendar(String id, EventProvider ep) {
+ super(id);
+ this.setEp(ep);
+
+ Config ajaxCalendarConfig = new Config();
+
+ ajaxCalendarConfig.setSelectable(false);
+ ajaxCalendarConfig.setSelectHelper(false);
+
+ ajaxCalendarConfig.getHeader().setLeft("");
+ ajaxCalendarConfig.getHeader().setCenter("");
+ ajaxCalendarConfig.getHeader().setRight("");
+ ajaxCalendarConfig.setDefaultView("agendaDay");
+ ajaxCalendarConfig.setAllDaySlot(false);
+
+ ajaxCalendarConfig.setColumnFormatWeek("dddd, d.M.");
+ ajaxCalendarConfig.setColumnFormatDay("dddd, d.M.");
+ ajaxCalendarConfig.setLocale(Locale.GERMANY);
+
+ ajaxCalendarConfig.setMinTime(new LocalTime(6, 30));
+ ajaxCalendarConfig.setMaxTime(new LocalTime(23, 00));
+
+ EventSource content = new EventSource();
+ content.setEventsProvider(ep);
+
+ ajaxCalendarConfig.add(content);
+
+ ajaxCalendarConfig.enableTimeline();
+
+ FullCalendar ajaxCalendar = new FullCalendar("calendar",
+ ajaxCalendarConfig) {
+
+ private static final long serialVersionUID = 1L;
+
+ };
+
+ ajaxCalendar.setMarkupId("calendar");
+ add(ajaxCalendar);
+
+ }
+
+ public EventProvider getEp() {
+ return ep;
+ }
+
+ public void setEp(EventProvider ep) {
+ this.ep = ep;
+ }
+
+}
diff --git a/src/main/java/de/unifr/rz/infoscreen/component/WeekCalendar.java b/src/main/java/de/unifr/rz/infoscreen/component/WeekCalendar.java
index 3d08835..0011b49 100644
--- a/src/main/java/de/unifr/rz/infoscreen/component/WeekCalendar.java
+++ b/src/main/java/de/unifr/rz/infoscreen/component/WeekCalendar.java
@@ -1,26 +1,10 @@
package de.unifr.rz.infoscreen.component;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
import java.util.Locale;
-import net.fortuna.ical4j.data.CalendarBuilder;
-import net.fortuna.ical4j.data.ParserException;
-import net.fortuna.ical4j.filter.Filter;
-import net.fortuna.ical4j.filter.PeriodRule;
-import net.fortuna.ical4j.filter.Rule;
-import net.fortuna.ical4j.model.Calendar;
-import net.fortuna.ical4j.model.Component;
-import net.fortuna.ical4j.model.DateTime;
-import net.fortuna.ical4j.model.Dur;
-import net.fortuna.ical4j.model.Period;
-import net.fortuna.ical4j.model.component.VEvent;
-
import net.ftlines.wicket.fullcalendar.Config;
+import net.ftlines.wicket.fullcalendar.EventProvider;
+import net.ftlines.wicket.fullcalendar.EventSource;
import net.ftlines.wicket.fullcalendar.FullCalendar;
import org.apache.wicket.markup.html.panel.Panel;
@@ -29,85 +13,54 @@ import org.joda.time.LocalTime;
public class WeekCalendar extends Panel {
private static final long serialVersionUID = 1L;
+ private EventProvider ep;
- public WeekCalendar(String id) {
+ public WeekCalendar(String id, EventProvider ep) {
super(id);
+ this.setEp(ep);
+
+ Config ajaxCalendarConfig = new Config();
+
+ ajaxCalendarConfig.setSelectable(false);
+ ajaxCalendarConfig.setSelectHelper(false);
+
+ ajaxCalendarConfig.getHeader().setLeft("");
+ ajaxCalendarConfig.getHeader().setCenter("");
+ ajaxCalendarConfig.getHeader().setRight("");
+ ajaxCalendarConfig.setDefaultView("agendaWeek");
+ ajaxCalendarConfig.setAllDaySlot(false);
+
+ ajaxCalendarConfig.setColumnFormatWeek("dddd, d.M.");
+ ajaxCalendarConfig.setLocale(Locale.GERMANY);
+
+ ajaxCalendarConfig.setMinTime(new LocalTime(6, 30));
+ ajaxCalendarConfig.setMaxTime(new LocalTime(23, 00));
+
+ EventSource content = new EventSource();
+ content.setEventsProvider(ep);
+
+ ajaxCalendarConfig.add(content);
- try {
- URL calendarSource = new URL("http://www.verwaltung.uni-freiburg.de/lsfserver/rds?state=verpublish&status=transform&vmfile=no&termine=165887,165887,192598,192599,200957&moduleCall=iCalendarPlan&publishConfFile=reports&publishSubDir=veranstaltung");
- System.out.println(System.getProperty("user.dir"));
- CalendarBuilder builder = new CalendarBuilder();
-
- try {
- Calendar calendar = builder.build(calendarSource.openStream());
- java.util.Calendar today = java.util.Calendar.getInstance();
- java.util.Calendar yesterday = today;
- yesterday.add(java.util.Calendar.DATE, -1);
- Period period = new Period(new DateTime(yesterday.getTime()), new Dur(7, 0, 0, 0));
-
- ArrayList<Rule> rules = new ArrayList<Rule>();
- rules.add(new PeriodRule(period));
-
- Filter filter = new Filter(rules.toArray(new Rule[rules.size()]), Filter.MATCH_ALL);
-
-
- @SuppressWarnings("unchecked")
- Collection<VEvent> c = filter.filter(calendar.getComponents(Component.VEVENT));
- Iterator<VEvent> i = c.iterator();
-
- Config ajaxCalendarConfig = new Config();
-
- ajaxCalendarConfig.setSelectable(false);
- ajaxCalendarConfig.setSelectHelper(false);
-
- ajaxCalendarConfig.getHeader().setLeft("");
- ajaxCalendarConfig.getHeader().setCenter("");
- ajaxCalendarConfig.getHeader().setRight("");
- ajaxCalendarConfig.setDefaultView("agendaWeek");
- ajaxCalendarConfig.setAllDaySlot(false);
-
- ajaxCalendarConfig.setColumnFormatWeek("dddd, d.M.");
- ajaxCalendarConfig.setDateNamesForLocale(Locale.GERMANY);
-
- ajaxCalendarConfig.setTimeFormatDefault("H(:mm)");
- ajaxCalendarConfig.setTimeFormatAgenda("H:mm{ - H:mm}");
-
- ajaxCalendarConfig.setAxisFormat("H:mm");
-
- ajaxCalendarConfig.setMinTime(new LocalTime(6, 30));
- ajaxCalendarConfig.setMaxTime(new LocalTime(23, 00));
-
-
- FullCalendar ajaxCalendar = new FullCalendar("calendar", ajaxCalendarConfig) {
-
- private static final long serialVersionUID = 1L;
-
- };
-
- ajaxCalendar.setMarkupId("calendar");
- add(ajaxCalendar);
-
-
- while (i.hasNext()) {
- final VEvent event = i.next();
- System.out.println("Start: " + event.getStartDate().getDate());
- System.out.println("End: " + event.getEndDate().getDate());
- }
-
-
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (ParserException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- } catch (MalformedURLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
+ ajaxCalendarConfig.enableTimeline();
+ FullCalendar ajaxCalendar = new FullCalendar("calendar",
+ ajaxCalendarConfig) {
+
+ private static final long serialVersionUID = 1L;
+
+ };
+
+ ajaxCalendar.setMarkupId("calendar");
+ add(ajaxCalendar);
+
+ }
+
+ public EventProvider getEp() {
+ return ep;
+ }
+ public void setEp(EventProvider ep) {
+ this.ep = ep;
}
}
diff --git a/src/main/resources/de/unifr/rz/infoscreen/component/DayCalendar.html b/src/main/resources/de/unifr/rz/infoscreen/component/DayCalendar.html
new file mode 100644
index 0000000..12d9b57
--- /dev/null
+++ b/src/main/resources/de/unifr/rz/infoscreen/component/DayCalendar.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html xmlns:wicket="http://wicket.apache.org">
+<head>
+<title>WeekCalendar</title>
+<wicket:head>
+<style type="text/css">
+ #calendar {
+ padding:20px;
+ }
+</style>
+</wicket:head>
+
+</head>
+<body>
+ <wicket:panel>
+ <div wicket:id="calendar"></div>
+ </wicket:panel>
+</body>
+</html> \ No newline at end of file
diff --git a/src/main/resources/de/unifr/rz/infoscreen/component/NavbarDateTime.html b/src/main/resources/de/unifr/rz/infoscreen/component/NavbarDateTime.html
index f893959..4956334 100644
--- a/src/main/resources/de/unifr/rz/infoscreen/component/NavbarDateTime.html
+++ b/src/main/resources/de/unifr/rz/infoscreen/component/NavbarDateTime.html
@@ -5,7 +5,8 @@
<wicket:head>
<style type="text/css">
.navDateTime {
- font-size: 20px;
+ line-height: 20px;
+ font-size: 18px;
font-weight: 200;
padding: 10px 20px;
padding-right: 0;
diff --git a/src/main/resources/de/unifr/rz/infoscreen/component/WeekCalendar.html b/src/main/resources/de/unifr/rz/infoscreen/component/WeekCalendar.html
index e9ea863..12d9b57 100644
--- a/src/main/resources/de/unifr/rz/infoscreen/component/WeekCalendar.html
+++ b/src/main/resources/de/unifr/rz/infoscreen/component/WeekCalendar.html
@@ -4,6 +4,9 @@
<title>WeekCalendar</title>
<wicket:head>
<style type="text/css">
+ #calendar {
+ padding:20px;
+ }
</style>
</wicket:head>