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));