Author: solomax
Date: Thu Sep 11 14:44:36 2014
New Revision: 1624307

URL: http://svn.apache.org/r1624307
Log:
[OPENMEETINGS-1085] initial work for room rights

Added:
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/PollCreated.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/RoomMessage.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/UserEnter.java
Modified:
    
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/conference/RoomManager.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/room/PollDao.java
    
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomModeratorsDao.java
    
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
    
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java
    
openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Client.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/CreatePollDialog.html
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/CreatePollDialog.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/conference/RoomManager.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/conference/RoomManager.java?rev=1624307&r1=1624306&r2=1624307&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/conference/RoomManager.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/conference/RoomManager.java
 Thu Sep 11 14:44:36 2014
@@ -386,10 +386,10 @@ public class RoomManager implements IRoo
                        Boolean isSuperModerator = 
Boolean.parseBoolean(roomModeratorObj.get("isSuperModerator").toString());
 
                        RoomModerator rm = new RoomModerator();
-                       rm.setRoomModeratorsId(roomModeratorsId);
+                       rm.setId(roomModeratorsId);
                        rm.setRoomId(roomId);
                        rm.setUser(usersDao.get(userId));
-                       rm.setIsSuperModerator(isSuperModerator);
+                       rm.setSuperModerator(isSuperModerator);
                        
                        result.add(rm);
                }
@@ -438,7 +438,7 @@ public class RoomManager implements IRoo
                        r.setIsDemoRoom(isDemoRoom);
                        r.setDemoTime(demoTime);
 
-                       r.setIsModeratedRoom(isModeratedRoom);
+                       r.setModerated(isModeratedRoom);
                        r.setHideTopBar(hideTopBar);
 
                        r.setDeleted(false);
@@ -523,7 +523,7 @@ public class RoomManager implements IRoo
                        r.setIsDemoRoom(isDemoRoom);
                        r.setDemoTime(demoTime);
 
-                       r.setIsModeratedRoom(isModeratedRoom);
+                       r.setModerated(isModeratedRoom);
 
                        r.setDeleted(false);
 
@@ -773,7 +773,7 @@ public class RoomManager implements IRoo
 
                        r.setAppointment(appointment);
 
-                       r.setIsModeratedRoom(isModeratedRoom);
+                       r.setModerated(isModeratedRoom);
                        r.setHideTopBar(hideTopBar);
 
                        r.setIsClosed(isClosed);

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=1624307&r1=1624306&r2=1624307&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
 Thu Sep 11 14:44:36 2014
@@ -1112,7 +1112,7 @@ public class ScopeApplicationAdapter ext
                                // No moderator in this room at the moment
                                Room room = 
roomDao.get(currentClient.getRoom_id());
 
-                               return room.getIsModeratedRoom() ? 3L : 1L;
+                               return room.isModerated() ? 3L : 1L;
                        }
 
                } catch (Exception err) {
@@ -1219,7 +1219,7 @@ public class ScopeApplicationAdapter ext
                        // not really - default logic
                        if (room.getAppointment() == null || 
room.getAppointment() == false) {
 
-                               if (room.getIsModeratedRoom()) {
+                               if (room.isModerated()) {
 
                                        // if this is a Moderated Room then the 
Room can be only
                                        // locked off by the Moderator Bit
@@ -1343,7 +1343,7 @@ public class ScopeApplicationAdapter ext
 
                        // default logic for non regular rooms
                        if (room.getAppointment() == null || 
room.getAppointment() == false) {
-                               if (room.getIsModeratedRoom()) {
+                               if (room.isModerated()) {
                                        // if this is a Moderated Room then the 
Room can be only
                                        // locked off by the Moderator Bit
                                        // List<RoomClient> 
clientModeratorListRoom =

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/PollDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/PollDao.java?rev=1624307&r1=1624306&r2=1624307&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/PollDao.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/PollDao.java
 Thu Sep 11 14:44:36 2014
@@ -100,8 +100,14 @@ public class PollDao {
        }
 
 
-       public RoomPoll updatePoll(RoomPoll rp) {
-               return em.merge(rp);
+       public RoomPoll update(RoomPoll p) {
+               if (p.getId() == null) {
+                       p.setCreated(new Date());
+                       em.persist(p);
+               } else {
+                       p =     em.merge(p);
+               }
+               return p;
        }
 
        public boolean closePoll(Long room_id){
@@ -198,7 +204,7 @@ public class PollDao {
                } catch (NoResultException nre) {
                        //expected
                } catch (Exception err) {
-                       log.error("[getPoll]", err);
+                       log.error("[hasVoted]", err);
                }
                return false;
        }

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomModeratorsDao.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomModeratorsDao.java?rev=1624307&r1=1624306&r2=1624307&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomModeratorsDao.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomModeratorsDao.java
 Thu Sep 11 14:44:36 2014
@@ -55,7 +55,7 @@ public class RoomModeratorsDao {
        }
 
        public RoomModerator update(RoomModerator rm, Long userId) {
-               if (rm.getRoomModeratorsId() == 0) {
+               if (rm.getId() == 0) {
                        rm.setStarttime(new Date());
                        em.persist(rm);
                } else {

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java?rev=1624307&r1=1624306&r2=1624307&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
 Thu Sep 11 14:44:36 2014
@@ -147,8 +147,8 @@ public class Room implements IDataProvid
        // If this is true all participants of a meeting have to wait for the
        // moderator to come into the room
        @Column(name = "ismoderatedroom")
-       @Element(data = true, required = false)
-       private Boolean isModeratedRoom;
+       @Element(name="isModeratedRoom", data = true, required = false)
+       private boolean moderated;
 
        @Column(name = "allow_user_questions")
        @Element(data = true, required = false)
@@ -365,12 +365,12 @@ public class Room implements IDataProvid
                this.demoTime = demoTime;
        }
 
-       public Boolean getIsModeratedRoom() {
-               return isModeratedRoom;
+       public boolean isModerated() {
+               return moderated;
        }
 
-       public void setIsModeratedRoom(Boolean isModeratedRoom) {
-               this.isModeratedRoom = isModeratedRoom;
+       public void setModerated(boolean moderated) {
+               this.moderated = moderated;
        }
 
        public Long getExternalRoomId() {

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java?rev=1624307&r1=1624306&r2=1624307&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomModerator.java
 Thu Sep 11 14:44:36 2014
@@ -40,8 +40,8 @@ import org.simpleframework.xml.Root;
 
 @Entity
 @NamedQueries({
-       @NamedQuery(name = "getRoomModeratorById", query = "select c from 
RoomModerator as c where c.roomModeratorsId = :roomModeratorsId"),
-       @NamedQuery(name = "getRoomModeratorsByIds", query = "select c from 
RoomModerator as c where c.roomModeratorsId IN :ids"),
+       @NamedQuery(name = "getRoomModeratorById", query = "select c from 
RoomModerator as c where c.id = :id"),
+       @NamedQuery(name = "getRoomModeratorsByIds", query = "select c from 
RoomModerator as c where c.id IN :ids"),
        @NamedQuery(name = "getRoomModeratorByRoomId", query = "select c from 
RoomModerator as c where c.roomId = :roomId AND c.deleted = false"),
        @NamedQuery(name = "getRoomModeratorByUserAndRoomId", query = "select c 
from RoomModerator as c "
                        + "where c.roomId = :roomId AND c.deleted false AND 
c.user.id = :user_id")
@@ -54,14 +54,14 @@ public class RoomModerator implements Se
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name="id")
-       private long roomModeratorsId;
+       private Long id;
        
        @Column(name = "roomId")
        private Long roomId;
        
        @Column(name="is_supermoderator")
        @Element(name="is_supermoderator", data = true)
-       private Boolean isSuperModerator;
+       private boolean superModerator;
        
        @ManyToOne(fetch = FetchType.EAGER) 
        @JoinColumn (name="user_id")
@@ -78,18 +78,18 @@ public class RoomModerator implements Se
        @Column(name = "deleted")
        private boolean deleted;
        
-       public long getRoomModeratorsId() {
-               return roomModeratorsId;
+       public Long getId() {
+               return id;
        }
-       public void setRoomModeratorsId(long roomModeratorsId) {
-               this.roomModeratorsId = roomModeratorsId;
+       public void setId(Long id) {
+               this.id = id;
        }
        
-       public Boolean getIsSuperModerator() {
-               return isSuperModerator;
+       public boolean isSuperModerator() {
+               return superModerator;
        }
-       public void setIsSuperModerator(Boolean isSuperModerator) {
-               this.isSuperModerator = isSuperModerator;
+       public void setSuperModerator(boolean superModerator) {
+               this.superModerator = superModerator;
        }
        
        

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java?rev=1624307&r1=1624306&r2=1624307&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
 Thu Sep 11 14:44:36 2014
@@ -507,7 +507,7 @@ public class ImportInitvalues {
                r.setIsDemoRoom(false);
                r.setDemoTime(null);
 
-               r.setIsModeratedRoom(false);
+               r.setModerated(false);
                r.setHideTopBar(false);
 
                r.setDeleted(false);

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html?rev=1624307&r1=1624306&r2=1624307&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
 Thu Sep 11 14:44:36 2014
@@ -20,10 +20,7 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org";>
        <wicket:panel>
-               <div>
-               <span wicket:id="uploadFeedback"/>
-            </div>
-               <!-- wicket:id="form"  -->
+               <div wicket:id="feedback"></div>
                <form wicket:id="backupUpload" class="adminForm 
adminBackupForm">
                        <fieldset class="ui-widget-content">
                                <legend 
class="ui-widget-header"><wicket:ommessage key="1066" /></legend>

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java?rev=1624307&r1=1624306&r2=1624307&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
 Thu Sep 11 14:44:36 2014
@@ -45,7 +45,6 @@ import org.apache.wicket.markup.html.for
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.upload.FileUpload;
 import org.apache.wicket.markup.html.form.upload.FileUploadField;
-import org.apache.wicket.markup.html.panel.FeedbackPanel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.util.lang.Bytes;
 import org.apache.wicket.util.resource.FileResourceStream;
@@ -53,7 +52,9 @@ import org.apache.wicket.util.time.Durat
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
+import com.googlecode.wicket.jquery.core.Options;
 import com.googlecode.wicket.jquery.ui.widget.progressbar.ProgressBar;
+import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
 /**
  * Panel component to manage Backup Import/Export
  * 
@@ -65,9 +66,7 @@ public class BackupPanel extends AdminPa
 
        private static final long serialVersionUID = -1L;
 
-       // Create feedback panels
-       final FeedbackPanel uploadFeedback;
-
+       private final KendoFeedbackPanel feedback = new 
KendoFeedbackPanel("feedback", new Options("button", true));
        /**
         * Form to handle upload files
         * 
@@ -128,13 +127,13 @@ public class BackupPanel extends AdminPa
                                                , "Openmeetings - " + 
dateString).start();
 
                                        // repaint the feedback panel so that 
it is hidden
-                                       target.add(uploadFeedback, 
progressBar.setVisible(true));
+                                       target.add(feedback, 
progressBar.setVisible(true));
                                }
 
                                @Override
                                protected void onError(AjaxRequestTarget 
target, Form<?> form) {
                                        // repaint the feedback panel so errors 
are shown
-                                       target.add(uploadFeedback);
+                                       target.add(feedback);
                                }
                        });
                        add(timer = new 
AbstractAjaxTimerBehavior(Duration.ONE_SECOND) {
@@ -150,8 +149,8 @@ public class BackupPanel extends AdminPa
                                                timer.stop(target);
                                                //TODO change text, localize
                                                progressBar.setVisible(false);
-                                               uploadFeedback.error(th);
-                                               target.add(uploadFeedback);
+                                               feedback.error(th);
+                                               target.add(feedback);
                                        } else {
                                                
progressBar.setModelObject(progressHolder.getProgress());
                                                progressBar.refresh(target);
@@ -180,23 +179,23 @@ public class BackupPanel extends AdminPa
                                        FileUpload upload = 
fileUploadField.getFileUpload();
                                        try {
                                                if (upload == null || 
upload.getInputStream() == null) {
-                                                       
uploadFeedback.error("File is empty");
-                                                       
target.add(uploadFeedback);
+                                                       feedback.error("File is 
empty");
+                                                       target.add(feedback);
                                                        return;
                                                }
                                                
getBean(BackupImport.class).performImport(upload.getInputStream());
                                        } catch (Exception e) {
                                                log.error("Exception on panel 
backup upload ", e);
-                                               uploadFeedback.error(e);
+                                               feedback.error(e);
                                        }
                                        // repaint the feedback panel so that 
it is hidden
-                                       target.add(uploadFeedback);
+                                       target.add(feedback);
                                }
 
                                @Override
                                protected void onError(AjaxRequestTarget 
target) {
                                        // repaint the feedback panel so errors 
are shown
-                                       target.add(uploadFeedback);
+                                       target.add(feedback);
                                }
                        }));
                        add(new Label("cmdLineDesc", 
WebSession.getString(1505)).setEscapeModelStrings(false));
@@ -230,11 +229,7 @@ public class BackupPanel extends AdminPa
        public BackupPanel(String id) {
                super(id);
 
-               // Create feedback panels
-               uploadFeedback = new FeedbackPanel("uploadFeedback");
-               // Set Id so that it can be replaced dynamically
-               uploadFeedback.setOutputMarkupId(true);
-               add(uploadFeedback);
+               add(feedback);
 
                BackupForm backupForm = new BackupForm("backupUpload");
 

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html?rev=1624307&r1=1624306&r2=1624307&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
 Thu Sep 11 14:44:36 2014
@@ -20,9 +20,7 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org";>
        <wicket:panel>
-               <div>
-                       <span wicket:id="importFeedback"/>
-               </div>
+               <div wicket:id="feedback"></div>
                <script type="text/javascript">
                        function labelsInit() {
                                $('#addLanguage').dialog({

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java?rev=1624307&r1=1624306&r2=1624307&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
 Thu Sep 11 14:44:36 2014
@@ -56,7 +56,6 @@ import org.apache.wicket.markup.html.bas
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.upload.FileUpload;
 import org.apache.wicket.markup.html.form.upload.FileUploadField;
-import org.apache.wicket.markup.html.panel.FeedbackPanel;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.util.resource.AbstractResourceStream;
 import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
@@ -65,6 +64,9 @@ import org.dom4j.Element;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
+
 /**
  * Language Editor, add/insert/update {@link Fieldlanguagesvalues} and
  * add/delete {@link FieldLanguage} contains several Forms and one list
@@ -81,8 +83,7 @@ public class LangPanel extends AdminPane
        final WebMarkupContainer listContainer;
        private LangForm langForm;
        private FileUploadField fileUploadField;
-       // Create feedback panels
-       private final FeedbackPanel importFeedback = new 
FeedbackPanel("importFeedback");
+       private final KendoFeedbackPanel feedback = new 
KendoFeedbackPanel("feedback", new Options("button", true));
        
        @Override
        public void onMenuPanelLoad(AjaxRequestTarget target) {
@@ -92,8 +93,7 @@ public class LangPanel extends AdminPane
 
        public LangPanel(String id) {
                super(id);
-               // Create feedback panels
-               add(importFeedback.setOutputMarkupId(true));
+               add(feedback);
                FieldLanguageDao langDao = getBean(FieldLanguageDao.class);
                language = langDao.get(1L);
 
@@ -175,18 +175,18 @@ public class LangPanel extends AdminPane
                                FileUpload download = 
fileUploadField.getFileUpload();
                                try {
                                        if (download == null || 
download.getInputStream() == null) {
-                                               importFeedback.error("File is 
empty");
+                                               feedback.error("File is empty");
                                                return;
                                        }
                                        getBean(LanguageImport.class)
                                                
.addLanguageByDocument(language.getId(), download.getInputStream(), 
getUserId());
                                } catch (Exception e) {
                                        log.error("Exception on panel language 
editor import ", e);
-                                       importFeedback.error(e);
+                                       feedback.error(e);
                                }
 
                                // repaint the feedback panel so that it is 
hidden
-                               target.add(importFeedback);
+                               target.add(feedback);
                        }
                });
 
@@ -233,13 +233,13 @@ public class LangPanel extends AdminPane
                                }
                                
                                // repaint the feedback panel so that it is 
hidden
-                               target.add(importFeedback);
+                               target.add(feedback);
                        }
                        
                        @Override
                        protected void onError(AjaxRequestTarget target, 
Form<?> form) {
                                // repaint the feedback panel so errors are 
shown
-                               target.add(importFeedback);
+                               target.add(feedback);
                        }
                        
                });

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java?rev=1624307&r1=1624306&r2=1624307&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
 Thu Sep 11 14:44:36 2014
@@ -261,10 +261,10 @@ public class RoomForm extends AdminBaseF
                        protected void populateItem(final 
ListItem<RoomModerator> item) {
                                RoomModerator moderator = item.getModelObject();
                                Label name = new Label("uName", 
moderator.getUser().getFirstname() + " " + moderator.getUser().getLastname());
-                               if (moderator.getRoomModeratorsId() == 0) {
+                               if (moderator.getId() == 0) {
                                        
name.add(AttributeAppender.append("class", "newItem"));
                                }
-                               item.add(new CheckBox("isSuperModerator", new 
PropertyModel<Boolean>(moderator, "isSuperModerator")))
+                               item.add(new CheckBox("superModerator", new 
PropertyModel<Boolean>(moderator, "superModerator")))
                                        .add(new Label("userId", "" + 
moderator.getUser().getId()))
                                        .add(name)
                                        .add(new Label("email", 
moderator.getUser().getAdresses().getEmail()))
@@ -286,7 +286,7 @@ public class RoomForm extends AdminBaseF
                        }
                }).setOutputMarkupId(true));
 
-        add(new CheckBox("isModeratedRoom"));
+        add(new CheckBox("moderated"));
 
                add(new TextField<String>("confno").setEnabled(false));
                add(pin = new TextField<String>("pin"));

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html?rev=1624307&r1=1624306&r2=1624307&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
 Thu Sep 11 14:44:36 2014
@@ -203,7 +203,7 @@
                                                <fieldset 
class="ui-widget-content">
                             <div class="formelement">
                                                <div 
class="info-text"><wicket:ommessage key="823" /></div>
-                                               <label><wicket:ommessage 
key="640" /></label><input type="checkbox" class="formcheckbox" 
wicket:id="isModeratedRoom" />
+                                               <label><wicket:ommessage 
key="640" /></label><input type="checkbox" class="formcheckbox" 
wicket:id="moderated" />
                                            </div>
                                <div class="formelement">
                                                    <label><wicket:ommessage 
key="816" /></label><input type="hidden" wicket:id="moderator2add" 
class="input"/>
@@ -224,7 +224,7 @@
                                                                        <table 
class="adminListTableSmall">
                                                                                
<tbody>         
                                                                                
<tr wicket:id="moderators">
-                                                                               
                <td class="three_column_layout_column1"><div 
class="three_column_layout_divcolumn1"><input type="checkbox" 
wicket:id="isSuperModerator"/></div></td>
+                                                                               
                <td class="three_column_layout_column1"><div 
class="three_column_layout_divcolumn1"><input type="checkbox" 
wicket:id="superModerator"/></div></td>
                                                                                
                <td class="three_column_layout_column2"><div 
class="three_column_layout_divcolumn2"><span 
wicket:id="userId"></span></div></td>
                                                                                
                <td class="three_column_layout_column3"><div 
class="three_column_layout_divcolumn3"><span 
wicket:id="uName"></span></div></td>
                                                                                
                <td class="three_column_layout_column4"><div 
class="three_column_layout_divcolumn4" style="overflow: hidden;"><span 
wicket:id="email"></span></div></td>

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Client.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Client.java?rev=1624307&r1=1624306&r2=1624307&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Client.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Client.java
 Thu Sep 11 14:44:36 2014
@@ -19,6 +19,8 @@
 package org.apache.openmeetings.web.app;
 
 import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.apache.wicket.protocol.ws.api.registry.IKey;
 
@@ -30,10 +32,14 @@ import org.apache.wicket.protocol.ws.api
 public class Client implements Serializable {
        private static final long serialVersionUID = 1L;
 
+       public enum Right {
+               moderator
+       }
        private String sessionId;
        private int pageId;
        private long userId;
        private String uid;
+       private Set<Right> rights = new HashSet<Right>();
 
        public Client() {
        }
@@ -110,4 +116,12 @@ public class Client implements Serializa
                        return false;
                return true;
        }
+
+       public Set<Right> getRights() {
+               return rights;
+       }
+
+       public boolean hasRight(Right right) {
+               return rights.contains(Right.moderator) ? true : 
rights.contains(right);
+       }
 }

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/CreatePollDialog.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/CreatePollDialog.html?rev=1624307&r1=1624306&r2=1624307&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/CreatePollDialog.html
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/CreatePollDialog.html
 Thu Sep 11 14:44:36 2014
@@ -41,6 +41,7 @@
                                <td colspan="2" style="color: 
red;"><wicket:ommessage key="23" /></td>
                        </tr>
                </table>
+               <div wicket:id="feedback"></div>
        </form>
 </wicket:panel>
 </html>

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/CreatePollDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/CreatePollDialog.java?rev=1624307&r1=1624306&r2=1624307&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/CreatePollDialog.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/CreatePollDialog.java
 Thu Sep 11 14:44:36 2014
@@ -32,6 +32,7 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.room.RoomPoll;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.room.message.PollCreated;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.html.form.ChoiceRenderer;
 import org.apache.wicket.markup.html.form.DropDownChoice;
@@ -40,9 +41,14 @@ import org.apache.wicket.markup.html.for
 import org.apache.wicket.markup.html.form.TextArea;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.protocol.ws.WebSocketSettings;
+import org.apache.wicket.protocol.ws.api.WebSocketPushBroadcaster;
 
+import com.googlecode.wicket.jquery.core.Options;
 import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
 
 public class CreatePollDialog extends AbstractFormDialog<RoomPoll> {
        private static final long serialVersionUID = 1L;
@@ -50,6 +56,7 @@ public class CreatePollDialog extends Ab
        private final DialogButton cancel = new 
DialogButton(WebSession.getString(25));
        private final long roomId;
        private final PollForm form;
+       private final KendoFeedbackPanel feedback = new 
KendoFeedbackPanel("feedback", new Options("button", true));
 
        public CreatePollDialog(String id, long roomId) {
                super(id, WebSession.getString(18), new 
CompoundPropertyModel<RoomPoll>(new RoomPoll()));
@@ -84,24 +91,28 @@ public class CreatePollDialog extends Ab
 
        @Override
        protected void onError(AjaxRequestTarget target) {
-               // TODO Auto-generated method stub
-               
+               target.add(feedback);
        }
 
        @Override
        protected void onSubmit(AjaxRequestTarget target) {
-               // TODO Auto-generated method stub
-               
+               RoomPoll p = 
getBean(PollDao.class).update(form.getModelObject());
+               WebSocketSettings webSocketSettings = 
WebSocketSettings.Holder.get(getApplication());
+               WebSocketPushBroadcaster broadcaster = new 
WebSocketPushBroadcaster(webSocketSettings.getConnectionRegistry());
+               broadcaster.broadcastAll(getApplication(), new 
PollCreated(p.getId(), roomId));
        }
 
        private class PollForm extends Form<RoomPoll> {
                private static final long serialVersionUID = 1L;
-
+               
                public PollForm(String id, IModel<RoomPoll> model) {
                        super(id, model);
-                       add(new RequiredTextField<String>("name"));
+                       add(new 
RequiredTextField<String>("name").setLabel(Model.of(WebSession.getString(1410))));
                        add(new TextArea<String>("question"));
-                       add(new DropDownChoice<PollType>("type", 
getBean(PollDao.class).getPollTypes(getLanguage()), new 
ChoiceRenderer<PollType>("label.fieldlanguagesvalue.value", "id")));
+                       add(new DropDownChoice<PollType>("type", 
getBean(PollDao.class).getPollTypes(getLanguage())
+                                       , new 
ChoiceRenderer<PollType>("label.fieldlanguagesvalue.value", "id"))
+                                       
.setRequired(true).setLabel(Model.of(WebSession.getString(21))));
+                       add(feedback);
                }
        }
 }

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=1624307&r1=1624306&r2=1624307&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
 Thu Sep 11 14:44:36 2014
@@ -27,6 +27,7 @@ import static org.apache.openmeetings.we
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.util.OmUrlFragment.ROOMS_PUBLIC;
 
+import java.sql.ClientInfoStatus;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
@@ -35,6 +36,7 @@ import java.util.List;
 
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.dao.room.PollDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
@@ -42,10 +44,12 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.db.entity.record.FlvRecording;
 import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.RoomModerator;
 import org.apache.openmeetings.db.entity.user.Organisation;
 import org.apache.openmeetings.db.entity.user.Organisation_Users;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.Client;
 import org.apache.openmeetings.web.app.WebSession;
@@ -58,6 +62,7 @@ import org.apache.openmeetings.web.commo
 import org.apache.openmeetings.web.common.tree.MyRecordingTreeProvider;
 import org.apache.openmeetings.web.common.tree.PublicRecordingTreeProvider;
 import org.apache.openmeetings.web.pages.MainPage;
+import org.apache.openmeetings.web.room.message.PollCreated;
 import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -66,6 +71,7 @@ import org.apache.wicket.ajax.json.JSONE
 import org.apache.wicket.ajax.json.JSONObject;
 import 
org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
 import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.event.IEvent;
 import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
@@ -76,6 +82,7 @@ import org.apache.wicket.markup.html.bas
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.protocol.ws.WebSocketSettings;
+import org.apache.wicket.protocol.ws.api.event.WebSocketPushPayload;
 import org.apache.wicket.protocol.ws.api.registry.IWebSocketConnectionRegistry;
 import org.apache.wicket.protocol.ws.api.registry.PageIdKey;
 import org.apache.wicket.request.flow.RedirectToUrlException;
@@ -122,6 +129,7 @@ public class RoomPanel extends BasePanel
        private final RoomMenuItem applyModer;
        private final RoomMenuItem applyWB;
        private final RoomMenuItem applyAV;
+       private final RoomMenuItem pollCreate;
        private final RoomMenuItem pollVote;
        private final RoomMenuItem pollResult;
        private final RoomMenuItem sipDialer;
@@ -144,6 +152,15 @@ public class RoomPanel extends BasePanel
                applyModer = new RoomMenuItem(WebSession.getString(784), 
WebSession.getString(1481), false);
                applyWB = new RoomMenuItem(WebSession.getString(785), 
WebSession.getString(1492), false);
                applyAV = new RoomMenuItem(WebSession.getString(786), 
WebSession.getString(1482), false);
+               boolean pollExists = getBean(PollDao.class).hasPoll(roomId);
+               pollCreate = new RoomMenuItem(WebSession.getString(24), 
WebSession.getString(1483), !pollExists) {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public void onClick(MainPage page, AjaxRequestTarget 
target) {
+                               createPoll.open(target);
+                       }
+               };
                pollVote = new RoomMenuItem(WebSession.getString(42), 
WebSession.getString(1485), false);
                pollResult = new RoomMenuItem(WebSession.getString(37), 
WebSession.getString(1484), false);
                sipDialer = new RoomMenuItem(WebSession.getString(1447), 
WebSession.getString(1488), false);
@@ -227,6 +244,17 @@ public class RoomPanel extends BasePanel
                add(createPoll = new CreatePollDialog("createPoll", roomId));
        }
 
+       @Override
+       public void onEvent(IEvent<?> event) {
+               if (event.getPayload() instanceof WebSocketPushPayload) {
+                       WebSocketPushPayload wsEvent = (WebSocketPushPayload) 
event.getPayload();
+                       if (wsEvent.getMessage() instanceof PollCreated) {
+                               //handleMessage(wsEvent.getHandler(), 
(PollCreated) wsEvent.getMessage());
+                       }
+               }
+               super.onEvent(event);
+       }
+       
        private JSONArray getStringLabels(long... ids) {
                JSONArray arr = new JSONArray();
                try {
@@ -243,6 +271,24 @@ public class RoomPanel extends BasePanel
        protected void onBeforeRender() {
                super.onBeforeRender();
                c = addUserToRoom(roomId, getPage().getPageId());
+               User u = getBean(UserDao.class).get(getUserId());
+               //TODO do we need to check OrgModerationRights ????
+               if (AuthLevelUtil.hasAdminLevel(u.getRights())) {
+                       c.getRights().add(Client.Right.moderator);
+               } else {
+                       Room r = getBean(RoomDao.class).get(roomId);
+                       if (!r.isModerated() && 1 == 
getRoomUsers(roomId).size()) {
+                               c.getRights().add(Client.Right.moderator);
+                       } else if (r.isModerated()) {
+                               //TODO why do we need supermoderator ????
+                               for (RoomModerator rm : r.getModerators()) {
+                                       if (getUserId() == 
rm.getUser().getId()) {
+                                               
c.getRights().add(Client.Right.moderator);
+                                               break;
+                                       }
+                               }
+                       }
+               }
                sendRoom(roomId, addUser(c));
        }
        
@@ -353,14 +399,7 @@ public class RoomPanel extends BasePanel
                actionItems.add(applyModer); //FIXME enable/disable
                actionItems.add(applyWB); //FIXME enable/disable
                actionItems.add(applyAV); //FIXME enable/disable
-               actionItems.add(new RoomMenuItem(WebSession.getString(24), 
WebSession.getString(1483)) {
-                       private static final long serialVersionUID = 1L;
-
-                       @Override
-                       public void onClick(MainPage page, AjaxRequestTarget 
target) {
-                               createPoll.open(target);
-                       }
-               });
+               actionItems.add(pollCreate);
                actionItems.add(pollResult); //FIXME enable/disable
                actionItems.add(pollVote); //FIXME enable/disable
                actionItems.add(sipDialer);

Added: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/PollCreated.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/PollCreated.java?rev=1624307&view=auto
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/PollCreated.java
 (added)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/PollCreated.java
 Thu Sep 11 14:44:36 2014
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.room.message;
+
+
+public class PollCreated extends RoomMessage {
+       private static final long serialVersionUID = 1L;
+       private final Long pollId;
+       private final Long roomId;
+
+       public PollCreated(Long pollId, Long roomId) {
+               this.pollId = pollId;
+               this.roomId = roomId;
+       }
+
+       public long getPollId() {
+               return pollId;
+       }
+
+       public Long getRoomId() {
+               return roomId;
+       }
+}

Added: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/RoomMessage.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/RoomMessage.java?rev=1624307&view=auto
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/RoomMessage.java
 (added)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/RoomMessage.java
 Thu Sep 11 14:44:36 2014
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.room.message;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import org.apache.wicket.protocol.ws.api.message.IWebSocketPushMessage;
+
+public class RoomMessage implements IWebSocketPushMessage, Serializable {
+       private static final long serialVersionUID = 1L;
+       private final Date timestamp;
+
+       public RoomMessage() {
+               this.timestamp = new Date();
+       }
+       
+       public Date getTimestamp() {
+               return timestamp;
+       }
+}

Added: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/UserEnter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/UserEnter.java?rev=1624307&view=auto
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/UserEnter.java
 (added)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/UserEnter.java
 Thu Sep 11 14:44:36 2014
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.room.message;
+
+public class UserEnter extends RoomMessage {
+       private static final long serialVersionUID = 1L;
+       private final Long userId;
+       private final Long roomId;
+
+       public UserEnter(Long userId, Long roomId) {
+               this.userId = userId;
+               this.roomId = roomId;
+       }
+
+       public long getPollId() {
+               return userId;
+       }
+
+       public Long getRoomId() {
+               return roomId;
+       }
+}


Reply via email to