Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java =================================================================== diff -u -r359da5dd23173eaae62f788445a0526492f11f63 -r3cddc05ac67dc21b02e6b60c75306c5b1d00e610 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java (.../QaServicePOJO.java) (revision 359da5dd23173eaae62f788445a0526492f11f63) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java (.../QaServicePOJO.java) (revision 3cddc05ac67dc21b02e6b60c75306c5b1d00e610) @@ -42,6 +42,9 @@ import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; +import org.apache.tomcat.util.json.JSONArray; +import org.apache.tomcat.util.json.JSONException; +import org.apache.tomcat.util.json.JSONObject; import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; import org.lamsfoundation.lams.events.IEventNotificationService; import org.lamsfoundation.lams.learning.service.ILearnerService; @@ -51,6 +54,7 @@ import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; +import org.lamsfoundation.lams.rest.ToolRestManager; import org.lamsfoundation.lams.tool.IToolVO; import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; @@ -92,6 +96,7 @@ import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; +import org.lamsfoundation.lams.util.JsonUtil; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.util.audit.IAuditService; @@ -107,7 +112,7 @@ * * @author Ozgur Demirtas */ -public class QaServicePOJO implements IQaService, ToolContentManager, ToolSessionManager, ToolContentImport102Manager, +public class QaServicePOJO implements IQaService, ToolContentManager, ToolSessionManager, ToolContentImport102Manager, ToolRestManager, QaAppConstants { private static Logger logger = Logger.getLogger(QaServicePOJO.class.getName()); @@ -1496,4 +1501,60 @@ public Class[] getSupportedToolOutputDefinitionClasses(int definitionType) { return getQaOutputFactory().getSupportedDefinitionClasses(definitionType); } + + // ****************** REST methods ************************* + + /** Rest call to create a new Q&A content. Required fields in toolContentJSON: title, instructions, questions. + * The questions entry should be JSONArray containing JSON objects, which in turn must contain a question entry and may also contain feedback and required (boolean) + */ + @Override + public void createRestToolContent(Integer userID, Long toolContentID, JSONObject toolContentJSON) throws JSONException { + + QaContent qa = new QaContent(); + Date updateDate = new Date(); + + qa.setCreationDate(updateDate); + qa.setUpdateDate(updateDate); + qa.setCreatedBy(userID.longValue()); + + qa.setQaContentId(toolContentID); + qa.setTitle(toolContentJSON.getString("title")); + qa.setInstructions(toolContentJSON.getString("instructions")); + + qa.setDefineLater(false); + + qa.setLockWhenFinished(JsonUtil.opt(toolContentJSON, "lockOnFinished", Boolean.FALSE)); + qa.setAllowRichEditor(JsonUtil.opt(toolContentJSON, "allowRichTextEditor", Boolean.FALSE)); + qa.setUseSelectLeaderToolOuput(JsonUtil.opt(toolContentJSON, "useSelectLeaderToolOuput", Boolean.FALSE)); + qa.setShowOtherAnswers(JsonUtil.opt(toolContentJSON, "showOtherAnswers", Boolean.TRUE)); + qa.setUsernameVisible(JsonUtil.opt(toolContentJSON, "usernameVisible", Boolean.FALSE)); + qa.setAllowRateAnswers(JsonUtil.opt(toolContentJSON, "allowRateAnswers", Boolean.FALSE)); + qa.setNotifyTeachersOnResponseSubmit(JsonUtil.opt(toolContentJSON, "notifyTeachersOnResponseSubmit", Boolean.FALSE)); + qa.setReflect(JsonUtil.opt(toolContentJSON, "reflect", Boolean.FALSE)); + qa.setReflectionSubject(JsonUtil.opt(toolContentJSON, "reflectionSubject",(String)null)); + qa.setQuestionsSequenced(JsonUtil.opt(toolContentJSON, "questionsSequenced", Boolean.FALSE)); + + qa.setSubmissionDeadline(JsonUtil.opt(toolContentJSON, "submissionDeadline",(Date)null)); + + // qa.setMonitoringReportTitle(); Can't find this field in the database - assuming unused. + // qa.setReportTitle(); Can't find this field in the database - assuming unused. + // qa.setContent(content); Can't find this field in the database - assuming unused. + + saveOrUpdateQaContent(qa); + // Questions + JSONArray questions = toolContentJSON.getJSONArray("questions"); + for (int i=0; i