You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/01/19 05:41:22 UTC
svn commit: r1779419 - in /openmeetings/application:
branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/
branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/
branches/3.1.x/openmeetings-db/...
Author: solomax
Date: Thu Jan 19 05:41:22 2017
New Revision: 1779419
URL: http://svn.apache.org/viewvc?rev=1779419&view=rev
Log:
[OPENMEETINGS-1533] appointment can be created using calendar web service
Modified:
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
Modified: openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java Thu Jan 19 05:41:22 2017
@@ -18,7 +18,10 @@
*/
package org.apache.openmeetings.db.dto.calendar;
+import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FORMAT;
+
import java.io.Serializable;
+import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
@@ -36,6 +39,8 @@ import org.apache.openmeetings.db.dto.us
import org.apache.openmeetings.db.entity.calendar.Appointment;
import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder;
import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.wicket.ajax.json.JSONArray;
+import org.apache.wicket.ajax.json.JSONObject;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@@ -118,7 +123,7 @@ public class AppointmentDTO implements S
a.setReminderEmailSend(reminderEmailSend);
return a;
}
-
+
public Long getId() {
return id;
}
@@ -278,4 +283,54 @@ public class AppointmentDTO implements S
public void setPassword(String password) {
this.password = password;
}
+
+ private static Date optDate(JSONObject o, String prop) throws ParseException {
+ return ISO8601_FORMAT.parse(o.optString(prop));
+ }
+
+ private static Calendar optCal(AppointmentDTO a, JSONObject o, String prop) throws ParseException {
+ Calendar c = Calendar.getInstance(TimeZone.getTimeZone(a.owner.getTimeZoneId()));
+ c.setTime(ISO8601_FORMAT.parse(o.optString(prop)));
+ return c;
+ }
+
+ public static AppointmentDTO fromString(String s) throws ParseException {
+ JSONObject o = new JSONObject(s);
+ AppointmentDTO a = new AppointmentDTO();
+ a.id = o.optLong("id");
+ a.title = o.optString("title");
+ a.location = o.optString("location");
+ a.owner = UserDTO.get(o.optJSONObject("owner"));
+ a.start = optCal(a, o, "start");
+ a.end = optCal(a, o, "end");
+ a.description = o.optString("description");
+ a.inserted = optDate(o, "inserted");
+ a.updated = optDate(o, "updated");
+ a.deleted = o.optBoolean("inserted");
+ a.reminder = Reminder.valueOf(o.optString("reminder"));
+ a.room = RoomDTO.get(o.optJSONObject("room"));
+ a.icalId = o.optString("icalId");
+ JSONArray mm = o.optJSONArray("meetingMembers");
+ if (mm != null) {
+ for (int i = 0; i < mm.length(); ++i) {
+ a.meetingMembers.add(MeetingMemberDTO.get(mm.getJSONObject(i)));
+ }
+ }
+ a.languageId = o.optLong("languageId");
+ a.password = o.optString("password");
+ a.passwordProtected = o.optBoolean("passwordProtected");
+ a.connectedEvent = o.optBoolean("connectedEvent");
+ a.reminderEmailSend = o.optBoolean("reminderEmailSend");
+ return a;
+ }
+
+ @Override
+ public String toString() {
+ return new JSONObject(this)
+ .put("start", ISO8601_FORMAT.format(start))
+ .put("end", ISO8601_FORMAT.format(end))
+ .put("inserted", ISO8601_FORMAT.format(inserted))
+ .put("updated", ISO8601_FORMAT.format(updated))
+ .toString();
+ }
}
Modified: openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java Thu Jan 19 05:41:22 2017
@@ -27,6 +27,7 @@ import javax.xml.bind.annotation.XmlRoot
import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.dto.user.UserDTO;
import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.wicket.ajax.json.JSONObject;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@@ -34,7 +35,7 @@ public class MeetingMemberDTO implements
private static final long serialVersionUID = 1L;
private Long id;
private UserDTO user;
-
+
public MeetingMemberDTO() {}
public MeetingMemberDTO(MeetingMember mm) {
@@ -48,7 +49,7 @@ public class MeetingMemberDTO implements
mm.setUser(user.get(userDao));
return mm;
}
-
+
public Long getId() {
return id;
}
@@ -64,4 +65,16 @@ public class MeetingMemberDTO implements
public void setUser(UserDTO user) {
this.user = user;
}
+
+ public static MeetingMemberDTO get(JSONObject o) {
+ MeetingMemberDTO m = new MeetingMemberDTO();
+ m.id = o.optLong("id");
+ m.user = UserDTO.get(o.optJSONObject("user"));
+ return m;
+ }
+
+ @Override
+ public String toString() {
+ return new JSONObject(this).toString();
+ }
}
Modified: openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java Thu Jan 19 05:41:22 2017
@@ -63,7 +63,7 @@ public class RoomDTO implements Serializ
private boolean whiteboardHidden;
public RoomDTO() {}
-
+
public RoomDTO(Room r) {
id = r.getId();
name = r.getName();
@@ -122,7 +122,7 @@ public class RoomDTO implements Serializ
r.setHideWhiteboard(whiteboardHidden);
return r;
}
-
+
public Long getId() {
return id;
}
@@ -340,9 +340,12 @@ public class RoomDTO implements Serializ
}
return rList;
}
-
+
public static RoomDTO fromString(String s) {
- JSONObject o = new JSONObject(s);
+ return get(new JSONObject(s));
+ }
+
+ public static RoomDTO get(JSONObject o) {
RoomDTO r = new RoomDTO();
r.id = optLong(o, "id");
r.name = o.optString("name");
@@ -372,7 +375,7 @@ public class RoomDTO implements Serializ
r.whiteboardHidden = o.optBoolean("whiteboardHidden", false);
return r;
}
-
+
@Override
public String toString() {
return new JSONObject(this).toString();
Modified: openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java Thu Jan 19 05:41:22 2017
@@ -23,7 +23,6 @@ import java.util.List;
import org.apache.openmeetings.db.entity.room.Client;
public class RoomStatus {
-
List<Client> clientList;
BrowserStatus browserStatus;
boolean roomFull = false;
Modified: openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java Thu Jan 19 05:41:22 2017
@@ -20,6 +20,7 @@ package org.apache.openmeetings.db.dto.u
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -30,6 +31,8 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.db.entity.user.User;
import org.apache.openmeetings.db.entity.user.User.Right;
import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.wicket.ajax.json.JSONArray;
+import org.apache.wicket.ajax.json.JSONObject;
@XmlRootElement
public class UserDTO implements Serializable {
@@ -39,9 +42,9 @@ public class UserDTO implements Serializ
private String password;
private String firstname;
private String lastname;
- private Set<Right> rights;
+ private Set<Right> rights = new HashSet<>();
private Long languageId;
- private Address address;
+ private Address address = new Address();
private String timeZoneId;
private String externalId;
private String externalType;
@@ -62,7 +65,7 @@ public class UserDTO implements Serializ
externalId = u.getExternalId();
externalType = u.getExternalType();
}
-
+
public User get(UserDao userDao) {
User u = id == null ? new User() : userDao.get(id);
u.setFirstname(firstname);
@@ -76,7 +79,7 @@ public class UserDTO implements Serializ
u.setType(type);
return u;
}
-
+
public static List<UserDTO> list(List<User> l) {
List<UserDTO> uList = new ArrayList<>();
if (l != null) {
@@ -86,7 +89,7 @@ public class UserDTO implements Serializ
}
return uList;
}
-
+
public Long getId() {
return id;
}
@@ -182,4 +185,31 @@ public class UserDTO implements Serializ
public void setExternalType(String externalType) {
this.externalType = externalType;
}
+
+ public static UserDTO get(JSONObject o) {
+ UserDTO u = new UserDTO();
+ u.id = o.optLong("id");
+ u.login = o.optString("login");
+ u.password = o.optString("password");
+ u.firstname = o.optString("firstname");
+ u.lastname = o.optString("lastname");
+ JSONArray rr = o.optJSONArray("rights");
+ if (rr != null) {
+ for (int i = 0; i < rr.length(); ++i) {
+ u.rights.add(Right.valueOf(rr.getString(i)));
+ }
+ }
+ u.languageId = o.optLong("languageId");
+ JSONObject a = o.optJSONObject("address");
+ if (a != null) {
+ u.address.setId(a.optLong("id"));
+ u.address.setCountry(a.optString("country"));
+ u.address.setEmail(a.optString("email"));
+ }
+ u.timeZoneId = o.optString("timeZoneId");
+ u.externalId = o.optString("externalId");
+ u.externalType = o.optString("externalType");
+ u.type = Type.valueOf(o.optString("type"));
+ return u;
+ }
}
Modified: openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java Thu Jan 19 05:41:22 2017
@@ -35,13 +35,15 @@ import org.slf4j.Logger;
public class CalendarPatterns {
private static final Logger log = Red5LoggerFactory.getLogger(CalendarPatterns.class, webAppRootKey);
- public static FastDateFormat dateFormat__ddMMyyyyHHmmss = FastDateFormat.getInstance("dd.MM.yyyy HH:mm:ss");
- public static FastDateFormat dateFormat__ddMMyyyy = FastDateFormat.getInstance("dd.MM.yyyy");
- public static FastDateFormat dateFormat__ddMMyyyyBySeparator = FastDateFormat.getInstance("dd-MM-yyyy");
- public static FastDateFormat dateFormat__yyyyMMddHHmmss = FastDateFormat.getInstance("yyyy.MM.dd HH:mm:ss");
- public static FastDateFormat STREAM_DATE_FORMAT = FastDateFormat.getInstance("yyyy_MM_dd_HH_mm_ss");
- public static String FULL_DF_PATTERN = "dd.MM.yyyy HH:mm:ss z (Z)";
- public static FastDateFormat FULL_DATE_FORMAT = FastDateFormat.getInstance(FULL_DF_PATTERN);
+ public static final FastDateFormat dateFormat__ddMMyyyyHHmmss = FastDateFormat.getInstance("dd.MM.yyyy HH:mm:ss");
+ public static final FastDateFormat dateFormat__ddMMyyyy = FastDateFormat.getInstance("dd.MM.yyyy");
+ public static final FastDateFormat dateFormat__ddMMyyyyBySeparator = FastDateFormat.getInstance("dd-MM-yyyy");
+ public static final FastDateFormat dateFormat__yyyyMMddHHmmss = FastDateFormat.getInstance("yyyy.MM.dd HH:mm:ss");
+ public static final FastDateFormat STREAM_DATE_FORMAT = FastDateFormat.getInstance("yyyy_MM_dd_HH_mm_ss");
+ public static final String FULL_DF_PATTERN = "dd.MM.yyyy HH:mm:ss z (Z)";
+ public static final String ISO8601_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ssZ";
+ public static final FastDateFormat FULL_DATE_FORMAT = FastDateFormat.getInstance(FULL_DF_PATTERN);
+ public static final FastDateFormat ISO8601_FORMAT = FastDateFormat.getInstance(ISO8601_FORMAT_STRING);
public static String getDateByMiliSeconds(Date t) {
return dateFormat__yyyyMMddHHmmss.format(t);
Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java Thu Jan 19 05:41:22 2017
@@ -19,6 +19,7 @@
package org.apache.openmeetings.web.app;
import static java.text.DateFormat.SHORT;
+import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FORMAT_STRING;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_MYROOMS_KEY;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_RSS_KEY;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_LANG_KEY;
@@ -91,7 +92,6 @@ public class WebSession extends Abstract
private static final long serialVersionUID = 1L;
private static final Logger log = getLogger(WebSession.class, webAppRootKey);
public static final int MILLIS_IN_MINUTE = 60000;
- public static final String ISO8601_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ssZ";
public static final List<String> AVAILABLE_TIMEZONES = Arrays.asList(TimeZone.getAvailableIDs());
public static final Set<String> AVAILABLE_TIMEZONE_SET = new LinkedHashSet<String>(AVAILABLE_TIMEZONES);
public static final String WICKET_ROOM_ID = "wicketroomid";
@@ -315,7 +315,7 @@ public class WebSession extends Abstract
setLocale(getLocale(u));
sdf = FastDateFormat.getDateTimeInstance(SHORT, SHORT, getLocale());
}
-
+
public boolean signIn(String login, String password, Type type, Long domainId) {
try {
User u = null;
@@ -344,7 +344,7 @@ public class WebSession extends Abstract
}
return false;
}
-
+
public boolean signIn(User u) {
Sessiondata sessData = getBean(SessiondataDao.class).create();
SID = sessData.getSessionId();
@@ -354,20 +354,20 @@ public class WebSession extends Abstract
setUser(u, null);
return true;
}
-
+
public Long getLoginError() {
return loginError;
}
-
+
public static WebSession get() {
return (WebSession)AbstractAuthenticatedWebSession.get();
}
-
+
@Override
public void setLanguage(long languageId) {
this.languageId = languageId;
}
-
+
public static long getLanguage() {
checkIsInvalid();
WebSession session = get();
@@ -380,7 +380,7 @@ public class WebSession extends Abstract
}
return session.languageId;
}
-
+
public String getValidatedSid() {
SessiondataDao sessionDao = getBean(SessiondataDao.class);
Long _userId = sessionDao.check(SID);
@@ -398,7 +398,7 @@ public class WebSession extends Abstract
}
return SID;
}
-
+
public static String getSid() {
return get().getValidatedSid();
}
@@ -439,20 +439,20 @@ public class WebSession extends Abstract
public static FastDateFormat getIsoDateFormat() {
return get().ISO8601FORMAT;
}
-
+
public static FastDateFormat getDateFormat() {
return get().sdf;
}
-
+
public static Set<Right> getRights() {
checkIsInvalid();
return get().rights;
}
-
+
public static void setKickedByAdmin(boolean kicked) {
get().kickedByAdmin = kicked;
}
-
+
public boolean isKickedByAdmin() {
return kickedByAdmin;
}
@@ -465,7 +465,7 @@ public class WebSession extends Abstract
this.area = area;
}
-
+
public static Dashboard getDashboard() {
Dashboard d = get().dashboard;
if (d == null) {
@@ -474,7 +474,7 @@ public class WebSession extends Abstract
}
return d;
}
-
+
public Locale getBrowserLocale(){
return browserLocale;
}
@@ -507,12 +507,12 @@ public class WebSession extends Abstract
}
return _zone == null ? null : _zone.getID();
}
-
+
public static TimeZone getClientTimeZone() {
String tzCode = get().getClientTZCode();
return tzCode == null ? null : TimeZone.getTimeZone(tzCode);
}
-
+
private void initDashboard() {
DashboardContext dashboardContext = getDashboardContext();
dashboard = (UserDashboard)dashboardContext.getDashboardPersister().load();
@@ -590,12 +590,12 @@ public class WebSession extends Abstract
public long getOmLanguage() {
return getLanguage();
}
-
+
private static void checkIsInvalid() {
if (isInvaldSession(get().getId())) {
setKickedByAdmin(true);
removeInvalidSession(get().getId());
- org.apache.wicket.Session session = (org.apache.wicket.Session)get();
+ org.apache.wicket.Session session = get();
session.invalidate();
Application.get().restartResponseAtSignInPage();
}
Modified: openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java Thu Jan 19 05:41:22 2017
@@ -26,9 +26,11 @@ import java.util.Date;
import java.util.List;
import java.util.Set;
+import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.ws.rs.DELETE;
+import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
@@ -43,6 +45,7 @@ import org.apache.openmeetings.db.dao.se
import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.user.User;
import org.apache.openmeetings.db.entity.user.User.Right;
import org.apache.openmeetings.db.util.AuthLevelUtil;
import org.apache.openmeetings.webservice.error.ServiceException;
@@ -52,9 +55,9 @@ import org.springframework.beans.factory
/**
* CalendarService contains methods to create, edit delete calendar meetings
- *
+ *
* @author sebawagner
- *
+ *
*/
@WebService(serviceName="org.apache.openmeetings.webservice.CalendarWebService", targetNamespace = TNS)
@Features(features = "org.apache.cxf.feature.LoggingFeature")
@@ -72,14 +75,14 @@ public class CalendarWebService {
/**
* Load appointments by a start / end range for the current SID
- *
+ *
* @param sid
* The SID of the User. This SID must be marked as Loggedin
* @param start
* start time
* @param end
* end time
- *
+ *
* @return - list of appointments in range
* @throws {@link ServiceException} in case of any error
*/
@@ -108,7 +111,7 @@ public class CalendarWebService {
/**
* Load appointments by a start / end range for the userId
- *
+ *
* @param sid
* The SID of the User. This SID must be marked as Loggedin
* @param userid
@@ -117,7 +120,7 @@ public class CalendarWebService {
* start time
* @param end
* end time
- *
+ *
* @return - list of appointments in range
* @throws {@link ServiceException} in case of any error
*/
@@ -148,7 +151,7 @@ public class CalendarWebService {
/**
* Get the next Calendar event for the current user of the SID
- *
+ *
* @param sid
* The SID of the User. This SID must be marked as Loggedin
* @return - next Calendar event
@@ -175,12 +178,12 @@ public class CalendarWebService {
/**
* Get the next Calendar event for userId
- *
+ *
* @param sid
* The SID of the User. This SID must be marked as Loggedin
* @param userid
* the userId the calendar events should be loaded
- *
+ *
* @return - next Calendar event
* @throws {@link ServiceException} in case of any error
*/
@@ -204,9 +207,9 @@ public class CalendarWebService {
}
/**
- *
+ *
* Load a calendar event by its room id
- *
+ *
* @param sid
* @param roomid
* @return - calendar event by its room id
@@ -236,12 +239,12 @@ public class CalendarWebService {
/**
* Search a calendar event for the current SID
- *
+ *
* @param sid
* The SID of the User. This SID must be marked as Loggedin
* @param title
* the search string
- *
+ *
* @return - calendar event list
* @throws {@link ServiceException} in case of any error
*/
@@ -265,28 +268,39 @@ public class CalendarWebService {
/**
* Save an appointment
- *
+ *
* @param sid
* The SID of the User. This SID must be marked as Loggedin
* @param appointment
- * calendar event
- *
+ * calendar event
+ *
* @return - appointment saved
* @throws {@link ServiceException} in case of any error
*/
+ @WebMethod
@POST
@Path("/") //TODO FIXME update is also here for now
- public AppointmentDTO save(@QueryParam("sid") @WebParam(name="sid") String sid, @QueryParam("appointment") @WebParam(name="appointment") AppointmentDTO appointment) throws ServiceException {
+ public AppointmentDTO save(@QueryParam("sid") @WebParam(name="sid") String sid, @FormParam("appointment") @WebParam(name="appointment") AppointmentDTO appointment) throws ServiceException {
//Seems to be create
log.debug("save SID:" + sid);
try {
Long userId = sessionDao.check(sid);
log.debug("save userId:" + userId);
-
- if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
+ User u = userDao.get(userId);
+ if (!AuthLevelUtil.hasWebServiceLevel(u.getRights())
+ && (appointment.getOwner() != null || appointment.getRoom().isPublic() || !appointment.getRoom().isAppointment()))
+ {
+ //TODO maybe additional checks are required
+ log.error("USER/Room modification as SOAP");
+ throw new ServiceException("Insufficient permissions"); //TODO code -26
+ }
+ if (AuthLevelUtil.hasUserLevel(u.getRights())) {
Appointment a = appointment.get(userDao, appointmentDao);
- return new AppointmentDTO(appointmentDao.update(a, userId));
+ if (a.getOwner() == null) {
+ a.setOwner(u);
+ }
+ return new AppointmentDTO(appointmentDao.update(a, u.getId()));
} else {
log.error("save : wrong user level");
throw new ServiceException("Insufficient permissions"); //TODO code -26
@@ -298,16 +312,16 @@ public class CalendarWebService {
throw new ServiceException(err.getMessage());
}
}
-
+
/**
- *
+ *
* delete a calendar event
- *
+ *
* If the given SID is from an Administrator or Web-Service user, the user
* can delete any appointment.<br/>
* If the SID is assigned to a simple user, he can only delete appointments
* where he is also the owner/creator of the appointment
- *
+ *
* @param sid
* an authenticated SID
* @param id
Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java Thu Jan 19 05:41:22 2017
@@ -18,7 +18,10 @@
*/
package org.apache.openmeetings.db.dto.calendar;
+import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FORMAT;
+
import java.io.Serializable;
+import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
@@ -36,6 +39,8 @@ import org.apache.openmeetings.db.dto.us
import org.apache.openmeetings.db.entity.calendar.Appointment;
import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder;
import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.wicket.ajax.json.JSONArray;
+import org.apache.wicket.ajax.json.JSONObject;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@@ -118,7 +123,7 @@ public class AppointmentDTO implements S
a.setReminderEmailSend(reminderEmailSend);
return a;
}
-
+
public Long getId() {
return id;
}
@@ -278,4 +283,54 @@ public class AppointmentDTO implements S
public void setPassword(String password) {
this.password = password;
}
+
+ private static Date optDate(JSONObject o, String prop) throws ParseException {
+ return ISO8601_FORMAT.parse(o.optString(prop));
+ }
+
+ private static Calendar optCal(AppointmentDTO a, JSONObject o, String prop) throws ParseException {
+ Calendar c = Calendar.getInstance(TimeZone.getTimeZone(a.owner.getTimeZoneId()));
+ c.setTime(ISO8601_FORMAT.parse(o.optString(prop)));
+ return c;
+ }
+
+ public static AppointmentDTO fromString(String s) throws ParseException {
+ JSONObject o = new JSONObject(s);
+ AppointmentDTO a = new AppointmentDTO();
+ a.id = o.optLong("id");
+ a.title = o.optString("title");
+ a.location = o.optString("location");
+ a.owner = UserDTO.get(o.optJSONObject("owner"));
+ a.start = optCal(a, o, "start");
+ a.end = optCal(a, o, "end");
+ a.description = o.optString("description");
+ a.inserted = optDate(o, "inserted");
+ a.updated = optDate(o, "updated");
+ a.deleted = o.optBoolean("inserted");
+ a.reminder = Reminder.valueOf(o.optString("reminder"));
+ a.room = RoomDTO.get(o.optJSONObject("room"));
+ a.icalId = o.optString("icalId");
+ JSONArray mm = o.optJSONArray("meetingMembers");
+ if (mm != null) {
+ for (int i = 0; i < mm.length(); ++i) {
+ a.meetingMembers.add(MeetingMemberDTO.get(mm.getJSONObject(i)));
+ }
+ }
+ a.languageId = o.optLong("languageId");
+ a.password = o.optString("password");
+ a.passwordProtected = o.optBoolean("passwordProtected");
+ a.connectedEvent = o.optBoolean("connectedEvent");
+ a.reminderEmailSend = o.optBoolean("reminderEmailSend");
+ return a;
+ }
+
+ @Override
+ public String toString() {
+ return new JSONObject(this)
+ .put("start", ISO8601_FORMAT.format(start))
+ .put("end", ISO8601_FORMAT.format(end))
+ .put("inserted", ISO8601_FORMAT.format(inserted))
+ .put("updated", ISO8601_FORMAT.format(updated))
+ .toString();
+ }
}
Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java Thu Jan 19 05:41:22 2017
@@ -27,6 +27,7 @@ import javax.xml.bind.annotation.XmlRoot
import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.dto.user.UserDTO;
import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.wicket.ajax.json.JSONObject;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@@ -34,7 +35,7 @@ public class MeetingMemberDTO implements
private static final long serialVersionUID = 1L;
private Long id;
private UserDTO user;
-
+
public MeetingMemberDTO() {}
public MeetingMemberDTO(MeetingMember mm) {
@@ -48,7 +49,7 @@ public class MeetingMemberDTO implements
mm.setUser(user.get(userDao));
return mm;
}
-
+
public Long getId() {
return id;
}
@@ -64,4 +65,16 @@ public class MeetingMemberDTO implements
public void setUser(UserDTO user) {
this.user = user;
}
+
+ public static MeetingMemberDTO get(JSONObject o) {
+ MeetingMemberDTO m = new MeetingMemberDTO();
+ m.id = o.optLong("id");
+ m.user = UserDTO.get(o.optJSONObject("user"));
+ return m;
+ }
+
+ @Override
+ public String toString() {
+ return new JSONObject(this).toString();
+ }
}
Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java Thu Jan 19 05:41:22 2017
@@ -61,7 +61,7 @@ public class RoomDTO implements Serializ
private Set<RoomElement> hiddenElements;
public RoomDTO() {}
-
+
public RoomDTO(Room r) {
id = r.getId();
name = r.getName();
@@ -108,7 +108,7 @@ public class RoomDTO implements Serializ
r.setHiddenElements(hiddenElements);
return r;
}
-
+
public Long getId() {
return id;
}
@@ -278,9 +278,12 @@ public class RoomDTO implements Serializ
}
return rList;
}
-
+
public static RoomDTO fromString(String s) {
- JSONObject o = new JSONObject(s);
+ return get(new JSONObject(s));
+ }
+
+ public static RoomDTO get(JSONObject o) {
RoomDTO r = new RoomDTO();
r.id = optLong(o, "id");
r.name = o.optString("name");
@@ -310,7 +313,7 @@ public class RoomDTO implements Serializ
}
return r;
}
-
+
@Override
public String toString() {
return new JSONObject(this).toString();
Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java Thu Jan 19 05:41:22 2017
@@ -20,6 +20,7 @@ package org.apache.openmeetings.db.dto.u
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -30,6 +31,8 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.db.entity.user.User;
import org.apache.openmeetings.db.entity.user.User.Right;
import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.wicket.ajax.json.JSONArray;
+import org.apache.wicket.ajax.json.JSONObject;
@XmlRootElement
public class UserDTO implements Serializable {
@@ -39,9 +42,9 @@ public class UserDTO implements Serializ
private String password;
private String firstname;
private String lastname;
- private Set<Right> rights;
+ private Set<Right> rights = new HashSet<>();
private Long languageId;
- private Address address;
+ private Address address = new Address();
private String timeZoneId;
private String externalId;
private String externalType;
@@ -62,7 +65,7 @@ public class UserDTO implements Serializ
externalId = u.getExternalId();
externalType = u.getExternalType();
}
-
+
public User get(UserDao userDao) {
User u = id == null ? new User() : userDao.get(id);
u.setFirstname(firstname);
@@ -76,7 +79,7 @@ public class UserDTO implements Serializ
u.setType(type);
return u;
}
-
+
public static List<UserDTO> list(List<User> l) {
List<UserDTO> uList = new ArrayList<>();
if (l != null) {
@@ -86,7 +89,7 @@ public class UserDTO implements Serializ
}
return uList;
}
-
+
public Long getId() {
return id;
}
@@ -182,4 +185,31 @@ public class UserDTO implements Serializ
public void setExternalType(String externalType) {
this.externalType = externalType;
}
+
+ public static UserDTO get(JSONObject o) {
+ UserDTO u = new UserDTO();
+ u.id = o.optLong("id");
+ u.login = o.optString("login");
+ u.password = o.optString("password");
+ u.firstname = o.optString("firstname");
+ u.lastname = o.optString("lastname");
+ JSONArray rr = o.optJSONArray("rights");
+ if (rr != null) {
+ for (int i = 0; i < rr.length(); ++i) {
+ u.rights.add(Right.valueOf(rr.getString(i)));
+ }
+ }
+ u.languageId = o.optLong("languageId");
+ JSONObject a = o.optJSONObject("address");
+ if (a != null) {
+ u.address.setId(a.optLong("id"));
+ u.address.setCountry(a.optString("country"));
+ u.address.setEmail(a.optString("email"));
+ }
+ u.timeZoneId = o.optString("timeZoneId");
+ u.externalId = o.optString("externalId");
+ u.externalType = o.optString("externalType");
+ u.type = Type.valueOf(o.optString("type"));
+ return u;
+ }
}
Modified: openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java Thu Jan 19 05:41:22 2017
@@ -35,13 +35,15 @@ import org.slf4j.Logger;
public class CalendarPatterns {
private static final Logger log = Red5LoggerFactory.getLogger(CalendarPatterns.class, webAppRootKey);
- public static FastDateFormat dateFormat__ddMMyyyyHHmmss = FastDateFormat.getInstance("dd.MM.yyyy HH:mm:ss");
- public static FastDateFormat dateFormat__ddMMyyyy = FastDateFormat.getInstance("dd.MM.yyyy");
- public static FastDateFormat dateFormat__ddMMyyyyBySeparator = FastDateFormat.getInstance("dd-MM-yyyy");
- public static FastDateFormat dateFormat__yyyyMMddHHmmss = FastDateFormat.getInstance("yyyy.MM.dd HH:mm:ss");
- public static FastDateFormat STREAM_DATE_FORMAT = FastDateFormat.getInstance("yyyy_MM_dd_HH_mm_ss");
- public static String FULL_DF_PATTERN = "dd.MM.yyyy HH:mm:ss z (Z)";
- public static FastDateFormat FULL_DATE_FORMAT = FastDateFormat.getInstance(FULL_DF_PATTERN);
+ public static final FastDateFormat dateFormat__ddMMyyyyHHmmss = FastDateFormat.getInstance("dd.MM.yyyy HH:mm:ss");
+ public static final FastDateFormat dateFormat__ddMMyyyy = FastDateFormat.getInstance("dd.MM.yyyy");
+ public static final FastDateFormat dateFormat__ddMMyyyyBySeparator = FastDateFormat.getInstance("dd-MM-yyyy");
+ public static final FastDateFormat dateFormat__yyyyMMddHHmmss = FastDateFormat.getInstance("yyyy.MM.dd HH:mm:ss");
+ public static final FastDateFormat STREAM_DATE_FORMAT = FastDateFormat.getInstance("yyyy_MM_dd_HH_mm_ss");
+ public static final String FULL_DF_PATTERN = "dd.MM.yyyy HH:mm:ss z (Z)";
+ public static final String ISO8601_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ssZ";
+ public static final FastDateFormat FULL_DATE_FORMAT = FastDateFormat.getInstance(FULL_DF_PATTERN);
+ public static final FastDateFormat ISO8601_FORMAT = FastDateFormat.getInstance(ISO8601_FORMAT_STRING);
public static String getDateByMiliSeconds(Date t) {
return dateFormat__yyyyMMddHHmmss.format(t);
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java Thu Jan 19 05:41:22 2017
@@ -19,6 +19,7 @@
package org.apache.openmeetings.web.app;
import static java.text.DateFormat.SHORT;
+import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FORMAT_STRING;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_MYROOMS_KEY;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_RSS_KEY;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_LANG_KEY;
@@ -91,7 +92,6 @@ public class WebSession extends Abstract
private static final long serialVersionUID = 1L;
private static final Logger log = getLogger(WebSession.class, webAppRootKey);
public static final int MILLIS_IN_MINUTE = 60000;
- public static final String ISO8601_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ssZ";
public static final List<String> AVAILABLE_TIMEZONES = Arrays.asList(TimeZone.getAvailableIDs());
public static final Set<String> AVAILABLE_TIMEZONE_SET = new LinkedHashSet<String>(AVAILABLE_TIMEZONES);
public static final String WICKET_ROOM_ID = "wicketroomid";
Modified: openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java Thu Jan 19 05:41:22 2017
@@ -26,9 +26,11 @@ import java.util.Date;
import java.util.List;
import java.util.Set;
+import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.ws.rs.DELETE;
+import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
@@ -44,6 +46,7 @@ import org.apache.openmeetings.db.dao.us
import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
import org.apache.openmeetings.db.entity.calendar.Appointment;
import org.apache.openmeetings.db.entity.server.Sessiondata;
+import org.apache.openmeetings.db.entity.user.User;
import org.apache.openmeetings.db.entity.user.User.Right;
import org.apache.openmeetings.db.util.AuthLevelUtil;
import org.apache.openmeetings.webservice.error.ServiceException;
@@ -53,9 +56,9 @@ import org.springframework.beans.factory
/**
* CalendarService contains methods to create, edit delete calendar meetings
- *
+ *
* @author sebawagner
- *
+ *
*/
@WebService(serviceName="org.apache.openmeetings.webservice.CalendarWebService", targetNamespace = TNS)
@Features(features = "org.apache.cxf.feature.LoggingFeature")
@@ -73,14 +76,14 @@ public class CalendarWebService {
/**
* Load appointments by a start / end range for the current SID
- *
+ *
* @param sid
* The SID of the User. This SID must be marked as Loggedin
* @param start
* start time
* @param end
* end time
- *
+ *
* @return - list of appointments in range
* @throws {@link ServiceException} in case of any error
*/
@@ -109,7 +112,7 @@ public class CalendarWebService {
/**
* Load appointments by a start / end range for the userId
- *
+ *
* @param sid
* The SID of the User. This SID must be marked as Loggedin
* @param userid
@@ -118,7 +121,7 @@ public class CalendarWebService {
* start time
* @param end
* end time
- *
+ *
* @return - list of appointments in range
* @throws {@link ServiceException} in case of any error
*/
@@ -149,7 +152,7 @@ public class CalendarWebService {
/**
* Get the next Calendar event for the current user of the SID
- *
+ *
* @param sid
* The SID of the User. This SID must be marked as Loggedin
* @return - next Calendar event
@@ -176,12 +179,12 @@ public class CalendarWebService {
/**
* Get the next Calendar event for userId
- *
+ *
* @param sid
* The SID of the User. This SID must be marked as Loggedin
* @param userid
* the userId the calendar events should be loaded
- *
+ *
* @return - next Calendar event
* @throws {@link ServiceException} in case of any error
*/
@@ -205,9 +208,9 @@ public class CalendarWebService {
}
/**
- *
+ *
* Load a calendar event by its room id
- *
+ *
* @param sid
* @param roomid
* @return - calendar event by its room id
@@ -237,12 +240,12 @@ public class CalendarWebService {
/**
* Search a calendar event for the current SID
- *
+ *
* @param sid
* The SID of the User. This SID must be marked as Loggedin
* @param title
* the search string
- *
+ *
* @return - calendar event list
* @throws {@link ServiceException} in case of any error
*/
@@ -266,28 +269,39 @@ public class CalendarWebService {
/**
* Save an appointment
- *
+ *
* @param sid
* The SID of the User. This SID must be marked as Loggedin
* @param appointment
- * calendar event
- *
+ * calendar event
+ *
* @return - appointment saved
* @throws {@link ServiceException} in case of any error
*/
+ @WebMethod
@POST
@Path("/") //TODO FIXME update is also here for now
- public AppointmentDTO save(@QueryParam("sid") @WebParam(name="sid") String sid, @QueryParam("appointment") @WebParam(name="appointment") AppointmentDTO appointment) throws ServiceException {
+ public AppointmentDTO save(@QueryParam("sid") @WebParam(name="sid") String sid, @FormParam("appointment") @WebParam(name="appointment") AppointmentDTO appointment) throws ServiceException {
//Seems to be create
log.debug("save SID:" + sid);
try {
Sessiondata sd = sessionDao.check(sid);
log.debug("save userId:" + sd);
-
- if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
+ User u = userDao.get(sd.getUserId());
+ if (!AuthLevelUtil.hasWebServiceLevel(u.getRights())
+ && (appointment.getOwner() != null || appointment.getRoom().isPublic() || !appointment.getRoom().isAppointment()))
+ {
+ //TODO maybe additional checks are required
+ log.error("USER/Room modification as SOAP");
+ throw new ServiceException("Insufficient permissions"); //TODO code -26
+ }
+ if (AuthLevelUtil.hasUserLevel(u.getRights())) {
Appointment a = appointment.get(userDao, appointmentDao);
- return new AppointmentDTO(appointmentDao.update(a, sd.getUserId()));
+ if (a.getOwner() == null) {
+ a.setOwner(u);
+ }
+ return new AppointmentDTO(appointmentDao.update(a, u.getId()));
} else {
log.error("save : wrong user level");
throw new ServiceException("Insufficient permissions"); //TODO code -26
@@ -299,16 +313,16 @@ public class CalendarWebService {
throw new ServiceException(err.getMessage());
}
}
-
+
/**
- *
+ *
* delete a calendar event
- *
+ *
* If the given SID is from an Administrator or Web-Service user, the user
* can delete any appointment.<br/>
* If the SID is assigned to a simple user, he can only delete appointments
* where he is also the owner/creator of the appointment
- *
+ *
* @param sid
* an authenticated SID
* @param id
Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java Thu Jan 19 05:41:22 2017
@@ -18,7 +18,10 @@
*/
package org.apache.openmeetings.db.dto.calendar;
+import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FORMAT;
+
import java.io.Serializable;
+import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
@@ -36,6 +39,8 @@ import org.apache.openmeetings.db.dto.us
import org.apache.openmeetings.db.entity.calendar.Appointment;
import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder;
import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.wicket.ajax.json.JSONArray;
+import org.apache.wicket.ajax.json.JSONObject;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@@ -118,7 +123,7 @@ public class AppointmentDTO implements S
a.setReminderEmailSend(reminderEmailSend);
return a;
}
-
+
public Long getId() {
return id;
}
@@ -278,4 +283,54 @@ public class AppointmentDTO implements S
public void setPassword(String password) {
this.password = password;
}
+
+ private static Date optDate(JSONObject o, String prop) throws ParseException {
+ return ISO8601_FORMAT.parse(o.optString(prop));
+ }
+
+ private static Calendar optCal(AppointmentDTO a, JSONObject o, String prop) throws ParseException {
+ Calendar c = Calendar.getInstance(TimeZone.getTimeZone(a.owner.getTimeZoneId()));
+ c.setTime(ISO8601_FORMAT.parse(o.optString(prop)));
+ return c;
+ }
+
+ public static AppointmentDTO fromString(String s) throws ParseException {
+ JSONObject o = new JSONObject(s);
+ AppointmentDTO a = new AppointmentDTO();
+ a.id = o.optLong("id");
+ a.title = o.optString("title");
+ a.location = o.optString("location");
+ a.owner = UserDTO.get(o.optJSONObject("owner"));
+ a.start = optCal(a, o, "start");
+ a.end = optCal(a, o, "end");
+ a.description = o.optString("description");
+ a.inserted = optDate(o, "inserted");
+ a.updated = optDate(o, "updated");
+ a.deleted = o.optBoolean("inserted");
+ a.reminder = Reminder.valueOf(o.optString("reminder"));
+ a.room = RoomDTO.get(o.optJSONObject("room"));
+ a.icalId = o.optString("icalId");
+ JSONArray mm = o.optJSONArray("meetingMembers");
+ if (mm != null) {
+ for (int i = 0; i < mm.length(); ++i) {
+ a.meetingMembers.add(MeetingMemberDTO.get(mm.getJSONObject(i)));
+ }
+ }
+ a.languageId = o.optLong("languageId");
+ a.password = o.optString("password");
+ a.passwordProtected = o.optBoolean("passwordProtected");
+ a.connectedEvent = o.optBoolean("connectedEvent");
+ a.reminderEmailSend = o.optBoolean("reminderEmailSend");
+ return a;
+ }
+
+ @Override
+ public String toString() {
+ return new JSONObject(this)
+ .put("start", ISO8601_FORMAT.format(start))
+ .put("end", ISO8601_FORMAT.format(end))
+ .put("inserted", ISO8601_FORMAT.format(inserted))
+ .put("updated", ISO8601_FORMAT.format(updated))
+ .toString();
+ }
}
Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java Thu Jan 19 05:41:22 2017
@@ -27,6 +27,7 @@ import javax.xml.bind.annotation.XmlRoot
import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.dto.user.UserDTO;
import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.wicket.ajax.json.JSONObject;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@@ -34,7 +35,7 @@ public class MeetingMemberDTO implements
private static final long serialVersionUID = 1L;
private Long id;
private UserDTO user;
-
+
public MeetingMemberDTO() {}
public MeetingMemberDTO(MeetingMember mm) {
@@ -48,7 +49,7 @@ public class MeetingMemberDTO implements
mm.setUser(user.get(userDao));
return mm;
}
-
+
public Long getId() {
return id;
}
@@ -64,4 +65,16 @@ public class MeetingMemberDTO implements
public void setUser(UserDTO user) {
this.user = user;
}
+
+ public static MeetingMemberDTO get(JSONObject o) {
+ MeetingMemberDTO m = new MeetingMemberDTO();
+ m.id = o.optLong("id");
+ m.user = UserDTO.get(o.optJSONObject("user"));
+ return m;
+ }
+
+ @Override
+ public String toString() {
+ return new JSONObject(this).toString();
+ }
}
Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java Thu Jan 19 05:41:22 2017
@@ -61,7 +61,7 @@ public class RoomDTO implements Serializ
private Set<RoomElement> hiddenElements;
public RoomDTO() {}
-
+
public RoomDTO(Room r) {
id = r.getId();
name = r.getName();
@@ -108,7 +108,7 @@ public class RoomDTO implements Serializ
r.setHiddenElements(hiddenElements);
return r;
}
-
+
public Long getId() {
return id;
}
@@ -278,9 +278,12 @@ public class RoomDTO implements Serializ
}
return rList;
}
-
+
public static RoomDTO fromString(String s) {
- JSONObject o = new JSONObject(s);
+ return get(new JSONObject(s));
+ }
+
+ public static RoomDTO get(JSONObject o) {
RoomDTO r = new RoomDTO();
r.id = optLong(o, "id");
r.name = o.optString("name");
@@ -310,7 +313,7 @@ public class RoomDTO implements Serializ
}
return r;
}
-
+
@Override
public String toString() {
return new JSONObject(this).toString();
Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java Thu Jan 19 05:41:22 2017
@@ -20,6 +20,7 @@ package org.apache.openmeetings.db.dto.u
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -30,6 +31,8 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.db.entity.user.User;
import org.apache.openmeetings.db.entity.user.User.Right;
import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.wicket.ajax.json.JSONArray;
+import org.apache.wicket.ajax.json.JSONObject;
@XmlRootElement
public class UserDTO implements Serializable {
@@ -39,9 +42,9 @@ public class UserDTO implements Serializ
private String password;
private String firstname;
private String lastname;
- private Set<Right> rights;
+ private Set<Right> rights = new HashSet<>();
private Long languageId;
- private Address address;
+ private Address address = new Address();
private String timeZoneId;
private String externalId;
private String externalType;
@@ -62,7 +65,7 @@ public class UserDTO implements Serializ
externalId = u.getExternalId();
externalType = u.getExternalType();
}
-
+
public User get(UserDao userDao) {
User u = id == null ? new User() : userDao.get(id);
u.setFirstname(firstname);
@@ -76,7 +79,7 @@ public class UserDTO implements Serializ
u.setType(type);
return u;
}
-
+
public static List<UserDTO> list(List<User> l) {
List<UserDTO> uList = new ArrayList<>();
if (l != null) {
@@ -86,7 +89,7 @@ public class UserDTO implements Serializ
}
return uList;
}
-
+
public Long getId() {
return id;
}
@@ -182,4 +185,31 @@ public class UserDTO implements Serializ
public void setExternalType(String externalType) {
this.externalType = externalType;
}
+
+ public static UserDTO get(JSONObject o) {
+ UserDTO u = new UserDTO();
+ u.id = o.optLong("id");
+ u.login = o.optString("login");
+ u.password = o.optString("password");
+ u.firstname = o.optString("firstname");
+ u.lastname = o.optString("lastname");
+ JSONArray rr = o.optJSONArray("rights");
+ if (rr != null) {
+ for (int i = 0; i < rr.length(); ++i) {
+ u.rights.add(Right.valueOf(rr.getString(i)));
+ }
+ }
+ u.languageId = o.optLong("languageId");
+ JSONObject a = o.optJSONObject("address");
+ if (a != null) {
+ u.address.setId(a.optLong("id"));
+ u.address.setCountry(a.optString("country"));
+ u.address.setEmail(a.optString("email"));
+ }
+ u.timeZoneId = o.optString("timeZoneId");
+ u.externalId = o.optString("externalId");
+ u.externalType = o.optString("externalType");
+ u.type = Type.valueOf(o.optString("type"));
+ return u;
+ }
}
Modified: openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java (original)
+++ openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java Thu Jan 19 05:41:22 2017
@@ -35,13 +35,15 @@ import org.slf4j.Logger;
public class CalendarPatterns {
private static final Logger log = Red5LoggerFactory.getLogger(CalendarPatterns.class, webAppRootKey);
- public static FastDateFormat dateFormat__ddMMyyyyHHmmss = FastDateFormat.getInstance("dd.MM.yyyy HH:mm:ss");
- public static FastDateFormat dateFormat__ddMMyyyy = FastDateFormat.getInstance("dd.MM.yyyy");
- public static FastDateFormat dateFormat__ddMMyyyyBySeparator = FastDateFormat.getInstance("dd-MM-yyyy");
- public static FastDateFormat dateFormat__yyyyMMddHHmmss = FastDateFormat.getInstance("yyyy.MM.dd HH:mm:ss");
- public static FastDateFormat STREAM_DATE_FORMAT = FastDateFormat.getInstance("yyyy_MM_dd_HH_mm_ss");
- public static String FULL_DF_PATTERN = "dd.MM.yyyy HH:mm:ss z (Z)";
- public static FastDateFormat FULL_DATE_FORMAT = FastDateFormat.getInstance(FULL_DF_PATTERN);
+ public static final FastDateFormat dateFormat__ddMMyyyyHHmmss = FastDateFormat.getInstance("dd.MM.yyyy HH:mm:ss");
+ public static final FastDateFormat dateFormat__ddMMyyyy = FastDateFormat.getInstance("dd.MM.yyyy");
+ public static final FastDateFormat dateFormat__ddMMyyyyBySeparator = FastDateFormat.getInstance("dd-MM-yyyy");
+ public static final FastDateFormat dateFormat__yyyyMMddHHmmss = FastDateFormat.getInstance("yyyy.MM.dd HH:mm:ss");
+ public static final FastDateFormat STREAM_DATE_FORMAT = FastDateFormat.getInstance("yyyy_MM_dd_HH_mm_ss");
+ public static final String FULL_DF_PATTERN = "dd.MM.yyyy HH:mm:ss z (Z)";
+ public static final String ISO8601_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ssZ";
+ public static final FastDateFormat FULL_DATE_FORMAT = FastDateFormat.getInstance(FULL_DF_PATTERN);
+ public static final FastDateFormat ISO8601_FORMAT = FastDateFormat.getInstance(ISO8601_FORMAT_STRING);
public static String getDateByMiliSeconds(Date t) {
return dateFormat__yyyyMMddHHmmss.format(t);
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java Thu Jan 19 05:41:22 2017
@@ -19,6 +19,7 @@
package org.apache.openmeetings.web.app;
import static java.text.DateFormat.SHORT;
+import static org.apache.openmeetings.util.CalendarPatterns.ISO8601_FORMAT_STRING;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_MYROOMS_KEY;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DASHBOARD_SHOW_RSS_KEY;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_LANG_KEY;
@@ -91,7 +92,6 @@ public class WebSession extends Abstract
private static final long serialVersionUID = 1L;
private static final Logger log = getLogger(WebSession.class, webAppRootKey);
public static final int MILLIS_IN_MINUTE = 60000;
- public static final String ISO8601_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ssZ";
public static final List<String> AVAILABLE_TIMEZONES = Arrays.asList(TimeZone.getAvailableIDs());
public static final Set<String> AVAILABLE_TIMEZONE_SET = new LinkedHashSet<String>(AVAILABLE_TIMEZONES);
public static final String WICKET_ROOM_ID = "wicketroomid";
Modified: openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java?rev=1779419&r1=1779418&r2=1779419&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java (original)
+++ openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java Thu Jan 19 05:41:22 2017
@@ -26,9 +26,11 @@ import java.util.Date;
import java.util.List;
import java.util.Set;
+import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.ws.rs.DELETE;
+import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
@@ -44,6 +46,7 @@ import org.apache.openmeetings.db.dao.us
import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
import org.apache.openmeetings.db.entity.calendar.Appointment;
import org.apache.openmeetings.db.entity.server.Sessiondata;
+import org.apache.openmeetings.db.entity.user.User;
import org.apache.openmeetings.db.entity.user.User.Right;
import org.apache.openmeetings.db.util.AuthLevelUtil;
import org.apache.openmeetings.webservice.error.ServiceException;
@@ -53,9 +56,9 @@ import org.springframework.beans.factory
/**
* CalendarService contains methods to create, edit delete calendar meetings
- *
+ *
* @author sebawagner
- *
+ *
*/
@WebService(serviceName="org.apache.openmeetings.webservice.CalendarWebService", targetNamespace = TNS)
@Features(features = "org.apache.cxf.feature.LoggingFeature")
@@ -73,14 +76,14 @@ public class CalendarWebService {
/**
* Load appointments by a start / end range for the current SID
- *
+ *
* @param sid
* The SID of the User. This SID must be marked as Loggedin
* @param start
* start time
* @param end
* end time
- *
+ *
* @return - list of appointments in range
* @throws {@link ServiceException} in case of any error
*/
@@ -109,7 +112,7 @@ public class CalendarWebService {
/**
* Load appointments by a start / end range for the userId
- *
+ *
* @param sid
* The SID of the User. This SID must be marked as Loggedin
* @param userid
@@ -118,7 +121,7 @@ public class CalendarWebService {
* start time
* @param end
* end time
- *
+ *
* @return - list of appointments in range
* @throws {@link ServiceException} in case of any error
*/
@@ -149,7 +152,7 @@ public class CalendarWebService {
/**
* Get the next Calendar event for the current user of the SID
- *
+ *
* @param sid
* The SID of the User. This SID must be marked as Loggedin
* @return - next Calendar event
@@ -176,12 +179,12 @@ public class CalendarWebService {
/**
* Get the next Calendar event for userId
- *
+ *
* @param sid
* The SID of the User. This SID must be marked as Loggedin
* @param userid
* the userId the calendar events should be loaded
- *
+ *
* @return - next Calendar event
* @throws {@link ServiceException} in case of any error
*/
@@ -205,9 +208,9 @@ public class CalendarWebService {
}
/**
- *
+ *
* Load a calendar event by its room id
- *
+ *
* @param sid
* @param roomid
* @return - calendar event by its room id
@@ -237,12 +240,12 @@ public class CalendarWebService {
/**
* Search a calendar event for the current SID
- *
+ *
* @param sid
* The SID of the User. This SID must be marked as Loggedin
* @param title
* the search string
- *
+ *
* @return - calendar event list
* @throws {@link ServiceException} in case of any error
*/
@@ -266,28 +269,39 @@ public class CalendarWebService {
/**
* Save an appointment
- *
+ *
* @param sid
* The SID of the User. This SID must be marked as Loggedin
* @param appointment
- * calendar event
- *
+ * calendar event
+ *
* @return - appointment saved
* @throws {@link ServiceException} in case of any error
*/
+ @WebMethod
@POST
@Path("/") //TODO FIXME update is also here for now
- public AppointmentDTO save(@QueryParam("sid") @WebParam(name="sid") String sid, @QueryParam("appointment") @WebParam(name="appointment") AppointmentDTO appointment) throws ServiceException {
+ public AppointmentDTO save(@QueryParam("sid") @WebParam(name="sid") String sid, @FormParam("appointment") @WebParam(name="appointment") AppointmentDTO appointment) throws ServiceException {
//Seems to be create
log.debug("save SID:" + sid);
try {
Sessiondata sd = sessionDao.check(sid);
log.debug("save userId:" + sd);
-
- if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
+ User u = userDao.get(sd.getUserId());
+ if (!AuthLevelUtil.hasWebServiceLevel(u.getRights())
+ && (appointment.getOwner() != null || appointment.getRoom().isPublic() || !appointment.getRoom().isAppointment()))
+ {
+ //TODO maybe additional checks are required
+ log.error("USER/Room modification as SOAP");
+ throw new ServiceException("Insufficient permissions"); //TODO code -26
+ }
+ if (AuthLevelUtil.hasUserLevel(u.getRights())) {
Appointment a = appointment.get(userDao, appointmentDao);
- return new AppointmentDTO(appointmentDao.update(a, sd.getUserId()));
+ if (a.getOwner() == null) {
+ a.setOwner(u);
+ }
+ return new AppointmentDTO(appointmentDao.update(a, u.getId()));
} else {
log.error("save : wrong user level");
throw new ServiceException("Insufficient permissions"); //TODO code -26
@@ -299,16 +313,16 @@ public class CalendarWebService {
throw new ServiceException(err.getMessage());
}
}
-
+
/**
- *
+ *
* delete a calendar event
- *
+ *
* If the given SID is from an Administrator or Web-Service user, the user
* can delete any appointment.<br/>
* If the SID is assigned to a simple user, he can only delete appointments
* where he is also the owner/creator of the appointment
- *
+ *
* @param sid
* an authenticated SID
* @param id