Author: solomax
Date: Fri Mar 22 05:16:31 2013
New Revision: 1459637

URL: http://svn.apache.org/r1459637
Log:
[OPENMEETINGS-574] ability to create events in calendar is added

Modified:
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/calendar/Appointment.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/AppointmentDialog.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java?rev=1459637&r1=1459636&r2=1459637&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java
 Fri Mar 22 05:16:31 2013
@@ -36,9 +36,11 @@ import javax.persistence.criteria.Predic
 import javax.persistence.criteria.Root;
 
 import org.apache.openmeetings.OpenmeetingsVariables;
+import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
 import org.apache.openmeetings.data.basic.dao.OmTimeZoneDao;
 import org.apache.openmeetings.data.calendar.management.MeetingMemberLogic;
 import org.apache.openmeetings.data.conference.InvitationManager;
+import org.apache.openmeetings.data.conference.dao.RoomDao;
 import org.apache.openmeetings.data.user.UserManager;
 import org.apache.openmeetings.data.user.dao.UsersDao;
 import org.apache.openmeetings.persistence.beans.basic.OmTimeZone;
@@ -75,6 +77,10 @@ public class AppointmentDao {
        @Autowired
        private UsersDao usersDao;
        @Autowired
+       private RoomDao roomDao;
+       @Autowired
+       private ConfigurationDao cfgDao;
+       @Autowired
        private InvitationManager invitationManager;
        @Autowired
        private MeetingMemberLogic meetingMemberLogic;
@@ -253,6 +259,25 @@ public class AppointmentDao {
                return null;
        }
 
+       public Appointment update(Appointment a, Long userId) {
+               a.setUserId(usersDao.get(userId));
+               Room r = a.getRoom();
+               if (r.getRooms_id() == null) {
+                       r.setName(a.getAppointmentName());
+                       
r.setNumberOfPartizipants(cfgDao.getConfValue("calendar.conference.rooms.default.size",
 Long.class, "50"));
+               }
+               roomDao.update(r, userId);
+               //FIXME meeting members
+               if (a.getAppointmentId() == null) {
+                       a.setStarttime(new Date());
+                       em.persist(a);
+               } else {
+                       a.setUpdatetime(new Date());
+                       a =     em.merge(a);
+               }
+               return a;
+       }
+       
        // 
----------------------------------------------------------------------------------------------------------------------------
 
        public Long updateAppointment(Appointment appointment) {

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/calendar/Appointment.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/calendar/Appointment.java?rev=1459637&r1=1459636&r2=1459637&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/calendar/Appointment.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/calendar/Appointment.java
 Fri Mar 22 05:16:31 2013
@@ -111,6 +111,7 @@ public class Appointment implements Seri
        @Element(name="users_id", data=true, required=false)
        private User userId;
 
+       // FIXME need to be renamed => inserted
        @Column(name = "starttime")
        private Date starttime;
        

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/AppointmentDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/AppointmentDialog.java?rev=1459637&r1=1459636&r2=1459637&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/AppointmentDialog.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/AppointmentDialog.java
 Fri Mar 22 05:16:31 2013
@@ -1,8 +1,10 @@
 package org.apache.openmeetings.web.components.user.calendar;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
+import org.apache.openmeetings.data.calendar.daos.AppointmentDao;
 import org.apache.openmeetings.data.calendar.daos.AppointmentReminderTypDao;
 import org.apache.openmeetings.data.conference.RoomManager;
 import org.apache.openmeetings.data.conference.dao.RoomDao;
@@ -34,17 +36,31 @@ import com.googlecode.wicket.jquery.ui.w
 public class AppointmentDialog extends AbstractFormDialog<Appointment> {
        private static final long serialVersionUID = 7553035786264113827L;
        private AppointmentForm form;
+       private DialogButton save = new 
DialogButton(WebSession.getString(813L));
+       private DialogButton cancel = new 
DialogButton(WebSession.getString(1130L));
+       private final CalendarPanel calendar;
        
-       public AppointmentDialog(String id, String title, IModel<Appointment> 
model) {
+       @Override
+       public void setModelObject(Appointment object) {
+               form.setModelObject(object);
+               super.setModelObject(object);
+       }
+       
+       public AppointmentDialog(String id, String title, CalendarPanel 
calendar, IModel<Appointment> model) {
                super(id, title, model, true);
+               this.calendar = calendar;
                form = new AppointmentForm("appForm", new 
CompoundPropertyModel<Appointment>(this.getModel()));
                add(form);
        }
 
        @Override
+       protected List<DialogButton> getButtons() {
+               return Arrays.asList(cancel, save);
+       }
+       
+       @Override
        protected DialogButton getSubmitButton() {
-               // TODO Auto-generated method stub
-               return null;
+               return save;
        }
 
        @Override
@@ -59,20 +75,53 @@ public class AppointmentDialog extends A
        
        @Override
        protected void onError(AjaxRequestTarget target) {
-               // TODO Auto-generated method stub
-               
+               // FIXME feedback
        }
 
        @Override
        protected void onSubmit(AjaxRequestTarget target) {
-               // TODO Auto-generated method stub
-               
+               
Application.getBean(AppointmentDao.class).update(form.getModelObject(), 
WebSession.getUserId());
+               // FIXME feedback
+               calendar.refresh(target);
        }
        
        private class AppointmentForm extends Form<Appointment> {
                private static final long serialVersionUID = 
-1764738237821487526L;
                private boolean createRoom = true;
 
+               @Override
+               protected void onModelChanged() {
+                       super.onModelChanged();
+                       
+                       Appointment a = getModelObject();
+                       
+                       List<AppointmentReminderTyps> remindTypes = 
getRemindTypes();
+                       if (a.getRemind() == null && !remindTypes.isEmpty()) {
+                               a.setRemind(remindTypes.get(0));
+                       }
+                       
+                       List<RoomType> roomTypes = getRoomTypes();
+                       if (a.getRoom() == null) {
+                               Room r = new Room();
+                               r.setAppointment(true);
+                               a.setRoom(r);
+                       }
+                       if (a.getRoom().getRoomtype() == null && 
!roomTypes.isEmpty()) {
+                               a.getRoom().setRoomtype(roomTypes.get(0));
+                       }
+                       if (a.getAppointmentId() == null) {
+                               java.util.Calendar start = 
WebSession.getCalendar();
+                               start.setTime(a.getAppointmentStarttime());
+                               java.util.Calendar end = 
WebSession.getCalendar();
+                               end.setTime(a.getAppointmentEndtime());
+                               
+                               if (start.equals(end)) {
+                                       end.add(java.util.Calendar.HOUR_OF_DAY, 
1);
+                                       a.setAppointmentEndtime(end.getTime());
+                               }
+                       }
+               }
+               
                public AppointmentForm(String id, IModel<Appointment> model) {
                        super(id, model);
                        setOutputMarkupId(true);
@@ -87,14 +136,16 @@ public class AppointmentDialog extends A
                        pwd.setOutputMarkupId(true);
                        add(pwd);
                        
+                       List<AppointmentReminderTyps> remindTypes = 
getRemindTypes();
                        add(new DropDownChoice<AppointmentReminderTyps>(
                                        "remind"
-                                       , 
Application.getBean(AppointmentReminderTypDao.class).getAppointmentReminderTypList()
+                                       , remindTypes
                                        , new 
ChoiceRenderer<AppointmentReminderTyps>("name", "typId")));
                        
+                       List<RoomType> roomTypes = getRoomTypes();
                        final DropDownChoice<RoomType> roomType = new 
DropDownChoice<RoomType>(
                                        "room.roomtype"
-                                       , 
Application.getBean(RoomManager.class).getAllRoomTypes()
+                                       , roomTypes
                                        , new ChoiceRenderer<RoomType>("name", 
"roomtypes_id"));
                        roomType.setEnabled(createRoom);
                        roomType.setOutputMarkupId(true);
@@ -132,6 +183,14 @@ public class AppointmentDialog extends A
                        return 
Boolean.TRUE.equals(getModelObject().getIsPasswordProtected());
                }
                
+               private List<RoomType> getRoomTypes() {
+                       return 
Application.getBean(RoomManager.class).getAllRoomTypes();
+               }
+               
+               private List<AppointmentReminderTyps> getRemindTypes() {
+                       return 
Application.getBean(AppointmentReminderTypDao.class).getAppointmentReminderTypList();
+               }
+               
                private List<Room> getRoomList() {
                        //FIXME need to be reviewed
                        List<Room> result = new ArrayList<Room>();

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java?rev=1459637&r1=1459636&r2=1459637&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/calendar/CalendarPanel.java
 Fri Mar 22 05:16:31 2013
@@ -35,19 +35,28 @@ import com.googlecode.wicket.jquery.ui.c
 
 public class CalendarPanel extends UserPanel {
        private static final long serialVersionUID = -6536379497642291437L;
+       private Calendar calendar;
        
        @Override
        public void onMenuPanelLoad(AjaxRequestTarget target) {
                target.appendJavaScript("calendarInit();");
        }
 
+       private AppointmentDao getDao() {
+               return Application.getBean(AppointmentDao.class);
+       }
+       
+       public void refresh(AjaxRequestTarget target) {
+               calendar.refresh(target);
+       }
+       
        public CalendarPanel(String id) {
                super(id);
                
                final Form<Date> form = new Form<Date>("form");
                add(form);
                
-               final AppointmentDialog dialog = new 
AppointmentDialog("appointment", WebSession.getString(815), Model.of(new 
Appointment()));
+               final AppointmentDialog dialog = new 
AppointmentDialog("appointment", WebSession.getString(815), this, Model.of(new 
Appointment()));
                add(dialog);
                
                Options options = new Options();
@@ -58,7 +67,7 @@ public class CalendarPanel extends UserP
                options.set("defaultEventMinutes", 60);
                options.set("timeFormat", "{agenda: 'HH:mm{ - HH:mm}', '': 
'HH(:mm)'}");
                
-               final Calendar calendar = new Calendar("calendar", new 
AppointmentModel(), options) {
+               calendar = new Calendar("calendar", new AppointmentModel(), 
options) {
                        private static final long serialVersionUID = 
8442068089963449950L;
                        
                        @Override
@@ -102,29 +111,26 @@ public class CalendarPanel extends UserP
                                return true;
                        }
                        
-                       @Override
-                       protected void onDayClick(AjaxRequestTarget target, 
Date date) {
-                               java.util.Calendar start = 
WebSession.getCalendar();
-                               start.setTime(date);
-                               java.util.Calendar end = 
WebSession.getCalendar();
-                               end.setTime(date);
-                               
-                               if (start.equals(end)) {
-                                       end.add(java.util.Calendar.HOUR_OF_DAY, 
1);
-                               }
-                               Appointment a = new Appointment();
-                               a.setAppointmentStarttime(start.getTime());
-                               a.setAppointmentEndtime(end.getTime());
-                               dialog.setModelObject(a);
-                               
-                               dialog.open(target);
-                       }
+                       //no need to override onDayClick
                        
                        @Override
                        protected void onSelect(AjaxRequestTarget target, Date 
start, Date end, boolean allDay) {
                                Appointment a = new Appointment();
-                               a.setAppointmentStarttime(start);
-                               a.setAppointmentEndtime(end);
+                               //FIXME seems like this check should be done 
for monthly view only
+                               if (start.equals(end)) {
+                                       java.util.Calendar now = 
WebSession.getCalendar();
+                                       java.util.Calendar cal = 
WebSession.getCalendar();
+                                       cal.setTime(start);
+                                       cal.set(java.util.Calendar.HOUR, 
now.get(java.util.Calendar.HOUR));
+                                       cal.set(java.util.Calendar.MINUTE, 
now.get(java.util.Calendar.MINUTE));
+                                       cal.set(java.util.Calendar.SECOND, 0);
+                                       cal.set(java.util.Calendar.MILLISECOND, 
0);
+                                       
a.setAppointmentStarttime(cal.getTime());
+                                       a.setAppointmentEndtime(cal.getTime());
+                               } else {
+                                       a.setAppointmentStarttime(start);
+                                       a.setAppointmentEndtime(end);
+                               }
                                dialog.setModelObject(a);
                                
                                dialog.open(target);
@@ -132,7 +138,7 @@ public class CalendarPanel extends UserP
                        
                        @Override
                        protected void onEventClick(AjaxRequestTarget target, 
int eventId) {
-                               Appointment a = 
Application.getBean(AppointmentDao.class).getAppointmentById((long)eventId);
+                               Appointment a = 
getDao().getAppointmentById((long)eventId);
                                dialog.setModelObject(a);
                                
                                dialog.open(target);
@@ -140,7 +146,7 @@ public class CalendarPanel extends UserP
                        
                        @Override
                        protected void onEventDrop(AjaxRequestTarget target, 
int eventId, long delta, boolean allDay) {
-                               AppointmentDao dao = 
Application.getBean(AppointmentDao.class);
+                               AppointmentDao dao = getDao();
                                Appointment a = 
dao.getAppointmentById((long)eventId);
                                
                                java.util.Calendar cal = 
WebSession.getCalendar();
@@ -158,7 +164,7 @@ public class CalendarPanel extends UserP
                        
                        @Override
                        protected void onEventResize(AjaxRequestTarget target, 
int eventId, long delta) {
-                               AppointmentDao dao = 
Application.getBean(AppointmentDao.class);
+                               AppointmentDao dao = getDao();
                                Appointment a = 
dao.getAppointmentById((long)eventId);
                                java.util.Calendar cal = 
WebSession.getCalendar();
                                cal.setTime(a.getAppointmentEndtime());


Reply via email to