Author: vdegtyarev
Date: Wed Jul 24 09:56:25 2013
New Revision: 1506476

URL: http://svn.apache.org/r1506476
Log:
OPENMEETINGS-714 is fixed

Modified:
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentDao.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/calendar/Appointment.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/calendar/MeetingMember.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/calendar/MeetingMemberDialog.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=1506476&r1=1506475&r2=1506476&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
 Wed Jul 24 09:56:25 2013
@@ -51,8 +51,10 @@ import org.apache.openmeetings.persisten
 import org.apache.openmeetings.persistence.beans.calendar.MeetingMember;
 import org.apache.openmeetings.persistence.beans.room.Room;
 import org.apache.openmeetings.persistence.beans.user.User;
+import org.apache.openmeetings.persistence.beans.user.User.Type;
 import org.apache.openmeetings.utils.math.CalendarPatterns;
 import org.apache.openmeetings.utils.math.TimezoneUtil;
+import org.apache.openmeetings.web.app.WebSession;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -260,26 +262,14 @@ public class AppointmentDao {
        }
 
        public Appointment update(Appointment a, Long userId) {
-               a.setUserId(usersDao.get(userId));
+               User u = usersDao.get(userId);
+               a.setUserId(u);
                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);
-               if (a.getMeetingMember() != null){
-                       for (MeetingMember mm : a.getMeetingMember()){
-                               if (mm.getMeetingMemberId() == null){
-                                       if (mm.getUserid().getUser_id() == 
null){
-                                               User u = mm.getUserid();
-                                               em.persist(u);
-                                       }
-                                       em.persist(mm);
-                               } else {
-                                       em.merge(mm);
-                               }
-                       }
-               }
                if (a.getAppointmentId() == null) {
                        a.setStarttime(new Date());
                        em.persist(a);
@@ -287,6 +277,29 @@ public class AppointmentDao {
                        a.setUpdatetime(new Date());
                        a =     em.merge(a);
                }
+               // update meeting members
+               List<MeetingMember> mmList = a.getMeetingMember();
+               if ( mmList != null){
+                       for (MeetingMember mm : mmList){
+                               Long usrId = mm.getUserid().getUser_id();
+                               if (usrId == null){
+                                       usrId = 
userManager.addUser(mm.getUserid());
+                               }
+                               //TODO base url should be changed
+                               String urlPostfix = "";
+                               if (mm.getUserid().getType() == Type.contact) {
+                                       urlPostfix = "swf";
+                               } else {
+                                       urlPostfix = "#room/" + r.getRooms_id();
+                               }
+                                       
+                               meetingMemberLogic.addMeetingMemberInvitation(
+                                                       mm, a, 
WebSession.get().getBaseUrl() + urlPostfix,
+                                                       u.getUser_id(), 
timezoneUtil.getTimezoneByUser(u), u.getOmTimeZone(),
+                                                       u.getFirstname() + " " 
+ u.getLastname() 
+                                               );
+                       }
+               }
                return a;
        }
        

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java?rev=1506476&r1=1506475&r2=1506476&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/management/MeetingMemberLogic.java
 Wed Jul 24 09:56:25 2013
@@ -191,7 +191,122 @@ public class MeetingMemberLogic {
                }
                return null;
        }
+       
 
+       /**
+        * @author vasya
+        * @param meetingMember
+        * @param appointment
+        * @param baseUrl
+        * @param meeting_organizer
+        * @param timezone
+        * @param jNameInternalTimeZone
+        * @param invitorName
+        * @return
+        */
+       public Long addMeetingMemberInvitation(MeetingMember member,
+                       Appointment appointment,  String baseUrl, Long 
meeting_organizer,
+                       TimeZone timezone, OmTimeZone omTimeZone, String 
invitorName) {
+
+               try {
+                       Boolean isInvitor = member.getInvitor();
+
+                       Long invitationId = null;
+
+                       if (appointment.getRemind() == null) {
+                               log.error("Appointment has no assigned 
ReminderType!");
+                               return null;
+                       }
+
+                       log.debug(":::: addMeetingMemberInvitation ..... "
+                                       + appointment.getRemind().getTypId());
+
+                       String subject = 
formatSubject(member.getUserid().getLanguage_id(), appointment, timezone);
+
+                       String message = 
formatMessage(member.getUserid().getLanguage_id(), appointment, timezone,
+                                       invitorName);
+
+                       // appointment.getRemind().getTypId() == 1 will not 
receive emails
+
+                       if (appointment.getRemind().getTypId() == 2) {
+                               log.debug("Invitation for Appointment : simple 
email");
+
+                               Invitations invitation = invitationManager
+                                               .addInvitationLink(
+                                                               new Long(2), // 
userlevel
+                                                               
member.getFirstname() + " " + member.getLastname(), // username
+                                                               message,
+                                                               baseUrl, // 
baseURl
+                                                               
member.getUserid().getAdresses().getEmail(), // email
+                                                               subject, // 
subject
+                                                               
appointment.getRoom().getRooms_id(), // room_id
+                                                               "public",
+                                                               
appointment.getIsPasswordProtected(), // passwordprotected
+                                                               
appointment.getPassword(), // invitationpass
+                                                               2, // valid type
+                                                               
appointment.getAppointmentStarttime(), // valid from
+                                                               
appointment.getAppointmentEndtime(), // valid to
+                                                               
meeting_organizer, // created by
+                                                               baseUrl,
+                                                               
member.getUserid().getLanguage_id(),
+                                                               true, // really 
send mail sendMail
+                                                               
appointment.getAppointmentStarttime(),
+                                                               
appointment.getAppointmentEndtime(),
+                                                               
appointment.getAppointmentId(),
+                                                               invitorName,
+                                                               omTimeZone);
+
+                               invitationId = invitation.getInvitations_id();
+
+                       } else if (appointment.getRemind().getTypId() == 3) {
+                               log.debug("Reminder for Appointment : iCal 
mail");
+
+                               System.out.println("### SENDING iCAL EMAIL");
+
+                               invitationId = invitationManager
+                                               .addInvitationIcalLink(
+                                                               new Long(2), // 
userlevel
+                                                               
member.getFirstname() + " " + member.getLastname(), // username
+                                                               message,
+                                                               baseUrl, // 
baseURl
+                                                               
member.getUserid().getAdresses().getEmail(), // email
+                                                               subject, // 
subject
+                                                               
appointment.getRoom().getRooms_id(), // room_id
+                                                               "public",
+                                                               
appointment.getIsPasswordProtected(), // passwordprotected
+                                                               
appointment.getPassword(), // invitationpass
+                                                               2, // valid
+                                                               
appointment.getAppointmentStarttime(), // valid from
+                                                               
appointment.getAppointmentEndtime(), // valid to
+                                                               
meeting_organizer, // created by
+                                                               
appointment.getAppointmentId(), isInvitor,
+                                                               
member.getUserid().getLanguage_id(), timezone,
+                                                               
appointment.getAppointmentId(),
+                                                               invitorName);
+
+                       }
+
+                       // Setting InvitationId within MeetingMember
+
+                       if (invitationId != null) {
+                               Invitations invi = invitationManager
+                                               
.getInvitationbyId(invitationId);
+
+                               member.setInvitation(invi);
+
+                               updateMeetingMember(member);
+
+                       }
+
+                       return invitationId;
+
+               } catch (Exception err) {
+                       log.error("[addMeetingMember]", err);
+               }
+               return null;
+       }
+
+       
        private String formatSubject(Long language_id, Appointment point,
                        TimeZone timezone) {
                try {

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=1506476&r1=1506475&r2=1506476&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
 Wed Jul 24 09:56:25 2013
@@ -24,6 +24,7 @@ import java.util.Date;
 import java.util.List;
 import java.util.TimeZone;
 
+import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -174,7 +175,7 @@ public class Appointment implements Seri
        @Element(data=true, required=false)
        private String icalId;
 
-       @OneToMany(fetch = FetchType.LAZY)
+       @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
        @JoinColumn(name = "appointment_id")
        private List<MeetingMember> meetingMember;
        

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/calendar/MeetingMember.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/calendar/MeetingMember.java?rev=1506476&r1=1506475&r2=1506476&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/calendar/MeetingMember.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/calendar/MeetingMember.java
 Wed Jul 24 09:56:25 2013
@@ -21,6 +21,7 @@ package org.apache.openmeetings.persiste
 import java.io.Serializable;
 import java.util.Date;
 
+import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -50,7 +51,7 @@ public class MeetingMember implements Se
        @Element(data=true)
        private Long meetingMemberId;
        
-       @ManyToOne(fetch = FetchType.EAGER)
+       @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
        @JoinColumn(name="user_id", nullable=true)
        @ForeignKey(enabled = true)
        @Element(name="userid", data=true, required=false)

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java?rev=1506476&r1=1506475&r2=1506476&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
 Wed Jul 24 09:56:25 2013
@@ -70,6 +70,7 @@ public class WebSession extends Abstract
        private SimpleDateFormat ISO8601FORMAT = new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
        private DateFormat sdf;
        private Dashboard dashboard;
+       private String baseUrl = null;
        
        public WebSession(Request request) {
                super(request);
@@ -206,6 +207,14 @@ public class WebSession extends Abstract
                return d;
        }
        
+       public String getBaseUrl() {
+               return baseUrl;
+       }
+       
+       public void setBaseUrl(String baseUrl){
+               this.baseUrl = baseUrl;
+       }
+       
        private void initDashboard() {
                DashboardContext dashboardContext = getDashboardContext();
                //FIXME check title etc.

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java?rev=1506476&r1=1506475&r2=1506476&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
 Wed Jul 24 09:56:25 2013
@@ -142,6 +142,7 @@ public class MainPage extends BaseInited
                                WebSession.get().setArea(null);
                        }
                });
+               // This code is required to detect OM proxy url
                add(new AbstractDefaultAjaxBehavior() {
                        private static final long serialVersionUID = 1L;
 
@@ -154,6 +155,7 @@ public class MainPage extends BaseInited
                        @Override
                        protected void respond(AjaxRequestTarget target) {
                                StringValue baseUrl = 
getRequestCycle().getRequest().getRequestParameters().getParameterValue("baseUrl");
+                               WebSession.get().setBaseUrl(baseUrl.toString());
                        }
                });
        }

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java?rev=1506476&r1=1506475&r2=1506476&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
 Wed Jul 24 09:56:25 2013
@@ -105,7 +105,7 @@ public class AppointmentDialog extends A
                feedback = new FeedbackPanel("feedback");
                form = new AppointmentForm("appForm", model);
                add(form);
-               addAttendees = new MeetingMemberDialog("addAttendees", 
WebSession.getString(812), getModel(), this);
+               addAttendees = new MeetingMemberDialog("addAttendees", 
WebSession.getString(812), model, form.get("attendeeContainer"));
                add(addAttendees);
        }
 

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/calendar/MeetingMemberDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/calendar/MeetingMemberDialog.java?rev=1506476&r1=1506475&r2=1506476&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/calendar/MeetingMemberDialog.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/calendar/MeetingMemberDialog.java
 Wed Jul 24 09:56:25 2013
@@ -32,6 +32,7 @@ import org.apache.openmeetings.persisten
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.util.UserAutoCompleteTextField;
+import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxButton;
 import org.apache.wicket.markup.html.form.Form;
@@ -57,7 +58,7 @@ public class MeetingMemberDialog extends
        private final List<User> attendeesToRemove = new ArrayList<User>();
        DialogButton send = new DialogButton(WebSession.getString(175));
        private DialogButton cancel = new 
DialogButton(WebSession.getString(219));
-       private AppointmentDialog appDialog;
+       private Component attendeeContainer;
        @SuppressWarnings("unused")
        private User userBeingSearched = null; //Model object for 
UserAutoCompleteTextField, accessible via PropertyModel
 
@@ -66,9 +67,9 @@ public class MeetingMemberDialog extends
                return 500;
        }
        
-       public MeetingMemberDialog(String id, String string, 
IModel<Appointment> model, AppointmentDialog appDialog ) {
+       public MeetingMemberDialog(String id, String string, 
IModel<Appointment> model, Component attendeeContainer ) {
                super(id, string, model);
-               this.appDialog = appDialog;
+               this.attendeeContainer = attendeeContainer;
                formUsers = new Form<User>("formUsers");
                formUsers.add(feedbackDialog.setOutputMarkupId(true));
 
@@ -211,6 +212,7 @@ public class MeetingMemberDialog extends
                                mm.setDeleted(false);
                                if (u.getType() == Type.contact){
                                        mm.setInvitor(false);
+                                       
u.setLanguage_id(WebSession.getLanguage());
                                } else {
                                        boolean invitor = 
(WebSession.getUserId() == u.getUser_id() ? true : false);
                                        mm.setInvitor(invitor);
@@ -222,6 +224,6 @@ public class MeetingMemberDialog extends
                        }
                }
                app.setMeetingMember(meetingMembers);
-               target.add(appDialog.getForm());
+               target.add(attendeeContainer);
        }
 }


Reply via email to