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);
}
}