Index: lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java,v diff -u -r1.53.2.1 -r1.53.2.2 --- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java 3 Sep 2014 10:34:16 -0000 1.53.2.1 +++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java 17 Apr 2015 11:24:37 -0000 1.53.2.2 @@ -33,6 +33,8 @@ import java.util.TreeMap; import org.apache.log4j.Logger; +import org.apache.tomcat.util.json.JSONException; +import org.apache.tomcat.util.json.JSONObject; import org.lamsfoundation.lams.contentrepository.ItemNotFoundException; import org.lamsfoundation.lams.contentrepository.RepositoryCheckedException; import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; @@ -43,6 +45,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.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolOutput; @@ -62,6 +65,7 @@ import org.lamsfoundation.lams.tool.noticeboard.dao.INoticeboardUserDAO; import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.JsonUtil; import org.lamsfoundation.lams.util.WebUtil; import org.springframework.dao.DataAccessException; @@ -74,7 +78,7 @@ * */ public class NoticeboardServicePOJO implements INoticeboardService, ToolContentManager, ToolSessionManager, - ToolContentImport102Manager { + ToolContentImport102Manager, ToolRestManager { private static Logger log = Logger.getLogger(NoticeboardServicePOJO.class); private ILearnerService learnerService; @@ -661,4 +665,25 @@ public Class[] getSupportedToolOutputDefinitionClasses(int definitionType) { return null; } + + // ****************** REST methods ************************* + + @Override + public void createRestToolContent(Integer userID, Long toolContentID, JSONObject toolContentJSON) throws JSONException { + Date updateDate = new Date(); + + NoticeboardContent noticeboard = new NoticeboardContent(); + noticeboard.setNbContentId(toolContentID); + noticeboard.setTitle(toolContentJSON.getString("title")); + noticeboard.setContent(toolContentJSON.getString("content")); + noticeboard.setReflectOnActivity(JsonUtil.opt(toolContentJSON, "reflectOnActivity", Boolean.FALSE)); + noticeboard.setReflectInstructions((String)JsonUtil.opt(toolContentJSON, "reflectInstructions", null)); + + noticeboard.setCreatorUserId(userID.longValue()); + noticeboard.setDateCreated(updateDate); + noticeboard.setDateUpdated(updateDate); + noticeboard.setContentInUse(false); + + saveNoticeboard(noticeboard); + } } \ No newline at end of file Index: lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/NotebookService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/NotebookService.java,v diff -u -r1.31.2.1 -r1.31.2.2 --- lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/NotebookService.java 2 Sep 2014 21:20:37 -0000 1.31.2.1 +++ lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/NotebookService.java 17 Apr 2015 11:21:01 -0000 1.31.2.2 @@ -33,6 +33,8 @@ import java.util.SortedMap; import org.apache.log4j.Logger; +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; @@ -41,6 +43,7 @@ import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; +import org.lamsfoundation.lams.rest.ToolRestManager; import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolOutput; @@ -61,6 +64,7 @@ import org.lamsfoundation.lams.tool.notebook.util.NotebookException; import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +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; @@ -72,7 +76,7 @@ */ public class NotebookService implements ToolSessionManager, ToolContentManager, INotebookService, - ToolContentImport102Manager { + ToolContentImport102Manager, ToolRestManager { static Logger logger = Logger.getLogger(NotebookService.class.getName()); @@ -601,4 +605,32 @@ public Class[] getSupportedToolOutputDefinitionClasses(int definitionType) { return getNotebookOutputFactory().getSupportedDefinitionClasses(definitionType); } + + // ****************** REST methods ************************* + + @Override + public void createRestToolContent(Integer userID, Long toolContentID, JSONObject toolContentJSON) throws JSONException { + Date updateDate = new Date(); + + Notebook nb = new Notebook(); + nb.setToolContentId(toolContentID); + nb.setTitle(toolContentJSON.getString("title")); + nb.setInstructions(toolContentJSON.getString("instructions")); + nb.setCreateBy(userID.longValue()); + nb.setCreateDate(updateDate); + nb.setUpdateDate(updateDate); + + nb.setLockOnFinished(JsonUtil.opt(toolContentJSON, "lockOnFinished", Boolean.FALSE)); + nb.setAllowRichEditor(JsonUtil.opt(toolContentJSON, "allowRichTextEditor", Boolean.FALSE)); + nb.setSubmissionDeadline((Date)JsonUtil.opt(toolContentJSON, "submissionDeadline", null)); + + nb.setContentInUse(false); + nb.setDefineLater(false); + this.saveOrUpdateNotebook(nb); + + // TODO + // nb.setConditions(conditions); + + } + } \ No newline at end of file Index: lams_tool_scribe/src/java/org/lamsfoundation/lams/tool/scribe/service/ScribeService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scribe/src/java/org/lamsfoundation/lams/tool/scribe/service/ScribeService.java,v diff -u -r1.30 -r1.30.2.1 --- lams_tool_scribe/src/java/org/lamsfoundation/lams/tool/scribe/service/ScribeService.java 6 Jun 2014 16:43:02 -0000 1.30 +++ lams_tool_scribe/src/java/org/lamsfoundation/lams/tool/scribe/service/ScribeService.java 17 Apr 2015 11:15:34 -0000 1.30.2.1 @@ -37,15 +37,9 @@ import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; -import org.apache.struts.upload.FormFile; -import org.lamsfoundation.lams.contentrepository.AccessDeniedException; -import org.lamsfoundation.lams.contentrepository.ICredentials; -import org.lamsfoundation.lams.contentrepository.ITicket; -import org.lamsfoundation.lams.contentrepository.InvalidParameterException; -import org.lamsfoundation.lams.contentrepository.LoginException; -import org.lamsfoundation.lams.contentrepository.NodeKey; -import org.lamsfoundation.lams.contentrepository.RepositoryCheckedException; -import org.lamsfoundation.lams.contentrepository.WorkspaceNotFoundException; +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.contentrepository.service.IRepositoryService; import org.lamsfoundation.lams.contentrepository.service.SimpleCredentials; @@ -56,6 +50,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.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolOutput; @@ -79,6 +74,7 @@ import org.lamsfoundation.lams.tool.scribe.util.ScribeToolContentHandler; import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.JsonUtil; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.util.audit.IAuditService; import org.lamsfoundation.lams.util.wddx.WDDXProcessor; @@ -90,7 +86,7 @@ * As a requirement, all LAMS tool's service bean must implement ToolContentManager and ToolSessionManager. */ -public class ScribeService implements ToolSessionManager, ToolContentManager, ToolContentImport102Manager, +public class ScribeService implements ToolSessionManager, ToolContentManager, ToolContentImport102Manager, ToolRestManager, IScribeService { static Logger logger = Logger.getLogger(ScribeService.class.getName()); @@ -632,4 +628,52 @@ public Class[] getSupportedToolOutputDefinitionClasses(int definitionType) { return null; } + + // ****************** REST methods ************************* + + /** Used by the Rest calls to create content. + * Mandatory fields in toolContentJSON: title, instructions, topics. + * Topics must contain a JSONArray of JSONObject objects, which have the following mandatory fields: subject, body + * There should be at least one topic object in the Topics array. + */ + @Override + public void createRestToolContent(Integer userID, Long toolContentID, JSONObject toolContentJSON) throws JSONException { + + Date updateDate = new Date(); + + Scribe scribe = new Scribe(); + scribe.setCreateBy(userID.longValue()); + scribe.setCreateDate(updateDate); + scribe.setUpdateDate(updateDate); + + scribe.setToolContentId(toolContentID); + scribe.setContentInUse(false); + scribe.setDefineLater(false); + + scribe.setTitle(toolContentJSON.getString("title")); + scribe.setInstructions(toolContentJSON.getString("instructions")); + + scribe.setAutoSelectScribe(JsonUtil.opt(toolContentJSON, "autoSelectScribe", Boolean.FALSE)); + scribe.setLockOnFinished(JsonUtil.opt(toolContentJSON, "lockOnFinished", Boolean.FALSE)); + scribe.setReflectInstructions((String) JsonUtil.opt(toolContentJSON, "reflectInstructions", null)); + scribe.setReflectOnActivity(JsonUtil.opt(toolContentJSON, "reflectOnActivity", Boolean.FALSE)); + scribe.setShowAggregatedReports(JsonUtil.opt(toolContentJSON, "showAggregatedReports", Boolean.FALSE)); + + Set headings = scribe.getScribeHeadings(); + if ( headings == null ) { + headings = new HashSet(); + scribe.setScribeHeadings(headings); + } + JSONArray headingData = toolContentJSON.getJSONArray("headings"); + for ( int i=0; i