1 package org.columba.calendar.parser; 19 20 import java.io.File ; 21 import java.io.FileOutputStream ; 22 import java.io.IOException ; 23 import java.net.URISyntaxException ; 24 import java.text.ParseException ; 25 import java.util.Iterator ; 26 27 import net.fortuna.ical4j.data.CalendarOutputter; 28 import net.fortuna.ical4j.model.Calendar; 29 import net.fortuna.ical4j.model.DateTime; 30 import net.fortuna.ical4j.model.ParameterList; 31 import net.fortuna.ical4j.model.Property; 32 import net.fortuna.ical4j.model.PropertyFactory; 33 import net.fortuna.ical4j.model.PropertyFactoryImpl; 34 import net.fortuna.ical4j.model.component.VEvent; 35 import net.fortuna.ical4j.model.property.CalScale; 36 import net.fortuna.ical4j.model.property.ProdId; 37 import net.fortuna.ical4j.model.property.Version; 38 39 import org.columba.calendar.model.api.IComponent; 40 import org.columba.calendar.model.api.IComponentInfo; 41 import org.columba.calendar.model.api.IEvent; 42 import org.columba.calendar.store.api.ICalendarStore; 43 44 public class CalendarExporter { 45 46 public CalendarExporter() { 47 super(); 48 } 49 50 public void exportCalendar(File file, String calendarId, 51 ICalendarStore store) throws Exception { 52 FileOutputStream fout = new FileOutputStream (file); 53 54 CalendarOutputter outputter = new CalendarOutputter(); 55 outputter.setValidating(false); 56 57 Calendar calendar = new Calendar(); 58 calendar.getProperties().add( 59 new ProdId("-//Columba Project//iCal4j 1.0//EN")); 60 calendar.getProperties().add(Version.VERSION_2_0); 61 calendar.getProperties().add(CalScale.GREGORIAN); 62 63 Iterator <String > it = store.getIdIterator(calendarId); 64 while (it.hasNext()) { 65 String id = it.next(); 66 IComponentInfo c = store.get(id); 67 if (c.getType() == IComponent.TYPE.EVENT) { 68 IEvent event = (IEvent) c; 69 70 VEvent v = createVEvent(event); 71 72 calendar.getComponents().add(v); 73 } 74 75 } 76 outputter.output(calendar, fout); 77 } 78 79 public void exportSingleEvent(File file, IComponentInfo component, 80 ICalendarStore store) throws Exception { 81 FileOutputStream fout = new FileOutputStream (file); 82 83 CalendarOutputter outputter = new CalendarOutputter(); 84 outputter.setValidating(true); 85 86 Calendar calendar = new Calendar(); 87 calendar.getProperties().add( 88 new ProdId("-//Columba Project//iCal4j 1.0//EN")); 89 calendar.getProperties().add(Version.VERSION_2_0); 90 calendar.getProperties().add(CalScale.GREGORIAN); 91 92 93 if (component.getType() == IComponent.TYPE.EVENT) { 94 IEvent event = (IEvent) component; 95 96 VEvent v = createVEvent(event); 97 98 calendar.getComponents().add(v); 99 } 100 101 outputter.output(calendar, fout); 102 } 103 104 111 private VEvent createVEvent(IEvent event) throws IOException , 112 URISyntaxException , ParseException { 113 PropertyFactory factory = PropertyFactoryImpl.getInstance(); 114 java.util.Calendar start = event.getDtStart(); 115 java.util.Calendar end = event.getDtEnd(); 116 String summary = event.getSummary(); 118 String location = event.getLocation(); 119 String uid = event.getId(); 120 121 VEvent v = new VEvent(new DateTime(start.getTime()), 122 new DateTime(end.getTime()), summary); 123 124 126 138 if (location != null) 139 v.getProperties().add( 140 factory.createProperty(Property.LOCATION, 141 new ParameterList(), location)); 142 143 if (uid != null) 144 v.getProperties().add( 145 factory.createProperty(Property.UID, new ParameterList(), 146 uid)); 147 return v; 148 } 149 } 150 | Popular Tags |