Author: [email protected]
Date: Tue Aug  9 13:57:55 2011
New Revision: 1299

Log:


Added:
   sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/AnswerResult.java
   sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/SurveyResult.java
Modified:
   sandbox/ivol/ntlm/pom.xml
   sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/SurveyStore.java
   sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/Answer.java
   sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/Survey.java
   
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyColumnFamilyProvider.java
   
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyServiceImpl.java
   
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyStoreImpl.java
   sandbox/ivol/ntlm/src/main/resources/jsp/enquete.jsp
   sandbox/ivol/ntlm/src/main/resources/static/css/cr.css

Modified: sandbox/ivol/ntlm/pom.xml
==============================================================================
--- sandbox/ivol/ntlm/pom.xml   (original)
+++ sandbox/ivol/ntlm/pom.xml   Tue Aug  9 13:57:55 2011
@@ -21,7 +21,7 @@
   <parent>
     <groupId>org.amdatu.auth</groupId>
     <artifactId>org.amdatu.auth</artifactId>
-    <version>0.2.0-SNAPSHOT</version>
+    <version>0.2.1-SNAPSHOT</version>
   </parent>
   <artifactId>org.amdatu.auth.ntlm</artifactId>
   <packaging>bundle</packaging>
@@ -121,4 +121,24 @@
       </plugin>
     </plugins>
   </build>
+
+  <profiles>
+    <profile>
+      <!-- Profile that will copy the jar to the configured 
amdatu.deploy.directory when
+           the deploy profile is activated -->
+      <id>deploy</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <build>
+        <defaultGoal>install</defaultGoal>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-antrun-plugin</artifactId>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>

Modified: sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/SurveyStore.java
==============================================================================
--- sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/SurveyStore.java       
(original)
+++ sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/SurveyStore.java       
Tue Aug  9 13:57:55 2011
@@ -1,8 +1,18 @@
 package org.amdatu.auth.ntlm;
 
+import java.util.List;
+
+import org.amdatu.auth.ntlm.domain.Answer;
 import org.amdatu.auth.ntlm.domain.Survey;
+import org.amdatu.auth.ntlm.domain.SurveyResult;
 import org.json.JSONException;
 
 public interface SurveyStore {
     Survey loadSurvey(String surveyId) throws JSONException;
+    
+    void addAnswers(String surveyId, List<Answer> answers, String username);
+    
+    SurveyResult loadAnswers(String surveyId) throws JSONException;
+    
+    boolean hasSubmitted(String surveyId, String username);
 }

Modified: 
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/Answer.java
==============================================================================
--- sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/Answer.java     
(original)
+++ sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/Answer.java     
Tue Aug  9 13:57:55 2011
@@ -12,20 +12,23 @@
     private String m_questionId;
     
     @XmlAttribute(name = "answer")
-    private String m_answer;
+    private String[] m_answer;
     
-    public Answer() {
+    public Answer(String questionId, String[] answer) {
+        m_questionId = questionId;
+        m_answer = answer;
     }
+    
     public String getQuestionId() {
         return m_questionId;
     }
     public void setQuestionId(String questionId) {
         m_questionId = questionId;
     }
-    public String getAnswer() {
+    public String[] getAnswer() {
         return m_answer;
     }
-    public void setAnswer(String answer) {
+    public void setAnswer(String[] answer) {
         m_answer = answer;
     }
     

Added: 
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/AnswerResult.java
==============================================================================
--- (empty file)
+++ 
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/AnswerResult.java   
    Tue Aug  9 13:57:55 2011
@@ -0,0 +1,49 @@
+package org.amdatu.auth.ntlm.domain;
+
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name = "answerResult")
+public class AnswerResult {
+    @XmlAttribute(name = "id")
+    private String m_id;
+    
+    @XmlAttribute(name = "description")
+    private String m_description;
+    
+    private List<String> m_answers;
+    
+    public AnswerResult() {
+    }
+
+    public String getId() {
+        return m_id;
+    }
+
+    public void setId(String id) {
+        m_id = id;
+    }
+
+    public String getDescription() {
+        return m_description;
+    }
+
+    public void setDescription(String description) {
+        m_description = description;
+    }
+
+    @XmlElementWrapper(name="answers")
+    @XmlElements(@XmlElement(name="answer"))
+    public List<String> getAnswers() {
+        return m_answers;
+    }
+
+    public void setAnswers(List<String> answers) {
+        m_answers = answers;
+    }
+}

Modified: 
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/Survey.java
==============================================================================
--- sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/Survey.java     
(original)
+++ sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/Survey.java     
Tue Aug  9 13:57:55 2011
@@ -21,13 +21,13 @@
 public class Survey {
     @XmlAttribute(name = "id")
     private String m_id;
-    
+
     @XmlElement(name = "question")
     private List<Question> m_questions;
-    
+
     public Survey() {
     }
-    
+
     public String getId() {
         return m_id;
     }
@@ -43,7 +43,16 @@
     public List<Question> getQuestions() {
         return m_questions;
     }
-    
+
+    public Question getQuestion(String questionId) {
+        for (Question question : m_questions) {
+            if (question.getId().equals(questionId)) {
+                return question;
+            }
+        }
+        return null;
+    }
+
     public void loadQuestions(HSuperColumn<String, String, String> questionSC) 
throws JSONException {
         List<HColumn<String, String>> questions = questionSC.getColumns();
         m_questions = new ArrayList<Question>();
@@ -51,12 +60,12 @@
             m_questions.add(Question.load(question));
         }
     }
-    
+
     public String toJSON() throws JSONException {
         JSONObject survey = new JSONObject();
         survey.put("id", getId());
         JSONArray questions = new JSONArray(getQuestions());
-      
+
         survey.put("questions", questions);
         return new JSONObject().put("survey", survey).toString();
     }

Added: 
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/SurveyResult.java
==============================================================================
--- (empty file)
+++ 
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/domain/SurveyResult.java   
    Tue Aug  9 13:57:55 2011
@@ -0,0 +1,44 @@
+package org.amdatu.auth.ntlm.domain;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+
+@XmlRootElement(name = "surveyResult")
+@XmlAccessorType(XmlAccessType.NONE)
+public class SurveyResult {
+    @XmlAttribute(name = "id")
+    private String m_id;
+    
+    @XmlElement(name = "question")
+    private List<AnswerResult> m_answers;
+
+    public String getId() {
+        return m_id;
+    }
+
+    public void setId(String id) {
+        m_id = id;
+    }
+
+    public List<AnswerResult> getAnswers() {
+        return m_answers;
+    }
+
+    public void setAnswers(List<AnswerResult> answers) {
+        m_answers = answers;
+    }
+    
+    public void addAnswer(AnswerResult answerResult) {
+        if (m_answers == null) {
+            m_answers = new ArrayList<AnswerResult>();
+        }
+        m_answers.add(answerResult);
+    }
+}

Modified: 
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyColumnFamilyProvider.java
==============================================================================
--- 
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyColumnFamilyProvider.java
        (original)
+++ 
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyColumnFamilyProvider.java
        Tue Aug  9 13:57:55 2011
@@ -11,6 +11,8 @@
      * ColumnFamily that stores the survey definitions.
      */
     public static final String CF_SURVEY = "Survey";
+    public static final String CF_SURVEY_ANSWERS = "SurveyAnswers";
+    public static final String CF_SURVEY_USERS = "SurveyUsers";
     
     public ColumnFamilyDefinition[] getColumnFamilies() {
         return new ColumnFamilyDefinition[] {
@@ -19,7 +21,18 @@
                     new String[] 
{CassandraPersistenceManager.DEFAULT_KEYSPACE},
                     ColumnType.SUPER,
                     CompareType.BYTESTYPE,
-                    CompareType.BYTESTYPE)};
+                    CompareType.BYTESTYPE),
+            new ColumnFamilyDefinition(
+                CF_SURVEY_ANSWERS,
+                    new String[] 
{CassandraPersistenceManager.DEFAULT_KEYSPACE},
+                    ColumnType.SUPER,
+                    CompareType.BYTESTYPE,
+                    CompareType.BYTESTYPE),
+            new ColumnFamilyDefinition(
+                CF_SURVEY_USERS,
+                    new String[] 
{CassandraPersistenceManager.DEFAULT_KEYSPACE},
+                    ColumnType.STANDARD,
+                    CompareType.BYTESTYPE,
+                   null)};
     }
-
 }

Modified: 
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyServiceImpl.java
==============================================================================
--- 
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyServiceImpl.java
 (original)
+++ 
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyServiceImpl.java
 Tue Aug  9 13:57:55 2011
@@ -1,5 +1,7 @@
 package org.amdatu.auth.ntlm.service;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
@@ -14,44 +16,81 @@
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
+import jcifs.smb.NtlmPasswordAuthentication;
+
 import org.amdatu.auth.ntlm.SurveyService;
 import org.amdatu.auth.ntlm.SurveyStore;
+import org.amdatu.auth.ntlm.domain.Answer;
 import org.amdatu.auth.ntlm.domain.Survey;
+import org.amdatu.auth.ntlm.domain.SurveyResult;
 
 @Path("survey")
 public class SurveyServiceImpl implements SurveyService {
     private volatile SurveyStore m_surveyStore;
 
     @GET
-    @Path("submitted")
+    @Path("submitted/{id}")
     @Produces({MediaType.TEXT_PLAIN})
-    public String hasSubmitted(@Context final HttpServletRequest request) {
-        Object session = request.getSession().getAttribute("NtlmHttpAuth");
-
-        return "1";
+    public String hasSubmitted(@Context final HttpServletRequest request, 
@PathParam("id") final String surveyId) {
+        NtlmPasswordAuthentication session = (NtlmPasswordAuthentication) 
request.getSession().getAttribute("NtlmHttpAuth");
+        String userName = session.getUsername();
+        if (m_surveyStore.hasSubmitted(surveyId, userName)) {
+            return "1";
+        } else {
+            return "0";
+        }
+    }
+    
+    @GET
+    @Path("username")
+    @Produces({MediaType.TEXT_PLAIN})
+    public String status(@Context final HttpServletRequest request) {
+        NtlmPasswordAuthentication session = (NtlmPasswordAuthentication) 
request.getSession().getAttribute("NtlmHttpAuth");
+        return session.getUsername();
     }
 
     @POST
     @Consumes("application/x-www-form-urlencoded")
     public void addSurvey(@Context final HttpServletRequest request) {
-        // TODO: verify that this user did not yet submit this survey
-        try {
-            Map parameters = request.getParameterMap();
-            String surveyId = ((String[]) parameters.get("surveyId"))[0];
-            Survey survey = m_surveyStore.loadSurvey(surveyId);
-            for (Object key : parameters.keySet()) {
-                String value = ((String[]) parameters.get(key))[0];
+        // Get the username from NTLM authentication
+        NtlmPasswordAuthentication session = (NtlmPasswordAuthentication) 
request.getSession().getAttribute("NtlmHttpAuth");
+        String userName = session.getUsername();
+        if (userName != null && !"".equals(userName)) {
+            try {
+                Map parameters = request.getParameterMap();
+                String surveyId = ((String[]) parameters.get("surveyId"))[0];
+                List<Answer> answers = new ArrayList<Answer>();
+                for (Object key : parameters.keySet()) {
+                    if (!"surveyId".equals(key.toString())) {
+                        // Answers can be multi-valued
+                        String[] value = ((String[]) parameters.get(key));
+                        answers.add(new Answer(key.toString(), value));
+                    }
+                }
 
-                // Now persist the answers
+                m_surveyStore.addAnswers(surveyId, answers, userName);
+            }
+            catch (Exception e) {
+                throw new WebApplicationException(e, 
Response.Status.INTERNAL_SERVER_ERROR);
             }
         }
+    }
+
+    @GET
+    @Path("answers/{id}")
+    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
+    public Response getSurveyAnswers(@Context final HttpServletRequest 
request, @PathParam("id") final String surveyId) {
+        try {
+            SurveyResult survey = m_surveyStore.loadAnswers(surveyId);
+            return Response.ok(survey).build();
+        }
         catch (Exception e) {
             throw new WebApplicationException(e, 
Response.Status.INTERNAL_SERVER_ERROR);
         }
     }
 
     @GET
-    @Path("{id}")
+    @Path("questions/{id}")
     @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
     public Response getSurvey(@Context final HttpServletRequest request, 
@PathParam("id") final String surveyId) {
         try {
@@ -62,4 +101,6 @@
             throw new WebApplicationException(e, 
Response.Status.INTERNAL_SERVER_ERROR);
         }
     }
+
+
 }

Modified: 
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyStoreImpl.java
==============================================================================
--- 
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyStoreImpl.java
   (original)
+++ 
sandbox/ivol/ntlm/src/main/java/org/amdatu/auth/ntlm/service/SurveyStoreImpl.java
   Tue Aug  9 13:57:55 2011
@@ -1,39 +1,44 @@
 package org.amdatu.auth.ntlm.service;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
+import me.prettyprint.hector.api.beans.HColumn;
 import me.prettyprint.hector.api.beans.HSuperColumn;
 
 import org.amdatu.auth.ntlm.SurveyStore;
 import org.amdatu.auth.ntlm.domain.Answer;
+import org.amdatu.auth.ntlm.domain.AnswerResult;
 import org.amdatu.auth.ntlm.domain.Question;
 import org.amdatu.auth.ntlm.domain.Survey;
+import org.amdatu.auth.ntlm.domain.SurveyResult;
 import org.amdatu.cassandra.persistencemanager.CassandraPersistenceManager;
 import org.json.JSONException;
 
 public class SurveyStoreImpl implements SurveyStore {
     public final static String SC_QUESTIONS = "Questions";
     public final static String SC_ANSWERS = "Answers";
-    
+
     private volatile CassandraPersistenceManager m_pm;
-    
+
     public void start() throws JSONException {
         // Add a test survey
         addTestSurvey();
-        
+
         // Retieve the survey
         Survey survey = loadSurvey("1");
-        
-        
-        
+
         List<Question> questions = survey.getQuestions();
         questions.get(0);
     }
-    
+
     public Survey loadSurvey(String surveyId) throws JSONException {
         Survey survey = new Survey();
         survey.setId(surveyId);
-        List<HSuperColumn<String, String, String>> superColumns = 
m_pm.getSuperColumns(SurveyColumnFamilyProvider.CF_SURVEY, surveyId, 
String.class);
+        List<HSuperColumn<String, String, String>> superColumns =
+            m_pm.getSuperColumns(SurveyColumnFamilyProvider.CF_SURVEY, 
surveyId, String.class);
         for (HSuperColumn<String, String, String> superColumn : superColumns) {
             if (superColumn.getName().equals(SurveyStoreImpl.SC_QUESTIONS)) {
                 survey.loadQuestions(superColumn);
@@ -41,34 +46,136 @@
         }
         return survey;
     }
+
+    public boolean hasSubmitted(String surveyId, String username) {
+        String submitted =
+            m_pm.getValue(SurveyColumnFamilyProvider.CF_SURVEY_USERS, 
surveyId, null, username, String.class);
+        return "true".equals(submitted);
+    }
+
+    public void addAnswers(String surveyId, List<Answer> answers, String 
username) {
+        if (hasSubmitted(surveyId, username)) {
+            // The user already submitted this survey!
+            return;
+        }
+
+        // Answers are stored in the CF_SURVEY_ANSWERS ColumnFamily. This CF 
is of type SuperColumn
+        // and contains a row for each survey with a row key that equals the 
survey id. Each row consists
+        // of a SuperColumn per submitted survey and each SuperColumn contains 
a set of columns with a name
+        // that equals the question id and the value being the answer.
+        // First generate a unique id for the next SuperColumn to add
+        List<HSuperColumn<String, String, String>> superColumns =
+            m_pm.getSuperColumns(SurveyColumnFamilyProvider.CF_SURVEY_ANSWERS, 
surveyId, String.class);
+        String id = "user-" + (superColumns.size() + 1);
+
+        for (Answer answer : answers) {
+            // Answers are String arrays
+            m_pm.setValue(SurveyColumnFamilyProvider.CF_SURVEY_ANSWERS, 
surveyId, id, answer.getQuestionId(),
+                answer.getAnswer());
+        }
+
+        // Now remember that this user submitted this survey. Do this in a 
different ColumnFamily, such
+        // that the users answers are anonymous
+        m_pm.setValue(SurveyColumnFamilyProvider.CF_SURVEY_USERS, surveyId, 
null, username, "true");
+    }
+
+    public SurveyResult loadAnswers(String surveyId) throws JSONException {
+        List<HSuperColumn<String, String, String[]>> superColumns =
+            m_pm.getSuperColumns(SurveyColumnFamilyProvider.CF_SURVEY_ANSWERS, 
surveyId, String[].class);
+        Survey survey = loadSurvey(surveyId);
+
+        // Each SuperColumn represents a submitted survey including answers
+        Map<Question, List<String[]>> results = new HashMap<Question, 
List<String[]>>();
+        for (HSuperColumn<String, String, String[]> superColumn : 
superColumns) {
+            List<HColumn<String, String[]>> columns = superColumn.getColumns();
+            for (HColumn<String, String[]> column : columns) {
+                String questionId = column.getName();
+                String[] answer = column.getValue();
+
+                Question question = survey.getQuestion(questionId);
+                if (question != null) {
+                    List<String[]> answers = results.get(question);
+                    if (answers == null) {
+                        answers = new ArrayList<String[]>();
+                    }
+                    answers.add(answer);
+                    results.put(question, answers);
+                }
+            }
+        }
+
+        SurveyResult surveyResult = new SurveyResult();
+        surveyResult.setId(surveyId);
+        for (Question question : results.keySet()) {
+            AnswerResult result = new AnswerResult();
+            result.setId(question.getId());
+            result.setDescription(question.getDescription());
+            if (question.getType().equals("check") || 
question.getType().equals("radio")) {
+                // Generate statistics
+                result.setAnswers(getStats(question.getValues(), 
results.get(question)));
+            }
+            else {
+                result.setAnswers(toSingleList(results.get(question)));
+            }
+            surveyResult.addAnswer(result);
+        }
+        return surveyResult;
+    }
     
-    
-    
-    private void addAnswer(Survey survey, Answer answer) {
-        
+    private List<String> toSingleList(List<String[]> list) {
+        List<String> values = new ArrayList<String>();
+        for (String[] v : list) {
+            values.add(v[0]);
+        }
+        return values;
     }
     
+    private List<String> getStats(List<String> values, List<String[]> answers) 
{
+        List<String> stats = new ArrayList<String>();
+        for (String value : values) {
+            int count = 0;
+            for (String[] answer : answers) {
+                for (String a : answer) {
+                    if (a.equals(value)) {
+                        count++;
+                    }
+                }
+            }
+            stats.add(value + " - " + count);
+        }
+        return stats;
+    }
+
     private void addTestSurvey() throws JSONException {
         Question q1 = new Question();
         q1.setDescription("Wil je salarisverhoging?");
         q1.setType("radio");
         q1.addValue("Ja");
         q1.addValue("Nee");
-        
+
         Question q2 = new Question();
-        q2.setDescription("Wil vind je er allemaal van?");
+        q2.setDescription("Wat zou de OR wat jou betreft moeten aankaarten?");
         q2.setType("open");
-       
+
         Question q3 = new Question();
-        q3.setDescription("Wat vind je belangrijk?");
+        q3.setDescription("Van welke onderwerpen onder vind je dat de OR zich 
zou moeten bemoeien?");
         q3.setType("check");
         q3.addValue("MTO");
         q3.addValue("Arbeidsvoorwaarden");
-        q3.addValue("Lease auto");
-        
+        q3.addValue("13e maand");
+        q3.addValue("Klimaatbeheersing");
+
+        Question q4 = new Question();
+        q4.setDescription("Vind je dat salarisverhogingen relatief of absoluut 
zouden moeten zijn?");
+        q4.setType("radio");
+        q4.addValue("relatief");
+        q4.addValue("absoluut");
+        q4.addValue("geen (uitgesproken) mening");
+
         String surveyId = "1";
         m_pm.setValue(SurveyColumnFamilyProvider.CF_SURVEY, surveyId, 
SC_QUESTIONS, "Q1", q1.toJSON());
         m_pm.setValue(SurveyColumnFamilyProvider.CF_SURVEY, surveyId, 
SC_QUESTIONS, "Q2", q2.toJSON());
         m_pm.setValue(SurveyColumnFamilyProvider.CF_SURVEY, surveyId, 
SC_QUESTIONS, "Q3", q3.toJSON());
+        m_pm.setValue(SurveyColumnFamilyProvider.CF_SURVEY, surveyId, 
SC_QUESTIONS, "Q4", q4.toJSON());
     }
 }

Modified: sandbox/ivol/ntlm/src/main/resources/jsp/enquete.jsp
==============================================================================
--- sandbox/ivol/ntlm/src/main/resources/jsp/enquete.jsp        (original)
+++ sandbox/ivol/ntlm/src/main/resources/jsp/enquete.jsp        Tue Aug  9 
13:57:55 2011
@@ -20,7 +20,6 @@
 
 <c:set var="contextPath" value="${pageContext.request.contextPath}"/>
 <c:set var="staticPath" value="${contextPath}/oauth-consumerregistry/static"/>
-<c:set var="ntlmUrl" value="${baseUrl}/rest/ntlm"/>
 <c:set var="surveyUrl" value="${baseUrl}/rest/survey"/>
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
@@ -55,11 +54,8 @@
 
     <div class="rightbox">
       <p>
-      <form action="/rest/survey" method="POST">
-        <div id="survey"></div>
-        <input type="hidden" name="surveyId" value="1"/>
-
-        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" 
value="Versturen" />
+        <form id="form" action="/rest/survey" method="POST">
+          <div id="survey"></div>
         </form>
       </p>
     </div>
@@ -69,83 +65,103 @@
 
 <script type="text/javascript">
 
-  function getUsername() {
-     var url = "${ntlmUrl}/username";
-       jQuery.ajax({
-         url: url,
-         type: "GET",
-         async:true,
-         success: function(response) {
-             document.getElementById("username").innerHTML = response;
-           }
+  function showUsername() {
+     var url = "${surveyUrl}/username";
+     jQuery.ajax({
+       url: url,
+       type: "GET",
+       async:true,
+       success: function(response) {
+           document.getElementById("username").innerHTML = response;
          }
+       }
     );
   }
 
-  function hasSubmittedSurveyBefore() {
-    var url = "${surveyUrl}/submitted";
-         jQuery.ajax({
-           url: url,
-           type: "GET",
-           async:true,
-           success: function(response) {
-               if (response == "1") {
-                //alert("Deze enquete heb je reeds ingevuld");
-               } else {
-
-               }
-             }
-           }
+  function loadSurveyForm() {
+    var submitted = false;
+    var url = "${surveyUrl}/submitted/" + surveyId;
+    jQuery.ajax({
+     url: url,
+     type: "GET",
+     async:true,
+     success: function(response) {
+         if (response == "1") {
+          var html = "Je hebt deze enquete reeds ingevuld. Je kunt de enquete 
slechts eenmalig invullen. Bedankt voor je medewerking!";
+          document.getElementById("survey").innerHTML = html;
+         } else {
+          showSurvey();
+         }
+       }
+     }
     );
   }
 
-  function loadSurvey() {
-    var url = "${surveyUrl}/1";
-       jQuery.ajax({
-         url: url,
-         type: "GET",
-         async:true,
-         success: function(data, textStatus, jqXHR) {
-            var survey = jQuery.parseJSON(jqXHR.responseText).survey;
-            var questions = survey.question;
-            var html = "<ul>";
-            for (i=0; i<questions.length;i++) {
-              var id = questions[i].id;
-              var des = questions[i].description;
-              var type = questions[i].type;
-              var values = questions[i].value;
-              html += questionToHtml(id, des, type, values);
-            }
-            html += "</ul>";
-            document.getElementById("survey").innerHTML = html;
-          }
-        }
-      );
-    }
-
-    function questionToHtml(id, des, type, values) {
-      var html = "<li>";
-      html += des + <br/>;
-      if (type == "radio") {
-        for (j=0; j<values.length; j++) {
-          html += "<br/><input type='radio' name='" + id + "' value='" + 
values[j] + "'>" + values[j];
-        }
-      } else if (type == "check") {
-        for (j=0; j<values.length; j++) {
-          html += "<br/><input type='checkbox' name='" + id + "' value='" + 
values[j] + "'>" + values[j];
+  function showSurvey() {
+    var url = "${surveyUrl}/questions/" + surveyId;
+    jQuery.ajax({
+     url: url,
+     type: "GET",
+     async:true,
+     success: function(data, textStatus, jqXHR) {
+        var survey = jQuery.parseJSON(jqXHR.responseText).survey;
+        var questions = survey.question;
+        var html = "<ul>";
+        for (i=0; i<questions.length;i++) {
+          var id = questions[i].id;
+          var des = questions[i].description;
+          var type = questions[i].type;
+          var values = questions[i].value;
+          html += questionToHtml(id, des, type, values);
         }
-      } else {
-        html += "<br/><textarea rows='3' cols='60' name='" + id + 
"'></textarea>";
+        html += "</ul>";
+        html += "<input type='hidden' name='surveyId' value='" + surveyId + 
"'/>";
+        html += "<input type='button' onclick='javascript:submitSurvey();' 
value='Versturen' />"
+        document.getElementById("survey").innerHTML = html;
       }
+    });
+  }
 
-      html += "</li>";
-      return html;
+  function submitSurvey() {
+    document.getElementById("form").submit();
+    var html = "Je antwoorden zijn verstuurd. Bedankt voor je medewerking!";
+    document.getElementById("survey").innerHTML = html;
+  }
+
+  function questionToHtml(id, des, type, values) {
+    var html = "<li>";
+    html += des + <br/>;
+    if (type == "radio") {
+      for (j=0; j<values.length; j++) {
+        html += "<br/><input type='radio' name='" + id + "' value='" + 
values[j] + "'>" + values[j];
+      }
+    } else if (type == "check") {
+      for (j=0; j<values.length; j++) {
+        html += "<br/><input type='checkbox' name='" + id + "' value='" + 
values[j] + "'>" + values[j];
+      }
+    } else {
+      html += "<br/><textarea rows='3' cols='60' name='" + id + 
"'></textarea>";
     }
 
+    html += "</li>";
+    return html;
+  }
+
+  function getParameter(name) {
+    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
+    var regexS = "[\\?&]"+name+"=([^&#]*)";
+    var regex = new RegExp( regexS );
+    var results = regex.exec( window.location.href );
+    if( results == null )
+      return "";
+    else
+      return results[1];
+  }
+
 
+  var surveyId = getParameter("id");
 
-  getUsername();
-  hasSubmittedSurveyBefore();
-  loadSurvey();
+  showUsername();
+  loadSurveyForm();
 
 </script>

Modified: sandbox/ivol/ntlm/src/main/resources/static/css/cr.css
==============================================================================
--- sandbox/ivol/ntlm/src/main/resources/static/css/cr.css      (original)
+++ sandbox/ivol/ntlm/src/main/resources/static/css/cr.css      Tue Aug  9 
13:57:55 2011
@@ -19,7 +19,7 @@
 
  body {
   margin: 0px;
-  padding: 0;
+  padding: 10;
   background: #000000;
   font-family: bookman old style;
   font-size: 14px;
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits

Reply via email to