Pollen-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
May 2014
- 5 participants
- 203 discussions
12 May '14
Author: tchemit
Date: 2014-05-13 00:29:33 +0200 (Tue, 13 May 2014)
New Revision: 3936
Url: http://forge.chorem.org/projects/pollen/repository/revisions/3936
Log:
use previous X header which works fine
Modified:
trunk/pollen-ui-angular/src/main/webapp/js/services.js
Modified: trunk/pollen-ui-angular/src/main/webapp/js/services.js
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/js/services.js 2014-05-12 22:04:28 UTC (rev 3935)
+++ trunk/pollen-ui-angular/src/main/webapp/js/services.js 2014-05-12 22:29:33 UTC (rev 3936)
@@ -42,8 +42,7 @@
transformRequest : function (data, headersGetter) {
return 'poll='+encodeURIComponent(JSON.stringify(data));
}
- ,headers : { 'X-METHOD-OVERRIDE' : 'PUT'}
-// ,headers : { 'X-HTTP-Method':'PUT', 'X-METHOD-OVERRIDE' : 'PUT'}
+ ,headers : { 'X-HTTP-Method' : 'PUT'}
}
});
}])
1
0
r3935 - in trunk/pollen-services/src/test/java/org/chorem/pollen: . services services/service
by tchemit@users.chorem.org 12 May '14
by tchemit@users.chorem.org 12 May '14
12 May '14
Author: tchemit
Date: 2014-05-13 00:04:28 +0200 (Tue, 13 May 2014)
New Revision: 3935
Url: http://forge.chorem.org/projects/pollen/repository/revisions/3935
Log:
fix test package
Added:
trunk/pollen-services/src/test/java/org/chorem/pollen/services/
trunk/pollen-services/src/test/java/org/chorem/pollen/services/AbstractPollenServiceTest.java
trunk/pollen-services/src/test/java/org/chorem/pollen/services/service/
trunk/pollen-services/src/test/java/org/chorem/pollen/services/service/PollServiceTest.java
trunk/pollen-services/src/test/java/org/chorem/pollen/services/service/PollenUserServiceTest.java
Removed:
trunk/pollen-services/src/test/java/org/chorem/pollen/service/
Copied: trunk/pollen-services/src/test/java/org/chorem/pollen/services/AbstractPollenServiceTest.java (from rev 3932, trunk/pollen-services/src/test/java/org/chorem/pollen/service/AbstractPollenServiceTest.java)
===================================================================
--- trunk/pollen-services/src/test/java/org/chorem/pollen/services/AbstractPollenServiceTest.java (rev 0)
+++ trunk/pollen-services/src/test/java/org/chorem/pollen/services/AbstractPollenServiceTest.java 2014-05-12 22:04:28 UTC (rev 3935)
@@ -0,0 +1,78 @@
+package org.chorem.pollen.services;
+
+/*
+ * #%L
+ * Pollen :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2009 - 2013 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+
+import com.google.common.collect.Multimap;
+import org.chorem.pollen.services.service.InvalidFormException;
+import org.chorem.pollen.services.test.FakePollenApplicationContext;
+import org.chorem.pollen.services.test.FakePollenServiceContext;
+import org.junit.Assert;
+import org.junit.Rule;
+
+import java.util.Locale;
+
+public abstract class AbstractPollenServiceTest {
+
+ protected static final double DELTA = 0.0001;
+
+ @Rule
+ public final FakePollenApplicationContext application = new FakePollenApplicationContext("pollen-services.properties");
+
+ protected FakePollenServiceContext serviceContext;
+
+ public void loadFixtures(String fixturesSetName) {
+
+ application.loadFixtures(getServiceContext(), fixturesSetName);
+ }
+
+ public <E> E fixture(String id) {
+
+ return application.fixture(id);
+ }
+
+ protected FakePollenServiceContext getServiceContext() {
+
+ if (serviceContext == null) {
+ serviceContext = application.newServiceContext(application.newPersistenceContext(), Locale.FRANCE);
+ }
+
+ return serviceContext;
+ }
+
+ protected <E extends PollenService> E newService(Class<E> serviceClass) {
+
+ return getServiceContext().newService(serviceClass);
+ }
+
+ protected void assertErrorKeyFound(InvalidFormException e, String... keys) {
+ Multimap<String, String> errors = e.getErrors();
+
+ Assert.assertEquals("Expected " + keys.length + " errors, but had " + errors.keySet(), keys.length, errors.keySet().size());
+ for (String key : keys) {
+
+ Assert.assertTrue("Expected error:" + key + ", but not found among:" + errors.keySet(), errors.containsKey(key));
+ }
+ }
+
+}
Copied: trunk/pollen-services/src/test/java/org/chorem/pollen/services/service/PollServiceTest.java (from rev 3932, trunk/pollen-services/src/test/java/org/chorem/pollen/service/PollServiceTest.java)
===================================================================
--- trunk/pollen-services/src/test/java/org/chorem/pollen/services/service/PollServiceTest.java (rev 0)
+++ trunk/pollen-services/src/test/java/org/chorem/pollen/services/service/PollServiceTest.java 2014-05-12 22:04:28 UTC (rev 3935)
@@ -0,0 +1,553 @@
+package org.chorem.pollen.services.service;
+
+/*
+ * #%L
+ * Pollen :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2009 - 2013 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+
+import org.chorem.pollen.persistence.entity.Choice;
+import org.chorem.pollen.persistence.entity.ChoiceType;
+import org.chorem.pollen.persistence.entity.Poll;
+import org.chorem.pollen.persistence.entity.PollType;
+import org.chorem.pollen.persistence.entity.VoterList;
+import org.chorem.pollen.persistence.entity.VoterListMember;
+import org.chorem.pollen.services.AbstractPollenServiceTest;
+import org.chorem.pollen.services.service.security.PollenInvalidPermissionException;
+import org.chorem.pollen.services.test.FakePollenSecurityContext;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.0
+ */
+public class PollServiceTest extends AbstractPollenServiceTest {
+
+ protected PollService service;
+
+ protected ChoiceService choiceService;
+
+ protected VoterListService voterListService;
+
+ @Before
+ public void setUp() throws ParseException {
+
+ loadFixtures("fixtures");
+
+ service = newService(PollService.class);
+ choiceService = newService(ChoiceService.class);
+ voterListService = newService(VoterListService.class);
+
+ getServiceContext().setDate(new Date(1363948427576l));
+
+ getServiceContext().setSecurityContext(new FakePollenSecurityContext());
+ }
+
+ @Test
+ public void createSafeFreePoll() throws InvalidFormException {
+
+ Poll poll = service.getNewPoll();
+
+ poll.setPollType(PollType.FREE);
+ poll.setTitle("poll1");
+
+ List<Choice> choices = new ArrayList<>();
+
+ Choice choice1 = getServiceContext().getPersistenceContext().getChoiceDao().newInstance();
+ choices.add(choice1);
+ choice1.setChoiceType(ChoiceType.TEXT);
+ choice1.setName("A");
+ choice1.setDescription("Choice A");
+
+
+ Choice choice2 = getServiceContext().getPersistenceContext().getChoiceDao().newInstance();
+ choice2.setChoiceType(ChoiceType.TEXT);
+ choice2.setName("B");
+ choice2.setDescription("Choice B");
+ choices.add(choice2);
+
+ Poll createdPoll = service.createPoll(poll, choices, null);
+ Assert.assertNotNull(createdPoll);
+ Assert.assertNotNull(createdPoll.getTopiaId());
+
+ Poll reloadedPoll = service.getPoll(createdPoll.getTopiaId());
+ Assert.assertEquals(createdPoll, reloadedPoll);
+
+ Assert.assertEquals(getServiceContext().getNow(), createdPoll.getBeginDate());
+
+ Assert.assertNotNull(createdPoll.getCreator());
+ Assert.assertNotNull(createdPoll.getCreator().getTopiaId());
+ Assert.assertNull(createdPoll.getCreator().getName());
+ Assert.assertNull(createdPoll.getCreator().getEmail());
+
+ List<Choice> createdChoices = choiceService.getChoices(createdPoll.getTopiaId());
+
+ Assert.assertNotNull(createdChoices);
+ Assert.assertEquals(2, createdChoices.size());
+
+
+ Choice createdChoice1 = createdChoices.get(0);
+ Assert.assertNotNull(createdChoice1);
+ Assert.assertNotNull(createdChoice1.getTopiaId());
+
+ Choice reloadedChoice1 = choiceService.getChoice(createdPoll.getTopiaId(), createdChoice1.getTopiaId());
+ Assert.assertEquals(createdChoice1, reloadedChoice1);
+
+ Assert.assertEquals(choice1.getName(), createdChoice1.getName());
+ Assert.assertEquals(choice1.getDescription(), createdChoice1.getDescription());
+ Assert.assertEquals(createdPoll.getCreator(), createdChoice1.getCreator());
+
+ Choice createdChoice2 = createdChoices.get(1);
+ Assert.assertNotNull(createdChoice2);
+ Assert.assertNotNull(createdChoice2.getTopiaId());
+
+ Choice reloadedChoice2 = choiceService.getChoice(createdPoll.getTopiaId(), createdChoice2.getTopiaId());
+ Assert.assertEquals(createdChoice2, reloadedChoice2);
+
+ Assert.assertEquals(choice2.getName(), createdChoice2.getName());
+ Assert.assertEquals(choice2.getDescription(), createdChoice2.getDescription());
+ Assert.assertEquals(createdPoll.getCreator(), createdChoice2.getCreator());
+
+ }
+
+ @Test
+ public void testCreateFreePoll() throws InvalidFormException {
+
+ Poll poll = service.getNewPoll();
+
+ poll.setPollType(PollType.FREE);
+
+ try {
+ service.createPoll(poll, null, null);
+ Assert.fail();
+ } catch (InvalidFormException e) {
+ // missing title
+ // missing choice
+ assertErrorKeyFound(e, "title", "choice");
+ }
+
+ poll.setTitle("poll1");
+
+ List<Choice> choices = new ArrayList<>();
+ Choice choice1 = getServiceContext().getPersistenceContext().getChoiceDao().newInstance();
+ choices.add(choice1);
+
+ try {
+ service.createPoll(poll, choices, null);
+ Assert.fail();
+ } catch (InvalidFormException e) {
+ // missing choice type
+ assertErrorKeyFound(e, "choice[0].choiceType");
+ }
+
+ choice1.setChoiceType(ChoiceType.TEXT);
+ try {
+ service.createPoll(poll, choices, null);
+ Assert.fail();
+ } catch (InvalidFormException e) {
+ // missing choice name
+ assertErrorKeyFound(e, "choice[0].name");
+ }
+
+ choice1.setName("A");
+ choice1.setDescription("Choice A");
+
+
+ Choice choice2 = getServiceContext().getPersistenceContext().getChoiceDao().newInstance();
+ choice2.setChoiceType(ChoiceType.TEXT);
+ choice2.setName("A");
+ choice2.setDescription("Choice B");
+ choices.add(choice2);
+
+ try {
+ service.createPoll(poll, choices, null);
+ Assert.fail();
+ } catch (InvalidFormException e) {
+ // duplicated choice name
+ assertErrorKeyFound(e, "choice[1].name");
+ }
+
+ choice2.setName("B");
+
+
+ Poll createdPoll = service.createPoll(poll, choices, null);
+ Assert.assertNotNull(createdPoll);
+ Assert.assertNotNull(createdPoll.getTopiaId());
+
+ Poll reloadedPoll = service.getPoll(createdPoll.getTopiaId());
+ Assert.assertEquals(createdPoll, reloadedPoll);
+
+ Assert.assertEquals(getServiceContext().getNow(), createdPoll.getBeginDate());
+
+ Assert.assertNotNull(createdPoll.getCreator());
+ Assert.assertNotNull(createdPoll.getCreator().getTopiaId());
+ Assert.assertNull(createdPoll.getCreator().getName());
+ Assert.assertNull(createdPoll.getCreator().getEmail());
+// Assert.assertNull(createdPoll.getComment());
+// Assert.assertNull(createdPoll.getVote());
+// Assert.assertNull(createdPoll.getVoterList());
+
+ List<Choice> createdChoices = choiceService.getChoices(createdPoll.getTopiaId());
+
+ Assert.assertNotNull(createdChoices);
+ Assert.assertEquals(2, createdChoices.size());
+
+
+ Choice createdChoice1 = createdChoices.get(0);
+ Assert.assertNotNull(createdChoice1);
+ Assert.assertNotNull(createdChoice1.getTopiaId());
+
+ Choice reloadedChoice1 = choiceService.getChoice(createdPoll.getTopiaId(), createdChoice1.getTopiaId());
+ Assert.assertEquals(createdChoice1, reloadedChoice1);
+
+ Assert.assertEquals(choice1.getName(), createdChoice1.getName());
+ Assert.assertEquals(choice1.getDescription(), createdChoice1.getDescription());
+ Assert.assertEquals(createdPoll.getCreator(), createdChoice1.getCreator());
+
+ Choice createdChoice2 = createdChoices.get(1);
+ Assert.assertNotNull(createdChoice2);
+ Assert.assertNotNull(createdChoice2.getTopiaId());
+
+ Choice reloadedChoice2 = choiceService.getChoice(createdPoll.getTopiaId(), createdChoice2.getTopiaId());
+ Assert.assertEquals(createdChoice2, reloadedChoice2);
+
+ Assert.assertEquals(choice2.getName(), createdChoice2.getName());
+ Assert.assertEquals(choice2.getDescription(), createdChoice2.getDescription());
+ Assert.assertEquals(createdPoll.getCreator(), createdChoice2.getCreator());
+
+ }
+
+
+ @Test
+ public void createSafeRestrictedPoll() throws InvalidFormException {
+
+ Poll poll = service.getNewPoll();
+
+ poll.setPollType(PollType.GROUP);
+ poll.setTitle("poll1");
+
+ List<Choice> choices = new ArrayList<>();
+
+ Choice choice1 = getServiceContext().getPersistenceContext().getChoiceDao().newInstance();
+ choices.add(choice1);
+ choice1.setChoiceType(ChoiceType.TEXT);
+ choice1.setName("A");
+ choice1.setDescription("Choice A");
+
+
+ Choice choice2 = getServiceContext().getPersistenceContext().getChoiceDao().newInstance();
+ choice2.setChoiceType(ChoiceType.TEXT);
+ choice2.setName("B");
+ choice2.setDescription("Choice B");
+ choices.add(choice2);
+
+ List<VoterList> voterLists = new ArrayList<>();
+
+ // add voter list
+ VoterList voterList = getServiceContext().getPersistenceContext().getVoterListDao().newInstance();
+
+ voterLists.add(voterList);
+ voterList.setName("voterList1");
+ voterList.setWeight(1);
+
+ VoterListMember voterListMember1 = getServiceContext().getPersistenceContext().getVoterListMemberDao().newInstance();
+ voterList.addMember(voterListMember1);
+
+ voterListMember1.setName("voter1");
+ voterListMember1.setWeight(0.3);
+ voterListMember1.setEmail("voter1(a)pollen.org");
+
+ VoterListMember voterListMember2 = getServiceContext().getPersistenceContext().getVoterListMemberDao().newInstance();
+ voterList.addMember(voterListMember2);
+ voterListMember2.setName("voter2");
+ voterListMember2.setEmail("voter2(a)pollen.org");
+ voterListMember2.setWeight(0.7);
+
+ Poll createdPoll = service.createPoll(poll, choices, voterLists);
+ Assert.assertNotNull(createdPoll);
+ Assert.assertNotNull(createdPoll.getTopiaId());
+
+ try {
+ service.getPoll(createdPoll.getTopiaId());
+ Assert.fail();
+ } catch (PollenInvalidPermissionException e) {
+ Assert.assertTrue(true);
+ }
+
+ FakePollenSecurityContext securityContext = (FakePollenSecurityContext) serviceContext.getSecurityContext();
+ securityContext.setMainPrincipal(createdPoll.getCreator());
+
+ Poll reloadedPoll = service.getPoll(createdPoll.getTopiaId());
+ Assert.assertEquals(createdPoll, reloadedPoll);
+
+ Assert.assertEquals(getServiceContext().getNow(), createdPoll.getBeginDate());
+
+ Assert.assertNotNull(createdPoll.getCreator());
+ Assert.assertNotNull(createdPoll.getCreator().getTopiaId());
+ Assert.assertNull(createdPoll.getCreator().getName());
+ Assert.assertNull(createdPoll.getCreator().getEmail());
+
+ List<Choice> createdChoices = choiceService.getChoices(createdPoll.getTopiaId());
+
+ Assert.assertNotNull(createdChoices);
+ Assert.assertEquals(2, createdChoices.size());
+
+ Choice createdChoice1 = createdChoices.get(0);
+ Assert.assertNotNull(createdChoice1);
+ Assert.assertNotNull(createdChoice1.getTopiaId());
+
+ Choice reloadedChoice1 = choiceService.getChoice(createdPoll.getTopiaId(), createdChoice1.getTopiaId());
+ Assert.assertEquals(createdChoice1, reloadedChoice1);
+
+ Assert.assertEquals(choice1.getName(), createdChoice1.getName());
+ Assert.assertEquals(choice1.getDescription(), createdChoice1.getDescription());
+ Assert.assertEquals(createdPoll.getCreator(), createdChoice1.getCreator());
+
+ Choice createdChoice2 = createdChoices.get(1);
+ Assert.assertNotNull(createdChoice2);
+ Assert.assertNotNull(createdChoice2.getTopiaId());
+
+ Choice reloadedChoice2 = choiceService.getChoice(createdPoll.getTopiaId(), createdChoice2.getTopiaId());
+ Assert.assertEquals(createdChoice2, reloadedChoice2);
+
+ Assert.assertEquals(choice2.getName(), createdChoice2.getName());
+ Assert.assertEquals(choice2.getDescription(), createdChoice2.getDescription());
+ Assert.assertEquals(createdPoll.getCreator(), createdChoice2.getCreator());
+
+ List<VoterList> createdVoterLists = voterListService.getVoterLists(createdPoll.getTopiaId());
+
+ Assert.assertNotNull(createdVoterLists);
+ Assert.assertEquals(1, createdVoterLists.size());
+ VoterList createdVoterList = createdVoterLists.get(0);
+ Assert.assertNotNull(createdVoterList);
+ Assert.assertNotNull(createdVoterList.getTopiaId());
+
+ VoterList reloadedVoterList = voterListService.getVoterList(createdPoll.getTopiaId(), createdVoterList.getTopiaId());
+ Assert.assertEquals(createdVoterList, reloadedVoterList);
+
+ Assert.assertEquals(voterList.getName(), createdVoterList.getName());
+ Assert.assertEquals(voterList.getWeight(), createdVoterList.getWeight(), 0);
+
+ Assert.assertNotNull(createdVoterList.getMember());
+ Assert.assertEquals(2, createdVoterList.sizeMember());
+
+ }
+
+ @Test
+ public void testCreateRestrictedPoll() throws InvalidFormException {
+
+ Poll poll = service.getNewPoll();
+ poll.setPollType(PollType.RESTRICTED);
+
+ poll.setTitle("poll1");
+
+ List<Choice> choices = new ArrayList<>();
+
+ Choice choice1 = getServiceContext().getPersistenceContext().getChoiceDao().newInstance();
+ choice1.setChoiceType(ChoiceType.TEXT);
+ choice1.setName("A");
+ choice1.setDescription("Choice A");
+
+ choices.add(choice1);
+
+ Choice choice2 = getServiceContext().getPersistenceContext().getChoiceDao().newInstance();
+ choice2.setChoiceType(ChoiceType.TEXT);
+ choice2.setName("B");
+ choice2.setDescription("Choice B");
+
+ choices.add(choice2);
+
+ try {
+ service.createPoll(poll, choices, null);
+ Assert.fail();
+ } catch (InvalidFormException e) {
+ // missing voterList
+ assertErrorKeyFound(e, "voterList");
+ }
+
+ List<VoterList> voterLists = new ArrayList<>();
+
+ // add voter list
+ VoterList voterList = getServiceContext().getPersistenceContext().getVoterListDao().newInstance();
+
+ voterLists.add(voterList);
+
+ try {
+ service.createPoll(poll, choices, voterLists);
+ Assert.fail();
+ } catch (InvalidFormException e) {
+ // missing name
+ // missing weight
+ // missing voterListMember
+ assertErrorKeyFound(e, "voterList[0].name", "voterList[0].weight", "voterList[0].member");
+ }
+
+ voterList.setName("voterList1");
+ voterList.setWeight(1);
+
+ VoterListMember voterListMember1 = getServiceContext().getPersistenceContext().getVoterListMemberDao().newInstance();
+ voterList.addMember(voterListMember1);
+
+ try {
+ service.createPoll(poll, choices, voterLists);
+ Assert.fail();
+ } catch (InvalidFormException e) {
+ // missing member name
+ // missing member email
+ assertErrorKeyFound(e, "voterList[0].member[0].name", "voterList[0].member[0].email", "voterList[0].member[0].weight");
+ }
+
+ voterListMember1.setName("voter1");
+ voterListMember1.setWeight(0.3);
+ voterListMember1.setEmail("voter1_pollen.org");
+
+ try {
+ service.createPoll(poll, choices, voterLists);
+ Assert.fail();
+ } catch (InvalidFormException e) {
+ // invalid member email
+ assertErrorKeyFound(e, "voterList[0].member[0].email");
+ }
+
+ voterListMember1.setEmail("voter1(a)pollen.org");
+
+ VoterListMember voterListMember2 = getServiceContext().getPersistenceContext().getVoterListMemberDao().newInstance();
+ voterListMember2.setName("voter1");
+ voterListMember2.setWeight(0.7);
+ voterListMember2.setEmail("voter1(a)pollen.org");
+ voterList.addMember(voterListMember2);
+
+ try {
+ service.createPoll(poll, choices, voterLists);
+ Assert.fail();
+ } catch (InvalidFormException e) {
+ // same name
+ // same email
+ assertErrorKeyFound(e, "voterList[0].member[1].name", "voterList[0].member[1].email");
+ }
+
+ voterListMember2.setName("voter2");
+ voterListMember2.setEmail("voter2(a)pollen.org");
+
+ Poll createdPoll = service.createPoll(poll, choices, voterLists);
+ Assert.assertNotNull(createdPoll);
+ Assert.assertNotNull(createdPoll.getTopiaId());
+
+ try {
+ service.getPoll(createdPoll.getTopiaId());
+ Assert.fail();
+ } catch (PollenInvalidPermissionException e) {
+ Assert.assertTrue(true);
+ }
+
+ FakePollenSecurityContext securityContext = (FakePollenSecurityContext) serviceContext.getSecurityContext();
+ securityContext.setMainPrincipal(createdPoll.getCreator());
+
+ Poll reloadedPoll = service.getPoll(createdPoll.getTopiaId());
+ Assert.assertEquals(createdPoll, reloadedPoll);
+
+ Assert.assertEquals(getServiceContext().getNow(), createdPoll.getBeginDate());
+
+ Assert.assertNotNull(createdPoll.getCreator());
+ Assert.assertNotNull(createdPoll.getCreator().getTopiaId());
+ Assert.assertNull(createdPoll.getCreator().getName());
+ Assert.assertNull(createdPoll.getCreator().getEmail());
+// Assert.assertNull(createdPoll.getComment());
+// Assert.assertNull(createdPoll.getVote());
+
+ List<Choice> createdChoices = choiceService.getChoices(createdPoll.getTopiaId());
+
+ Assert.assertNotNull(createdChoices);
+ Assert.assertEquals(2, createdChoices.size());
+
+ Choice createdChoice1 = createdChoices.get(0);
+ Assert.assertNotNull(createdChoice1);
+ Assert.assertNotNull(createdChoice1.getTopiaId());
+
+ Choice reloadedChoice1 = choiceService.getChoice(createdPoll.getTopiaId(), createdChoice1.getTopiaId());
+ Assert.assertEquals(createdChoice1, reloadedChoice1);
+
+ Assert.assertEquals(choice1.getName(), createdChoice1.getName());
+ Assert.assertEquals(choice1.getDescription(), createdChoice1.getDescription());
+ Assert.assertEquals(createdPoll.getCreator(), createdChoice1.getCreator());
+
+ Choice createdChoice2 = createdChoices.get(1);
+ Assert.assertNotNull(createdChoice2);
+ Assert.assertNotNull(createdChoice2.getTopiaId());
+
+ Choice reloadedChoice2 = choiceService.getChoice(createdPoll.getTopiaId(), createdChoice2.getTopiaId());
+ Assert.assertEquals(createdChoice2, reloadedChoice2);
+
+ Assert.assertEquals(choice2.getName(), createdChoice2.getName());
+ Assert.assertEquals(choice2.getDescription(), createdChoice2.getDescription());
+ Assert.assertEquals(createdPoll.getCreator(), createdChoice2.getCreator());
+
+ List<VoterList> createdVoterLists = voterListService.getVoterLists(createdPoll.getTopiaId());
+
+ Assert.assertNotNull(createdVoterLists);
+ Assert.assertEquals(1, createdVoterLists.size());
+ VoterList createdVoterList = createdVoterLists.get(0);
+ Assert.assertNotNull(createdVoterList);
+ Assert.assertNotNull(createdVoterList.getTopiaId());
+
+ VoterList reloadedVoterList = voterListService.getVoterList(createdPoll.getTopiaId(), createdVoterList.getTopiaId());
+ Assert.assertEquals(createdVoterList, reloadedVoterList);
+
+ Assert.assertEquals(voterList.getName(), createdVoterList.getName());
+ Assert.assertEquals(voterList.getWeight(), createdVoterList.getWeight(), 0);
+
+ Assert.assertNotNull(createdVoterList.getMember());
+ Assert.assertEquals(2, createdVoterList.sizeMember());
+
+// VoterListMember createdVoterListMember1 = Iterables.get(createdVoterList.getMember(), 0);
+//
+// Assert.assertNotNull(createdVoterListMember1);
+// Assert.assertNotNull(createdVoterListMember1.getTopiaId());
+// VoterListMember reloadedVoterListMember1 = voterListService.getMember(createdPoll.getTopiaId(), createdVoterList.getTopiaId(), createdVoterListMember1.getTopiaId());
+// Assert.assertEquals(createdVoterListMember1, reloadedVoterListMember1);
+//
+// Assert.assertEquals(reloadedVoterListMember1.getName(), createdVoterListMember1.getName());
+// Assert.assertEquals(reloadedVoterListMember1.getEmail(), createdVoterListMember1.getEmail());
+// Assert.assertEquals(reloadedVoterListMember1.getWeight(), createdVoterListMember1.getWeight(), 0);
+//
+// VoterListMember createdVoterListMember2 = Iterables.get(createdVoterList.getMember(), 1);
+//
+// Assert.assertNotNull(createdVoterListMember2);
+// Assert.assertNotNull(createdVoterListMember2.getTopiaId());
+//
+// VoterListMember reloadedVoterListMember2 = voterListService.getMember(createdPoll.getTopiaId(), createdVoterList.getTopiaId(), createdVoterListMember2.getTopiaId());
+// Assert.assertEquals(createdVoterListMember2, reloadedVoterListMember2);
+//
+// Assert.assertEquals(reloadedVoterListMember2.getName(), createdVoterListMember2.getName());
+// Assert.assertEquals(reloadedVoterListMember2.getEmail(), createdVoterListMember2.getEmail());
+// Assert.assertEquals(reloadedVoterListMember2.getWeight(), createdVoterListMember2.getWeight(), 0);
+
+ }
+
+}
Copied: trunk/pollen-services/src/test/java/org/chorem/pollen/services/service/PollenUserServiceTest.java (from rev 3932, trunk/pollen-services/src/test/java/org/chorem/pollen/service/PollenUserServiceTest.java)
===================================================================
--- trunk/pollen-services/src/test/java/org/chorem/pollen/services/service/PollenUserServiceTest.java (rev 0)
+++ trunk/pollen-services/src/test/java/org/chorem/pollen/services/service/PollenUserServiceTest.java 2014-05-12 22:04:28 UTC (rev 3935)
@@ -0,0 +1,206 @@
+package org.chorem.pollen.services.service;
+
+/*
+ * #%L
+ * Pollen :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2009 - 2013 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.chorem.pollen.persistence.entity.PollenUser;
+import org.chorem.pollen.persistence.entity.PollenUsers;
+import org.chorem.pollen.services.AbstractPollenServiceTest;
+import org.chorem.pollen.services.service.security.PollenInvalidEmailActivationTokenException;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.nuiton.topia.persistence.TopiaNoResultException;
+
+import java.text.ParseException;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.0
+ */
+public class PollenUserServiceTest extends AbstractPollenServiceTest {
+
+ protected PollenUserService service;
+
+ protected PollenUser user;
+
+ @Before
+ public void setUp() throws ParseException {
+
+ loadFixtures("fixtures");
+
+ service = newService(PollenUserService.class);
+
+ getServiceContext().setDate(new Date(1363948427576l));
+
+ user = application.fixture("user_tony");
+ }
+
+ @Test
+ public void testGetPollenUsers() {
+
+ List<PollenUser> users = service.getUsers();
+
+ Assert.assertNotNull(users);
+ Assert.assertTrue(CollectionUtils.isNotEmpty(users));
+ }
+
+ @Test
+ public void testGetPollenUser() {
+
+ try {
+ service.getUser("pollen_user_tony_" + System.nanoTime());
+
+ } catch (TopiaNoResultException e) {
+ Assert.assertTrue(true);
+ }
+
+ PollenUser user = service.getUser(this.user.getTopiaId());
+
+ Assert.assertNotNull(user);
+ Assert.assertEquals(this.user, user);
+ }
+
+ @Test
+ public void testCreatePollenUser() throws InvalidFormException {
+
+ try {
+ service.createUser(user, false);
+ Assert.fail();
+ } catch (IllegalStateException e) {
+ // Should having id
+ Assert.assertTrue(true);
+ }
+
+ PollenUser newUser = getServiceContext().getPersistenceContext().getPollenUserDao().newInstance();
+ newUser.setLogin("pollen");
+ newUser.setEmail("pollen(a)pollen.org");
+
+ PollenUser savedUser = service.createUser(newUser, true);
+ Assert.assertNotNull(savedUser);
+ Assert.assertNotNull(savedUser.getTopiaId());
+
+ PollenUser newUser2 = getServiceContext().getPersistenceContext().getPollenUserDao().newInstance();
+ newUser2.setLogin("pollen");
+ newUser2.setEmail("pollen(a)pollen.org");
+
+ try {
+ service.createUser(newUser2, true);
+ Assert.fail();
+ } catch (InvalidFormException e) {
+ // not available login
+ // not available email
+ assertErrorKeyFound(e, "login", "email");
+ }
+
+ newUser2.setLogin("pollen2");
+ try {
+ service.createUser(newUser2, true);
+ Assert.fail();
+ } catch (InvalidFormException e) {
+ // not available email
+ assertErrorKeyFound(e, "email");
+ }
+
+ newUser2.setEmail("pollen2(a)pollen.org");
+ PollenUser savedUser2 = service.createUser(newUser2, true);
+ Assert.assertNotNull(savedUser2);
+ Assert.assertNotNull(savedUser2.getTopiaId());
+ }
+
+ @Test
+ public void testEditUser() throws InvalidFormException {
+
+ PollenUser user = service.getUser(this.user.getTopiaId());
+
+ Assert.assertNotNull(user);
+ Assert.assertNull(user.getEmailActivationToken());
+
+ getServiceContext().getPersistenceContext().getHibernateSupport().getHibernateSession().evict(user);
+
+ String originalLogin = user.getLogin();
+
+ user.setLogin("yetanotherlogin");
+ String email = "tony(a)pollen.org";
+ user.setEmail(email);
+
+ try {
+ service.editUser(user);
+ Assert.fail();
+ } catch (InvalidFormException e) {
+ // invalid password
+ assertErrorKeyFound(e, "password");
+ }
+
+ user.setPassword("fake");
+ service.editUser(user);
+
+ PollenUser savedUser = service.getUser(user.getTopiaId());
+ Assert.assertNotNull(savedUser);
+ Assert.assertEquals(originalLogin, savedUser.getLogin());
+ Assert.assertEquals(email, savedUser.getEmail());
+ Assert.assertNotNull(savedUser.getEmailActivationToken());
+ }
+
+ @Test
+ public void testValidateEmail() throws PollenInvalidEmailActivationTokenException, InvalidFormException {
+
+ PollenUser user = service.getUser0(this.user.getTopiaId());
+ Assert.assertNotNull(user);
+ Assert.assertNull(user.getEmailActivationToken());
+
+ getServiceContext().getPersistenceContext().getHibernateSupport().getHibernateSession().evict(user);
+
+ String email = "tony(a)pollen.org";
+ user.setEmail(email);
+ user.setPassword("fake");
+
+ service.editUser(user);
+
+ PollenUser savedUser = service.getUser(user.getTopiaId());
+ Assert.assertNotNull(savedUser);
+
+ Assert.assertEquals(email, savedUser.getEmail());
+ Assert.assertNotNull(savedUser.getEmailActivationToken());
+
+ try {
+ service.validateUserEmail(user.getTopiaId(), "fakeToken");
+ Assert.fail();
+ } catch (PollenInvalidEmailActivationTokenException e) {
+ Assert.assertTrue(true);
+ }
+
+ Assert.assertFalse(PollenUsers.isEmailActivated(savedUser));
+
+ service.validateUserEmail(user.getTopiaId(), savedUser.getEmailActivationToken().getToken());
+
+ PollenUser reloadedUser = service.getUser(this.user.getTopiaId());
+ Assert.assertTrue(PollenUsers.isEmailActivated(reloadedUser));
+
+ }
+}
1
0
12 May '14
Author: tchemit
Date: 2014-05-13 00:04:14 +0200 (Tue, 13 May 2014)
New Revision: 3934
Url: http://forge.chorem.org/projects/pollen/repository/revisions/3934
Log:
fix poll update :) at last\!
Modified:
trunk/pollen-ui-angular/src/main/webapp/js/services.js
Modified: trunk/pollen-ui-angular/src/main/webapp/js/services.js
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/js/services.js 2014-05-12 22:03:48 UTC (rev 3933)
+++ trunk/pollen-ui-angular/src/main/webapp/js/services.js 2014-05-12 22:04:14 UTC (rev 3934)
@@ -42,7 +42,8 @@
transformRequest : function (data, headersGetter) {
return 'poll='+encodeURIComponent(JSON.stringify(data));
}
- ,headers : { 'X-HTTP-Method':'PUT'}
+ ,headers : { 'X-METHOD-OVERRIDE' : 'PUT'}
+// ,headers : { 'X-HTTP-Method':'PUT', 'X-METHOD-OVERRIDE' : 'PUT'}
}
});
}])
1
0
r3933 - in trunk: pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1 pollen-services/src/main/java/org/chorem/pollen/services/service
by tchemit@users.chorem.org 12 May '14
by tchemit@users.chorem.org 12 May '14
12 May '14
Author: tchemit
Date: 2014-05-13 00:03:48 +0200 (Tue, 13 May 2014)
New Revision: 3933
Url: http://forge.chorem.org/projects/pollen/repository/revisions/3933
Log:
do not send back an edited object + clean some api
Modified:
trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/ChoiceApi.java
trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/CommentApi.java
trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/FavoriteListApi.java
trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/PollApi.java
trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/PollenUserApi.java
trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/VoterListApi.java
trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java
trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java
trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java
trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java
trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java
trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteCountingService.java
trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java
trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java
Modified: trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/ChoiceApi.java
===================================================================
--- trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/ChoiceApi.java 2014-05-12 16:50:51 UTC (rev 3932)
+++ trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/ChoiceApi.java 2014-05-12 22:03:48 UTC (rev 3933)
@@ -37,7 +37,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 2.0
*/
-public class ChoiceApi extends WebMotionController {
+public class ChoiceApi extends WebMotionController {
public List<Choice> getChoices(ChoiceService choiceService, String pollId) {
@@ -61,10 +61,9 @@
}
- public Choice editChoice(ChoiceService choiceService, String pollId, Choice choice) throws InvalidFormException {
+ public void editChoice(ChoiceService choiceService, String pollId, Choice choice) throws InvalidFormException {
- Choice editedChoice = choiceService.editChoice(pollId, choice);
- return editedChoice;
+ choiceService.editChoice(pollId, choice);
}
@@ -73,4 +72,5 @@
choiceService.deleteChoice(pollId, choiceId);
}
+
}
\ No newline at end of file
Modified: trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/CommentApi.java
===================================================================
--- trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/CommentApi.java 2014-05-12 16:50:51 UTC (rev 3932)
+++ trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/CommentApi.java 2014-05-12 22:03:48 UTC (rev 3933)
@@ -61,10 +61,9 @@
}
- public Comment editComment(CommentService commentService, String pollId, Comment comment) throws InvalidFormException {
+ public void editComment(CommentService commentService, String pollId, Comment comment) throws InvalidFormException {
- Comment editedComment = commentService.editComment(pollId, comment);
- return editedComment;
+ commentService.editComment(pollId, comment);
}
@@ -73,4 +72,5 @@
commentService.deleteComment(pollId, commentId);
}
+
}
Modified: trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/FavoriteListApi.java
===================================================================
--- trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/FavoriteListApi.java 2014-05-12 16:50:51 UTC (rev 3932)
+++ trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/FavoriteListApi.java 2014-05-12 22:03:48 UTC (rev 3933)
@@ -65,10 +65,9 @@
}
- public FavoriteList editFavoriteList(FavoriteListService favoriteListService, FavoriteList favoriteList) throws InvalidFormException {
+ public void editFavoriteList(FavoriteListService favoriteListService, FavoriteList favoriteList) throws InvalidFormException {
- FavoriteList editedFavoriteList = favoriteListService.editFavoriteList(favoriteList);
- return editedFavoriteList;
+ favoriteListService.editFavoriteList(favoriteList);
}
@@ -114,10 +113,9 @@
}
- public FavoriteListMember editMember(FavoriteListService favoriteListService, String favoriteListId, FavoriteListMember member) throws InvalidFormException {
+ public void editMember(FavoriteListService favoriteListService, String favoriteListId, FavoriteListMember member) throws InvalidFormException {
- FavoriteListMember editedMember = favoriteListService.editFavoriteListMember(favoriteListId, member);
- return editedMember;
+ favoriteListService.editFavoriteListMember(favoriteListId, member);
}
Modified: trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/PollApi.java
===================================================================
--- trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/PollApi.java 2014-05-12 16:50:51 UTC (rev 3932)
+++ trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/PollApi.java 2014-05-12 22:03:48 UTC (rev 3933)
@@ -106,10 +106,9 @@
}
- public Poll editPoll(PollService pollService, Poll poll) throws InvalidFormException {
+ public void editPoll(PollService pollService, Poll poll) throws InvalidFormException {
- Poll editedPoll = pollService.editPoll(poll);
- return editedPoll;
+ pollService.editPoll(poll);
}
Modified: trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/PollenUserApi.java
===================================================================
--- trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/PollenUserApi.java 2014-05-12 16:50:51 UTC (rev 3932)
+++ trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/PollenUserApi.java 2014-05-12 22:03:48 UTC (rev 3933)
@@ -65,11 +65,10 @@
}
- public PollenUser editUser(PollenUserService pollenUserService,
+ public void editUser(PollenUserService pollenUserService,
PollenUser user) throws InvalidFormException {
- PollenUser editedUser = pollenUserService.editUser(user);
- return editedUser;
+ pollenUserService.editUser(user);
}
Modified: trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/VoterListApi.java
===================================================================
--- trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/VoterListApi.java 2014-05-12 16:50:51 UTC (rev 3932)
+++ trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/VoterListApi.java 2014-05-12 22:03:48 UTC (rev 3933)
@@ -55,25 +55,24 @@
}
- public PollenPrincipalRef<VoterList> getVoterList(VoterListService voterListService, String pollId, String voterListId) {
+ public VoterList getVoterList(VoterListService voterListService, String pollId, String voterListId) {
VoterList voterList = voterListService.getVoterList(pollId, voterListId);
- PollenPrincipalRef<VoterList> principalRef = PollenPrincipalRef.newRef(voterList);
- return principalRef;
+ return voterList;
}
- public VoterList createVoterList(VoterListService voterListService, String pollId, VoterList voterList) throws InvalidFormException {
+ public PollenPrincipalRef<VoterList> createVoterList(VoterListService voterListService, String pollId, VoterList voterList) throws InvalidFormException {
VoterList createdVoterList = voterListService.addVoterList(pollId, voterList);
- return createdVoterList;
+ PollenPrincipalRef<VoterList> principalRef = PollenPrincipalRef.newRef(createdVoterList);
+ return principalRef;
}
- public VoterList editVoterList(VoterListService voterListService, String pollId, VoterList voterList) throws InvalidFormException {
+ public void editVoterList(VoterListService voterListService, String pollId, VoterList voterList) throws InvalidFormException {
- VoterList editedVoterList = voterListService.editVoterList(pollId, voterList);
- return editedVoterList;
+ voterListService.editVoterList(pollId, voterList);
}
@@ -105,10 +104,9 @@
}
- public VoterListMember editMember(VoterListService voterListService, String pollId, String voterListId, VoterListMember member) throws InvalidFormException {
+ public void editMember(VoterListService voterListService, String pollId, String voterListId, VoterListMember member) throws InvalidFormException {
- VoterListMember editedMember = voterListService.editVoterListMember(pollId, voterListId, member);
- return editedMember;
+ voterListService.editVoterListMember(pollId, voterListId, member);
}
@@ -117,4 +115,5 @@
voterListService.deleteVoterListMember(pollId, voterListId, memberId);
}
+
}
Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java
===================================================================
--- trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java 2014-05-12 16:50:51 UTC (rev 3932)
+++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java 2014-05-12 22:03:48 UTC (rev 3933)
@@ -47,7 +47,7 @@
checkNotNull(pollId);
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
List<Choice> choices = getChoiceDao().findAll(poll);
return copyAsList(choices);
@@ -60,7 +60,7 @@
checkNotNull(choiceId);
checkPermission(PermissionVerb.readChoice, choiceId);
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
Choice result = getChoice(poll, choiceId);
return copy(result);
@@ -99,7 +99,7 @@
checkIsNotPersisted(choice);
checkPermission(PermissionVerb.editPoll, pollId);
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
List<Choice> existingChoices = getChoiceDao().findAll(poll);
ErrorMap errorMap = checkChoice(existingChoices, choice);
@@ -117,13 +117,13 @@
}
- public Choice editChoice(String pollId, Choice choice) throws InvalidFormException {
+ public void editChoice(String pollId, Choice choice) throws InvalidFormException {
checkNotNull(choice);
checkIsPersisted(choice);
checkPermission(PermissionVerb.editChoice, choice.getTopiaId());
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
List<Choice> existingChoices = getChoiceDao().findAll(poll);
ErrorMap errorMap = checkChoice(existingChoices, choice);
@@ -134,8 +134,6 @@
getNotificationService().onChoiceEdited(poll, result);
- return copy(result);
-
}
public void deleteChoice(String pollId, String choiceId) {
@@ -144,7 +142,7 @@
checkNotNull(choiceId);
checkPermission(PermissionVerb.deleteChoice, choiceId);
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
Choice choice = getChoice(poll, choiceId);
getChoiceDao().delete(choice);
Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java
===================================================================
--- trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java 2014-05-12 16:50:51 UTC (rev 3932)
+++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java 2014-05-12 22:03:48 UTC (rev 3933)
@@ -44,7 +44,7 @@
checkNotNull(pollId);
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
List<Comment> comments = getCommentDao().forPollEquals(poll).findAll();
return copyAsList(comments);
@@ -56,7 +56,7 @@
checkNotNull(commentId);
checkPermission(PermissionVerb.readComment, commentId);
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
Comment result = getComment(poll, commentId);
return copy(result);
@@ -73,7 +73,7 @@
ErrorMap errorMap = checkComment(comment);
errorMap.failIfNotEmpty();
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
Comment result = saveComment(poll, comment);
commit();
@@ -83,7 +83,7 @@
}
- public Comment editComment(String pollId, Comment comment) throws InvalidFormException {
+ public void editComment(String pollId, Comment comment) throws InvalidFormException {
checkNotNull(pollId);
checkNotNull(comment);
@@ -93,14 +93,12 @@
ErrorMap errorMap = checkComment(comment);
errorMap.failIfNotEmpty();
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
Comment result = saveComment(poll, comment);
commit();
getNotificationService().onCommentEdited(poll, result);
- return copy(result);
-
}
public void deleteComment(String pollId, String commentId) {
@@ -109,7 +107,7 @@
checkNotNull(commentId);
checkPermission(PermissionVerb.deleteComment, commentId);
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
Comment comment = getComment(poll, commentId);
Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java
===================================================================
--- trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java 2014-05-12 16:50:51 UTC (rev 3932)
+++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/FavoriteListService.java 2014-05-12 22:03:48 UTC (rev 3933)
@@ -71,7 +71,7 @@
PollenUser user = getConnectedUser();
List<FavoriteList> result = user.getFavoriteList();
- return ImmutableList.copyOf(result);
+ return copyAsList(result);
}
@@ -83,7 +83,7 @@
PollenUser user = getConnectedUser();
FavoriteList result = getFavoriteList(user, favoriteListId);
- return result;
+ return copy(result);
}
@@ -103,12 +103,13 @@
FavoriteList result = saveFavoriteList(user, favoriteList);
commit();
- getNotificationService().onFavoriteListAdded(user, favoriteList);
+ getNotificationService().onFavoriteListAdded(user, result);
- return result;
+ return copy(result);
+
}
- public FavoriteList editFavoriteList(FavoriteList favoriteList) throws InvalidFormException {
+ public void editFavoriteList(FavoriteList favoriteList) throws InvalidFormException {
checkIsConnected();
checkNotNull(favoriteList);
@@ -124,9 +125,8 @@
FavoriteList result = saveFavoriteList(user, favoriteList);
commit();
- getNotificationService().onFavoriteListEdited(user, favoriteList);
+ getNotificationService().onFavoriteListEdited(user, result);
- return result;
}
public void deleteFavoriteList(String favoriteListId) {
@@ -155,7 +155,7 @@
FavoriteList favoriteList = getFavoriteList(user, favoriteListId);
Set<FavoriteListMember> member = favoriteList.getMember();
- return ImmutableSet.copyOf(member);
+ return copyAsSet(member);
}
@@ -170,7 +170,7 @@
FavoriteList favoriteList = getFavoriteList(user, favoriteListId);
FavoriteListMember result = getFavoriteListMember(favoriteList, memberId);
- return result;
+ return copy(result);
}
@@ -194,11 +194,11 @@
FavoriteListMember result = saveFavoriteListMember(favoriteList, member);
commit();
- return result;
+ return copy(result);
}
- public FavoriteListMember editFavoriteListMember(String favoriteListId,
+ public void editFavoriteListMember(String favoriteListId,
FavoriteListMember member) throws InvalidFormException {
checkIsConnected();
@@ -218,8 +218,6 @@
FavoriteListMember result = saveFavoriteListMember(favoriteList, member);
commit();
- return result;
-
}
public void deleteFavoriteListMember(String favoriteListId,
Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java
===================================================================
--- trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java 2014-05-12 16:50:51 UTC (rev 3932)
+++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/PollService.java 2014-05-12 22:03:48 UTC (rev 3933)
@@ -95,7 +95,7 @@
checkNotNull(pollId);
checkPermission(PermissionVerb.readPoll, pollId);
- Poll result = getPollDao().findByTopiaId(pollId);
+ Poll result = getPoll0(pollId);
if (isNotPermitted(PermissionVerb.editPoll, pollId)) {
@@ -150,13 +150,13 @@
Poll savedPoll = savePoll(poll, choices, voterLists);
commit();
- getNotificationService().onPollCreated(poll);
+ getNotificationService().onPollCreated(savedPoll);
return copy(savedPoll);
}
- public Poll editPoll(Poll poll) throws InvalidFormException {
+ public void editPoll(Poll poll) throws InvalidFormException {
checkNotNull(poll);
checkIsPersisted(poll);
@@ -168,10 +168,8 @@
Poll savedPoll = savePoll(poll, null, null);
commit();
- getNotificationService().onPollEdited(poll);
+ getNotificationService().onPollEdited(savedPoll);
- return copy(savedPoll);
-
}
public void deletePoll(String pollId) {
@@ -179,7 +177,7 @@
checkNotNull(pollId);
checkPermission(PermissionVerb.deletePoll, pollId);
- Poll poll = getPollDao().findByTopiaId(pollId);
+ Poll poll = getPoll0(pollId);
getPollDao().delete(poll);
commit();
@@ -193,7 +191,7 @@
checkNotNull(pollId);
checkPermission(PermissionVerb.clonePoll, pollId);
- Poll poll = getPoll(pollId);
+ Poll poll = getPoll0(pollId);
//TODO
commit();
@@ -209,7 +207,7 @@
checkNotNull(pollId);
checkPermission(PermissionVerb.closePoll, pollId);
- Poll poll = getPoll(pollId);
+ Poll poll = getPoll0(pollId);
//TODO
commit();
@@ -223,7 +221,7 @@
checkNotNull(pollId);
checkPermission(PermissionVerb.exportPoll, pollId);
- Poll poll = getPoll(pollId);
+ Poll poll = getPoll0(pollId);
//TODO
return null;
@@ -234,19 +232,15 @@
boolean pollExists = poll.isPersisted();
- List<Choice> existingChoices;
-
Poll toSave;
if (pollExists) {
- toSave = getPoll(poll.getTopiaId());
- existingChoices = getChoiceDao().findAll(poll);
+ toSave = getPoll0(poll.getTopiaId());
} else {
toSave = getPollDao().create();
- existingChoices = new ArrayList<>();
PollenPrincipal creatorToPersist =
getSecurityService().generatePollenPrincipal();
@@ -298,6 +292,17 @@
if (CollectionUtils.isNotEmpty(choices)) {
+ List<Choice> existingChoices;
+
+ if (pollExists) {
+
+ existingChoices = getChoiceDao().findAll(poll);
+
+ } else {
+
+ existingChoices = new ArrayList<>();
+
+ }
ChoiceService choiceService = getChoiceService();
for (Choice choice : choices) {
@@ -326,6 +331,12 @@
}
+ protected Poll getPoll0(String pollId) {
+
+ return getPollDao().findByTopiaId(pollId);
+
+ }
+
protected ErrorMap checkPoll(Poll poll) {
ErrorMap errors = new ErrorMap();
Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java
===================================================================
--- trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java 2014-05-12 16:50:51 UTC (rev 3932)
+++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/PollenUserService.java 2014-05-12 22:03:48 UTC (rev 3933)
@@ -56,11 +56,15 @@
checkNotNull(userId);
- PollenUser result = getPollenUserDao().findByTopiaId(userId);
+ PollenUser result = getUser0(userId);
return copy(result);
}
+ protected PollenUser getUser0(String userId) {
+ return getPollenUserDao().findByTopiaId(userId);
+ }
+
public PollenUser createUser(PollenUser user, boolean generatePassword) throws InvalidFormException {
checkNotNull(user);
@@ -78,7 +82,7 @@
}
- public PollenUser editUser(PollenUser user) throws InvalidFormException {
+ public void editUser(PollenUser user) throws InvalidFormException {
checkNotNull(user);
checkIsPersisted(user);
@@ -89,17 +93,15 @@
PollenUser result = savePollenUser(user, false);
commit();
- getNotificationService().onUserEdited(user);
+ getNotificationService().onUserEdited(result);
- return copy(result);
-
}
public void deleteUser(String userId) {
checkNotNull(userId);
- PollenUser user = getPollenUserDao().findByTopiaId(userId);
+ PollenUser user = getUser0(userId);
getPollenUserDao().delete(user);
commit();
@@ -116,7 +118,7 @@
checkNotNull(oldPassword);
checkNotNull(newPassword);
- PollenUser user = getPollenUserDao().findByTopiaId(userId);
+ PollenUser user = getUser0(userId);
// check old password
getSecurityService().checkUserPassword(user, oldPassword);
@@ -136,7 +138,7 @@
checkNotNull(userId);
checkNotNull(token);
- PollenUser user = getPollenUserDao().findByTopiaId(userId);
+ PollenUser user = getUser0(userId);
getSecurityService().checkUserEmailValidation(user, token);
@@ -171,7 +173,7 @@
ErrorMap errors = new ErrorMap();
boolean userExists = user.isPersisted();
- PollenUser persisted = userExists ? getUser(user.getTopiaId()) : null;
+ PollenUser persisted = userExists ? getUser0(user.getTopiaId()) : null;
PollenUserTopiaDao dao = getPollenUserDao();
String userLogin = user.getLogin();
@@ -243,7 +245,7 @@
if (userExists) {
- toSave = getPollenUserDao().findByTopiaId(user.getTopiaId());
+ toSave = getUser0(user.getTopiaId());
boolean emailChanged = !Objects.equals(toSave.getEmail(), cleanMail);
Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteCountingService.java
===================================================================
--- trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteCountingService.java 2014-05-12 16:50:51 UTC (rev 3932)
+++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteCountingService.java 2014-05-12 22:03:48 UTC (rev 3933)
@@ -38,7 +38,7 @@
//GET /poll/{pollId}/results
public PollResult getResult(String pollId) {
Preconditions.checkNotNull(pollId);
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
//TODO
return null;
}
Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java
===================================================================
--- trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java 2014-05-12 16:50:51 UTC (rev 3932)
+++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/VoteService.java 2014-05-12 22:03:48 UTC (rev 3933)
@@ -44,7 +44,7 @@
checkNotNull(pollId);
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
List<Vote> votes = getVoteDao().forPollEquals(poll).findAll();
return ImmutableList.copyOf(votes);
@@ -55,7 +55,7 @@
checkNotNull(voteId);
checkPermission(PermissionVerb.readVote, voteId);
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
Vote result = getVote(poll, voteId);
return result;
@@ -70,7 +70,7 @@
checkIsNotPersisted(vote);
checkPermission(PermissionVerb.addVote, pollId);
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
ErrorMap errorMap = checkVote(poll, vote);
errorMap.failIfNotEmpty();
@@ -90,7 +90,7 @@
checkIsPersisted(vote);
checkPermission(PermissionVerb.editVote, vote.getTopiaId());
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
ErrorMap errorMap = checkVote(poll, vote);
errorMap.failIfNotEmpty();
@@ -110,7 +110,7 @@
checkNotNull(voteId);
checkPermission(PermissionVerb.deleteVote, voteId);
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
Vote vote = getVote(poll, voteId);
Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java
===================================================================
--- trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java 2014-05-12 16:50:51 UTC (rev 3932)
+++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/VoterListService.java 2014-05-12 22:03:48 UTC (rev 3933)
@@ -23,7 +23,6 @@
* #L%
*/
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.Sets;
import org.apache.commons.collections4.CollectionUtils;
import org.chorem.pollen.persistence.entity.FavoriteList;
@@ -53,7 +52,7 @@
checkNotNull(pollId);
checkNotNull(favoriteListId);
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
FavoriteList favoriteList = getFavoriteListService().getFavoriteList(favoriteListId);
@@ -77,7 +76,7 @@
commit();
- return result;
+ return copy(result);
}
@@ -85,9 +84,9 @@
checkNotNull(pollId);
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
List<VoterList> voterLists = getVoterListDao().forPollEquals(poll).findAll();
- return ImmutableList.copyOf(voterLists);
+ return copyAsList(voterLists);
}
@@ -96,10 +95,10 @@
checkNotNull(pollId);
checkNotNull(voterListId);
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
VoterList result = getVoterList(poll, voterListId);
- return result;
+ return copy(result);
}
@@ -109,7 +108,7 @@
checkNotNull(voterList);
checkIsNotPersisted(voterList);
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
List<VoterList> existingVoterLists = getVoterListDao().forPollEquals(poll).findAll();
@@ -120,17 +119,19 @@
VoterList result = saveVoterList(poll, voterList);
commit();
- return result;
+ //TODO Notify
+ return copy(result);
+
}
- public VoterList editVoterList(String pollId, VoterList voterList) throws InvalidFormException {
+ public void editVoterList(String pollId, VoterList voterList) throws InvalidFormException {
checkNotNull(pollId);
checkNotNull(voterList);
checkIsPersisted(voterList);
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
List<VoterList> existingVoterLists = getVoterListDao().forPollEquals(poll).findAll();
@@ -140,7 +141,7 @@
VoterList result = saveVoterList(poll, voterList);
commit();
- return result;
+ //TODO Notify
}
@@ -149,7 +150,7 @@
checkNotNull(pollId);
checkNotNull(voterListId);
- Poll poll = getPollService().getPoll(pollId);
+ Poll poll = getPollService().getPoll0(pollId);
VoterList voterList = getVoterList(poll, voterListId);
getVoterListDao().delete(voterList);
@@ -165,7 +166,7 @@
VoterList voterList = getVoterList(pollId, voterListId);
Set<VoterListMember> result = voterList.getMember();
- return result;
+ return copyAsSet(result);
}
@@ -179,7 +180,7 @@
VoterListMember result = getVoterListMember(voterList, memberId);
- return result;
+ return copy(result);
}
@@ -200,12 +201,12 @@
VoterListMember result = saveVoterListMember(voterList, member);
commit();
- return result;
+ return copy(result);
}
- public VoterListMember editVoterListMember(String pollId, String voterListId, VoterListMember member) throws InvalidFormException {
+ public void editVoterListMember(String pollId, String voterListId, VoterListMember member) throws InvalidFormException {
checkNotNull(pollId);
checkNotNull(voterListId);
@@ -222,8 +223,6 @@
VoterListMember result = saveVoterListMember(voterList, member);
commit();
- return result;
-
}
public void deleteVoterListMember(String pollId, String voterListId, String memberId) {
1
0
r3932 - in trunk/pollen-ui-angular/src/main/webapp: . js js/controllers partials
by garandel@users.chorem.org 12 May '14
by garandel@users.chorem.org 12 May '14
12 May '14
Author: garandel
Date: 2014-05-12 18:50:51 +0200 (Mon, 12 May 2014)
New Revision: 3932
Url: http://forge.chorem.org/projects/pollen/repository/revisions/3932
Log:
test PUT by POST (edit poll)
Modified:
trunk/pollen-ui-angular/src/main/webapp/index.html
trunk/pollen-ui-angular/src/main/webapp/js/app.js
trunk/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js
trunk/pollen-ui-angular/src/main/webapp/js/services.js
trunk/pollen-ui-angular/src/main/webapp/partials/big-poll.html
trunk/pollen-ui-angular/src/main/webapp/partials/inline-poll.html
trunk/pollen-ui-angular/src/main/webapp/partials/poll.html
Modified: trunk/pollen-ui-angular/src/main/webapp/index.html
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/index.html 2014-05-12 15:06:31 UTC (rev 3931)
+++ trunk/pollen-ui-angular/src/main/webapp/index.html 2014-05-12 16:50:51 UTC (rev 3932)
@@ -29,6 +29,7 @@
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular-route.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular-resource.min…"></script>
+ <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular-cookies.min.…"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.11.0/ui-bootst…"></script>
<script src="js/libs/ckeditor/ckeditor.js"></script>
Modified: trunk/pollen-ui-angular/src/main/webapp/js/app.js
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/js/app.js 2014-05-12 15:06:31 UTC (rev 3931)
+++ trunk/pollen-ui-angular/src/main/webapp/js/app.js 2014-05-12 16:50:51 UTC (rev 3932)
@@ -18,9 +18,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* #L%
*/
-angular.module('pollen', ['pollenServices', 'ngRoute', 'pollControllers', 'ui.bootstrap'], function($httpProvider) {
+angular.module('pollen', ['pollenServices', 'ngRoute', 'pollControllers', 'ui.bootstrap', 'ngCookies'], function($httpProvider) {
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
- $httpProvider.defaults.headers.put['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
+ //$httpProvider.defaults.headers.put['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
})
Modified: trunk/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js 2014-05-12 15:06:31 UTC (rev 3931)
+++ trunk/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js 2014-05-12 16:50:51 UTC (rev 3932)
@@ -23,9 +23,11 @@
}])
-.controller('PollCtrl', ['$scope', '$sce', '$timeout', function ($scope, $sce, $timeout) {
+.controller('PollCtrl', ['$scope', '$sce', '$timeout', '$cookieStore', function ($scope, $sce, $timeout, $cookieStore) {
if (!angular.isDefined($scope.globalVariables)) {
- $scope.globalVariables = {saved : false};
+ $scope.globalVariables = {saved : $cookieStore.get('saved')};
+ $cookieStore.put('saved', '');
+
$scope.$watch('globalVariables.saved', function() {
$timeout(function () {
$scope.globalVariables.saved = false;
@@ -217,7 +219,7 @@
}])
-.controller('PollCreateCtrl', ['$scope', '$controller', '$location', 'Poll', function ($scope, $controller, $location, Poll) {
+.controller('PollCreateCtrl', ['$scope', '$controller', '$location', 'Poll', '$cookieStore', function ($scope, $controller, $location, Poll, $cookieStore) {
$controller('PollAdminCtrl', {$scope:$scope});
$scope.globalVariables.create = true;
@@ -238,9 +240,7 @@
var poll = angular.copy($scope.data.poll);
poll.choice = angular.copy($scope.data.choices);
Poll.add(poll, function (data) {
- console.log(data);
- $scope.globalVariables.saved = true;
- $scope.globalVariables.restError = false;
+ $cookieStore.put('saved', true);
$location.url('/poll/edit/'+data.topiaId+'?token='+data.permission);
}, function (error) {
$scope.globalVariables.restError = true;
@@ -302,6 +302,7 @@
var initPoll = function () {
Poll.get({pollId:$routeParams.pollId}).$promise.then(function (poll) {
$scope.data.poll = poll;
+ $scope.$watchCollection('data.poll', $scope.autoSave);
});
PollChoice.query({pollId:$routeParams.pollId}).$promise.then(function (choices) {
$scope.data.choices = choices;
@@ -314,8 +315,7 @@
$scope.save = function () {
$timeout.cancel(timeout);
if ($scope.formValid) {
- var poll = angular.copy($scope.data.poll);
- Poll.update({permission:$routeParams.token}, poll, function (data) {
+ $scope.data.poll.$update({permission:$routeParams.token}, function (data) {
$scope.globalVariables.saved = true;
}, function (error) {
console.log(error);
Modified: trunk/pollen-ui-angular/src/main/webapp/js/services.js
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/js/services.js 2014-05-12 15:06:31 UTC (rev 3931)
+++ trunk/pollen-ui-angular/src/main/webapp/js/services.js 2014-05-12 16:50:51 UTC (rev 3932)
@@ -26,25 +26,23 @@
})
.factory('Poll', ['$resource', 'BaseUrl', function ($resource, BaseUrl) {
- var transformParam = function (data) {
- var poll = angular.copy(data);
- delete poll.choice;
- var choices = angular.copy(data.choice);
- return 'poll='+encodeURIComponent(JSON.stringify(poll))+'&choices='+encodeURIComponent(JSON.stringify(choices));
- };
return $resource(BaseUrl+'/polls/:pollId/:cmd', {pollId:'@topiaId'}, {
'add' : {
method : 'POST',
transformRequest : function (data, headersGetter) {
- return transformParam(data);
+ var poll = angular.copy(data);
+ delete poll.choice;
+ var choices = angular.copy(data.choice);
+ return 'poll='+encodeURIComponent(JSON.stringify(poll))+'&choices='+encodeURIComponent(JSON.stringify(choices));
}
},
'update' : {
method : 'POST',
transformRequest : function (data, headersGetter) {
- return transformParam(data);
+ return 'poll='+encodeURIComponent(JSON.stringify(data));
}
+ ,headers : { 'X-HTTP-Method':'PUT'}
}
});
}])
Modified: trunk/pollen-ui-angular/src/main/webapp/partials/big-poll.html
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/partials/big-poll.html 2014-05-12 15:06:31 UTC (rev 3931)
+++ trunk/pollen-ui-angular/src/main/webapp/partials/big-poll.html 2014-05-12 16:50:51 UTC (rev 3932)
@@ -31,7 +31,7 @@
{{choice.name}}
</h3>
<h3 ng-show="showEdit">
- <input type="text" ng-model="choice.name" focus-me="showEdit" ng-exit="showEdit = false" required/>
+ <input type="text" ng-model="choice.name" focus-me="showEdit" ng-exit="showEdit = false" auto-save="saveChoice(choice)" required/>
</h3>
</div>
@@ -46,12 +46,13 @@
is-open="isOpen"
focus-me="showEdit"
ng-exit="showEdit = false"
- ng-click="isOpen = true" required/>
+ ng-click="isOpen = true"
+ auto-save="saveChoice(choice)" required/>
</h3>
</div>
</div>
<p collapse="!globalVariables.editMode && !showChoiceDesc" edit-me="showEditChoiceDesc" ng-hide="showEditChoiceDesc">{{choice.description}}</p>
- <p ng-show="globalVariables.editMode && showEditChoiceDesc"><textarea ng-model="choice.description" focus-me="showEditChoiceDesc" ng-exit="showEditChoiceDesc = false" cols="80" rows="8"></textarea></p>
+ <p ng-show="globalVariables.editMode && showEditChoiceDesc"><textarea ng-model="choice.description" focus-me="showEditChoiceDesc" ng-blur="showEditChoiceDesc = false" auto-save="saveChoice(choice)" cols="80" rows="8"></textarea></p>
</div>
<div class="col-sm-2 pollChoiceInput">
<input type="checkbox" ng-model="vote.choice[$index].value"/>
Modified: trunk/pollen-ui-angular/src/main/webapp/partials/inline-poll.html
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/partials/inline-poll.html 2014-05-12 15:06:31 UTC (rev 3931)
+++ trunk/pollen-ui-angular/src/main/webapp/partials/inline-poll.html 2014-05-12 16:50:51 UTC (rev 3932)
@@ -36,7 +36,7 @@
<div ng-if="choice.choiceType == 'DATE'" edit-me="showEdit" >
<div ng-hide="!globalVariables.voted && showEdit || isOpen" class="fixe-input" title="{{choice.description}}">{{choice.date | date:'dd/MM/yyyy'}} <input type="button" class="btn btn-default" ng-if="!globalVariables.voted && globalVariables.editMode" ng-show="showEditHover" ng-click="editChoice(choice)" value="..."/></div>
<div ng-show="!globalVariables.voted && showEdit || isOpen" >
- <input type="text" class="form-control" ng-model="choice.date" focus-me="showEdit" datepicker-popup="dd/MM/yyyy" is-open="isOpen" ng-exit="showEdit = false" ng-click="isOpen = true" auto-save="saveChoice()" required/>
+ <input type="text" class="form-control" ng-model="choice.date" focus-me="showEdit" datepicker-popup="dd/MM/yyyy" is-open="isOpen" ng-exit="showEdit = false" ng-click="isOpen = true" auto-save="saveChoice(choice)" required/>
<input type="button" class="btn btn-default" data-toggle="modal" data-target="#popupAddChoice" ng-click="editChoice(choice)" value="..."/>
</div>
</div>
Modified: trunk/pollen-ui-angular/src/main/webapp/partials/poll.html
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/partials/poll.html 2014-05-12 15:06:31 UTC (rev 3931)
+++ trunk/pollen-ui-angular/src/main/webapp/partials/poll.html 2014-05-12 16:50:51 UTC (rev 3932)
@@ -39,7 +39,7 @@
<div ng-bind-html="toHTML(data.poll.description || 'Description (Facultatif). Ce cadre disparait si aucune description n\'est mise')"></div>
</div>
<div ng-show="showEditDesc" class="pollDesc " ng-exit="showEditDesc = false;">
- <textarea id="descEditor" data-ck-editor ng-model="data.poll.description" auto-save="save()"></textarea>
+ <textarea id="descEditor" data-ck-editor ng-model="data.poll.description"></textarea>
<input type="button" value="Return" class="btn btn-primary" ng-click="showEditDesc = false;"/>
</div>
1
0
r3931 - in trunk: pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1 pollen-rest-api/src/main/resources pollen-ui-angular/src/main/webapp/js pollen-ui-angular/src/main/webapp/js/controllers pollen-ui-angular/src/main/webapp/partials
by garandel@users.chorem.org 12 May '14
by garandel@users.chorem.org 12 May '14
12 May '14
Author: garandel
Date: 2014-05-12 17:06:31 +0200 (Mon, 12 May 2014)
New Revision: 3931
Url: http://forge.chorem.org/projects/pollen/repository/revisions/3931
Log:
autosave choice with ChoiceApi
Modified:
trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/ChoiceApi.java
trunk/pollen-rest-api/src/main/resources/mapping
trunk/pollen-ui-angular/src/main/webapp/js/app.js
trunk/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js
trunk/pollen-ui-angular/src/main/webapp/js/services.js
trunk/pollen-ui-angular/src/main/webapp/partials/big-poll.html
trunk/pollen-ui-angular/src/main/webapp/partials/inline-poll.html
trunk/pollen-ui-angular/src/main/webapp/partials/poll-list.html
trunk/pollen-ui-angular/src/main/webapp/partials/poll.html
Modified: trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/ChoiceApi.java
===================================================================
--- trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/ChoiceApi.java 2014-05-12 12:15:44 UTC (rev 3930)
+++ trunk/pollen-rest-api/src/main/java/org/chorem/pollen/rest/api/v1/ChoiceApi.java 2014-05-12 15:06:31 UTC (rev 3931)
@@ -37,7 +37,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 2.0
*/
-public class ChoiceApi extends WebMotionController {
+public class ChoiceApi extends WebMotionController {
public List<Choice> getChoices(ChoiceService choiceService, String pollId) {
Modified: trunk/pollen-rest-api/src/main/resources/mapping
===================================================================
--- trunk/pollen-rest-api/src/main/resources/mapping 2014-05-12 12:15:44 UTC (rev 3930)
+++ trunk/pollen-rest-api/src/main/resources/mapping 2014-05-12 15:06:31 UTC (rev 3931)
@@ -36,7 +36,10 @@
GET /v1/polls/{pollId}/choices ChoiceApi.getChoices
POST /v1/polls/{pollId}/choices ChoiceApi.addChoice
GET /v1/polls/{pollId}/choices/{choiceId} ChoiceApi.getChoice
-PUT /v1/polls/{pollId}/choices/{choiceId} ChoiceApi.editChoice
+
+#fix me
+POST,PUT /v1/polls/{pollId}/choices/{choiceId} ChoiceApi.editChoice
+
DELETE /v1/polls/{pollId}/choices/{choiceId} ChoiceApi.deleteChoice
# CommentApi
@@ -72,10 +75,16 @@
POST /v1/polls PollApi.createPoll
GET /v1/polls/create PollApi.createPoll
GET /v1/polls/edit PollApi.editPoll
-PUT /v1/polls/{pollId} PollApi.editPoll
+
+#fix me
+POST,PUT /v1/polls/{pollId} PollApi.editPoll
+POST /v1/polls/{pollId}/edit PollApi.editPoll
+
GET /v1/polls/{pollId} PollApi.getPoll
DELETE /v1/polls/{pollId} PollApi.deletePoll
-POST /v1/polls/{pollId} PollApi.clonePoll
+
+# POST /v1/polls/{pollId} PollApi.clonePoll
+
GET /v1/polls/{pollId}/export PollApi.exportPoll
PUT /v1/polls/{pollId}/close PollApi.closePoll
@@ -110,7 +119,7 @@
# VoteApi
GET /v1/polls/{pollId}/votes VoteApi.getVotes
-PUT /v1/polls/{pollId}/votes VoteApi.addVote
+POST /v1/polls/{pollId}/votes VoteApi.addVote
GET /v1/polls/{pollId}/votes/{voteId} VoteApi.getVote
PUT /v1/polls/{pollId}/votes/{voteId} VoteApi.editVote
DELETE /v1/polls/{pollId}/votes/{voteId} VoteApi.deleteVote
Modified: trunk/pollen-ui-angular/src/main/webapp/js/app.js
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/js/app.js 2014-05-12 12:15:44 UTC (rev 3930)
+++ trunk/pollen-ui-angular/src/main/webapp/js/app.js 2014-05-12 15:06:31 UTC (rev 3931)
@@ -88,7 +88,7 @@
.directive('ngExit', function ($timeout) {
return function (scope, element, attrs) {
element.bind("keydown keypress", function (event) {
- if(event.which === 27) {
+ if(event.which === 27 || event.which === 13) {
scope.$apply(function (){
scope.$eval(attrs.ngExit);
});
@@ -116,7 +116,9 @@
});
element.bind('blur', function () {
if (element.val() != oldValue && scope.globalVariables.edit) {
- scope.save();
+ scope.$apply(function () {
+ scope.$eval(attrs.autoSave);
+ });
}
});
}
Modified: trunk/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js 2014-05-12 12:15:44 UTC (rev 3930)
+++ trunk/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js 2014-05-12 15:06:31 UTC (rev 3931)
@@ -24,13 +24,14 @@
}])
.controller('PollCtrl', ['$scope', '$sce', '$timeout', function ($scope, $sce, $timeout) {
- $scope.globalVariables = {saved:false};
- $scope.$watch('globalVariables.saved', function() {
- $timeout(function () {
- $scope.globalVariables.saved = false;
- }, 5000);
- });
-
+ if (!angular.isDefined($scope.globalVariables)) {
+ $scope.globalVariables = {saved : false};
+ $scope.$watch('globalVariables.saved', function() {
+ $timeout(function () {
+ $scope.globalVariables.saved = false;
+ }, 5000);
+ });
+ }
$scope.data = {};
$scope.data.poll = {};
@@ -237,9 +238,10 @@
var poll = angular.copy($scope.data.poll);
poll.choice = angular.copy($scope.data.choices);
Poll.add(poll, function (data) {
+ console.log(data);
$scope.globalVariables.saved = true;
$scope.globalVariables.restError = false;
- $location.path('/poll/edit/'+data.topiaId);
+ $location.url('/poll/edit/'+data.topiaId+'?token='+data.permission);
}, function (error) {
$scope.globalVariables.restError = true;
$scope.restError = error;
@@ -273,14 +275,15 @@
}
$scope.callBackAddChoice = function (choice) {
- PollChoice.add({pollId:$routeParams.pollId}, choice, function (data) {
+ PollChoice.add({pollId:$routeParams.pollId, permission:$routeParams.token}, choice, function (data) {
+ choice.topiaId = data.topiaId;
console.log(data);
$scope.globalVariables.saved = true;
});
}
$scope.callBackEditChoice = function (choice) {
- choice.$update({permission:choice.creator.permission.token, pollId:$routeParams.pollId});
+ PollChoice.update({permission:$routeParams.token, pollId:$routeParams.pollId, choiceId:choice.topiaId}, choice);
}
$scope.deleteChoice = function (choice) {
@@ -288,7 +291,7 @@
if (index > -1) {
$scope.data.choices.splice(index,1);
}
- choice.$delete({pollId:$routeParams.pollId, permission:choice.creator.permission.token}, function () {
+ PollChoice.delete({pollId:$routeParams.pollId, permission:$routeParams.token, choiceId: choice.topiaId}, function () {
$scope.globalVariables.saved = true;
});
$timeout(function () {
@@ -299,11 +302,9 @@
var initPoll = function () {
Poll.get({pollId:$routeParams.pollId}).$promise.then(function (poll) {
$scope.data.poll = poll;
- $scope.$watchCollection('data.poll', $scope.autoSave);
});
PollChoice.query({pollId:$routeParams.pollId}).$promise.then(function (choices) {
$scope.data.choices = choices;
- $scope.$watch('data.choices', $scope.autoSave, true);
$scope.data.vote = {};
$scope.data.vote.choices = $scope.data.choices;
});
@@ -314,8 +315,7 @@
$timeout.cancel(timeout);
if ($scope.formValid) {
var poll = angular.copy($scope.data.poll);
- poll.choice = angular.copy($scope.data.choices);
- Poll.update({permission:$scope.data.poll.creator.permission.token, cmd:'edit'}, poll, function (data) {
+ Poll.update({permission:$routeParams.token}, poll, function (data) {
$scope.globalVariables.saved = true;
}, function (error) {
console.log(error);
@@ -327,8 +327,19 @@
}
+ $scope.saveChoice = function (choice) {
+ if (angular.isDefined(choice)) {
+ if (angular.isDefined(choice.topiaId) && choice.topiaId != null) {
+ $scope.callBackEditChoice(choice);
+ }
+ else {
+ $scope.callBackAddChoice(choice);
+ }
+ }
+ }
+
$scope.delete = function () {
- $scope.data.poll.$delete({permission:$scope.data.poll.creator.permission.token}, function() {
+ $scope.data.poll.$delete({permission:$routeParams.token}, function() {
$location.path('/');
});
}
Modified: trunk/pollen-ui-angular/src/main/webapp/js/services.js
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/js/services.js 2014-05-12 12:15:44 UTC (rev 3930)
+++ trunk/pollen-ui-angular/src/main/webapp/js/services.js 2014-05-12 15:06:31 UTC (rev 3931)
@@ -51,7 +51,7 @@
.factory('PollChoice', ['$resource', 'BaseUrl', function ($resource, BaseUrl) {
var transformParam = function (data) {
- return 'choices='+encodeURIComponent(JSON.stringify(data));
+ return 'choice='+encodeURIComponent(JSON.stringify(data));
};
return $resource(BaseUrl+'/polls/:pollId/choices/:choiceId', {choiceId : '@topiaId'},
@@ -64,7 +64,7 @@
},
'update' :
{
- method:'PUT',
+ method:'POST',
transformRequest : function (data, headersGetter) {
return transformParam(data);
}
Modified: trunk/pollen-ui-angular/src/main/webapp/partials/big-poll.html
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/partials/big-poll.html 2014-05-12 12:15:44 UTC (rev 3930)
+++ trunk/pollen-ui-angular/src/main/webapp/partials/big-poll.html 2014-05-12 15:06:31 UTC (rev 3931)
@@ -21,7 +21,7 @@
~
-->
-<div ng-repeat="choice in poll.choice" class="row pollBigChoice">
+<div ng-repeat="choice in data.choices" class="row pollBigChoice">
<div class="col-sm-10">
<div ng-click="showChoiceDesc = !showChoiceDesc" >
Modified: trunk/pollen-ui-angular/src/main/webapp/partials/inline-poll.html
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/partials/inline-poll.html 2014-05-12 12:15:44 UTC (rev 3930)
+++ trunk/pollen-ui-angular/src/main/webapp/partials/inline-poll.html 2014-05-12 15:06:31 UTC (rev 3931)
@@ -29,14 +29,14 @@
<div ng-if="choice.choiceType == 'TEXT'" edit-me="showEdit" >
<div ng-hide="showEdit && !globalVariables.voted" class="fixe-input" title="{{choice.description}}">{{choice.name}} <input type="button" class="btn btn-default" ng-if="!globalVariables.voted && globalVariables.editMode" ng-show="showEditHover" ng-click="editChoice(choice)" value="..."/></div>
<div ng-show="showEdit && !globalVariables.voted">
- <input type="text" class="form-control" ng-model="choice.name" focus-me="showEdit" ng-exit="showEdit = false" auto-save required/>
+ <input type="text" class="form-control" ng-model="choice.name" focus-me="showEdit" ng-exit="showEdit = false" auto-save="saveChoice(choice)" required/>
<input type="button" class="btn btn-default" data-toggle="modal" data-target="#popupAddChoice" ng-click="editChoice(choice)" value="..."/>
</div>
</div>
<div ng-if="choice.choiceType == 'DATE'" edit-me="showEdit" >
<div ng-hide="!globalVariables.voted && showEdit || isOpen" class="fixe-input" title="{{choice.description}}">{{choice.date | date:'dd/MM/yyyy'}} <input type="button" class="btn btn-default" ng-if="!globalVariables.voted && globalVariables.editMode" ng-show="showEditHover" ng-click="editChoice(choice)" value="..."/></div>
<div ng-show="!globalVariables.voted && showEdit || isOpen" >
- <input type="text" class="form-control" ng-model="choice.date" focus-me="showEdit" datepicker-popup="dd/MM/yyyy" is-open="isOpen" ng-exit="showEdit = false" ng-click="isOpen = true" auto-save required/>
+ <input type="text" class="form-control" ng-model="choice.date" focus-me="showEdit" datepicker-popup="dd/MM/yyyy" is-open="isOpen" ng-exit="showEdit = false" ng-click="isOpen = true" auto-save="saveChoice()" required/>
<input type="button" class="btn btn-default" data-toggle="modal" data-target="#popupAddChoice" ng-click="editChoice(choice)" value="..."/>
</div>
</div>
Modified: trunk/pollen-ui-angular/src/main/webapp/partials/poll-list.html
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/partials/poll-list.html 2014-05-12 12:15:44 UTC (rev 3930)
+++ trunk/pollen-ui-angular/src/main/webapp/partials/poll-list.html 2014-05-12 15:06:31 UTC (rev 3931)
@@ -1,6 +1,6 @@
<div ng-repeat="poll in data.polls">
- <h2><a href="#/poll/vote/{{poll.topiaId}}">{{poll.title}}</a> <a href="#/poll/edit/{{poll.topiaId}}"><i class="glyphicon glyphicon-pencil"></i></a></h2>
+ <h2><a href="#/poll/vote/{{poll.topiaId}}">{{poll.title}}</a> <a href="#/poll/edit/{{poll.topiaId}}?token={{poll.creator.permission.token}}"><i class="glyphicon glyphicon-pencil"></i></a></h2>
<p ng-bind-html="toHTML(poll.description)"></p>
<hr/>
</div>
\ No newline at end of file
Modified: trunk/pollen-ui-angular/src/main/webapp/partials/poll.html
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/partials/poll.html 2014-05-12 12:15:44 UTC (rev 3930)
+++ trunk/pollen-ui-angular/src/main/webapp/partials/poll.html 2014-05-12 15:06:31 UTC (rev 3931)
@@ -32,14 +32,14 @@
<div class="pollTitle" edit-me="showEditTitle">
<h1 ng-hide="showEditTitle"> {{data.poll.title || 'Click Me for Editing'}} </h1>
- <h1 ng-show="showEditTitle"><input type="text" class="form-control" focus-me="showEditTitle" ng-model="data.poll.title" ng-exit="showEditTitle = false" auto-save required/></h1>
+ <h1 ng-show="showEditTitle"><input type="text" class="form-control" focus-me="showEditTitle" ng-model="data.poll.title" ng-exit="showEditTitle = false" auto-save="save()" required/></h1>
</div>
<div ng-hide="showEditDesc || !globalVariables.editMode && !poll.description " class="pollDesc" edit-me="showEditDesc">
<div ng-bind-html="toHTML(data.poll.description || 'Description (Facultatif). Ce cadre disparait si aucune description n\'est mise')"></div>
</div>
<div ng-show="showEditDesc" class="pollDesc " ng-exit="showEditDesc = false;">
- <textarea id="descEditor" data-ck-editor ng-model="data.poll.description" auto-save></textarea>
+ <textarea id="descEditor" data-ck-editor ng-model="data.poll.description" auto-save="save()"></textarea>
<input type="button" value="Return" class="btn btn-primary" ng-click="showEditDesc = false;"/>
</div>
1
0
r3930 - in trunk/pollen-ui-angular/src/main/webapp/js: . controllers
by garandel@users.chorem.org 12 May '14
by garandel@users.chorem.org 12 May '14
12 May '14
Author: garandel
Date: 2014-05-12 14:15:44 +0200 (Mon, 12 May 2014)
New Revision: 3930
Url: http://forge.chorem.org/projects/pollen/repository/revisions/3930
Log:
separe choices and poll
Modified:
trunk/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js
trunk/pollen-ui-angular/src/main/webapp/js/services.js
Modified: trunk/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js 2014-05-12 12:00:23 UTC (rev 3929)
+++ trunk/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js 2014-05-12 12:15:44 UTC (rev 3930)
@@ -315,7 +315,7 @@
if ($scope.formValid) {
var poll = angular.copy($scope.data.poll);
poll.choice = angular.copy($scope.data.choices);
- Poll.update({permission:$scope.data.poll.creator.permission.token}, poll, function (data) {
+ Poll.update({permission:$scope.data.poll.creator.permission.token, cmd:'edit'}, poll, function (data) {
$scope.globalVariables.saved = true;
}, function (error) {
console.log(error);
Modified: trunk/pollen-ui-angular/src/main/webapp/js/services.js
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/js/services.js 2014-05-12 12:00:23 UTC (rev 3929)
+++ trunk/pollen-ui-angular/src/main/webapp/js/services.js 2014-05-12 12:15:44 UTC (rev 3930)
@@ -27,18 +27,13 @@
.factory('Poll', ['$resource', 'BaseUrl', function ($resource, BaseUrl) {
var transformParam = function (data) {
- var obj = angular.copy(data);
- delete obj.creator;
- delete obj.$promise;
- delete obj.$resolved;
- delete obj.choice[0].creator;
-
- console.log(obj);
-
- return 'poll='+encodeURIComponent(JSON.stringify(obj));
+ var poll = angular.copy(data);
+ delete poll.choice;
+ var choices = angular.copy(data.choice);
+ return 'poll='+encodeURIComponent(JSON.stringify(poll))+'&choices='+encodeURIComponent(JSON.stringify(choices));
};
- return $resource(BaseUrl+'/polls/:pollId:cmd', {pollId:'@topiaId'}, {
+ return $resource(BaseUrl+'/polls/:pollId/:cmd', {pollId:'@topiaId'}, {
'add' : {
method : 'POST',
transformRequest : function (data, headersGetter) {
@@ -46,7 +41,7 @@
}
},
'update' : {
- method : 'PUT',
+ method : 'POST',
transformRequest : function (data, headersGetter) {
return transformParam(data);
}
1
0
r3929 - trunk/pollen-services/src/main/java/org/chorem/pollen/services/service
by tchemit@users.chorem.org 12 May '14
by tchemit@users.chorem.org 12 May '14
12 May '14
Author: tchemit
Date: 2014-05-12 14:00:23 +0200 (Mon, 12 May 2014)
New Revision: 3929
Url: http://forge.chorem.org/projects/pollen/repository/revisions/3929
Log:
use a copy
Modified:
trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java
trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java
Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java
===================================================================
--- trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java 2014-05-12 11:58:42 UTC (rev 3928)
+++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/ChoiceService.java 2014-05-12 12:00:23 UTC (rev 3929)
@@ -23,7 +23,6 @@
* #L%
*/
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.Sets;
import org.apache.commons.collections4.CollectionUtils;
import org.chorem.pollen.persistence.entity.Choice;
@@ -51,7 +50,7 @@
Poll poll = getPollService().getPoll(pollId);
List<Choice> choices = getChoiceDao().findAll(poll);
- return ImmutableList.copyOf(choices);
+ return copyAsList(choices);
}
@@ -64,7 +63,7 @@
Poll poll = getPollService().getPoll(pollId);
Choice result = getChoice(poll, choiceId);
- return result;
+ return copy(result);
}
@@ -114,7 +113,7 @@
getNotificationService().onChoiceAdded(poll, result);
- return result;
+ return copy(result);
}
@@ -135,7 +134,7 @@
getNotificationService().onChoiceEdited(poll, result);
- return result;
+ return copy(result);
}
Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java
===================================================================
--- trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java 2014-05-12 11:58:42 UTC (rev 3928)
+++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/service/CommentService.java 2014-05-12 12:00:23 UTC (rev 3929)
@@ -46,7 +46,7 @@
Poll poll = getPollService().getPoll(pollId);
List<Comment> comments = getCommentDao().forPollEquals(poll).findAll();
- return ImmutableList.copyOf(comments);
+ return copyAsList(comments);
}
@@ -59,7 +59,7 @@
Poll poll = getPollService().getPoll(pollId);
Comment result = getComment(poll, commentId);
- return result;
+ return copy(result);
}
@@ -79,7 +79,7 @@
getNotificationService().onCommentAdded(poll, result);
- return result;
+ return copy(result);
}
@@ -99,7 +99,7 @@
getNotificationService().onCommentEdited(poll, result);
- return result;
+ return copy(result);
}
1
0
r3928 - trunk/pollen-services/src/main/java/org/chorem/pollen/services
by tchemit@users.chorem.org 12 May '14
by tchemit@users.chorem.org 12 May '14
12 May '14
Author: tchemit
Date: 2014-05-12 13:58:42 +0200 (Mon, 12 May 2014)
New Revision: 3928
Url: http://forge.chorem.org/projects/pollen/repository/revisions/3928
Log:
fix format
Modified:
trunk/pollen-services/src/main/java/org/chorem/pollen/services/TopiaEntityCopyVisitor.java
Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/services/TopiaEntityCopyVisitor.java
===================================================================
--- trunk/pollen-services/src/main/java/org/chorem/pollen/services/TopiaEntityCopyVisitor.java 2014-05-12 09:54:13 UTC (rev 3927)
+++ trunk/pollen-services/src/main/java/org/chorem/pollen/services/TopiaEntityCopyVisitor.java 2014-05-12 11:58:42 UTC (rev 3928)
@@ -171,7 +171,7 @@
if (source.isDeleted()){
current.notifyDeleted();
-
+
}
} catch (InstantiationException | IllegalAccessException e) {
@@ -182,7 +182,6 @@
}
-
}
@Override
1
0
r3927 - in trunk/pollen-ui-angular/src/main/webapp: . css js js/controllers partials
by garandel@users.chorem.org 12 May '14
by garandel@users.chorem.org 12 May '14
12 May '14
Author: garandel
Date: 2014-05-12 11:54:13 +0200 (Mon, 12 May 2014)
New Revision: 3927
Url: http://forge.chorem.org/projects/pollen/repository/revisions/3927
Log:
edit poll
Modified:
trunk/pollen-ui-angular/src/main/webapp/css/style.css
trunk/pollen-ui-angular/src/main/webapp/index.html
trunk/pollen-ui-angular/src/main/webapp/js/app.js
trunk/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js
trunk/pollen-ui-angular/src/main/webapp/js/services.js
trunk/pollen-ui-angular/src/main/webapp/partials/inline-poll.html
trunk/pollen-ui-angular/src/main/webapp/partials/poll.html
Modified: trunk/pollen-ui-angular/src/main/webapp/css/style.css
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/css/style.css 2014-05-09 09:13:15 UTC (rev 3926)
+++ trunk/pollen-ui-angular/src/main/webapp/css/style.css 2014-05-12 09:54:13 UTC (rev 3927)
@@ -23,6 +23,8 @@
.dropdown-menu.form {
padding: 0;
padding-top: 15px;
+ left:auto;
+ right:0px;
}
.dropdown-menu.form > form {
Modified: trunk/pollen-ui-angular/src/main/webapp/index.html
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/index.html 2014-05-09 09:13:15 UTC (rev 3926)
+++ trunk/pollen-ui-angular/src/main/webapp/index.html 2014-05-12 09:54:13 UTC (rev 3927)
@@ -48,6 +48,65 @@
<li><a href="#/poll/create">Creer</a></li>
<li><a href="#/poll/list">Liste</a></li>
</ul>
+ <ul class="nav navbar-nav pull-right">
+ <li ng-show="!currentUser.login">
+ <a href="#/user/register/">register</a>
+ </li>
+
+ <li class="divider-vertical" ng-show="!currentUser.login"></li>
+
+ <li class="dropdown" ng-show="!currentUser.login">
+ <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
+ login<strong class="caret"></strong>
+ </a>
+
+ <div class="dropdown-menu form" role="menu">
+ <form id='loginForm'>
+
+ <div class="control-group">
+ <label class="control-label">Login</label>
+ <input type="text" name='login' />
+ <span class="help-block hide"></span>
+ </div>
+
+ <div class="control-group">
+ <label class="control-label" >Password</label>
+ <input type="password" name='password' />
+ <span class="help-block hide"></span>
+ </div>
+
+ <div class="control-group">
+ <label class="control-label checkbox" >
+ <input type="checkbox" name='rememberMe'> Remember Me
+ </label>
+ </div>
+
+ <div class="form-actions">
+ <button type="submit" class="btn btn-primary">Connexion</button>
+ </div>
+
+ </form>
+ </div>
+ </li>
+
+ <li class="dropdown" ng-show="currentUser.login">
+ <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">
+ {{ currentUser.name }} <strong class="caret"></strong>
+ </a>
+
+ <ul class="dropdown-menu" role="menu">
+ <li role="presentation">
+ <a href="#/user/edit/{{currentUser.id}}">Profile</a>
+ </li>
+
+ <li class="divider" role="presentation"></li>
+ <li role="presentation">
+ <a id='menuItemLogout'>logout</a>
+ </li>
+
+ </ul>
+ </li>
+ </ul>
</div>
</div>
</nav>
Modified: trunk/pollen-ui-angular/src/main/webapp/js/app.js
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/js/app.js 2014-05-09 09:13:15 UTC (rev 3926)
+++ trunk/pollen-ui-angular/src/main/webapp/js/app.js 2014-05-12 09:54:13 UTC (rev 3927)
@@ -104,3 +104,21 @@
};
})
+.directive('autoSave', function ($timeout) {
+ return {
+ restrict : 'A',
+ link : function (scope, element, attrs) {
+ var oldValue = null;
+ element.bind('focus', function () {
+ scope.$apply(function () {
+ oldValue = element.val();
+ });
+ });
+ element.bind('blur', function () {
+ if (element.val() != oldValue && scope.globalVariables.edit) {
+ scope.save();
+ }
+ });
+ }
+ }
+})
Modified: trunk/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js 2014-05-09 09:13:15 UTC (rev 3926)
+++ trunk/pollen-ui-angular/src/main/webapp/js/controllers/pollCtrl.js 2014-05-12 09:54:13 UTC (rev 3927)
@@ -78,7 +78,6 @@
}
$scope.globalVariables.editMode = true;
- $scope.globalVariables.create = true;
$scope.globalVariables.voted = angular.isDefined($scope.data.votants);
$scope.globalVariables.lastType = 'TEXT';
$scope.globalVariables.lastDate = new Date();
@@ -91,21 +90,25 @@
$scope.addChoice = function () {
var index = $scope.data.choices.push(initChoice());
var choice = $scope.data.choices[index-1];
- popupChoice(choice, 'Add Choice');
+ popupChoice(choice, 'Add Choice', $scope.callBackAddChoice);
}
+ $scope.callBackAddChoice = function (choice) {}
+
$scope.editChoice = function (choice) {
- popupChoice(choice, 'Edit Choice');
+ popupChoice(choice, 'Edit Choice', $scope.callBackEditChoice);
}
- var deleteChoice = function (choice) {
+ $scope.callBackEditChoice = function (choice) {}
+
+ $scope.deleteChoice = function (choice) {
var index = $scope.data.choices.indexOf(choice);
if (index > -1) {
$scope.data.choices.splice(index,1);
}
}
- var popupChoice = function (choice, title) {
+ var popupChoice = function (choice, title, callBack) {
var modalInstance = $modal.open({
templateUrl : 'partials/poll-popupChoice.html',
controller : PollPopChoiceCtrl,
@@ -115,11 +118,12 @@
}
});
- modalInstance.result.then(function (choice) {
- deleteChoice(choice);
+ modalInstance.result.then(function (returnChoice) {
+ $scope.deleteChoice(returnChoice);
}, function () {
$scope.globalVariables.lastType = choice.choiceType;
$scope.globalVariables.lastDate = choice.date;
+ callBack(choice);
});
}
@@ -215,6 +219,8 @@
.controller('PollCreateCtrl', ['$scope', '$controller', '$location', 'Poll', function ($scope, $controller, $location, Poll) {
$controller('PollAdminCtrl', {$scope:$scope});
+ $scope.globalVariables.create = true;
+
var initPoll = function () {
Poll.get({cmd:'new'}, function (poll) {
$scope.data.poll = poll;
@@ -251,15 +257,53 @@
}])
-.controller('PollEditCtrl', ['$scope', '$controller', '$routeParams', '$location', 'Poll', 'PollChoice', function ($scope, $controller, $routeParams, $location, Poll, PollChoice) {
+.controller('PollEditCtrl', ['$scope', '$controller', '$routeParams', '$location', '$timeout', 'Poll', 'PollChoice', function ($scope, $controller, $routeParams, $location, $timeout, Poll, PollChoice) {
$controller('PollAdminCtrl', {$scope:$scope});
+ $scope.globalVariables.edit = true;
+
+ var timeout = null;
+ $scope.autoSave = function (newValue, oldValue) {
+ if (newValue != oldValue) {
+ if (timeout) {
+ $timeout.cancel(timeout);
+ }
+ timeout = $timeout($scope.save, 10000);
+ }
+ }
+
+ $scope.callBackAddChoice = function (choice) {
+ PollChoice.add({pollId:$routeParams.pollId}, choice, function (data) {
+ console.log(data);
+ $scope.globalVariables.saved = true;
+ });
+ }
+
+ $scope.callBackEditChoice = function (choice) {
+ choice.$update({permission:choice.creator.permission.token, pollId:$routeParams.pollId});
+ }
+
+ $scope.deleteChoice = function (choice) {
+ var index = $scope.data.choices.indexOf(choice);
+ if (index > -1) {
+ $scope.data.choices.splice(index,1);
+ }
+ choice.$delete({pollId:$routeParams.pollId, permission:choice.creator.permission.token}, function () {
+ $scope.globalVariables.saved = true;
+ });
+ $timeout(function () {
+ $timeout.cancel(timeout);
+ },500);
+ }
+
var initPoll = function () {
Poll.get({pollId:$routeParams.pollId}).$promise.then(function (poll) {
$scope.data.poll = poll;
+ $scope.$watchCollection('data.poll', $scope.autoSave);
});
PollChoice.query({pollId:$routeParams.pollId}).$promise.then(function (choices) {
$scope.data.choices = choices;
+ $scope.$watch('data.choices', $scope.autoSave, true);
$scope.data.vote = {};
$scope.data.vote.choices = $scope.data.choices;
});
@@ -267,12 +311,14 @@
initPoll();
$scope.save = function () {
+ $timeout.cancel(timeout);
if ($scope.formValid) {
-
var poll = angular.copy($scope.data.poll);
poll.choice = angular.copy($scope.data.choices);
Poll.update({permission:$scope.data.poll.creator.permission.token}, poll, function (data) {
$scope.globalVariables.saved = true;
+ }, function (error) {
+ console.log(error);
});
}
else {
@@ -288,7 +334,7 @@
}
}])
-.controller('PollVoteCtrl', ['$scope', '$filter', '$controller', '$routeParams', 'Poll', 'PollChoice', function ($scope, $filter, $controller, $routeParams, Poll, PollChoice) {
+.controller('PollVoteCtrl', ['$scope', '$filter', '$controller', '$routeParams', 'Poll', 'PollChoice', 'PollVote', function ($scope, $filter, $controller, $routeParams, Poll, PollChoice, PollVote) {
$controller('PollCtrl', {$scope:$scope});
var initPoll = function () {
@@ -323,17 +369,21 @@
}
}
+ PollVote.query({pollId:$routeParams.pollId}, function (data) {
+ console.log(data);
+ $scope.data.votants = data;
+ })
+
$scope.voter = function () {
if ($scope.data.vote.name != '') {
var data = {};
data.name = $scope.data.vote.name;
data.choices = angular.copy($scope.data.vote.choices);
- if (!angular.isDefined($scope.data.votants)) {
- $scope.data.votants = [];
- }
$scope.data.votants.push(data);
- // save vote
+ PollVote.add({pollId:$routeParams.pollId, permission:$scope.data.poll.creator.permission.token}, data, function (returnRequest) {
+ console.log(returnRequest);
+ });
$scope.globalVariables.saved = true;
$scope.globalVariables.errorForm = false;
Modified: trunk/pollen-ui-angular/src/main/webapp/js/services.js
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/js/services.js 2014-05-09 09:13:15 UTC (rev 3926)
+++ trunk/pollen-ui-angular/src/main/webapp/js/services.js 2014-05-12 09:54:13 UTC (rev 3927)
@@ -27,7 +27,15 @@
.factory('Poll', ['$resource', 'BaseUrl', function ($resource, BaseUrl) {
var transformParam = function (data) {
- return 'poll='+JSON.stringify(data);
+ var obj = angular.copy(data);
+ delete obj.creator;
+ delete obj.$promise;
+ delete obj.$resolved;
+ delete obj.choice[0].creator;
+
+ console.log(obj);
+
+ return 'poll='+encodeURIComponent(JSON.stringify(obj));
};
return $resource(BaseUrl+'/polls/:pollId:cmd', {pollId:'@topiaId'}, {
@@ -47,10 +55,8 @@
}])
.factory('PollChoice', ['$resource', 'BaseUrl', function ($resource, BaseUrl) {
-
var transformParam = function (data) {
- var obj = angular.copy(data);
- return 'choices='+JSON.stringify(obj);
+ return 'choices='+encodeURIComponent(JSON.stringify(data));
};
return $resource(BaseUrl+'/polls/:pollId/choices/:choiceId', {choiceId : '@topiaId'},
@@ -70,4 +76,32 @@
}
}
);
+}])
+
+.factory('PollVote', ['$resource', 'BaseUrl', function ($resource, BaseUrl) {
+ var transformParam = function (data) {
+ var obj = {};
+ obj.voter = {name : data.name}
+ obj.voteToChoice = angular.copy(data.choices);
+
+ return 'vote='+encodeURIComponent(JSON.stringify(obj));
+ };
+
+ return $resource(BaseUrl+'/polls/:pollId/votes/:voteId', {voteId : '@topiaId'},
+ {
+ 'add' : {
+ method:'POST',
+ transformRequest : function (data, headersGetter) {
+ return transformParam(data);
+ }
+ },
+ 'update' :
+ {
+ method:'PUT',
+ transformRequest : function (data, headersGetter) {
+ return transformParam(data);
+ }
+ }
+ }
+ );
}])
\ No newline at end of file
Modified: trunk/pollen-ui-angular/src/main/webapp/partials/inline-poll.html
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/partials/inline-poll.html 2014-05-09 09:13:15 UTC (rev 3926)
+++ trunk/pollen-ui-angular/src/main/webapp/partials/inline-poll.html 2014-05-12 09:54:13 UTC (rev 3927)
@@ -29,14 +29,14 @@
<div ng-if="choice.choiceType == 'TEXT'" edit-me="showEdit" >
<div ng-hide="showEdit && !globalVariables.voted" class="fixe-input" title="{{choice.description}}">{{choice.name}} <input type="button" class="btn btn-default" ng-if="!globalVariables.voted && globalVariables.editMode" ng-show="showEditHover" ng-click="editChoice(choice)" value="..."/></div>
<div ng-show="showEdit && !globalVariables.voted">
- <input type="text" class="form-control" ng-model="choice.name" focus-me="showEdit" ng-exit="showEdit = false" required/>
+ <input type="text" class="form-control" ng-model="choice.name" focus-me="showEdit" ng-exit="showEdit = false" auto-save required/>
<input type="button" class="btn btn-default" data-toggle="modal" data-target="#popupAddChoice" ng-click="editChoice(choice)" value="..."/>
</div>
</div>
<div ng-if="choice.choiceType == 'DATE'" edit-me="showEdit" >
<div ng-hide="!globalVariables.voted && showEdit || isOpen" class="fixe-input" title="{{choice.description}}">{{choice.date | date:'dd/MM/yyyy'}} <input type="button" class="btn btn-default" ng-if="!globalVariables.voted && globalVariables.editMode" ng-show="showEditHover" ng-click="editChoice(choice)" value="..."/></div>
<div ng-show="!globalVariables.voted && showEdit || isOpen" >
- <input type="text" class="form-control" ng-model="choice.date" focus-me="showEdit" datepicker-popup="dd/MM/yyyy" is-open="isOpen" ng-exit="showEdit = false" ng-click="isOpen = true" required/>
+ <input type="text" class="form-control" ng-model="choice.date" focus-me="showEdit" datepicker-popup="dd/MM/yyyy" is-open="isOpen" ng-exit="showEdit = false" ng-click="isOpen = true" auto-save required/>
<input type="button" class="btn btn-default" data-toggle="modal" data-target="#popupAddChoice" ng-click="editChoice(choice)" value="..."/>
</div>
</div>
Modified: trunk/pollen-ui-angular/src/main/webapp/partials/poll.html
===================================================================
--- trunk/pollen-ui-angular/src/main/webapp/partials/poll.html 2014-05-09 09:13:15 UTC (rev 3926)
+++ trunk/pollen-ui-angular/src/main/webapp/partials/poll.html 2014-05-12 09:54:13 UTC (rev 3927)
@@ -32,14 +32,14 @@
<div class="pollTitle" edit-me="showEditTitle">
<h1 ng-hide="showEditTitle"> {{data.poll.title || 'Click Me for Editing'}} </h1>
- <h1 ng-show="showEditTitle"><input type="text" class="form-control" focus-me="showEditTitle" ng-model="data.poll.title" ng-exit="showEditTitle = false" required/></h1>
+ <h1 ng-show="showEditTitle"><input type="text" class="form-control" focus-me="showEditTitle" ng-model="data.poll.title" ng-exit="showEditTitle = false" auto-save required/></h1>
</div>
<div ng-hide="showEditDesc || !globalVariables.editMode && !poll.description " class="pollDesc" edit-me="showEditDesc">
<div ng-bind-html="toHTML(data.poll.description || 'Description (Facultatif). Ce cadre disparait si aucune description n\'est mise')"></div>
</div>
<div ng-show="showEditDesc" class="pollDesc " ng-exit="showEditDesc = false;">
- <textarea id="descEditor" data-ck-editor ng-model="data.poll.description"></textarea>
+ <textarea id="descEditor" data-ck-editor ng-model="data.poll.description" auto-save></textarea>
<input type="button" value="Return" class="btn btn-primary" ng-click="showEditDesc = false;"/>
</div>
@@ -54,6 +54,12 @@
<hr/>
<button type="button" class="btn btn-default" ng-model="globalVariables.editMode" btn-checkbox>Mode Edition</button>
<button class="btn btn-primary" ng-click="save()">Save</button>
+ <button class="btn btn-default" ng-click="popupSettings()">Settings</button>
+ </div>
+
+ <div ng-if="globalVariables.edit">
+ <hr/>
+ <button type="button" class="btn btn-default" ng-model="globalVariables.editMode" btn-checkbox>Mode Edition</button>
<button class="btn btn-danger" ng-click="delete();">Delete</button>
<button class="btn btn-default" ng-click="popupSettings()">Settings</button>
</div>
1
0