Author: solomax
Date: Mon Sep 15 14:50:11 2014
New Revision: 1625046

URL: http://svn.apache.org/r1625046
Log:
[OPENMEETINGS-1081] close/delete are implemented

Modified:
    
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/entity/room/RoomPoll.java
    
openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/PollTypeConverter.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/room/message/RoomMessage.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/CreatePollDialog.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.html
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/poll/TestPollManagement.java

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=1625046&r1=1625045&r2=1625046&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
 Mon Sep 15 14:50:11 2014
@@ -66,7 +66,7 @@ public class PollDao {
                return pt.getId();
        }
        
-       public List<PollType> getPollTypes(long langId) {
+       public List<PollType> getTypes(long langId) {
                List<PollType> l = em.createNamedQuery("getPollTypes", 
PollType.class).getResultList();
                for (PollType t : l) {
                        
t.getLabel().setFieldlanguagesvalue(labelDao.get(t.getLabel().getId(), langId));
@@ -74,7 +74,7 @@ public class PollDao {
                return l;
        }
        
-       public PollType getPollType(Long typeId) {
+       public PollType getType(Long typeId) {
                TypedQuery<PollType> q = em.createNamedQuery("getPollType", 
PollType.class);
                q.setParameter("pollTypesId", typeId);
                return q.getSingleResult();
@@ -90,7 +90,7 @@ public class PollDao {
                return p;
        }
 
-       public boolean closePoll(Long room_id){
+       public boolean close(Long room_id){
                try {
                        log.debug(" :: closePoll :: ");
                        Query q = em.createNamedQuery("closePoll");
@@ -103,11 +103,11 @@ public class PollDao {
                return false;
        }
 
-       public boolean deletePoll(Long id){
+       public boolean delete(RoomPoll p){
                try {
-                       log.debug(" :: deletePoll :: ");
+                       log.debug(" :: delete :: ");
                        Query q = em.createNamedQuery("deletePoll");
-                       q.setParameter("id", id);
+                       q.setParameter("id", p.getId());
                        return q.executeUpdate() > 0;
                } catch (Exception err) {
                        log.error("[deletePoll]", err);
@@ -115,6 +115,11 @@ public class PollDao {
                return false;
        }
 
+       public RoomPoll get(Long id) {
+               List<RoomPoll> list = em.createNamedQuery("getPollById", 
RoomPoll.class).setParameter("id", id).getResultList();
+               return list.isEmpty() ? null : list.get(0);
+       }
+       
        public RoomPoll getPoll(Long room_id) {
                try {
                        log.debug(" :: getPoll :: " + room_id);

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPoll.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPoll.java?rev=1625046&r1=1625045&r2=1625046&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPoll.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/RoomPoll.java
 Mon Sep 15 14:50:11 2014
@@ -48,11 +48,12 @@ import org.simpleframework.xml.Root;
                @NamedQuery(name = "closePoll", query = "UPDATE RoomPoll rp SET 
rp.archived = :archived "
                                + "WHERE rp.room.id = :rooms_id"),
                @NamedQuery(name = "deletePoll", query = "DELETE FROM RoomPoll 
rp WHERE rp.id = :id"),
+               @NamedQuery(name = "getPollById", query = "SELECT rp FROM 
RoomPoll rp WHERE rp.id = :id"),
                @NamedQuery(name = "getPoll", query = "SELECT rp FROM RoomPoll 
rp "
                                + "WHERE rp.room.id = :room_id AND rp.archived 
= :archived"),
                @NamedQuery(name = "getPollListBackup", query = "SELECT rp FROM 
RoomPoll rp ORDER BY rp.id"),
                @NamedQuery(name = "getArchivedPollList", query = "SELECT rp 
FROM RoomPoll rp "
-                               + "WHERE rp.room.id = :room_id AND rp.archived 
= :archived ORDER BY rp.created"),
+                               + "WHERE rp.room.id = :room_id AND rp.archived 
= :archived ORDER BY rp.created DESC"),
                @NamedQuery(name = "hasPoll", query = "SELECT COUNT(rp) FROM 
RoomPoll rp "
                                + "WHERE rp.room.id = :room_id AND rp.archived 
= :archived") })
 @Table(name = "room_poll")

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/PollTypeConverter.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/PollTypeConverter.java?rev=1625046&r1=1625045&r2=1625046&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/PollTypeConverter.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/PollTypeConverter.java
 Mon Sep 15 14:50:11 2014
@@ -24,18 +24,18 @@ import org.simpleframework.xml.stream.In
 import org.simpleframework.xml.stream.OutputNode;
 
 public class PollTypeConverter extends OmConverter<PollType> {
-       private PollDao pollManager;
+       private PollDao pollDao;
        
        public PollTypeConverter() {
                //default constructor is for export
        }
        
-       public PollTypeConverter(PollDao pollManagement) {
-               this.pollManager = pollManagement;
+       public PollTypeConverter(PollDao pollDao) {
+               this.pollDao = pollDao;
        }
        
        public PollType read(InputNode node) throws Exception {
-               return pollManager.getPollType(getlongValue(node));
+               return pollDao.getType(getlongValue(node));
        }
 
        public void write(OutputNode node, PollType value) throws Exception {

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=1625046&r1=1625045&r2=1625046&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
 Mon Sep 15 14:50:11 2014
@@ -314,6 +314,12 @@ public class RoomPanel extends BasePanel
                                RoomMessage m = 
(RoomMessage)wsEvent.getMessage();
                                switch (m.getType()) {
                                        case pollCreated:
+                                               if (getUserId() != 
m.getSentUserId()) {
+                                                       
vote.updateModel(wsEvent.getHandler());
+                                                       
vote.open(wsEvent.getHandler());
+                                               }
+                                       case pollClosed:
+                                       case pollDeleted:
                                        case voted:
                                        case rightUpdated:
                                                
updateUserMenuIcons(wsEvent.getHandler());

Modified: 
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=1625046&r1=1625045&r2=1625046&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/RoomMessage.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/RoomMessage.java
 Mon Sep 15 14:50:11 2014
@@ -21,6 +21,7 @@ package org.apache.openmeetings.web.room
 import java.io.Serializable;
 import java.util.Date;
 
+import org.apache.openmeetings.web.app.WebSession;
 import org.apache.wicket.protocol.ws.api.message.IWebSocketPushMessage;
 
 public class RoomMessage implements IWebSocketPushMessage, Serializable {
@@ -29,6 +30,8 @@ public class RoomMessage implements IWeb
                roomEnter
                , roomExit
                , pollCreated
+               , pollClosed
+               , pollDeleted
                , voted
                , rightUpdated
        }
@@ -40,7 +43,7 @@ public class RoomMessage implements IWeb
 
        public RoomMessage(Long roomId, Long userId, Type type) {
                this.timestamp = new Date();
-               this.sentUserId = getUserId();
+               this.sentUserId = WebSession.getUserId();
                this.roomId = roomId;
                this.userId = userId;
                this.type = type;

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/CreatePollDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/CreatePollDialog.java?rev=1625046&r1=1625045&r2=1625046&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/CreatePollDialog.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/CreatePollDialog.java
 Mon Sep 15 14:50:11 2014
@@ -68,7 +68,7 @@ public class CreatePollDialog extends Ab
                User u = getBean(UserDao.class).get(getUserId());
                p.setCreator(u);
                p.setRoom(getBean(RoomDao.class).get(roomId));
-               
p.setType(getBean(PollDao.class).getPollTypes(getLanguage()).get(0));
+               
p.setType(getBean(PollDao.class).getTypes(getLanguage()).get(0));
                form.setModelObject(p);
                target.add(form);
        }
@@ -95,7 +95,7 @@ public class CreatePollDialog extends Ab
 
        @Override
        protected void onSubmit(AjaxRequestTarget target) {
-               getBean(PollDao.class).closePoll(roomId);
+               getBean(PollDao.class).close(roomId);
                getBean(PollDao.class).update(form.getModelObject());
                RoomPanel.broadcast(new RoomMessage(roomId, getUserId(), 
RoomMessage.Type.pollCreated));
        }
@@ -107,7 +107,7 @@ public class CreatePollDialog extends Ab
                        super(id, model);
                        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())
+                       add(new DropDownChoice<PollType>("type", 
getBean(PollDao.class).getTypes(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/poll/PollResultsDialog.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.html?rev=1625046&r1=1625045&r2=1625046&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.html
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.html
 Mon Sep 15 14:50:11 2014
@@ -46,5 +46,7 @@
                        </tr>
                </table>
        </form>
+       <div wicket:id="closeConfirm"></div>
+       <div wicket:id="deleteConfirm"></div>
 </wicket:panel>
 </html>

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java?rev=1625046&r1=1625045&r2=1625046&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
 Mon Sep 15 14:50:11 2014
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.web.room.poll;
 
 import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -28,6 +29,8 @@ import org.apache.openmeetings.db.dao.ro
 import org.apache.openmeetings.db.entity.room.RoomPoll;
 import org.apache.openmeetings.db.entity.room.RoomPollAnswer;
 import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.room.RoomPanel;
+import org.apache.openmeetings.web.room.message.RoomMessage;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.markup.head.CssHeaderItem;
@@ -57,6 +60,9 @@ import br.com.digilabs.jqplot.elements.R
 
 import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
+import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
 
 /**
  * @author solomax
@@ -72,15 +78,56 @@ public class PollResultsDialog extends A
        private final DialogButton close = new 
DialogButton(WebSession.getString(1418));
        private final DialogButton delete = new 
DialogButton(WebSession.getString(1420));
        private boolean moderator = false;
+       private final MessageDialog closeConfirm;
+       private final MessageDialog deleteConfirm;
 
-       public PollResultsDialog(String id, long roomId) {
+       public PollResultsDialog(String id, long _roomId) {
                super(id, WebSession.getString(37));
-               this.roomId = roomId;
+               this.roomId = _roomId;
                add(selForm = new PollSelectForm("selForm"));
                add(dispForm = new PollResultsForm("dispForm"));
+               add(closeConfirm = new MessageDialog("closeConfirm", 
WebSession.getString(1418), WebSession.getString(1419), DialogButtons.YES_NO, 
DialogIcon.WARN) {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public void onClose(AjaxRequestTarget target, 
DialogButton button) {
+                               // TODO should rights be additionally checked 
here????
+                               if(button != null && button.match(LBL_YES)) {
+                                       Long id = 
dispForm.getModelObject().getId();
+                                       getBean(PollDao.class).close(roomId);
+                                       selForm.updateModel(target);
+
+                                       RoomPoll p = 
getBean(PollDao.class).get(id);
+                                       selForm.select.setModelObject(p);
+                                       dispForm.updateModel(p, false, target);
+                                       RoomPanel.broadcast(new 
RoomMessage(roomId, getUserId(), RoomMessage.Type.pollClosed));
+                                       //TODO result dialogs of other users 
should also be updated
+                               }
+                       }
+               });
+               add(deleteConfirm = new MessageDialog("deleteConfirm", 
WebSession.getString(1420), WebSession.getString(1421), DialogButtons.YES_NO, 
DialogIcon.WARN) {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public void onClose(AjaxRequestTarget target, 
DialogButton button) {
+                               // TODO should rights be additionally checked 
here????
+                               if(button != null && button.match(LBL_YES)) {
+                                       
getBean(PollDao.class).delete(dispForm.getModelObject());
+                                       selForm.updateModel(target);
+                                       
dispForm.updateModel(selForm.select.getModelObject(), true, target);
+                                       RoomPanel.broadcast(new 
RoomMessage(roomId, getUserId(), RoomMessage.Type.pollDeleted));
+                                       //TODO result dialogs of other users 
should also be updated
+                               }
+                       }
+               });
        }
 
        @Override
+       public int getWidth() {
+               return 500;
+       }
+       
+       @Override
        protected List<DialogButton> getButtons() {
                return Arrays.asList(delete, close, cancel);
        }
@@ -138,9 +185,20 @@ public class PollResultsDialog extends A
     }
 
     @Override
-       public void onClose(AjaxRequestTarget target, DialogButton button) {
-       }
-       
+    public void onClick(AjaxRequestTarget target, DialogButton button) {
+       if (close.equals(button)) {
+               closeConfirm.open(target);
+       } else if (delete.equals(button)) {
+               deleteConfirm.open(target);
+       } else {
+               super.onClick(target, button);
+       }
+    }
+    
+    @Override
+    public void onClose(AjaxRequestTarget target, DialogButton button) {
+    }
+    
     private String[] getTicks(RoomPoll p) {
                return p != null && p.getType().isNumeric()
                                ? new String[] {"1", "2", "3", "4", "5", "6", 
"7", "8", "9", "10"}

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/poll/TestPollManagement.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/poll/TestPollManagement.java?rev=1625046&r1=1625045&r2=1625046&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/poll/TestPollManagement.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/test/java/org/apache/openmeetings/test/poll/TestPollManagement.java
 Mon Sep 15 14:50:11 2014
@@ -33,7 +33,7 @@ public class TestPollManagement extends 
        @Test
        public void addPollType() {
                long maxId = 1;
-               for (PollType pt : pollManager.getPollTypes(1)) {
+               for (PollType pt : pollManager.getTypes(1)) {
                        maxId = Math.max(maxId, pt.getId());
                }
                assertNotNull("Poll created is null", 
pollManager.addPollType(26L, false));


Reply via email to