Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaAppConstants.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaAppConstants.java,v diff -u -r1.17 -r1.18 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaAppConstants.java 20 Jul 2005 07:21:46 -0000 1.17 +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaAppConstants.java 22 Jul 2005 02:26:08 -0000 1.18 @@ -109,6 +109,10 @@ public static final String THE_ONLINE_FILE ="theOnlineFile"; public static final String THE_OFFLINE_FILENAME ="theOfflineFileName"; public static final String THE_ONLINE_FILENAME ="theOnlineFileName"; + public static final String SUBMIT_OFFLINE_FILE ="submitOfflineFile"; + public static final String SUBMIT_ONLINE_FILE ="submitOnlineFile"; + public static final String LIST_UPLOADED_OFFLINE_FILES ="listUploadedOfflineFiles"; + public static final String LIST_UPLOADED_ONLINE_FILES ="listUploadedOnlineFiles"; /** Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUtils.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/Attic/QaUtils.java,v diff -u -r1.13 -r1.14 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUtils.java 20 Jul 2005 07:21:46 -0000 1.13 +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUtils.java 22 Jul 2005 02:26:08 -0000 1.14 @@ -6,15 +6,22 @@ */ package org.lamsfoundation.lams.tool.qa; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; import java.security.Principal; import java.text.DateFormat; import java.util.Date; +import java.util.LinkedList; +import java.util.Map; import java.util.Random; import java.util.TimeZone; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; +import org.apache.struts.upload.FormFile; +import org.lamsfoundation.lams.contentrepository.NodeKey; import org.lamsfoundation.lams.tool.qa.service.IQaService; import org.lamsfoundation.lams.tool.qa.web.QaAuthoringForm; import org.lamsfoundation.lams.usermanagement.User; @@ -398,5 +405,99 @@ qaService.configureContentRepository(); logger.debug("configureContentRepository ran successfully"); } - + + public static void addFileToContentRepository(HttpServletRequest request, QaAuthoringForm qaAuthoringForm, boolean isOfflineFile) + { + logger.debug("attempt addFileToContentRepository"); + IQaService qaService =QaUtils.getToolService(request); + + LinkedList listUploadedOfflineFiles = (LinkedList) request.getSession().getAttribute(LIST_UPLOADED_OFFLINE_FILES); + logger.debug("listUploadedOfflineFiles: " + listUploadedOfflineFiles); + LinkedList listUploadedOnlineFiles = (LinkedList) request.getSession().getAttribute(LIST_UPLOADED_ONLINE_FILES); + logger.debug("listUploadedOnlineFiles: " + listUploadedOnlineFiles); + + + if (isOfflineFile) + { + /** read uploaded file informtion - offline file*/ + logger.debug("retrieve theOfflineFile."); + FormFile theOfflineFile = qaAuthoringForm.getTheOfflineFile(); + logger.debug("retrieved theOfflineFile: " + theOfflineFile); + + String offlineFileName=""; + NodeKey nodeKey=null; + String offlineFileUuid=""; + try + { + InputStream offlineFileInputStream = theOfflineFile.getInputStream(); + logger.debug("retrieved offlineFileInputStream: " + offlineFileInputStream); + offlineFileName=theOfflineFile.getFileName(); + logger.debug("retrieved offlineFileName: " + offlineFileName); + nodeKey=qaService.uploadFileToRepository(offlineFileInputStream, offlineFileName); + logger.debug("repository returned nodeKey: " + nodeKey); + logger.debug("repository returned offlineFileUuid nodeKey uuid: " + nodeKey.getUuid()); + offlineFileUuid=nodeKey.getUuid().toString(); + logger.debug("offline file added to contentRepository"); + listUploadedOfflineFiles.add(offlineFileUuid + "~" + offlineFileName); + logger.debug("listUploadedOfflineFiles updated: " + listUploadedOfflineFiles); + request.getSession().setAttribute(LIST_UPLOADED_OFFLINE_FILES,listUploadedOfflineFiles); + } + catch(FileNotFoundException e) + { + logger.debug("exception occured, offline file not found : " + e.getMessage()); + //possibly give warning to user in request scope + } + catch(IOException e) + { + logger.debug("exception occured in offline file transfer: " + e.getMessage()); + //possibly give warning to user in request scope + } + catch(QaApplicationException e) + { + logger.debug("exception occured in accessing the repository server: " + e.getMessage()); + //possibly give warning to user in request scope + } + } + else + { + /** read uploaded file information - online file*/ + logger.debug("retrieve theOnlineFile"); + FormFile theOnlineFile = qaAuthoringForm.getTheOnlineFile(); + logger.debug("retrieved theOnlineFile: " + theOnlineFile); + + String onlineFileName=""; + NodeKey nodeKey=null; + String onlineFileUuid=""; + try + { + InputStream onlineFileInputStream = theOnlineFile.getInputStream(); + logger.debug("retrieved onlineFileInputStream: " + onlineFileInputStream); + onlineFileName=theOnlineFile.getFileName(); + logger.debug("retrieved onlineFileName: " + onlineFileName); + nodeKey=qaService.uploadFileToRepository(onlineFileInputStream, onlineFileName); + logger.debug("repository returned nodeKey: " + nodeKey); + logger.debug("repository returned onlineFileUuid nodeKey uuid: " + nodeKey.getUuid()); + onlineFileUuid=nodeKey.getUuid().toString(); + logger.debug("online file added to contentRepository"); + listUploadedOnlineFiles.add(onlineFileUuid + "~" + onlineFileName); + logger.debug("listUploadedOnlineFiles updated: " + listUploadedOnlineFiles); + request.getSession().setAttribute(LIST_UPLOADED_ONLINE_FILES,listUploadedOnlineFiles); + } + catch(FileNotFoundException e) + { + logger.debug("exception occured, online file not found : " + e.getMessage()); + //possibly give warning to user in request scope + } + catch(IOException e) + { + logger.debug("exception occured in online file transfer: " + e.getMessage()); + //possibly give warning to user in request scope + } + catch(QaApplicationException e) + { + logger.debug("exception occured in accessing the repository server: " + e.getMessage()); + //possibly give warning to user in request scope + } + } + } } Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/AuthoringUtil.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/AuthoringUtil.java,v diff -u -r1.10 -r1.11 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/AuthoringUtil.java 22 Jul 2005 00:42:07 -0000 1.10 +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/AuthoringUtil.java 22 Jul 2005 02:26:08 -0000 1.11 @@ -11,6 +11,7 @@ import java.io.InputStream; import java.util.Date; import java.util.Iterator; +import java.util.LinkedList; import java.util.Map; import java.util.TreeMap; import java.util.TreeSet; @@ -354,76 +355,6 @@ logger.debug("createContent richTextInstructions from session: " + richTextInstructions); if (richTextInstructions == null) richTextInstructions=""; - /** read uploaded file informtion - offline file*/ - logger.debug("retrieve theOfflineFile."); - FormFile theOfflineFile = qaAuthoringForm.getTheOfflineFile(); - logger.debug("retrieved theOfflineFile: " + theOfflineFile); - - String offlineFileName=""; - NodeKey nodeKey=null; - String offlineFileUuid=""; - try - { - InputStream offlineFileInputStream = theOfflineFile.getInputStream(); - logger.debug("retrieved offlineFileInputStream: " + offlineFileInputStream); - offlineFileName=theOfflineFile.getFileName(); - logger.debug("retrieved offlineFileName: " + offlineFileName); - nodeKey=qaService.uploadFileToRepository(offlineFileInputStream, offlineFileName); - logger.debug("repository returned nodeKey: " + nodeKey); - logger.debug("repository returned offlineFileUuid nodeKey uuid: " + nodeKey.getUuid()); - offlineFileUuid=nodeKey.getUuid().toString(); - } - catch(FileNotFoundException e) - { - logger.debug("exception occured, offline file not found : " + e.getMessage()); - //possibly give warning to user in request scope - } - catch(IOException e) - { - logger.debug("exception occured in offline file transfer: " + e.getMessage()); - //possibly give warning to user in request scope - } - catch(QaApplicationException e) - { - logger.debug("exception occured in accessing the repository server: " + e.getMessage()); - //possibly give warning to user in request scope - } - - /** read uploaded file informtion - online file*/ - logger.debug("retrieve theOnlineFile"); - FormFile theOnlineFile = qaAuthoringForm.getTheOnlineFile(); - logger.debug("retrieved theOnlineFile: " + theOnlineFile); - - String onlineFileName=""; - nodeKey=null; - String onlineFileUuid=""; - try - { - InputStream onlineFileInputStream = theOnlineFile.getInputStream(); - logger.debug("retrieved onlineFileInputStream: " + onlineFileInputStream); - onlineFileName=theOnlineFile.getFileName(); - logger.debug("retrieved onlineFileName: " + onlineFileName); - nodeKey=qaService.uploadFileToRepository(onlineFileInputStream, onlineFileName); - logger.debug("repository returned nodeKey: " + nodeKey); - logger.debug("repository returned onlineFileUuid nodeKey uuid: " + nodeKey.getUuid()); - onlineFileUuid=nodeKey.getUuid().toString(); - } - catch(FileNotFoundException e) - { - logger.debug("exception occured, online file not found : " + e.getMessage()); - //possibly give warning to user in request scope - } - catch(IOException e) - { - logger.debug("exception occured in online file transfer: " + e.getMessage()); - //possibly give warning to user in request scope - } - catch(QaApplicationException e) - { - logger.debug("exception occured in accessing the repository server: " + e.getMessage()); - //possibly give warning to user in request scope - } - /**obtain user object from the session*/ User toolUser=(User)request.getSession().getAttribute(TOOL_USER); @@ -458,14 +389,61 @@ qaService.createQa(qa); logger.debug("qa created with content id: " + toolContentId); - logger.debug("start persisting offline file information to db..."); - qaService.persistFile(offlineFileUuid,false, offlineFileName,qa); - logger.debug("successfully persisted offline file info"); + LinkedList listUploadedOfflineFiles = (LinkedList) request.getSession().getAttribute(LIST_UPLOADED_OFFLINE_FILES); + logger.debug("final listUploadedOfflineFiles: " + listUploadedOfflineFiles); + LinkedList listUploadedOnlineFiles = (LinkedList) request.getSession().getAttribute(LIST_UPLOADED_ONLINE_FILES); + logger.debug("final listUploadedOnlineFiles: " + listUploadedOnlineFiles); - logger.debug("start persisting online file information to db..."); - qaService.persistFile(onlineFileUuid,true, onlineFileName,qa); - logger.debug("successfully persisted online file info"); + try{ + logger.debug("start persisting offline file information to db..."); + Iterator offlineFilesIterator=listUploadedOfflineFiles.iterator(); + while (offlineFilesIterator.hasNext()) + { + String uuidAndFileName=(String) offlineFilesIterator.next(); + logger.debug("iterated uuidAndFileName: " + uuidAndFileName); + if ((uuidAndFileName != null) && (uuidAndFileName.indexOf('~') > 0)) + { + int separator=uuidAndFileName.indexOf('~'); + logger.debug("separator: " + separator); + String uuid=uuidAndFileName.substring(0,separator); + String fileName=uuidAndFileName.substring(separator+1); + logger.debug("using uuid: " + uuid); + logger.debug("using fileName: " + fileName); + qaService.persistFile(uuid,false, fileName,qa); + } + } + logger.debug("all offline files data has been persisted"); + } + catch(Exception e) + { + logger.debug("error persisting offline files data: " + listUploadedOfflineFiles); + } + try{ + logger.debug("start persisting online file information to db..."); + Iterator onlineFilesIterator=listUploadedOnlineFiles.iterator(); + while (onlineFilesIterator.hasNext()) + { + String uuidAndFileName=(String) onlineFilesIterator.next(); + logger.debug("iterated uuidAndFileName: " + uuidAndFileName); + if ((uuidAndFileName != null) && (uuidAndFileName.indexOf('~') > 0)) + { + int separator=uuidAndFileName.indexOf('~'); + logger.debug("separator: " + separator); + String uuid=uuidAndFileName.substring(0,separator); + String fileName=uuidAndFileName.substring(separator+1); + logger.debug("using uuid: " + uuid); + logger.debug("using fileName: " + fileName); + qaService.persistFile(uuid,true, fileName,qa); + } + } + logger.debug("all online files data has been persisted"); + } + catch(Exception e) + { + logger.debug("error persisting offline files data: " + listUploadedOnlineFiles); + } + return qa; } Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/Attic/QAction.java,v diff -u -r1.9 -r1.10 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QAction.java 20 Jul 2005 07:21:46 -0000 1.9 +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QAction.java 22 Jul 2005 02:26:08 -0000 1.10 @@ -227,6 +227,7 @@ QaAuthoringForm qaAuthoringForm = (QaAuthoringForm) form; + /** * the status of define later is determined from the property inspector and * by now, we know whether it is on or off @@ -276,13 +277,19 @@ { userAction=SUBMIT_ALL_CONTENT; } + else if (qaAuthoringForm.getSubmitOfflineFile() != null) + { + userAction=SUBMIT_OFFLINE_FILE; + } + else if (qaAuthoringForm.getSubmitOnlineFile() != null) + { + userAction=SUBMIT_ONLINE_FILE; + } logger.debug("user action is: " + userAction); QaUtils.persistRichText(request); - //logger.debug("before calling persistUploadFileInformation"); - //QaUtils.persistUploadFileInformation(request); - /** add a new question to Map */ + /** add a new question to Map */ if (userAction.equalsIgnoreCase(ADD_NEW_QUESTION)) { request.getSession().setAttribute(EDITACTIVITY_EDITMODE, new Boolean(true)); @@ -300,6 +307,20 @@ qaAuthoringForm.resetUserAction(); return (mapping.findForward(LOAD_STARTER)); } + else if (userAction.equalsIgnoreCase(SUBMIT_OFFLINE_FILE)) + { + logger.debug("will submit offline file: " + userAction); + QaUtils.addFileToContentRepository(request, qaAuthoringForm, true); + logger.debug("offline file added to repository successfully."); + qaAuthoringForm.resetUserAction(); + } + else if (userAction.equalsIgnoreCase(SUBMIT_ONLINE_FILE)) + { + logger.debug("will submit online file: " + userAction); + QaUtils.addFileToContentRepository(request, qaAuthoringForm, false); + logger.debug("online file added to repository successfully."); + qaAuthoringForm.resetUserAction(); + } else if (userAction.equalsIgnoreCase(SUBMIT_TAB_DONE)) { logger.debug("user is done with this tab."); Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaStarterAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaStarterAction.java,v diff -u -r1.16 -r1.17 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaStarterAction.java 20 Jul 2005 07:21:46 -0000 1.16 +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaStarterAction.java 22 Jul 2005 02:26:08 -0000 1.17 @@ -68,6 +68,7 @@ package org.lamsfoundation.lams.tool.qa.web; import java.io.IOException; import java.util.Iterator; +import java.util.LinkedList; import java.util.Map; import java.util.TreeMap; @@ -101,17 +102,22 @@ * A Map data structure is used to present the UI. * It is fetched by subsequent Action classes to manipulate its content and gets parsed in the presentation layer for display. */ - protected Map mapQuestionContent= new TreeMap(new QaComparator()); - public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException, QaApplicationException { + + Map mapQuestionContent= new TreeMap(new QaComparator()); + LinkedList listUploadedOfflineFiles= new LinkedList(); + LinkedList listUploadedOnlineFiles= new LinkedList(); QaAuthoringForm qaAuthoringForm = (QaAuthoringForm) form; qaAuthoringForm.resetRadioBoxes(); request.getSession().setAttribute(IS_DEFINE_LATER,"false"); request.getSession().setAttribute(DISABLE_TOOL,""); - + request.getSession().setAttribute(LIST_UPLOADED_OFFLINE_FILES,listUploadedOfflineFiles); + request.getSession().setAttribute(LIST_UPLOADED_ONLINE_FILES,listUploadedOnlineFiles); + + /** * retrive the service */