1
2
3
4
5
6
7 package net.stff.ical.gui.struts.actions;
8
9 import java.io.IOException;
10 import java.util.Calendar;
11 import java.util.Date;
12 import java.util.Iterator;
13 import java.util.Vector;
14
15 import javax.servlet.ServletException;
16 import javax.servlet.http.HttpServletResponse;
17
18 import net.stff.ical.beans.CalendarData;
19 import net.stff.ical.beans.IEvent;
20 import net.stff.ical.beans.Recurrence;
21 import net.stff.ical.beans.VEvent;
22 import net.stff.ical.gui.struts.formbeans.RecurrenceFormBean;
23 import net.stff.util.SessionObject;
24
25 import org.apache.struts.action.ActionForm;
26 import org.apache.struts.action.ActionForward;
27 import org.apache.struts.action.ActionMapping;
28 import org.apache.struts.actions.DispatchAction;
29
30 /***
31 * @author buntekuh
32 *
33 */
34 public class EditRecurrenceAction extends DispatchAction {
35
36 public ActionForward edit(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
37
38
39
40 SessionObject so = SessionObject.get(request);
41 CalendarData data = (CalendarData)so.getObject("icalData", request);
42 data.setUser(request.getRemoteUser());
43
44 RecurrenceFormBean bean= (RecurrenceFormBean)form;
45 int freq= bean.getRecurrence().getFrequency();
46 bean.getEvent().setRecurs(bean.isRepeats());
47
48 if (freq == Recurrence.DAILY){
49 bean.getRecurrence().setByLabel(null);
50 }
51 else if (freq == Recurrence.WEEKLY){
52 bean.getRecurrence().setByLabel("BYDAY");
53 Vector v= new Vector(4);
54 StringBuffer byV= new StringBuffer();
55 if (bean.isMonday()) v.add("MO");
56 if (bean.isTuesday()) v.add("TU");
57 if (bean.isWednesday()) v.add("WE");
58 if (bean.isThursday()) v.add("TH");
59 if (bean.isFriday()) v.add("FR");
60 if (bean.isSaturday()) v.add("SA");
61 if (bean.isSunday()) v.add("SU");
62 Iterator i= v.iterator();
63 while (i.hasNext()){
64 if (byV.length() != 0) byV.append(",");
65 byV.append((String)i.next());
66 }
67 bean.getRecurrence().setByValue(byV.toString());
68 }
69 else if (freq == Recurrence.MONTHLY){
70 if ((bean.getByday() != null) && (!bean.getByday().equals("none"))){
71 bean.getRecurrence().setByLabel("BYDAY");
72 bean.getRecurrence().setByValue(bean.getByday());
73 }
74 else{
75 bean.getRecurrence().setByLabel(null);
76 }
77
78 }
79 else if (freq == Recurrence.YEARLY){
80 bean.getRecurrence().setByLabel(null);
81 }
82
83 String exc= bean.getExcept();
84 if ((exc != null) && (!exc.equals(" "))){
85 try{
86 String[] d= exc.split(VEvent.REGEX);
87 if (d.length == 3){
88 Calendar c= IEvent.getStartOfDay(new Date());
89 c.set(Integer.parseInt(d[2]), Integer.parseInt(d[1])-1, Integer.parseInt(d[0]));
90 bean.addException(c.getTime());
91 }
92 }
93 catch(NumberFormatException e){
94 System.out.println("Variable "+exc+" must represent Integers instead!");
95 }
96 bean.setExcept(null);
97 }
98 bean.setExcept("");
99 exc= bean.getExceptToRemove();
100 if ((exc != null) && (!exc.equals(" "))){
101 try{
102 String[] d= exc.split(VEvent.REGEX);
103 if (d.length == 3){
104 Calendar c= IEvent.getStartOfDay(new Date());
105 c.set(Integer.parseInt(d[2]), Integer.parseInt(d[1])-1, Integer.parseInt(d[0]));
106 bean.removeException(c.getTime());
107 }
108 }
109 catch(NumberFormatException e){
110 System.out.println("Variable "+exc+" must represent Integers instead!");
111 }
112 }
113 bean.setExceptToRemove("");
114 data.getManager().editEvent(bean.getEvent());
115
116
117
118
119
120 return mapping.findForward("success");
121 }
122
123 public ActionForward editrec(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
124 return mapping.findForward("success");
125 }
126
127
128 }