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,[email protected],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
+        *            [email protected],1,Etc/GMT+1&mmClient
+        *            =2,firstname,lastname,[email protected],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);
        }
 


Reply via email to