You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by se...@apache.org on 2012/03/16 22:30:42 UTC

svn commit: r1301774 - in /incubator/openmeetings/trunk/singlewebapp: WebContent/src/modules/lzcalendar/compontents/ src/app/org/openmeetings/app/data/calendar/daos/ src/app/org/openmeetings/app/data/calendar/management/ src/app/org/openmeetings/app/re...

Author: sebawagner
Date: Fri Mar 16 21:30:41 2012
New Revision: 1301774

URL: http://svn.apache.org/viewvc?rev=1301774&view=rev
Log:
OPENMEETINGS-7 Use RTMP for save / update (Bug in OpenLaszlo API for params with same name)

Modified:
    incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/lzcalendar/compontents/lzEditCalendarEvent.lzx
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/calendar/daos/AppointmentDaoImpl.java
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/calendar/management/AppointmentLogic.java
    incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/CalendarService.java
    incubator/openmeetings/trunk/singlewebapp/src/calendarservice/org/openmeetings/axis/services/CalendarWebService.java
    incubator/openmeetings/trunk/singlewebapp/src/calendarservice/org/openmeetings/axis/services/CalendarWebServiceFacade.java

Modified: incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/lzcalendar/compontents/lzEditCalendarEvent.lzx
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/lzcalendar/compontents/lzEditCalendarEvent.lzx?rev=1301774&r1=1301773&r2=1301774&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/lzcalendar/compontents/lzEditCalendarEvent.lzx (original)
+++ incubator/openmeetings/trunk/singlewebapp/WebContent/src/modules/lzcalendar/compontents/lzEditCalendarEvent.lzx Fri Mar 16 21:30:41 2012
@@ -34,6 +34,8 @@
 		<attribute name="lzCalendarRef" value="null" />
 		
 		<dataset name="eventDS" />
+		
+		<attribute name="updateObj" value="null" />
 		    
 		<handler name="oninit">
 			<![CDATA[
@@ -61,7 +63,7 @@
 	            
 	            this.getAppointmentReminderTypList.setData(this.remindertypes.data);
 	            
-            	this.eventDS.setData(this.dataElement.childNodes);
+            	this.eventDS.setAttribute("data", this.dataElement.childNodes);
 	            
 	            if ($debug) Debug.write("this.eventDS ",this.eventDS);
 	            
@@ -75,91 +77,106 @@
 		
 		<method name="saveAndClose">
 			<![CDATA[
-				var tMemberArgs = this._participentList.getMemberArrayValue();
+				this.updateObj = new Object();
+			
+				updateObj.tMemberArgs = this._participentList.getMemberArrayValue();
+				
+				if ($debug) Debug.write("tMemberArgs: ",updateObj.tMemberArgs.length,updateObj.tMemberArgs);
 				
-				var tAppointmentStartDate = this._dateStart.getDate();
-				if ($debug) Debug.write("tAppointmentStartDate ",tAppointmentStartDate);
+				updateObj.appointmentId = Number(this.eventDS.getPointer().xpathQuery('appointmentId/text()'));
+				updateObj.appointmentstart = this._dateStart.getDate();
+				if ($debug) Debug.write("appointmentstart ",updateObj.appointmentstart);
 				var tTimeStart = this._timeStart.getText();
 				var hours = Number(tTimeStart.substr(0,2));
 				var mins = Number(tTimeStart.substr(4,2));
 				if ($debug) Debug.write("hours:mins",hours,mins,tTimeStart.substr(4,2));
-				tAppointmentStartDate.setHours(hours);
-				tAppointmentStartDate.setMinutes(mins);
+				updateObj.appointmentstart.setHours(hours);
+				updateObj.appointmentstart.setMinutes(mins);
 				
-				var tAppointmentEndDate = this._dateEnd.getDate();
+				updateObj.appointmentend = this._dateEnd.getDate();
 				var tTimeEnd = this._timeEnd.getText();
 				var hours = Number(tTimeEnd.substr(0,2));
 				var mins = Number(tTimeEnd.substr(4,2));
-				tAppointmentEndDate.setHours(hours);
-				tAppointmentEndDate.setMinutes(mins);
+				updateObj.appointmentend.setHours(hours);
+				updateObj.appointmentend.setMinutes(mins);
 				
-				var updateurl = canvas.protocol + '://'+canvas.rtmphostlocal+':'+canvas.red5httpport
-                               +canvas.httpRootKey+'services/CalendarService/saveAppointment';
-                var queryString = 'SID='+canvas.sessionId
-                               +'&appointmentName='+encodeURIComponent(this._title.getText())
-                               +'&appointmentLocation='+encodeURIComponent(this._location.getText())
-                               +'&appointmentDescription='+encodeURIComponent(this._descr.getText())
-                               +'&appointmentstart='+parseDateToRestDateCalendar(tAppointmentStartDate)
-                               +'&appointmentend='+parseDateToRestDateCalendar(tAppointmentEndDate)
-                               +'&isDaily='+false
-                               +'&isYearly='+false
-                               +'&categoryId='+1
-                               +'&remind='+this._reminderType.getValue()
-                               ;
-                               
-                for (var i=0;i<tMemberArgs.length;i++) {
-                	
-                	var tObject = tMemberArgs[i];
-                	queryString += '&mmClient=' + 
-                						encodeURIComponent(
-		                					tObject.meetingMemberId + ','
-				                			+ tObject.firstname + ','
-				                			+ tObject.lastname + ','
-				                			+ tObject.email + ','
-				                			+ tObject.userId + ','
-				                			+ tObject.jNameTimeZone
-				                		);
-                	
-                }
-                
-                queryString += +'&roomType='+this._roomType.getValue()
-                             +'&baseUrl='+this.baseUrl
-                             +'&languageId='+hib.userlang
+                updateObj.appointmentName = this._title.getText();
+                updateObj.appointmentLocation = this._location.getText();
+                updateObj.appointmentDescription = this._descr.getText();
+                updateObj.isDaily = false;
+                updateObj.isWeekly = false;
+                updateObj.isMonthly = false;
+                updateObj.isYearly = false;
+                updateObj.categoryId = 1;
+                updateObj.remind = this._reminderType.getValue();
+                updateObj.roomType = this._roomType.getValue();
                 
-                if ($debug) Debug.write(updateurl);
-                if ($debug) Debug.write(queryString);
-				
-				this.saveNewAppointment.setAttribute("src",updateurl);
-				this.saveNewAppointment.setAttribute("querystring",queryString);
-				this.saveNewAppointment.doRequest();
+                if ($debug) Debug.write("appointmentId: ",updateObj.appointmentId);
+                               
+				if (updateObj.appointmentId > 0) {
+					this.updateAppointment.doCall();
+				} else {
+					this.saveAppointment.doCall();
+				} 
 			]]>
 		</method>
 		
 		<dataset name="getAppointmentReminderTypList" />
 		
-		<!-- 
-		String SID, String appointmentName,
-			String appointmentLocation, String appointmentDescription,
-			Date appointmentstart, Date appointmentend, Boolean isDaily,
-			Boolean isWeekly, Boolean isMonthly, Boolean isYearly,
-			Long categoryId, Long remind,
-			String[] mmClient, Long roomType,
-			String baseUrl, Long languageId
-		 -->
-		<dataset name="saveNewAppointment" type="http" querytype="POST">
-			<handler name="ondata" args="d">
-				if ($debug) Debug.write("saveNewAppointment ",d);
-				var tPointer = new lz.datapointer();
-				tPointer.setPointer(d);
-				var returnValue = tPointer.xpathQuery('saveAppointmentResponse/return/text()');
-				if ($debug) Debug.write("returnValue "+returnValue);
-				var tNumber = Number(returnValue);
-				if (tNumber > 0) {
-					parent.lzCalendarRef.reload();
+		<netRemoteCallHib name="saveAppointment" funcname="calendarservice.saveAppointment" 
+							  remotecontext="$once{ canvas.thishib }" >     
+			<netparam><method name="getValue">return canvas.sessionId; </method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.appointmentName;</method></netparam>	
+			<netparam><method name="getValue">return parent.parent.updateObj.appointmentLocation;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.appointmentDescription;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.appointmentstart;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.appointmentend;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.isDaily;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.isWeekly;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.isMonthly;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.isYearly;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.categoryId;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.remind;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.tMemberArgs;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.roomType;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.baseUrl;</method></netparam>
+			<netparam><method name="getValue">return hib.userlang;</method></netparam>
+	    	<handler name="ondata" args="value">
+	    		<![CDATA[
+		    		if ($debug) Debug.write("saveAppointment ",value);
+		    		parent.lzCalendarRef.reload();
 					parent.close();
-				}
-			</handler>
-		</dataset>
+	    		 ]]>
+	    	</handler>
+	    </netRemoteCallHib> 
+	    
+    	<netRemoteCallHib name="updateAppointment" funcname="calendarservice.updateAppointment" 
+						  remotecontext="$once{ canvas.thishib }" >  
+			<netparam><method name="getValue">return canvas.sessionId; </method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.appointmentId;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.appointmentName;</method></netparam>	
+			<netparam><method name="getValue">return parent.parent.updateObj.appointmentLocation;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.appointmentDescription;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.appointmentstart;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.appointmentend;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.isDaily;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.isWeekly;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.isMonthly;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.isYearly;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.categoryId;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.remind;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.tMemberArgs;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.updateObj.roomType;</method></netparam>
+			<netparam><method name="getValue">return parent.parent.baseUrl;</method></netparam>
+			<netparam><method name="getValue">return hib.userlang;</method></netparam>
+	    	<handler name="ondata" args="value">
+	    		<![CDATA[
+	    			if ($debug) Debug.write("updateAppointment ",value);
+	    			parent.lzCalendarRef.reload();
+					parent.close();
+	    		 ]]>
+	    	</handler>
+	    </netRemoteCallHib> 
 		
 		<labelText name="_titleLabel" x="4" y="24" labelid="572" fontstyle="bold" /> 
 			
@@ -235,7 +252,7 @@
 	            for (var i=0;i<canvas.roomTypesInitValues.length;i++){
 	                this.addItem(canvas.roomTypesInitValues[i].name,canvas.roomTypesInitValues[i].roomtypes_id);
 	            }
-	            this.selectItem(String(canvas.roomTypesInitValues[0].roomtypes_id));
+	            //this.selectItem(String(canvas.roomTypesInitValues[0].roomtypes_id));
 	            ]]>
 	        </handler> 
         </resetCombobox> 

Modified: incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/calendar/daos/AppointmentDaoImpl.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/calendar/daos/AppointmentDaoImpl.java?rev=1301774&r1=1301773&r2=1301774&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/calendar/daos/AppointmentDaoImpl.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/calendar/daos/AppointmentDaoImpl.java Fri Mar 16 21:30:41 2012
@@ -487,12 +487,15 @@ public class AppointmentDaoImpl {
 
 				if (mmClient != null) {
 					for (int i = 0; i < mmClient.size(); i++) {
+						
 						@SuppressWarnings("rawtypes")
 						Map clientMemeber = (Map) mmClient.get(i);
 						Long meetingMemberId = Long
 								.valueOf(
 										clientMemeber.get("meetingMemberId")
 												.toString()).longValue();
+						
+						log.debug("DELETE newly CHECK meetingMemberId: {} VS {} -- ", meetingMemberId, memberRemote.getMeetingMemberId());
 
 						if (memberRemote.getMeetingMemberId().equals(
 								meetingMemberId)) {
@@ -500,12 +503,15 @@ public class AppointmentDaoImpl {
 									+ meetingMemberId + " is to be removed!");
 							// Notifying Member for Update
 							found = true;
+							break;
 						}
 
 					}
 				}
 
 				if (!found) {
+					
+					log.debug("DELETE getMeetingMemberId: {} -- ", memberRemote.getMeetingMemberId());
 
 					// Not in List in client delete it
 					meetingMemberLogic.deleteMeetingMember(

Modified: incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/calendar/management/AppointmentLogic.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/calendar/management/AppointmentLogic.java?rev=1301774&r1=1301773&r2=1301774&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/calendar/management/AppointmentLogic.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/data/calendar/management/AppointmentLogic.java Fri Mar 16 21:30:41 2012
@@ -319,7 +319,7 @@ public class AppointmentLogic {
 		try {
 
 			Appointment point = getAppointMentById(appointmentId);
-
+			
 			if (point == null) {
 				log.error("No appointment found for ID " + appointmentId);
 				return null;

Modified: incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/CalendarService.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/CalendarService.java?rev=1301774&r1=1301773&r2=1301774&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/CalendarService.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/app/org/openmeetings/app/remote/CalendarService.java Fri Mar 16 21:30:41 2012
@@ -181,11 +181,12 @@ public class CalendarService {
 	}
 
 	public Long updateAppointment(String SID, Long appointmentId,
-			String appointmentName, String appointmentLocation,
-			String appointmentDescription, Date appointmentstart,
-			Date appointmentend, Boolean isDaily, Boolean isWeekly,
-			Boolean isMonthly, Boolean isYearly, Long categoryId, Long remind,
-			List<?> mmClient, Long roomType, String baseurl, Long language_id) {
+			String appointmentName,
+			String appointmentLocation, String appointmentDescription,
+			Date appointmentstart, Date appointmentend, Boolean isDaily,
+			Boolean isWeekly, Boolean isMonthly, Boolean isYearly,
+			Long categoryId, Long remind, @SuppressWarnings("rawtypes") List mmClient, Long roomType,
+			String baseUrl, Long language_id) {
 		try {
 
 			Long users_id = sessionManagement.checkSession(SID);
@@ -215,7 +216,7 @@ public class CalendarService {
 						appointmentName, appointmentDescription,
 						appointmentstart, appointmentend, isDaily, isWeekly,
 						isMonthly, isYearly, categoryId, remind, mmClient,
-						users_id, baseurl, language_id, false, "", user
+						users_id, baseUrl, language_id, false, "", user
 								.getOmTimeZone().getIcal());
 			}
 		} catch (Exception err) {

Modified: incubator/openmeetings/trunk/singlewebapp/src/calendarservice/org/openmeetings/axis/services/CalendarWebService.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/calendarservice/org/openmeetings/axis/services/CalendarWebService.java?rev=1301774&r1=1301773&r2=1301774&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/calendarservice/org/openmeetings/axis/services/CalendarWebService.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/calendarservice/org/openmeetings/axis/services/CalendarWebService.java Fri Mar 16 21:30:41 2012
@@ -25,6 +25,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.axis2.AxisFault;
 import org.openmeetings.app.OpenmeetingsVariables;
 import org.openmeetings.app.data.basic.AuthLevelmanagement;
 import org.openmeetings.app.data.basic.Sessionmanagement;
@@ -256,7 +257,8 @@ public class CalendarWebService {
 	 * @param baseUrl
 	 *            the base URL for the invitations
 	 * @param languageId
-	 *            the language id of the calendar event
+	 *            the language id of the calendar event, notification emails
+	 *            will be send in this language
 	 * @return
 	 */
 	public Long saveAppointment(String SID, String appointmentName,
@@ -290,8 +292,6 @@ public class CalendarWebService {
 					newList.add(map);
 				}
 
-				// FIXME: Check if the event is also the event of the current
-
 				Long id = appointmentLogic.saveAppointment(appointmentName,
 						users_id, appointmentLocation, appointmentDescription,
 						appointmentstart.getTime(), appointmentend.getTime(),
@@ -335,10 +335,6 @@ public class CalendarWebService {
 			Long user_level = userManagement.getUserLevelByID(users_id);
 			if (authLevelManagement.checkUserLevel(user_level)) {
 
-				log.debug("updateAppointment");
-				// FIXME: Check if the event is also the event of the current
-				// SID
-
 				log.debug("appointmentId " + appointmentId);
 
 				appointmentLogic.getAppointMentById(appointmentId);
@@ -358,93 +354,168 @@ public class CalendarWebService {
 	}
 
 	/**
-	 * 
-	 * Update a calendar event all attributes
+	 * Save an appointment
 	 * 
 	 * @param SID
+	 *            The SID of the User. This SID must be marked as Loggedin
 	 * @param appointmentId
+	 *            the id to update
 	 * @param appointmentName
+	 *            name of the calendar event
 	 * @param appointmentLocation
+	 *            location info text of the calendar event
 	 * @param appointmentDescription
+	 *            description test of the calendar event
 	 * @param appointmentstart
+	 *            start as Date yyyy-mm-ddThh:mm:ss
 	 * @param appointmentend
+	 *            end as Date yyyy-mm-ddThh:mm:ss
 	 * @param isDaily
+	 *            if the calendar event should be repeated daily (not
+	 *            implemented)
 	 * @param isWeekly
+	 *            if the calendar event should be repeated weekly (not
+	 *            implemented)
 	 * @param isMonthly
+	 *            if the calendar event should be repeated monthly (not
+	 *            implemented)
 	 * @param isYearly
+	 *            if the calendar event should be repeated yearly (not
+	 *            implemented)
 	 * @param categoryId
+	 *            the category id of the calendar event
 	 * @param remind
+	 *            the reminder type of the calendar event
 	 * @param mmClient
+	 *            List of clients, comma separated string, <br/>
+	 *            sample: 1,firstname,lastname,hans.tier@gmail.com,1,Etc/GMT+1
+	 *            to add multiple clients you can use the same GET parameter in
+	 *            the URL multiple times, for example:
+	 *            &mmClient=1,firstname,lastname,hans
+	 *            .tier@gmail.com,1,Etc/GMT+1&mmClient
+	 *            =2,firstname,lastname,hans.tier@gmail.com,1,Etc/GMT+1
 	 * @param roomType
-	 * @param baseurl
+	 *            the room type for the calendar event
+	 * @param baseUrl
+	 *            the base URL for the invitations
 	 * @param languageId
+	 *            the language id of the calendar event, notification emails
+	 *            will be send in this language
 	 * @return
 	 */
 	public Long updateAppointment(String SID, Long appointmentId,
 			String appointmentName, String appointmentLocation,
-			String appointmentDescription, Date appointmentstart,
-			Date appointmentend, Boolean isDaily, Boolean isWeekly,
+			String appointmentDescription, Calendar appointmentstart,
+			Calendar appointmentend, Boolean isDaily, Boolean isWeekly,
 			Boolean isMonthly, Boolean isYearly, Long categoryId, Long remind,
-			List<?> mmClient, Long roomType, String baseurl, Long languageId) {
+			String[] mmClient, Long roomType, String baseurl, Long languageId) throws AxisFault {
 		try {
 
 			Long users_id = sessionManagement.checkSession(SID);
 			Long user_level = userManagement.getUserLevelByID(users_id);
+			
+			
 			if (authLevelManagement.checkUserLevel(user_level)) {
+				//check if the appointment belongs to the current user
+				Appointment appointment = appointmentLogic
+						.getAppointMentById(appointmentId);
+				if (!appointment.getUserId().getUser_id().equals(users_id)) {
+					throw new AxisFault(
+							"The Appointment cannot be updated by the given user");
+				}
+			} else if (authLevelManagement.checkUserLevel(user_level)) {
+				//fine
+			} else {
+				throw new AxisFault("Not allowed to preform that action, Authenticate the SID first");
+			}
 
-				log.debug("updateAppointment");
+			List<Map<String, String>> newList = new ArrayList<Map<String, String>>();
 
-				RoomTypes rt = roommanagement.getRoomTypesById(roomType);
+			for (String singleClient : mmClient) {
+				String[] params = singleClient.split(",");
+				Map<String, String> map = new HashMap<String, String>();
+				map.put("meetingMemberId", params[0]);
+				map.put("firstname", params[1]);
+				map.put("lastname", params[2]);
+				map.put("email", params[3]);
+				map.put("userId", params[4]);
+				map.put("jNameTimeZone", params[5]);
+				newList.add(map);
+			}
 
-				Appointment app = appointmentLogic
-						.getAppointMentById(appointmentId);
+			log.debug("updateAppointment");
 
-				Rooms room = app.getRoom();
-				if (room != null) {
+			RoomTypes rt = roommanagement.getRoomTypesById(roomType);
 
-					room.setComment(appointmentDescription);
-					room.setName(appointmentName);
-					room.setRoomtype(rt);
+			Appointment app = appointmentLogic
+					.getAppointMentById(appointmentId);
 
-					roommanagement.updateRoomObject(room);
-				}
+			Rooms room = app.getRoom();
+			if (room != null) {
 
-				Users user = userManagement.getUserById(users_id);
+				room.setComment(appointmentDescription);
+				room.setName(appointmentName);
+				room.setRoomtype(rt);
 
-				return appointmentLogic.updateAppointment(appointmentId,
-						appointmentName, appointmentDescription,
-						appointmentstart, appointmentend, isDaily, isWeekly,
-						isMonthly, isYearly, categoryId, remind, mmClient,
-						users_id, baseurl, languageId, false, "", user
-								.getOmTimeZone().getIcal());
+				roommanagement.updateRoomObject(room);
 			}
+
+			Users user = userManagement.getUserById(users_id);
+
+			return appointmentLogic.updateAppointment(appointmentId,
+					appointmentName, appointmentDescription,
+					appointmentstart.getTime(), appointmentend.getTime(), 
+					isDaily, isWeekly,
+					isMonthly, isYearly, categoryId, remind, newList,
+					users_id, baseurl, languageId, false, "", user
+							.getOmTimeZone().getIcal());
+			
+				
 		} catch (Exception err) {
 			log.error("[updateAppointment]", err);
-			err.printStackTrace();
+			throw new AxisFault(err.getMessage());
 		}
-		return null;
-
 	}
 
 	/**
 	 * 
 	 * 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 appointmentId
+	 *            the id to delete
 	 * @param language_id
+	 *            the language id in which the notifications for the deleted
+	 *            appointment are send
 	 * @return
 	 */
 	public Long deleteAppointment(String SID, Long appointmentId,
-			Long language_id) {
-
-		log.debug("deleteAppointment : " + appointmentId);
-
+			Long language_id) throws AxisFault {
 		try {
 
 			Long users_id = sessionManagement.checkSession(SID);
 			Long user_level = userManagement.getUserLevelByID(users_id);
-			if (authLevelManagement.checkUserLevel(user_level)) {
+
+			if (authLevelManagement.checkWebServiceLevel(user_level)) {
+
+				return appointmentLogic.deleteAppointment(appointmentId,
+						users_id, language_id);
+
+			} else if (authLevelManagement.checkUserLevel(user_level)) {
+
+				Appointment appointment = appointmentLogic
+						.getAppointMentById(appointmentId);
+
+				if (!appointment.getUserId().getUser_id().equals(users_id)) {
+					throw new AxisFault(
+							"The Appointment cannot be deleted by the given user");
+				}
 
 				return appointmentLogic.deleteAppointment(appointmentId,
 						users_id, language_id);
@@ -453,9 +524,9 @@ public class CalendarWebService {
 
 		} catch (Exception err) {
 			log.error("[deleteAppointment]", err);
+			throw new AxisFault(err.getMessage());
 		}
 		return null;
-
 	}
 
 	/**

Modified: incubator/openmeetings/trunk/singlewebapp/src/calendarservice/org/openmeetings/axis/services/CalendarWebServiceFacade.java
URL: http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/calendarservice/org/openmeetings/axis/services/CalendarWebServiceFacade.java?rev=1301774&r1=1301773&r2=1301774&view=diff
==============================================================================
--- incubator/openmeetings/trunk/singlewebapp/src/calendarservice/org/openmeetings/axis/services/CalendarWebServiceFacade.java (original)
+++ incubator/openmeetings/trunk/singlewebapp/src/calendarservice/org/openmeetings/axis/services/CalendarWebServiceFacade.java Fri Mar 16 21:30:41 2012
@@ -110,15 +110,15 @@ public class CalendarWebServiceFacade {
 
 	public Long updateAppointment(String SID, Long appointmentId,
 			String appointmentName, String appointmentLocation,
-			String appointmentDescription, Date appointmentstart,
-			Date appointmentend, Boolean isDaily, Boolean isWeekly,
+			String appointmentDescription, Calendar appointmentstart,
+			Calendar appointmentend, Boolean isDaily, Boolean isWeekly,
 			Boolean isMonthly, Boolean isYearly, Long categoryId, Long remind,
-			Long roomType, String baseurl, Long languageId)
+			String[] mmClient, Long roomType, String baseurl, Long languageId)
 			throws AxisFault {
 		return getCalendarServiceProxy().updateAppointment(SID, appointmentId,
 				appointmentName, appointmentLocation, appointmentDescription,
 				appointmentstart, appointmentend, isDaily, isWeekly, isMonthly,
-				isYearly, categoryId, remind, null, roomType, baseurl,
+				isYearly, categoryId, remind, mmClient, roomType, baseurl,
 				languageId);
 	}