Author: solomax
Date: Wed Sep 16 13:35:42 2015
New Revision: 1703407

URL: http://svn.apache.org/r1703407
Log:
[OPENMEETINGS-1249] messages with room are now works as expected

Modified:
    
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
    
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/PrivateMessagesDao.java
    
openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/backup/BackupImport.java
    
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/calendar/management/AppointmentLogic.java
    
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/MainService.java
    
openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
    
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceService.java
    
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
    
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
    
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageDao.java
    
openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/AppointmentConverter.java
    
openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
    
openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureAppointment.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureGetAppointmentByRange.java
    
openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java

Modified: 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
 Wed Sep 16 13:35:42 2015
@@ -117,58 +117,51 @@ public class AppointmentDao {
                return em.createNamedQuery("getAppointments", 
Appointment.class).getResultList();
        }
 
-       public Long addAppointmentObj(Appointment ap) {
-               try {
-                       ap.setInserted(new Date());
-                       em.persist(ap);
-
-                       return ap.getId();
-               } catch (Exception ex2) {
-                       log.error("[addAppointmentObj]: ", ex2);
-               }
-               return null;
-       }
-
        public Appointment update(Appointment a, Long userId) {
+               return update(a, userId, true);
+       }
+       
+       public Appointment update(Appointment a, Long userId, boolean 
sendmails) {
                Room r = a.getRoom();
                if (r.getRooms_id() == null) {
                        r.setName(a.getTitle());
                        
r.setNumberOfPartizipants(cfgDao.getConfValue("calendar.conference.rooms.default.size",
 Long.class, "50"));
                }
                roomDao.update(r, userId);
-               Set<Long> mmIds = a.getId() == null ? new HashSet<Long>()
-                               : 
meetingMemberDao.getMeetingMemberIdsByAppointment(a.getId());
-               // update meeting members
-               //TODO update email need to be sent on meeting members list 
update
-               Appointment a0 = a.getId() == null ? null : get(a.getId());
-               boolean sendMail = a0 == null || 
!a0.getTitle().equals(a.getTitle()) ||
-                               !(a0.getDescription() != null ? 
a0.getDescription().equals(a.getDescription()) : true) ||
-                               !(a0.getLocation() != null ? 
a0.getLocation().equals(a.getLocation()) : true) ||
-                               !a0.getStart().equals(a.getStart()) ||
-                               !a0.getEnd().equals(a.getEnd());
-               List<MeetingMember> mmList = a.getMeetingMembers();
-               if (mmList != null){
-                       for (MeetingMember mm : mmList) {
-                               if (mm.getId() == null || 
!mmIds.contains(mm.getId())) {
-                                       invitationManager.processInvitation(a, 
mm, MessageType.Create);
-                               } else {
-                                       mmIds.remove(mm.getId());
-                                       invitationManager.processInvitation(a, 
mm, MessageType.Update, sendMail);
+               if (sendmails) {
+                       Set<Long> mmIds = a.getId() == null ? new 
HashSet<Long>()
+                                       : 
meetingMemberDao.getMeetingMemberIdsByAppointment(a.getId());
+                       // update meeting members
+                       Appointment a0 = a.getId() == null ? null : 
get(a.getId());
+                       boolean sendMail = a0 == null || 
!a0.getTitle().equals(a.getTitle()) ||
+                                       !(a0.getDescription() != null ? 
a0.getDescription().equals(a.getDescription()) : true) ||
+                                       !(a0.getLocation() != null ? 
a0.getLocation().equals(a.getLocation()) : true) ||
+                                       !a0.getStart().equals(a.getStart()) ||
+                                       !a0.getEnd().equals(a.getEnd());
+                       List<MeetingMember> mmList = a.getMeetingMembers();
+                       if (mmList != null){
+                               for (MeetingMember mm : mmList) {
+                                       if (mm.getId() == null || 
!mmIds.contains(mm.getId())) {
+                                               
invitationManager.processInvitation(a, mm, MessageType.Create);
+                                       } else {
+                                               mmIds.remove(mm.getId());
+                                               
invitationManager.processInvitation(a, mm, MessageType.Update, sendMail);
+                                       }
                                }
                        }
-               }
-               for (long id : mmIds) {
-                       invitationManager.processInvitation(a, 
meetingMemberDao.get(id), MessageType.Cancel);
-               }
-               //notify owner
-               MeetingMember owner = new MeetingMember();
-               owner.setUser(a.getOwner());
-               if (a.getId() == null) {
-                       invitationManager.processInvitation(a, owner, 
MessageType.Create);
-               } else if (a.isDeleted()) {
-                       invitationManager.processInvitation(a, owner, 
MessageType.Cancel);
-               } else if (sendMail) {
-                       invitationManager.processInvitation(a, owner, 
MessageType.Update, sendMail);
+                       for (long id : mmIds) {
+                               invitationManager.processInvitation(a, 
meetingMemberDao.get(id), MessageType.Cancel);
+                       }
+                       //notify owner
+                       MeetingMember owner = new MeetingMember();
+                       owner.setUser(a.getOwner());
+                       if (a.getId() == null) {
+                               invitationManager.processInvitation(a, owner, 
MessageType.Create);
+                       } else if (a.isDeleted()) {
+                               invitationManager.processInvitation(a, owner, 
MessageType.Cancel);
+                       } else if (sendMail) {
+                               invitationManager.processInvitation(a, owner, 
MessageType.Update, sendMail);
+                       }
                }
                if (a.getId() == null) {
                        a.setInserted(new Date());
@@ -180,18 +173,6 @@ public class AppointmentDao {
                return a;
        }
        
-       // 
----------------------------------------------------------------------------------------------------------------------------
-
-       public Long updateAppointment(Appointment appointment) {
-               if (appointment.getId() != null) {
-                       appointment = em.merge(appointment);
-                       return appointment.getId();
-               } else {
-                       log.error("[updateAppointment] " + "Error: No 
AppointmentId given");
-               }
-               return null;
-       }
-
        public List<Appointment> getAppointmentsByRoomId(Long roomId) {
                try {
 

Modified: 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/PrivateMessagesDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/PrivateMessagesDao.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/PrivateMessagesDao.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/user/PrivateMessagesDao.java
 Wed Sep 16 13:35:42 2015
@@ -167,10 +167,9 @@ public class PrivateMessagesDao implemen
                return query.executeUpdate();
        }
        
-       public List<PrivateMessage> getPrivateMessagesByRoom(Long roomId) {
-               TypedQuery<PrivateMessage> query = 
em.createNamedQuery("getPrivateMessagesByRoom", PrivateMessage.class); 
-               query.setParameter("roomId", roomId);
-               return query.getResultList();
+       public List<PrivateMessage> getByRoom(Long roomId) {
+               return em.createNamedQuery("getPrivateMessagesByRoom", 
PrivateMessage.class)
+                               .setParameter("roomId", roomId).getResultList();
        }
 
        public List<PrivateMessage> get(String search, int start, int count, 
String order) {

Modified: 
openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/backup/BackupImport.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/backup/BackupImport.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/backup/BackupImport.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/install/java/org/apache/openmeetings/backup/BackupImport.java
 Wed Sep 16 13:35:42 2015
@@ -420,8 +420,8 @@ public class BackupImport {
                                if (a.getRoom() != null && 
a.getRoom().getRooms_id() == null) {
                                        a.setRoom(null);
                                }
-                               Long newAppId = 
appointmentDao.addAppointmentObj(a);
-                               appointmentsMap.put(appId, newAppId);
+                               a = appointmentDao.update(a, null, false);
+                               appointmentsMap.put(appId, a.getId());
                        }
                }
 

Modified: 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/calendar/management/AppointmentLogic.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/calendar/management/AppointmentLogic.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/calendar/management/AppointmentLogic.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/data/calendar/management/AppointmentLogic.java
 Wed Sep 16 13:35:42 2015
@@ -201,7 +201,7 @@ public class AppointmentLogic {
                        }
                        // Update Appointment to not send invitation twice
                        a.setReminderEmailSend(true);
-                       appointmentDao.updateAppointment(a);
+                       appointmentDao.update(a, null, false);
 
                        List<MeetingMember> members = a.getMeetingMembers();
 

Modified: 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/MainService.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/MainService.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/MainService.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/MainService.java
 Wed Sep 16 13:35:42 2015
@@ -168,44 +168,46 @@ public class MainService implements IPen
                        log.debug("[loginWicket] user and roomid are not empty: 
" + userId + ", " + wicketroomid);
                        boolean allowed = false;
                        Room r = roomDao.get(wicketroomid);
-                       if (r.getAppointment() != null && r.getAppointment()) {
-                               Appointment a = 
appointmentDao.getAppointmentByRoom(wicketroomid);
-                               if (a != null && !a.isDeleted()) {
-                                       allowed = 
a.getOwner().getUser_id().equals(userId);
-                                       log.debug("[loginWicket] appointed 
room, isOwner ? " + allowed);
-                                       if (!allowed) {
-                                               for (MeetingMember mm : 
a.getMeetingMembers()) {
-                                                       if 
(mm.getUser().getUser_id().equals(userId)) {
-                                                               allowed = true;
-                                                               break;
+                       if (r != null) {
+                               if (r.getAppointment() != null && 
r.getAppointment()) {
+                                       Appointment a = 
appointmentDao.getAppointmentByRoom(wicketroomid);
+                                       if (a != null && !a.isDeleted()) {
+                                               allowed = 
a.getOwner().getUser_id().equals(userId);
+                                               log.debug("[loginWicket] 
appointed room, isOwner ? " + allowed);
+                                               if (!allowed) {
+                                                       for (MeetingMember mm : 
a.getMeetingMembers()) {
+                                                               if 
(mm.getUser().getUser_id().equals(userId)) {
+                                                                       allowed 
= true;
+                                                                       break;
+                                                               }
                                                        }
                                                }
+                                               /*
+                                               TODO need to be reviewed
+                                               Calendar c = 
WebSession.getCalendar();
+                                               if 
(c.getTime().after(a.getStart()) && c.getTime().before(a.getEnd())) {
+                                                       allowed = true;
+                                               } else {
+                                                       SimpleDateFormat sdf = 
new SimpleDateFormat("yyyy/MM/dd HH:mm"); //FIXME format
+                                                       deniedMessage = 
Application.getString(1271) + String.format(" %s - %s", 
sdf.format(a.getStart()), sdf.format(a.getEnd()));
+                                               }
+                                               */
                                        }
-                                       /*
-                                       TODO need to be reviewed
-                                       Calendar c = WebSession.getCalendar();
-                                       if (c.getTime().after(a.getStart()) && 
c.getTime().before(a.getEnd())) {
-                                               allowed = true;
-                                       } else {
-                                               SimpleDateFormat sdf = new 
SimpleDateFormat("yyyy/MM/dd HH:mm"); //FIXME format
-                                               deniedMessage = 
Application.getString(1271) + String.format(" %s - %s", 
sdf.format(a.getStart()), sdf.format(a.getEnd()));
-                                       }
-                                       */
-                               }
-                       } else {
-                               allowed = r.getIspublic() || (r.getOwnerId() != 
null && r.getOwnerId().equals(userId));
-                               log.debug("[loginWicket] public ? " + 
r.getIspublic() + ", ownedId ? " + r.getOwnerId() + " " + allowed);
-                               if (!allowed) {
-                                       for (RoomOrganisation ro : 
r.getRoomOrganisations()) {
-                                               for (Organisation_Users ou : 
u.getOrganisation_users()) {
-                                                       if 
(ro.getOrganisation().getOrganisation_id().equals(ou.getOrganisation().getOrganisation_id()))
 {
-                                                               allowed = true;
+                               } else {
+                                       allowed = r.getIspublic() || 
(r.getOwnerId() != null && r.getOwnerId().equals(userId));
+                                       log.debug("[loginWicket] public ? " + 
r.getIspublic() + ", ownedId ? " + r.getOwnerId() + " " + allowed);
+                                       if (!allowed) {
+                                               for (RoomOrganisation ro : 
r.getRoomOrganisations()) {
+                                                       for (Organisation_Users 
ou : u.getOrganisation_users()) {
+                                                               if 
(ro.getOrganisation().getOrganisation_id().equals(ou.getOrganisation().getOrganisation_id()))
 {
+                                                                       allowed 
= true;
+                                                                       break;
+                                                               }
+                                                       }
+                                                       if (allowed) {
                                                                break;
                                                        }
                                                }
-                                               if (allowed) {
-                                                       break;
-                                               }
                                        }
                                }
                        }

Modified: 
openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
 Wed Sep 16 13:35:42 2015
@@ -144,8 +144,8 @@ public abstract class AbstractJUnitDefau
 
                ap.setOwner(userDao.get(1L));
                ap.setConnectedEvent(false);
-               Long id = appointmentDao.addAppointmentObj(ap);
-               assertNotNull("Cann't add appointment", id);
+               ap = appointmentDao.update(ap, null, false);
+               assertNotNull("Cann't add appointment", ap.getId());
                return ap;
        }
 

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
 Wed Sep 16 13:35:42 2015
@@ -32,9 +32,12 @@ import java.util.List;
 
 import org.apache.openmeetings.data.conference.InvitationManager;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.user.PrivateMessagesDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
 import org.apache.openmeetings.db.entity.room.Invitation;
 import org.apache.openmeetings.db.entity.room.Invitation.Valid;
 import org.apache.openmeetings.db.entity.room.Room;
@@ -180,10 +183,29 @@ public class MessageDialog extends Abstr
                        r.setName(p.getSubject());
                        r.setComment("");
                        r.setNumberOfPartizipants(100L);
-                       r.setAppointment(false);
+                       r.setAppointment(true);
                        r.setAllowUserQuestions(true);
                        r.setAllowFontStyles(true);
                        r = getBean(RoomDao.class).update(r, getUserId());
+                       Appointment a = new Appointment();
+                       a.setTitle(p.getSubject());
+                       a.setDescription(p.getMessage());
+                       a.setRoom(r);
+                       
a.setStart(CalendarHelper.getDate(start.getModelObject()));
+                       a.setEnd(CalendarHelper.getDate(end.getModelObject()));
+                       List<MeetingMember> attendees = new ArrayList<>();
+                       for (User to : modelTo.getObject()) {
+                       MeetingMember mm = new MeetingMember();
+                       mm.setUser(to);
+                       mm.setDeleted(false);
+                       mm.setInserted(a.getInserted());
+                       mm.setUpdated(a.getUpdated());
+                       mm.setAppointment(a);
+                       attendees.add(mm);
+                       }
+                       a.setOwner(getBean(UserDao.class).get(getUserId()));
+                       a.setMeetingMembers(attendees);
+               getBean(AppointmentDao.class).update(a, getUserId(), false);
                        p.setRoom(r);
                } else {
                        p.setRoom(null);

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
 Wed Sep 16 13:35:42 2015
@@ -81,6 +81,21 @@
                                                </tr>
                                        </table>
                                        <div style="background-color: 
white;min-height: 300px;" wicket:id="body"></div>
+                                       <div wicket:id="roomContainer">
+                                               <table style="width: 100%">
+                                                       <tr>
+                                                               <td>
+                                                                       <button 
class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" 
wicket:id="enter">
+                                                                               
<span class="ui-button-text"><wicket:message key="1282"/></span>
+                                                                       
</button>
+                                                               </td>
+                                                               <td>
+                                                                       <div 
style="display: inline=block; width: 300px;"><wicket:message key="570" 
/></div><span wicket:id="start"></span><br/>
+                                                                       <div 
style="display: inline=block; width: 300px;"><wicket:message key="571" 
/></div><span wicket:id="end"></span>
+                                                               </td>
+                                                       </tr>
+                                               </table>
+                                       </div>
                                </div>
                        </td>
                        <td class="side right" wicket:id="contacts">

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
 Wed Sep 16 13:35:42 2015
@@ -32,9 +32,12 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
 import org.apache.openmeetings.db.dao.user.PrivateMessageFolderDao;
 import org.apache.openmeetings.db.dao.user.PrivateMessagesDao;
 import org.apache.openmeetings.db.dao.user.UserContactsDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.PrivateMessage;
 import org.apache.openmeetings.db.entity.user.PrivateMessageFolder;
 import org.apache.openmeetings.db.entity.user.User;
@@ -47,6 +50,7 @@ import org.apache.openmeetings.web.commo
 import org.apache.openmeetings.web.data.DataViewContainer;
 import org.apache.openmeetings.web.data.OmOrderByBorder;
 import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.openmeetings.web.user.rooms.RoomEnterBehavior;
 import org.apache.openmeetings.web.util.ContactsHelper;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
@@ -72,13 +76,13 @@ import org.apache.wicket.model.CompoundP
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 
-import ro.fortsoft.wicket.dashboard.web.util.ConfirmAjaxCallListener;
-
 import com.googlecode.wicket.jquery.core.JQueryBehavior;
 import com.googlecode.wicket.jquery.core.Options;
 import 
com.googlecode.wicket.jquery.ui.plugins.fixedheadertable.FixedHeaderTableBehavior;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
 
+import ro.fortsoft.wicket.dashboard.web.util.ConfirmAjaxCallListener;
+
 public class MessagesContactsPanel extends UserPanel {
        private static final long serialVersionUID = 1L;
        private final static long MOVE_CHOOSE = -1;
@@ -98,6 +102,7 @@ public class MessagesContactsPanel exten
        private final WebMarkupContainer sent = new WebMarkupContainer("sent");
        private final WebMarkupContainer trash = new 
WebMarkupContainer("trash");
        private final WebMarkupContainer selectedMessage = new 
WebMarkupContainer("selectedMessage");
+       private final WebMarkupContainer roomContainer = new 
WebMarkupContainer("roomContainer");
        private final WebMarkupContainer buttons = new 
WebMarkupContainer("buttons");
        private final WebMarkupContainer contacts = new 
WebMarkupContainer("contacts");
        private final MessageDialog newMessage;
@@ -176,6 +181,17 @@ public class MessagesContactsPanel exten
                selectedMessage.addOrReplace(new Label("to", msg == null ? "" : 
getEmail(msg.getTo())));
                selectedMessage.addOrReplace(new Label("subj", msg == null ? "" 
: msg.getSubject()));
                selectedMessage.addOrReplace(new Label("body", msg == null ? "" 
: msg.getMessage()).setEscapeModelStrings(false));
+               if (msg != null) {
+                       Room r = msg.getRoom();
+                       if (r != null) {
+                               //TODO add time check
+                               Appointment a = 
getBean(AppointmentDao.class).getAppointmentByRoom(r.getRooms_id());
+                               roomContainer.addOrReplace(new Label("start", a 
== null ? "" : getDateFormat().format(a.getStart())));
+                               roomContainer.addOrReplace(new Label("end", a 
== null ? "" : getDateFormat().format(a.getEnd())));
+                               roomContainer.addOrReplace(new 
Button("enter").add(new RoomEnterBehavior(r.getRooms_id())));
+                       }
+                       roomContainer.setVisible(r != null);
+               }
                if (target != null) {
                        target.add(selectedMessage);
                        updateControls(target);
@@ -518,7 +534,7 @@ public class MessagesContactsPanel exten
                selectMessage(-1, null);
                add(container.add(dv).setOutputMarkupId(true));
                //TODO add valid autoupdate add(new 
AjaxSelfUpdatingTimerBehavior(seconds(15)));
-               add(selectedMessage.setOutputMarkupId(true));
+               
add(selectedMessage.add(roomContainer.setVisible(false)).setOutputMarkupId(true));
                
                IDataProvider<UserContact> dp = new 
IDataProvider<UserContact>() {
                        private static final long serialVersionUID = 1L;

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceService.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceService.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceService.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceService.java
 Wed Sep 16 13:35:42 2015
@@ -230,7 +230,7 @@ public class ConferenceService {
                        return null;
 
                try {
-                       Appointment ment = 
appointmentDao.getAppointmentByRoom(roomId);
+                       Appointment ment = appointmentDao.getByRoom(roomId);
 
                        return ment;
                } catch (Exception e) {
@@ -253,7 +253,7 @@ public class ConferenceService {
 
                if (AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
 
-                       List<Appointment> points = 
appointmentDao.getTodaysAppointmentsbyRangeAndMember(userId);
+                       List<Appointment> points = 
appointmentDao.getForToday(userId);
                        List<Room> result = new ArrayList<Room>();
 
                        if (points != null) {
@@ -289,7 +289,7 @@ public class ConferenceService {
                        Long userId = sessiondataDao.checkSession(SID);
 
                        if 
(AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
-                               List<Appointment> appointments = 
appointmentDao.getTodaysAppointmentsbyRangeAndMember(userId);
+                               List<Appointment> appointments = 
appointmentDao.getForToday(userId);
                                List<Room> result = new ArrayList<Room>();
 
                                if (appointments != null) {

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
 Wed Sep 16 13:35:42 2015
@@ -1242,7 +1242,7 @@ public class ScopeApplicationAdapter ext
                        } else {
                                // If this is an Appointment then the Moderator 
will be set to the Invitor
 
-                               Appointment ment = 
appointmentDao.getAppointmentByRoom(roomId);
+                               Appointment ment = 
appointmentDao.getByRoom(roomId);
 
                                Long userIdInRoomClient = 
currentClient.getUserId();
 

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
 Wed Sep 16 13:35:42 2015
@@ -38,8 +38,8 @@ import org.apache.openmeetings.db.dao.ro
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
-import org.apache.openmeetings.db.entity.calendar.MeetingMember;
 import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
 import org.apache.openmeetings.db.entity.room.Invitation.MessageType;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.util.TimezoneUtil;
@@ -84,8 +84,8 @@ public class AppointmentDao {
                return appoint;
        }
 
-       public Appointment getAppointmentByIdBackup(Long appointmentId) {
-               TypedQuery<Appointment> query = 
em.createNamedQuery("getAppointmentByIdAny", 
Appointment.class).setParameter("id", appointmentId);
+       public Appointment getAny(Long id) {
+               TypedQuery<Appointment> query = 
em.createNamedQuery("getAppointmentByIdAny", 
Appointment.class).setParameter("id", id);
 
                Appointment appoint = null;
                try {
@@ -100,58 +100,51 @@ public class AppointmentDao {
                return em.createNamedQuery("getAppointments", 
Appointment.class).getResultList();
        }
 
-       public Long addAppointmentObj(Appointment ap) {
-               try {
-                       ap.setInserted(new Date());
-                       em.persist(ap);
-
-                       return ap.getId();
-               } catch (Exception ex2) {
-                       log.error("[addAppointmentObj]: ", ex2);
-               }
-               return null;
-       }
-
        public Appointment update(Appointment a, Long userId) {
+               return update(a, userId, true);
+       }
+       
+       public Appointment update(Appointment a, Long userId, boolean 
sendmails) {
                Room r = a.getRoom();
                if (r.getId() == null) {
                        r.setName(a.getTitle());
                        
r.setNumberOfPartizipants(cfgDao.getConfValue("calendar.conference.rooms.default.size",
 Long.class, "50"));
                }
                roomDao.update(r, userId);
-               Set<Long> mmIds = a.getId() == null ? new HashSet<Long>()
-                               : 
meetingMemberDao.getMeetingMemberIdsByAppointment(a.getId());
-               // update meeting members
-               //TODO update email need to be sent on meeting members list 
update
-               Appointment a0 = a.getId() == null ? null : get(a.getId());
-               boolean sendMail = a0 == null || 
!a0.getTitle().equals(a.getTitle()) ||
-                               !(a0.getDescription() != null ? 
a0.getDescription().equals(a.getDescription()) : true) ||
-                               !(a0.getLocation() != null ? 
a0.getLocation().equals(a.getLocation()) : true) ||
-                               !a0.getStart().equals(a.getStart()) ||
-                               !a0.getEnd().equals(a.getEnd());
-               List<MeetingMember> mmList = a.getMeetingMembers();
-               if (mmList != null){
-                       for (MeetingMember mm : mmList) {
-                               if (mm.getId() == null || 
!mmIds.contains(mm.getId())) {
-                                       invitationManager.processInvitation(a, 
mm, MessageType.Create);
-                               } else {
-                                       mmIds.remove(mm.getId());
-                                       invitationManager.processInvitation(a, 
mm, MessageType.Update, sendMail);
+               if (sendmails) {
+                       Set<Long> mmIds = a.getId() == null ? new 
HashSet<Long>()
+                                       : 
meetingMemberDao.getMeetingMemberIdsByAppointment(a.getId());
+                       // update meeting members
+                       Appointment a0 = a.getId() == null ? null : 
get(a.getId());
+                       boolean sendMail = a0 == null || 
!a0.getTitle().equals(a.getTitle()) ||
+                                       !(a0.getDescription() != null ? 
a0.getDescription().equals(a.getDescription()) : true) ||
+                                       !(a0.getLocation() != null ? 
a0.getLocation().equals(a.getLocation()) : true) ||
+                                       !a0.getStart().equals(a.getStart()) ||
+                                       !a0.getEnd().equals(a.getEnd());
+                       List<MeetingMember> mmList = a.getMeetingMembers();
+                       if (mmList != null){
+                               for (MeetingMember mm : mmList) {
+                                       if (mm.getId() == null || 
!mmIds.contains(mm.getId())) {
+                                               
invitationManager.processInvitation(a, mm, MessageType.Create);
+                                       } else {
+                                               mmIds.remove(mm.getId());
+                                               
invitationManager.processInvitation(a, mm, MessageType.Update, sendMail);
+                                       }
                                }
                        }
-               }
-               for (long id : mmIds) {
-                       invitationManager.processInvitation(a, 
meetingMemberDao.get(id), MessageType.Cancel);
-               }
-               //notify owner
-               MeetingMember owner = new MeetingMember();
-               owner.setUser(a.getOwner());
-               if (a.getId() == null) {
-                       invitationManager.processInvitation(a, owner, 
MessageType.Create);
-               } else if (a.isDeleted()) {
-                       invitationManager.processInvitation(a, owner, 
MessageType.Cancel);
-               } else if (sendMail) {
-                       invitationManager.processInvitation(a, owner, 
MessageType.Update, sendMail);
+                       for (long id : mmIds) {
+                               invitationManager.processInvitation(a, 
meetingMemberDao.get(id), MessageType.Cancel);
+                       }
+                       //notify owner
+                       MeetingMember owner = new MeetingMember();
+                       owner.setUser(a.getOwner());
+                       if (a.getId() == null) {
+                               invitationManager.processInvitation(a, owner, 
MessageType.Create);
+                       } else if (a.isDeleted()) {
+                               invitationManager.processInvitation(a, owner, 
MessageType.Cancel);
+                       } else if (sendMail) {
+                               invitationManager.processInvitation(a, owner, 
MessageType.Update, sendMail);
+                       }
                }
                if (a.getId() == null) {
                        a.setInserted(new Date());
@@ -163,18 +156,6 @@ public class AppointmentDao {
                return a;
        }
        
-       // 
----------------------------------------------------------------------------------------------------------------------------
-
-       public Long updateAppointment(Appointment appointment) {
-               if (appointment.getId() != null) {
-                       appointment = em.merge(appointment);
-                       return appointment.getId();
-               } else {
-                       log.error("[updateAppointment] " + "Error: No 
AppointmentId given");
-               }
-               return null;
-       }
-
        // 
----------------------------------------------------------------------------------------------------------
 
        public void delete(Appointment a, Long userId) {
@@ -187,7 +168,7 @@ public class AppointmentDao {
                update(a, userId);
        }
        
-       public List<Appointment> getAppointmentsByRange(Long userId, Date 
start, Date end) {
+       public List<Appointment> getInRange(Long userId, Date start, Date end) {
                log.debug("Start " + start + " End " + end);
 
                TypedQuery<Appointment> query = 
em.createNamedQuery("appointmentsInRange", Appointment.class);
@@ -208,7 +189,7 @@ public class AppointmentDao {
                return listAppoints;
        }
 
-       public List<Appointment> getAppointmentsInRange(Calendar start, 
Calendar end) {
+       public List<Appointment> getInRange(Calendar start, Calendar end) {
                TypedQuery<Appointment> q = 
em.createNamedQuery("appointmentsInRangeRemind", Appointment.class);
                q.setParameter("none", Reminder.none);
                q.setParameter("start", start.getTime());
@@ -216,27 +197,8 @@ public class AppointmentDao {
                return q.getResultList();
        }
        
-       public List<Appointment> getAppointmentsByCat(Long categoryId) {
-               try {
-
-                       String hql = "select a from Appointments a "
-                                       + "WHERE a.deleted false "
-                                       + "AND a.appointmentCategory.categoryId 
= :categoryId";
-
-                       TypedQuery<Appointment> query = em.createQuery(hql,
-                                       Appointment.class);
-                       query.setParameter("categoryId", categoryId);
-
-                       List<Appointment> listAppoints = query.getResultList();
-                       return listAppoints;
-               } catch (Exception ex2) {
-                       log.error("[getAppointements]: ", ex2);
-               }
-               return null;
-       }
-
        // next appointment to select date
-       public Appointment getNextAppointment(Long userId, Date start) {
+       public Appointment getNext(Long userId, Date start) {
                List<Appointment> list = 
em.createNamedQuery("getNextAppointment", Appointment.class)
                                .setParameter("start", 
start).setParameter("userId", userId).getResultList();
                return list == null || list.isEmpty() ? null : list.get(0);
@@ -252,7 +214,7 @@ public class AppointmentDao {
         * @param userId
         * @return
         */
-       public List<Appointment> getTodaysAppointmentsbyRangeAndMember(Long 
userId) {
+       public List<Appointment> getForToday(Long userId) {
                log.debug("getAppoitmentbyRangeAndMember : UserID - " + userId);
 
                TimeZone timeZone = 
timezoneUtil.getTimeZone(userDao.get(userId));
@@ -280,23 +242,21 @@ public class AppointmentDao {
 
        // 
---------------------------------------------------------------------------------------------
 
-       public Appointment getAppointmentByOwnerRoom(Long userId, Long roomId) {
+       public Appointment getByRoom(Long userId, Long roomId) {
                try {
-                       TypedQuery<Appointment> query = 
em.createNamedQuery("getAppointmentByOwnerRoomId", Appointment.class);
-
-                       query.setParameter("userId", userId);
-                       query.setParameter("roomId", roomId);
-
-                       List<Appointment> list = query.getResultList();
+                       List<Appointment> list = 
em.createNamedQuery("getAppointmentByOwnerRoomId", Appointment.class)
+                                       .setParameter("userId", userId)
+                                       .setParameter("roomId", roomId)
+                                       .getResultList();
 
                        return list.size() > 0 ? list.get(0) : null;
                } catch (Exception e) {
-                       log.error("[getAppointmentByRoomId]", e);
+                       log.error("[getByRoom]", e);
                        return null;
                }
        }
 
-       public Appointment getAppointmentByRoom(Long roomId) {
+       public Appointment getByRoom(Long roomId) {
                List<Appointment> list = 
em.createNamedQuery("getAppointmentByRoomId", Appointment.class)
                                .setParameter("roomId", roomId)
                                .getResultList();

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageDao.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageDao.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageDao.java
 Wed Sep 16 13:35:42 2015
@@ -167,10 +167,9 @@ public class PrivateMessageDao implement
                return query.executeUpdate();
        }
        
-       public List<PrivateMessage> getPrivateMessagesByRoom(Long roomId) {
-               TypedQuery<PrivateMessage> query = 
em.createNamedQuery("getPrivateMessagesByRoom", PrivateMessage.class); 
-               query.setParameter("roomId", roomId);
-               return query.getResultList();
+       public List<PrivateMessage> getByRoom(Long roomId) {
+               return em.createNamedQuery("getPrivateMessagesByRoom", 
PrivateMessage.class)
+                               .setParameter("roomId", roomId).getResultList();
        }
 
        public List<PrivateMessage> get(String search, int start, int count, 
String order) {

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/AppointmentConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/AppointmentConverter.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/AppointmentConverter.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/AppointmentConverter.java
 Wed Sep 16 13:35:42 2015
@@ -42,7 +42,7 @@ public class AppointmentConverter extend
                long oldId = getLong(node);
                long newId = idMap.containsKey(oldId) ? idMap.get(oldId) : 
oldId;
                
-               Appointment a = appointmentDao.getAppointmentByIdBackup(newId);
+               Appointment a = appointmentDao.getAny(newId);
                return a == null ? new Appointment() : a;
        }
 

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
 Wed Sep 16 13:35:42 2015
@@ -406,8 +406,8 @@ public class BackupImport {
                                if (a.getRoom() != null && a.getRoom().getId() 
== null) {
                                        a.setRoom(null);
                                }
-                               Long newAppId = 
appointmentDao.addAppointmentObj(a);
-                               appointmentsMap.put(appId, newAppId);
+                               a = appointmentDao.update(a, null, false);
+                               appointmentsMap.put(appId, a.getId());
                        }
                }
 

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/AppointmentLogic.java
 Wed Sep 16 13:35:42 2015
@@ -142,7 +142,7 @@ public class AppointmentLogic {
                        end.setTimeInMillis(end.getTimeInMillis() + 
milliseconds);
                }
 
-               for (Appointment a : 
appointmentDao.getAppointmentsInRange(start, end)) {
+               for (Appointment a : appointmentDao.getInRange(start, end)) {
                        // Prevent email from being send twice, even if the 
cycle takes
                        // very long to send each
                        if (a.isReminderEmailSend()) {
@@ -158,7 +158,7 @@ public class AppointmentLogic {
                        }
                        // Update Appointment to not send invitation twice
                        a.setReminderEmailSend(true);
-                       appointmentDao.updateAppointment(a);
+                       appointmentDao.update(a, null, false);
 
                        List<MeetingMember> members = a.getMeetingMembers();
 

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
 Wed Sep 16 13:35:42 2015
@@ -240,7 +240,7 @@ public class RoomPanel extends BasePanel
                boolean allowed = false;
                String deniedMessage = null;
                if (r.isAppointment()) {
-                       Appointment a = 
getBean(AppointmentDao.class).getAppointmentByRoom(roomId);
+                       Appointment a = 
getBean(AppointmentDao.class).getByRoom(roomId);
                        if (a != null && !a.isDeleted()) {
                                allowed = 
a.getOwner().getId().equals(getUserId());
                                log.debug("appointed room, isOwner ? " + 
allowed);

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentModel.java
 Wed Sep 16 13:35:42 2015
@@ -42,7 +42,7 @@ public class AppointmentModel extends Ca
        @Override
        protected List<? extends CalendarEvent> load() {
                List<CalendarEvent> list = new ArrayList<CalendarEvent>();
-               for (Appointment a : 
Application.getBean(AppointmentDao.class).getAppointmentsByRange(getUserId(), 
CalendarHelper.getDate(getStart()), CalendarHelper.getDate(getEnd()))) {
+               for (Appointment a : 
Application.getBean(AppointmentDao.class).getInRange(getUserId(), 
CalendarHelper.getDate(getStart()), CalendarHelper.getDate(getEnd()))) {
                        list.add(new OmCalendarEvent(a));
                }
                return list;

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessageDialog.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessageDialog.java
 Wed Sep 16 13:35:42 2015
@@ -33,10 +33,13 @@ import java.util.List;
 
 import org.apache.openmeetings.core.mail.MailHandler;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
 import org.apache.openmeetings.db.dao.room.IInvitationManager;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.user.PrivateMessageDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.calendar.MeetingMember;
 import org.apache.openmeetings.db.entity.room.Invitation;
 import org.apache.openmeetings.db.entity.room.Invitation.Valid;
 import org.apache.openmeetings.db.entity.room.Room;
@@ -180,10 +183,29 @@ public class MessageDialog extends Abstr
                        r.setName(p.getSubject());
                        r.setComment("");
                        r.setNumberOfPartizipants(100L);
-                       r.setAppointment(false);
+                       r.setAppointment(true);
                        r.setAllowUserQuestions(true);
                        r.setAllowFontStyles(true);
                        r = getBean(RoomDao.class).update(r, getUserId());
+                       Appointment a = new Appointment();
+                       a.setTitle(p.getSubject());
+                       a.setDescription(p.getMessage());
+                       a.setRoom(r);
+                       
a.setStart(CalendarHelper.getDate(start.getModelObject()));
+                       a.setEnd(CalendarHelper.getDate(end.getModelObject()));
+                       List<MeetingMember> attendees = new ArrayList<>();
+                       for (User to : modelTo.getObject()) {
+                       MeetingMember mm = new MeetingMember();
+                       mm.setUser(to);
+                       mm.setDeleted(false);
+                       mm.setInserted(a.getInserted());
+                       mm.setUpdated(a.getUpdated());
+                       mm.setAppointment(a);
+                       attendees.add(mm);
+                       }
+                       a.setOwner(getBean(UserDao.class).get(getUserId()));
+                       a.setMeetingMembers(attendees);
+               getBean(AppointmentDao.class).update(a, getUserId(), false);
                        p.setRoom(r);
                } else {
                        p.setRoom(null);

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
 Wed Sep 16 13:35:42 2015
@@ -81,6 +81,21 @@
                                                </tr>
                                        </table>
                                        <div style="background-color: 
white;min-height: 300px;" wicket:id="body"></div>
+                                       <div wicket:id="roomContainer">
+                                               <table style="width: 100%">
+                                                       <tr>
+                                                               <td>
+                                                                       <button 
class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" 
wicket:id="enter">
+                                                                               
<span class="ui-button-text"><wicket:message key="1282"/></span>
+                                                                       
</button>
+                                                               </td>
+                                                               <td>
+                                                                       <div 
style="display: inline=block; width: 300px;"><wicket:message key="570" 
/></div><span wicket:id="start"></span><br/>
+                                                                       <div 
style="display: inline=block; width: 300px;"><wicket:message key="571" 
/></div><span wicket:id="end"></span>
+                                                               </td>
+                                                       </tr>
+                                               </table>
+                                       </div>
                                </div>
                        </td>
                        <td class="side right" wicket:id="contacts">

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
 Wed Sep 16 13:35:42 2015
@@ -32,9 +32,12 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
-import org.apache.openmeetings.db.dao.user.PrivateMessageFolderDao;
+import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
 import org.apache.openmeetings.db.dao.user.PrivateMessageDao;
+import org.apache.openmeetings.db.dao.user.PrivateMessageFolderDao;
 import org.apache.openmeetings.db.dao.user.UserContactDao;
+import org.apache.openmeetings.db.entity.calendar.Appointment;
+import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.PrivateMessage;
 import org.apache.openmeetings.db.entity.user.PrivateMessageFolder;
 import org.apache.openmeetings.db.entity.user.User;
@@ -47,6 +50,7 @@ import org.apache.openmeetings.web.commo
 import org.apache.openmeetings.web.data.DataViewContainer;
 import org.apache.openmeetings.web.data.OmOrderByBorder;
 import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.openmeetings.web.user.rooms.RoomEnterBehavior;
 import org.apache.openmeetings.web.util.ContactsHelper;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
@@ -74,13 +78,13 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.util.ListModel;
 
-import ro.fortsoft.wicket.dashboard.web.util.ConfirmAjaxCallListener;
-
 import com.googlecode.wicket.jquery.core.JQueryBehavior;
 import com.googlecode.wicket.jquery.core.Options;
 import 
com.googlecode.wicket.jquery.ui.plugins.fixedheadertable.FixedHeaderTableBehavior;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
 
+import ro.fortsoft.wicket.dashboard.web.util.ConfirmAjaxCallListener;
+
 public class MessagesContactsPanel extends UserPanel {
        private static final long serialVersionUID = 1L;
        private final static long MOVE_CHOOSE = -1;
@@ -100,6 +104,7 @@ public class MessagesContactsPanel exten
        private final WebMarkupContainer sent = new WebMarkupContainer("sent");
        private final WebMarkupContainer trash = new 
WebMarkupContainer("trash");
        private final WebMarkupContainer selectedMessage = new 
WebMarkupContainer("selectedMessage");
+       private final WebMarkupContainer roomContainer = new 
WebMarkupContainer("roomContainer");
        private final WebMarkupContainer buttons = new 
WebMarkupContainer("buttons");
        private final WebMarkupContainer contacts = new 
WebMarkupContainer("contacts");
        private final MessageDialog newMessage;
@@ -178,6 +183,17 @@ public class MessagesContactsPanel exten
                selectedMessage.addOrReplace(new Label("to", msg == null ? "" : 
getEmail(msg.getTo())));
                selectedMessage.addOrReplace(new Label("subj", msg == null ? "" 
: msg.getSubject()));
                selectedMessage.addOrReplace(new Label("body", msg == null ? "" 
: msg.getMessage()).setEscapeModelStrings(false));
+               if (msg != null) {
+                       Room r = msg.getRoom();
+                       if (r != null) {
+                               //TODO add time check
+                               Appointment a = 
getBean(AppointmentDao.class).getByRoom(r.getId());
+                               roomContainer.addOrReplace(new Label("start", a 
== null ? "" : getDateFormat().format(a.getStart())));
+                               roomContainer.addOrReplace(new Label("end", a 
== null ? "" : getDateFormat().format(a.getEnd())));
+                               roomContainer.addOrReplace(new 
Button("enter").add(new RoomEnterBehavior(r.getId())));
+                       }
+                       roomContainer.setVisible(r != null);
+               }
                if (target != null) {
                        target.add(selectedMessage);
                        updateControls(target);
@@ -520,7 +536,7 @@ public class MessagesContactsPanel exten
                selectMessage(-1, null);
                add(container.add(dv).setOutputMarkupId(true));
                //TODO add valid autoupdate add(new 
AjaxSelfUpdatingTimerBehavior(seconds(15)));
-               add(selectedMessage.setOutputMarkupId(true));
+               
add(selectedMessage.add(roomContainer.setVisible(false)).setOutputMarkupId(true));
                
                IDataProvider<UserContact> dp = new 
IDataProvider<UserContact>() {
                        private static final long serialVersionUID = 1L;

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractJUnitDefaults.java
 Wed Sep 16 13:35:42 2015
@@ -132,8 +132,8 @@ public abstract class AbstractJUnitDefau
 
                ap.setOwner(userDao.get(1L));
                ap.setConnectedEvent(false);
-               Long id = appointmentDao.addAppointmentObj(ap);
-               assertNotNull("Cann't add appointment", id);
+               ap = appointmentDao.update(ap, null, false);
+               assertNotNull("Cann't add appointment", ap.getId());
                return ap;
        }
 

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureAppointment.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureAppointment.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureAppointment.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureAppointment.java
 Wed Sep 16 13:35:42 2015
@@ -53,7 +53,7 @@ public class TestDatabaseStructureAppoin
                                Date date = format.parse( "2008-17-08" );
                                Date date2 = format.parse( "2008-18-08" );
                
-                               List<Appointment> listAppoints =        
appointmentDao.getAppointmentsByRange(1L, date, date2);
+                               List<Appointment> listAppoints =        
appointmentDao.getInRange(1L, date, date2);
                        //List<Appointment> listAppoints = 
AppointmentDaoImpl.getInstance().searchAppointmentsByName("%");
                        
//AppointmentDaoImpl.getInstance().getNextAppointmentById(1L);
                        
//AppointmentDaoImpl.getInstance().addAppointment("mezo",1L, "Pforzheim", 
"zweiter", Calendar.getInstance().getTime() , 

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureGetAppointmentByRange.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureGetAppointmentByRange.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureGetAppointmentByRange.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestDatabaseStructureGetAppointmentByRange.java
 Wed Sep 16 13:35:42 2015
@@ -85,7 +85,7 @@ public class TestDatabaseStructureGetApp
                a3 = appointmentDao.update(a3, userId);
                
                int a1found = 0, a2found = 0, a3found = 0;
-               for (Appointment a : 
appointmentDao.getAppointmentsByRange(userId, rangeStart.getTime(), 
rangeEnd.getTime())) {
+               for (Appointment a : appointmentDao.getInRange(userId, 
rangeStart.getTime(), rangeEnd.getTime())) {
                        int mmCount = a.getMeetingMembers() == null ? 0 : 
a.getMeetingMembers().size();
                        if (a.getId().equals(a1.getId())) {
                                assertEquals("Inapropriate MeetingMembers 
count", 0, mmCount);

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java?rev=1703407&r1=1703406&r2=1703407&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
 Wed Sep 16 13:35:42 2015
@@ -95,7 +95,7 @@ public class CalendarWebService {
                try {
                        Long userId = sessionDao.checkSession(sid);
                        if 
(AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
-                               return 
AppointmentDTO.list(appointmentDao.getAppointmentsByRange(userId, 
start.getTime(), end.getTime()));
+                               return 
AppointmentDTO.list(appointmentDao.getInRange(userId, start.getTime(), 
end.getTime()));
                        } else {
                                throw new ServiceException("Insufficient 
permissins"); //TODO code -26
                        }
@@ -133,7 +133,7 @@ public class CalendarWebService {
                try {
                        Long authUserId = sessionDao.checkSession(sid);
                        if 
(AuthLevelUtil.hasWebServiceLevel(userDao.getRights(authUserId))) {
-                               return 
AppointmentDTO.list(appointmentDao.getAppointmentsByRange(userid, 
start.getTime(), end.getTime()));
+                               return 
AppointmentDTO.list(appointmentDao.getInRange(userid, start.getTime(), 
end.getTime()));
                        } else {
                                throw new ServiceException("Insufficient 
permissins"); //TODO code -26
                        }
@@ -158,7 +158,7 @@ public class CalendarWebService {
                try {
                        Long userId = sessionDao.checkSession(sid);
                        if 
(AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
-                               return new 
AppointmentDTO(appointmentDao.getNextAppointment(userId, new Date()));
+                               return new 
AppointmentDTO(appointmentDao.getNext(userId, new Date()));
                        } else {
                                throw new ServiceException("Insufficient 
permissins"); //TODO code -26
                        }
@@ -186,7 +186,7 @@ public class CalendarWebService {
                try {
                        Long authUserId = sessionDao.checkSession(sid);
                        if 
(AuthLevelUtil.hasWebServiceLevel(userDao.getRights(authUserId))) {
-                               return new 
AppointmentDTO(appointmentDao.getNextAppointment(userid, new Date()));
+                               return new 
AppointmentDTO(appointmentDao.getNext(userid, new Date()));
                        } else {
                                throw new ServiceException("Insufficient 
permissins"); //TODO code -26
                        }
@@ -212,7 +212,7 @@ public class CalendarWebService {
                try {
                        Long userId = sessionDao.checkSession(sid);
                        if 
(AuthLevelUtil.hasUserLevel(userDao.getRights(userId))) {
-                               Appointment app = 
appointmentDao.getAppointmentByOwnerRoom(userId, roomid);
+                               Appointment app = 
appointmentDao.getByRoom(userId, roomid);
                                if (app != null) {
                                        return new AppointmentDTO(app);
                                }
@@ -636,7 +636,7 @@ public class CalendarWebService {
                        Long userId = sessionDao.checkSession(SID);
 
                        if 
(AuthLevelUtil.hasWebServiceLevel(userDao.getRights(userId))) {
-                               Appointment a = 
appointmentDao.getAppointmentByRoom(roomId);
+                               Appointment a = 
appointmentDao.getByRoom(roomId);
 
                                if (email == null || a == null) {
                                        return -1L;


Reply via email to