1 19 20 package org.lucane.applications.reminder.lookup.calendar; 21 22 import java.sql.*; 23 import java.util.*; 24 25 import org.lucane.common.ConnectInfo; 26 import org.lucane.common.Logging; 27 import org.lucane.common.net.ObjectConnection; 28 import org.lucane.applications.reminder.*; 29 import org.lucane.applications.reminder.lookup.Lookup; 30 import org.lucane.server.ConnectInfoManager; 31 import org.lucane.server.Server; 32 33 public class CalendarLookup implements Lookup 34 { 35 public static final int LOOKUP_TIME = 15; 37 38 private ArrayList remindedEvents; 40 41 public CalendarLookup() 42 { 43 this.remindedEvents = new ArrayList(); 44 } 45 46 public void lookup() 47 { 48 long start, end; 49 50 Calendar cal = Calendar.getInstance(); 51 start = cal.getTimeInMillis(); 52 cal.add(Calendar.MINUTE, LOOKUP_TIME); 53 end = cal.getTimeInMillis(); 54 55 ArrayList events = new ArrayList(); 56 57 try { 58 events = getEvents(start, end); 59 } catch(Exception e) { 60 Logging.getLogger().severe("Unable to get events !"); 61 e.printStackTrace(); 62 } 63 64 for(int i=0;i<events.size();i++) 65 { 66 Event event = (Event)events.get(i); 67 Integer id = new Integer (event.getId()); 68 if(this.remindedEvents.contains(id)) 69 continue; 70 71 this.remindedEvents.add(id); 72 73 ReminderInfos infos = new ReminderInfos("org.lucane.applications.calendar", event.getTitle(), 74 event.getDescription()); 75 76 try { 78 ConnectInfo ci = ConnectInfoManager.getInstance().getConnectInfo(event.getOrganizer()); 79 if(ci != null) 80 { 81 ObjectConnection oc = Server.getInstance().sendMessageTo(ci, "org.lucane.applications.reminder", ""); 82 oc.write(infos); 83 } 85 } catch(Exception e) { 86 Logging.getLogger().warning("Unable to send reminder to organizer : " +event.getOrganizer()); 87 e.printStackTrace(); 88 } 89 90 Iterator attendees = event.getAttendees(); 92 while(attendees.hasNext()) 93 { 94 Attendee a = (Attendee)attendees.next(); 95 try { 96 ConnectInfo ci = ConnectInfoManager.getInstance().getConnectInfo(a.getUser()); 97 if(ci != null) 98 { 99 ObjectConnection oc = Server.getInstance().sendMessageTo(ci, "org.lucane.applications.reminder", ""); 100 oc.write(infos); 101 oc.close(); 102 } 103 } catch(Exception e) { 104 Logging.getLogger().warning("Unable to send reminder to attendee : " + a.getUser()); 105 e.printStackTrace(); 106 } 107 } 108 } 109 } 110 111 private ArrayList getEvents(long start, long end) 112 throws Exception 113 { 114 ArrayList events = new ArrayList(); 115 116 Connection c = Server.getInstance().getDBLayer().getConnection(); 117 Statement s = c.createStatement(); 118 119 String query = "SELECT * FROM CalEvents WHERE " 120 + "startTime >= " + start + " AND startTime <= " + end; 121 addEventsFromQuery(c, s, query, events); 122 123 s.close(); 124 c.close(); 125 126 return events; 127 } 128 129 private void addEventsFromQuery(Connection c, Statement s, String query, ArrayList events) 130 throws Exception 131 { 132 ResultSet r = s.executeQuery(query); 133 while(r.next()) 134 { 135 int id = r.getInt(1); 136 String title = r.getString(2); 137 String type = r.getString(3); 138 String organizer = r.getString(4); 139 boolean isPublic = (r.getInt(5) == 1); 140 boolean isEditable = (r.getInt(6) == 1); 141 long mystart = r.getLong(7); 142 long myend = r.getLong(8); 143 int recurrence = r.getInt(9); 144 String description = r.getString(10); 145 146 Event event = new Event(id, type, title, organizer, isPublic, 147 mystart, myend, recurrence, description); 148 loadAttendees(c, event); 149 events.add(event); 150 } 151 } 152 153 private void loadAttendees(Connection c, Event event) 154 throws Exception 155 { 156 ArrayList attendees = new ArrayList(); 157 Statement s = c.createStatement(); 158 159 String query = "SELECT * FROM CalAttendees WHERE eventId = " 160 + event.getId(); 161 162 ResultSet r = s.executeQuery(query); 163 while(r.next()) 164 { 165 String user = r.getString(2); 166 boolean mandatory = (r.getInt(3) == 1); 167 int status = r.getInt(4); 168 169 Attendee attendee = new Attendee(user, mandatory, status); 170 attendees.add(attendee); 171 } 172 173 event.setAttendees(attendees); 174 175 r.close(); 176 s.close(); 177 } 178 } 179 | Popular Tags |