Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaAppConstants.java =================================================================== diff -u -rde690d7969a8415be5f56e4e026c336b2855396c -r5137b070eb144e247a323c143293151ca039f1b6 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaAppConstants.java (.../QaAppConstants.java) (revision de690d7969a8415be5f56e4e026c336b2855396c) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaAppConstants.java (.../QaAppConstants.java) (revision 5137b070eb144e247a323c143293151ca039f1b6) @@ -115,6 +115,11 @@ public static final String LIST_UPLOADED_ONLINE_FILES ="listUploadedOnlineFiles"; public static final String LIST_UPLOADED_OFFLINE_FILENAMES ="listUploadedOfflineFileNames"; public static final String LIST_UPLOADED_ONLINE_FILENAMES ="listUploadedOnlineFileNames"; + public static final String LIST_UPLOADED_OFFLINE_FILES_UUID ="listUploadedOfflineFilesUuid"; + public static final String LIST_UPLOADED_OFFLINE_FILES_NAME ="listUploadedOfflineFilesName"; + public static final String LIST_UPLOADED_ONLINE_FILES_UUID ="listUploadedOnlineFilesUuid"; + public static final String LIST_UPLOADED_ONLINE_FILES_NAME ="listUploadedOnlineFilesName"; + public static final String POPULATED_UPLOADED_FILESDATA ="populateUploadedFilesData"; /** Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUploadedFile.java =================================================================== diff -u -r11b1827ff684ae7472bb77194d2c35a9dafc0bc1 -r5137b070eb144e247a323c143293151ca039f1b6 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUploadedFile.java (.../QaUploadedFile.java) (revision 11b1827ff684ae7472bb77194d2c35a9dafc0bc1) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUploadedFile.java (.../QaUploadedFile.java) (revision 5137b070eb144e247a323c143293151ca039f1b6) @@ -77,8 +77,6 @@ this.qaContent=qaContent; } - - public QaUploadedFile(String uuid, boolean fileOnline, String fileName, Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUtils.java =================================================================== diff -u -rde690d7969a8415be5f56e4e026c336b2855396c -r5137b070eb144e247a323c143293151ca039f1b6 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUtils.java (.../QaUtils.java) (revision de690d7969a8415be5f56e4e026c336b2855396c) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/QaUtils.java (.../QaUtils.java) (revision 5137b070eb144e247a323c143293151ca039f1b6) @@ -12,9 +12,13 @@ import java.security.Principal; import java.text.DateFormat; import java.util.Date; +import java.util.Iterator; import java.util.LinkedList; +import java.util.List; +import java.util.Map; import java.util.Random; import java.util.TimeZone; +import java.util.TreeMap; import javax.servlet.http.HttpServletRequest; @@ -409,18 +413,144 @@ { logger.debug("attempt addFileToContentRepository"); IQaService qaService =QaUtils.getToolService(request); + logger.debug("qaService: " + qaService); - LinkedList listUploadedOfflineFiles = (LinkedList) request.getSession().getAttribute(LIST_UPLOADED_OFFLINE_FILES); + Boolean populateUploadedFilesData=(Boolean)request.getSession().getAttribute(POPULATED_UPLOADED_FILESDATA); + logger.debug("boolean populateUploadedFilesData: " + populateUploadedFilesData); + + if ((populateUploadedFilesData !=null) && (populateUploadedFilesData.booleanValue())) + { + String toolContentId=(String)request.getSession().getAttribute(TOOL_CONTENT_ID); + logger.debug("toolContentId: " + toolContentId); + QaContent defaultQaContent=qaService.loadQa(new Long(toolContentId).longValue()); + logger.debug("defaultQaContent: " + defaultQaContent); + + populateUploadedFilesMetaDataFromDb(request, defaultQaContent); + logger.debug("done populateUploadedFilesMetaDataFromDb"); + } + + + List listUploadedOfflineFilesUuid = (List) request.getSession().getAttribute(LIST_UPLOADED_OFFLINE_FILES_UUID); + logger.debug("listUploadedOfflineFilesUuid: " + listUploadedOfflineFilesUuid); + + List listUploadedOfflineFilesName = (List) request.getSession().getAttribute(LIST_UPLOADED_OFFLINE_FILES_NAME); + logger.debug("listUploadedOfflineFilesName: " + listUploadedOfflineFilesName); + + List listUploadedOnlineFilesUuid = (List) request.getSession().getAttribute(LIST_UPLOADED_ONLINE_FILES_UUID); + logger.debug("listUploadedOnlineFilesUuid: " + listUploadedOnlineFilesUuid); + + List listUploadedOnlineFilesName = (List) request.getSession().getAttribute(LIST_UPLOADED_ONLINE_FILES_NAME); + logger.debug("listUploadedOnlineFilesName: " + listUploadedOnlineFilesName); + + List listUploadedOfflineFiles= (List) 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); - LinkedList listUploadedOfflineFileNames = (LinkedList) request.getSession().getAttribute(LIST_UPLOADED_OFFLINE_FILENAMES); + List listUploadedOfflineFileNames=(List)request.getSession().getAttribute(LIST_UPLOADED_OFFLINE_FILENAMES); + logger.debug("listUploadedOfflineFiles: " + listUploadedOfflineFiles); + + List listUploadedOnlineFileNames=(List)request.getSession().getAttribute(LIST_UPLOADED_ONLINE_FILENAMES); + logger.debug("listUploadedOnlineFileNames: " + listUploadedOnlineFileNames); + + + if (listUploadedOfflineFileNames == null) + listUploadedOfflineFileNames = new LinkedList(); logger.debug("listUploadedOfflineFileNames: " + listUploadedOfflineFileNames); - LinkedList listUploadedOnlineFileNames = (LinkedList) request.getSession().getAttribute(LIST_UPLOADED_ONLINE_FILENAMES); + + if (listUploadedOnlineFileNames == null) + listUploadedOnlineFileNames = new LinkedList(); logger.debug("listUploadedOnlineFileNames: " + listUploadedOnlineFileNames); + + Map allOfflineUuids= new TreeMap(new QaComparator()); + if ((listUploadedOfflineFilesUuid != null) && (listUploadedOfflineFilesName != null)) + { + logger.debug("listUploadedOfflineFilesUuid and listUploadedOfflineFilesName are not null"); + Iterator listUploadedOfflineFilesUuidIterator=listUploadedOfflineFilesUuid.iterator(); + int counter=1; + logger.debug("allOfflineUuids: " + allOfflineUuids); + while (listUploadedOfflineFilesUuidIterator.hasNext()) + { + String uuid = (String)listUploadedOfflineFilesUuidIterator.next(); + allOfflineUuids.put(new Integer(counter).toString(), uuid); + counter++; + } + logger.debug("allOfflineUuids: " + allOfflineUuids); + Iterator listUploadedOfflineFilesNameIterator=listUploadedOfflineFilesName.iterator(); + + counter=1; + while (listUploadedOfflineFilesNameIterator.hasNext()) + { + String fileName = (String)listUploadedOfflineFilesNameIterator.next(); + if (!offLineFileNameExists(request,fileName)) + { + logger.debug("reading with counter: " + new Integer(counter).toString()); + String uuid=(String)allOfflineUuids.get(new Integer(counter).toString()); + logger.debug("parsed uuid: " + uuid); + listUploadedOfflineFiles.add(uuid + '~'+ fileName); + counter++; + } + else + { + logger.debug("offline fileName exists: " +fileName); + } + } + logger.debug("final listUploadedOfflineFiles: " + listUploadedOfflineFiles); + request.getSession().setAttribute(LIST_UPLOADED_OFFLINE_FILES,listUploadedOfflineFiles); + } + /* + List listUploadedOfflineFileNames = (List) request.getSession().getAttribute(LIST_UPLOADED_OFFLINE_FILENAMES); + logger.debug("listUploadedOfflineFileNames: " + listUploadedOfflineFileNames); + List listUploadedOnlineFileNames = (List) request.getSession().getAttribute(LIST_UPLOADED_ONLINE_FILENAMES); + logger.debug("listUploadedOnlineFileNames: " + listUploadedOnlineFileNames); + */ + + + /**holds final online files list */ + List listUploadedOnlineFiles= (List) request.getSession().getAttribute(LIST_UPLOADED_ONLINE_FILES); + logger.debug("listUploadedOnlineFiles: " + listUploadedOnlineFiles); + + Map allOnlineUuids= new TreeMap(new QaComparator()); + if ((listUploadedOnlineFilesUuid != null) && (listUploadedOnlineFilesName != null)) + { + logger.debug("listUploadedOnlineFilesUuid and listUploadedOnlineFilesName are not null"); + Iterator listUploadedOnlineFilesUuidIterator=listUploadedOnlineFilesUuid.iterator(); + int counter=1; + logger.debug("allOnlineUuids: " + allOnlineUuids); + while (listUploadedOnlineFilesUuidIterator.hasNext()) + { + String uuid = (String)listUploadedOnlineFilesUuidIterator.next(); + allOnlineUuids.put(new Integer(counter).toString(), uuid); + counter++; + + } + logger.debug("allOnlineUuids: " + allOnlineUuids); + Iterator listUploadedOnlineFilesNameIterator=listUploadedOnlineFilesName.iterator(); + + counter=1; + while (listUploadedOnlineFilesNameIterator.hasNext()) + { + String fileName = (String)listUploadedOnlineFilesNameIterator.next(); + if (!onLineFileNameExists(request,fileName)) + { + logger.debug("reading with counter: " + new Integer(counter).toString()); + String uuid=(String)allOnlineUuids.get(new Integer(counter).toString()); + logger.debug("parsed uuid: " + uuid); + listUploadedOnlineFiles.add(uuid + '~'+ fileName); + counter++; + } + else + { + logger.debug("online fileName exists: " +fileName); + } + + + } + logger.debug("final listUploadedOnlineFiles: " + listUploadedOnlineFiles); + request.getSession().setAttribute(LIST_UPLOADED_ONLINE_FILES,listUploadedOnlineFiles); + } + + if (isOfflineFile) { /** read uploaded file informtion - offline file*/ @@ -442,10 +572,11 @@ logger.debug("repository returned offlineFileUuid nodeKey uuid: " + nodeKey.getUuid()); offlineFileUuid=nodeKey.getUuid().toString(); logger.debug("offline file added to contentRepository"); + logger.debug("using listUploadedOfflineFiles: " + listUploadedOfflineFiles); listUploadedOfflineFiles.add(offlineFileUuid + "~" + offlineFileName); logger.debug("listUploadedOfflineFiles updated: " + listUploadedOfflineFiles); request.getSession().setAttribute(LIST_UPLOADED_OFFLINE_FILES,listUploadedOfflineFiles); - + listUploadedOfflineFileNames.add(offlineFileName); request.getSession().setAttribute(LIST_UPLOADED_OFFLINE_FILENAMES,listUploadedOfflineFileNames); } @@ -509,5 +640,128 @@ //possibly give warning to user in request scope } } + + + if ((populateUploadedFilesData != null) && (populateUploadedFilesData.booleanValue())) + { + logger.debug("removing ofline + online file list attributes"); + request.getSession().removeAttribute(LIST_UPLOADED_OFFLINE_FILES_UUID); + request.getSession().removeAttribute(LIST_UPLOADED_OFFLINE_FILES_NAME); + request.getSession().removeAttribute(LIST_UPLOADED_ONLINE_FILES_UUID); + request.getSession().removeAttribute(LIST_UPLOADED_ONLINE_FILES_NAME); + } } + + static boolean offLineFileNameExists(HttpServletRequest request,String fileName) + { + logger.debug("attempt populateUploadedFilesData"); + IQaService qaService =QaUtils.getToolService(request); + logger.debug("qaService: " + qaService); + + String toolContentId=(String)request.getSession().getAttribute(TOOL_CONTENT_ID); + logger.debug("toolContentId: " + toolContentId); + QaContent defaultQaContent=qaService.loadQa(new Long(toolContentId).longValue()); + logger.debug("defaultQaContent: " + defaultQaContent); + + /** read the uploaded offline uuid + file name pair */ + List listOfflineFilesName=new LinkedList(); + listOfflineFilesName=qaService.retrieveQaUploadedOfflineFilesName(defaultQaContent); + logger.debug("listOfflineFilesName: " + listOfflineFilesName); + + Iterator listOfflineFilesNameIterator=listOfflineFilesName.iterator(); + while (listOfflineFilesNameIterator.hasNext()) + { + String currentFileName = (String)listOfflineFilesNameIterator.next(); + logger.debug("currentFileName: " + currentFileName); + if (currentFileName.equalsIgnoreCase(fileName)) + { + logger.debug("existing fileName: " + currentFileName); + return true; + } + } + return false; + } + + static boolean onLineFileNameExists(HttpServletRequest request,String fileName) + { + logger.debug("attempt populateUploadedFilesData"); + IQaService qaService =QaUtils.getToolService(request); + logger.debug("qaService: " + qaService); + + String toolContentId=(String)request.getSession().getAttribute(TOOL_CONTENT_ID); + logger.debug("toolContentId: " + toolContentId); + QaContent defaultQaContent=qaService.loadQa(new Long(toolContentId).longValue()); + logger.debug("defaultQaContent: " + defaultQaContent); + + /** read the uploaded offline uuid + file name pair */ + List listOnlineFilesName=new LinkedList(); + listOnlineFilesName=qaService.retrieveQaUploadedOnlineFilesName(defaultQaContent); + logger.debug("listOnlineFilesName: " + listOnlineFilesName); + + Iterator listOnlineFilesNameIterator=listOnlineFilesName.iterator(); + while (listOnlineFilesNameIterator.hasNext()) + { + String currentFileName = (String)listOnlineFilesNameIterator.next(); + logger.debug("currentFileName: " + currentFileName); + if (currentFileName.equalsIgnoreCase(fileName)) + { + logger.debug("existing fileName: " + currentFileName); + return true; + } + + } + return false; + } + + public static void populateUploadedFilesData(HttpServletRequest request, QaContent defaultQaContent) + { + populateUploadedFilesMetaDataFromDb(request, defaultQaContent); + request.getSession().setAttribute(POPULATED_UPLOADED_FILESDATA, new Boolean(true)); + } + + + public static void populateUploadedFilesMetaDataFromDb(HttpServletRequest request, QaContent defaultQaContent) + { + logger.debug("attempt populateUploadedFilesData"); + IQaService qaService =QaUtils.getToolService(request); + logger.debug("qaService: " + qaService); + + /** just for jsp purposes ** + /** read the uploaded offline uuid + file name pair */ + List listOfflineFilesUuid=new LinkedList(); + listOfflineFilesUuid=qaService.retrieveQaUploadedOfflineFilesUuid(defaultQaContent); + logger.debug("initial listOfflineFilesUuid: " + listOfflineFilesUuid); + request.getSession().removeAttribute(LIST_UPLOADED_OFFLINE_FILES_UUID); + request.getSession().setAttribute(LIST_UPLOADED_OFFLINE_FILES_UUID, listOfflineFilesUuid); + + /** read the uploaded online uuid + file name pair */ + List listOnlineFilesUuid=new LinkedList(); + listOnlineFilesUuid=qaService.retrieveQaUploadedOnlineFilesUuid(defaultQaContent); + logger.debug("initial listOnlineFilesUuid: " + listOnlineFilesUuid); + request.getSession().removeAttribute(LIST_UPLOADED_ONLINE_FILES_UUID); + request.getSession().setAttribute(LIST_UPLOADED_ONLINE_FILES_UUID, listOnlineFilesUuid); + + + /** read the uploaded offline uuid + file name pair */ + List listOfflineFilesName=new LinkedList(); + listOfflineFilesName=qaService.retrieveQaUploadedOfflineFilesName(defaultQaContent); + logger.debug("initial listOfflineFilesName: " + listOfflineFilesName); + request.getSession().removeAttribute(LIST_UPLOADED_OFFLINE_FILES_NAME); + request.getSession().setAttribute(LIST_UPLOADED_OFFLINE_FILES_NAME, listOfflineFilesName); + + + /** read the uploaded online uuid + file name pair */ + List listOnlineFilesName=new LinkedList(); + listOnlineFilesName=qaService.retrieveQaUploadedOnlineFilesName(defaultQaContent); + logger.debug("initial listOnlineFilesName: " + listOnlineFilesName); + request.getSession().removeAttribute(LIST_UPLOADED_ONLINE_FILES_NAME); + request.getSession().setAttribute(LIST_UPLOADED_ONLINE_FILES_NAME, listOnlineFilesName); + + + request.getSession().removeAttribute(LIST_UPLOADED_OFFLINE_FILENAMES); + request.getSession().removeAttribute(LIST_UPLOADED_ONLINE_FILENAMES); + request.getSession().setAttribute(LIST_UPLOADED_OFFLINE_FILENAMES, listOfflineFilesName); + request.getSession().setAttribute(LIST_UPLOADED_ONLINE_FILENAMES, listOnlineFilesName); + } + } Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaUploadedFileDAO.java =================================================================== diff -u -r11b1827ff684ae7472bb77194d2c35a9dafc0bc1 -r5137b070eb144e247a323c143293151ca039f1b6 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaUploadedFileDAO.java (.../IQaUploadedFileDAO.java) (revision 11b1827ff684ae7472bb77194d2c35a9dafc0bc1) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaUploadedFileDAO.java (.../IQaUploadedFileDAO.java) (revision 5137b070eb144e247a323c143293151ca039f1b6) @@ -20,6 +20,9 @@ */ package org.lamsfoundation.lams.tool.qa.dao; +import java.util.List; + +import org.lamsfoundation.lams.tool.qa.QaContent; import org.lamsfoundation.lams.tool.qa.QaUploadedFile; /** @@ -43,5 +46,17 @@ public void deleteUploadFile(QaUploadedFile qaUploadedFile); + public List retrieveQaUploadedFiles(QaContent qa, boolean fileOnline); + + public List retrieveQaUploadedOfflineFilesUuid(QaContent qa); + + public List retrieveQaUploadedOnlineFilesUuid(QaContent qa); + + public List retrieveQaUploadedOfflineFilesName(QaContent qa); + + public List retrieveQaUploadedOnlineFilesName(QaContent qa); + + public void cleanUploadedFilesMetaData(); + public void flush(); } Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaQueContentDAO.java =================================================================== diff -u -r5ba75a338c76b23778bf80ab835209d38e2316cb -r5137b070eb144e247a323c143293151ca039f1b6 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaQueContentDAO.java (.../QaQueContentDAO.java) (revision 5ba75a338c76b23778bf80ab835209d38e2316cb) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaQueContentDAO.java (.../QaQueContentDAO.java) (revision 5137b070eb144e247a323c143293151ca039f1b6) @@ -33,7 +33,6 @@ private static final String LOAD_QUESTION_CONTENT_BY_CONTENT_ID = "from qaQueContent in class QaQueContent where qaQueContent.qaContentId=:qaContentId"; private static final String GET_QUESTION_IDS_FOR_CONTENT = "select qaQueContent.qaQueContentId from QaQueContent qaQueContent where qaQueContent.qaContentId = :qa"; - public QaQueContent getToolDefaultQuestionContent(final long qaContentId) { return (QaQueContent) getHibernateTemplate().execute(new HibernateCallback() Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaUploadedFileDAO.java =================================================================== diff -u -r11b1827ff684ae7472bb77194d2c35a9dafc0bc1 -r5137b070eb144e247a323c143293151ca039f1b6 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaUploadedFileDAO.java (.../QaUploadedFileDAO.java) (revision 11b1827ff684ae7472bb77194d2c35a9dafc0bc1) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaUploadedFileDAO.java (.../QaUploadedFileDAO.java) (revision 5137b070eb144e247a323c143293151ca039f1b6) @@ -6,9 +6,12 @@ */ package org.lamsfoundation.lams.tool.qa.dao.hibernate; +import java.util.List; + import net.sf.hibernate.Hibernate; import org.apache.log4j.Logger; +import org.lamsfoundation.lams.tool.qa.QaContent; import org.lamsfoundation.lams.tool.qa.QaUploadedFile; import org.lamsfoundation.lams.tool.qa.dao.IQaUploadedFileDAO; import org.springframework.orm.hibernate.support.HibernateDaoSupport; @@ -24,6 +27,15 @@ public class QaUploadedFileDAO extends HibernateDaoSupport implements IQaUploadedFileDAO { static Logger logger = Logger.getLogger(QaUploadedFileDAO.class.getName()); + private static final String GET_ONLINE_FILENAMES_FOR_CONTENT = "select qaUploadedFile.fileName from QaUploadedFile qaUploadedFile where qaUploadedFile.qaContentId = :qa and qaUploadedFile.fileOnline=1"; + private static final String GET_OFFLINE_FILENAMES_FOR_CONTENT = "select qaUploadedFile.fileName from QaUploadedFile qaUploadedFile where qaUploadedFile.qaContentId = :qa and qaUploadedFile.fileOnline=0"; + + private static final String GET_ONLINE_FILES_UUID = "select qaUploadedFile.uuid from QaUploadedFile qaUploadedFile where qaUploadedFile.qaContentId = :qa and qaUploadedFile.fileOnline=1"; + private static final String GET_ONLINE_FILES_NAME ="select qaUploadedFile.fileName from QaUploadedFile qaUploadedFile where qaUploadedFile.qaContentId = :qa and qaUploadedFile.fileOnline=1 order by qaUploadedFile.uuid"; + + private static final String GET_OFFLINE_FILES_UUID = "select qaUploadedFile.uuid from QaUploadedFile qaUploadedFile where qaUploadedFile.qaContentId = :qa and qaUploadedFile.fileOnline=0"; + private static final String GET_OFFLINE_FILES_NAME ="select qaUploadedFile.fileName from QaUploadedFile qaUploadedFile where qaUploadedFile.qaContentId = :qa and qaUploadedFile.fileOnline=0 order by qaUploadedFile.uuid"; + public QaUploadedFile getUploadedFileById(long submissionId) { return (QaUploadedFile) this.getHibernateTemplate() @@ -63,13 +75,86 @@ } + public void cleanUploadedFilesMetaData() + { + String query = "from uploadedFile in class org.lamsfoundation.lams.tool.qa.QaUploadedFile"; + this.getHibernateTemplate().delete(query); + } + public void removeUploadFile(Long submissionId) { String query = "from uploadedFile in class org.lamsfoundation.lams.tool.qa.QaUploadedFile" + " where uploadedFile.submissionId = ?"; this.getHibernateTemplate().delete(query,submissionId,Hibernate.LONG); } + public List retrieveQaUploadedFiles(QaContent qa, boolean fileOnline) + { + List listFilenames=null; + + if (fileOnline) + { + listFilenames=(getHibernateTemplate().findByNamedParam(GET_ONLINE_FILENAMES_FOR_CONTENT, + "qa", + qa)); + } + else + { + listFilenames=(getHibernateTemplate().findByNamedParam(GET_OFFLINE_FILENAMES_FOR_CONTENT, + "qa", + qa)); + } + return listFilenames; + } + + + public List retrieveQaUploadedOfflineFilesUuid(QaContent qa) + { + List listFilesUuid=null; + + listFilesUuid=(getHibernateTemplate().findByNamedParam(GET_OFFLINE_FILES_UUID, + "qa", + qa)); + + return listFilesUuid; + } + + public List retrieveQaUploadedOnlineFilesUuid(QaContent qa) + { + List listFilesUuid=null; + + listFilesUuid=(getHibernateTemplate().findByNamedParam(GET_ONLINE_FILES_UUID, + "qa", + qa)); + + return listFilesUuid; + } + + + public List retrieveQaUploadedOfflineFilesName(QaContent qa) + { + List listFilesUuid=null; + + listFilesUuid=(getHibernateTemplate().findByNamedParam(GET_OFFLINE_FILES_NAME, + "qa", + qa)); + + return listFilesUuid; + } + + public List retrieveQaUploadedOnlineFilesName(QaContent qa) + { + List listFilesUuid=null; + + listFilesUuid=(getHibernateTemplate().findByNamedParam(GET_ONLINE_FILES_NAME, + "qa", + qa)); + + return listFilesUuid; + } + + + public void deleteUploadFile(QaUploadedFile qaUploadedFile) { this.getHibernateTemplate().delete(qaUploadedFile); Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/IQaService.java =================================================================== diff -u -r11b1827ff684ae7472bb77194d2c35a9dafc0bc1 -r5137b070eb144e247a323c143293151ca039f1b6 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/IQaService.java (.../IQaService.java) (revision 11b1827ff684ae7472bb77194d2c35a9dafc0bc1) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/IQaService.java (.../IQaService.java) (revision 5137b070eb144e247a323c143293151ca039f1b6) @@ -21,7 +21,6 @@ package org.lamsfoundation.lams.tool.qa.service; import java.io.InputStream; -import java.util.Date; import java.util.List; import org.lamsfoundation.lams.contentrepository.ITicket; @@ -213,5 +212,18 @@ /** repository access related methods till here */ public void persistFile(String uuid, boolean isOnlineFile, String fileName, QaContent qaContent) throws QaApplicationException; + + public List retrieveQaUploadedFiles(QaContent qa, boolean fileOnline) throws QaApplicationException; + + public List retrieveQaUploadedOfflineFilesUuid(QaContent qa); + + public List retrieveQaUploadedOnlineFilesUuid(QaContent qa); + + public List retrieveQaUploadedOfflineFilesName(QaContent qa); + + public List retrieveQaUploadedOnlineFilesName(QaContent qa); + + public void cleanUploadedFilesMetaData() throws QaApplicationException; + } Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java =================================================================== diff -u -r11b1827ff684ae7472bb77194d2c35a9dafc0bc1 -r5137b070eb144e247a323c143293151ca039f1b6 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java (.../QaServicePOJO.java) (revision 11b1827ff684ae7472bb77194d2c35a9dafc0bc1) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java (.../QaServicePOJO.java) (revision 5137b070eb144e247a323c143293151ca039f1b6) @@ -535,8 +535,80 @@ } } + public List retrieveQaUploadedFiles(QaContent qa, boolean fileOnline) throws QaApplicationException + { + try + { + return qaUploadedFileDAO.retrieveQaUploadedFiles(qa, fileOnline); + } + catch (DataAccessException e) + { + throw new QaApplicationException("Exception occured when lams is loading qa uploaded files: " + + e.getMessage(), + e); + } + } + public List retrieveQaUploadedOfflineFilesUuid(QaContent qa) + { + try + { + return qaUploadedFileDAO.retrieveQaUploadedOfflineFilesUuid(qa); + } + catch (DataAccessException e) + { + throw new QaApplicationException("Exception occured when lams is loading qa uploaded files: offline + uuids " + + e.getMessage(), + e); + } + } + + public List retrieveQaUploadedOnlineFilesUuid(QaContent qa) + { + try + { + return qaUploadedFileDAO.retrieveQaUploadedOnlineFilesUuid(qa); + } + catch (DataAccessException e) + { + throw new QaApplicationException("Exception occured when lams is loading qa uploaded files: online + uuids " + + e.getMessage(), + e); + } + } + + public List retrieveQaUploadedOfflineFilesName(QaContent qa) + { + try + { + return qaUploadedFileDAO.retrieveQaUploadedOfflineFilesName(qa); + } + catch (DataAccessException e) + { + throw new QaApplicationException("Exception occured when lams is loading qa uploaded files: offline + fileNames " + + e.getMessage(), + e); + } + } + + public List retrieveQaUploadedOnlineFilesName(QaContent qa) + { + try + { + return qaUploadedFileDAO.retrieveQaUploadedOnlineFilesName(qa); + } + catch (DataAccessException e) + { + throw new QaApplicationException("Exception occured when lams is loading qa uploaded files: online + fileNames " + + e.getMessage(), + e); + } + + } + + + public int countTotalNumberOfUserResponsed(QaContent qa) throws QaApplicationException { try @@ -1428,6 +1500,9 @@ } } + /** + * adds a new entry to the uploaded files table + */ public void persistFile(String uuid, boolean isOnlineFile, String fileName, QaContent qaContent) throws QaApplicationException { logger.debug("attempt persisting file to the db: " + uuid + " " + isOnlineFile + " " + fileName + " " + qaContent); QaUploadedFile qaUploadedFile= new QaUploadedFile(uuid, isOnlineFile, fileName, qaContent); @@ -1437,6 +1512,16 @@ } /** + * removes all the entries in the uploaded files table + */ + public void cleanUploadedFilesMetaData() throws QaApplicationException { + logger.debug("attempt cleaning up uploaded file meta data table from the db"); + qaUploadedFileDAO.cleanUploadedFilesMetaData(); + logger.debug("files meta data has been cleaned up"); + } + + + /** * @return Returns the logger. */ public static Logger getLogger() { Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/AuthoringUtil.java =================================================================== diff -u -rde690d7969a8415be5f56e4e026c336b2855396c -r5137b070eb144e247a323c143293151ca039f1b6 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/AuthoringUtil.java (.../AuthoringUtil.java) (revision de690d7969a8415be5f56e4e026c336b2855396c) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/AuthoringUtil.java (.../AuthoringUtil.java) (revision 5137b070eb144e247a323c143293151ca039f1b6) @@ -383,6 +383,10 @@ qaService.createQa(qa); logger.debug("qa created with content id: " + toolContentId); + logger.debug("attempt cleaning files meta data from the db"); + qaService.cleanUploadedFilesMetaData(); + logger.debug("cleaned up files meta data from the db"); + 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); Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QAction.java =================================================================== diff -u -rde690d7969a8415be5f56e4e026c336b2855396c -r5137b070eb144e247a323c143293151ca039f1b6 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QAction.java (.../QAction.java) (revision de690d7969a8415be5f56e4e026c336b2855396c) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QAction.java (.../QAction.java) (revision 5137b070eb144e247a323c143293151ca039f1b6) @@ -21,7 +21,6 @@ package org.lamsfoundation.lams.tool.qa.web; import java.io.IOException; -import java.io.InputStream; import java.util.Date; import java.util.Map; @@ -37,7 +36,6 @@ import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import org.apache.struts.actions.DispatchAction; -import org.apache.struts.upload.FormFile; import org.lamsfoundation.lams.tool.qa.QaAppConstants; import org.lamsfoundation.lams.tool.qa.QaContent; import org.lamsfoundation.lams.tool.qa.QaSession; @@ -227,6 +225,7 @@ QaAuthoringForm qaAuthoringForm = (QaAuthoringForm) form; + IQaService qaService =QaUtils.getToolService(request); /** * the status of define later is determined from the property inspector and @@ -399,8 +398,7 @@ /** * look after defineLater flag */ - IQaService qaService =QaUtils.getToolService(request); - Long monitoredContentId=(Long)request.getSession().getAttribute(MONITORED_CONTENT_ID); + Long monitoredContentId=(Long)request.getSession().getAttribute(MONITORED_CONTENT_ID); logger.debug("MONITORED_CONTENT_ID: " + monitoredContentId); if (monitoredContentId != null) { Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaStarterAction.java =================================================================== diff -u -rde690d7969a8415be5f56e4e026c336b2855396c -r5137b070eb144e247a323c143293151ca039f1b6 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaStarterAction.java (.../QaStarterAction.java) (revision de690d7969a8415be5f56e4e026c336b2855396c) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/web/QaStarterAction.java (.../QaStarterAction.java) (revision 5137b070eb144e247a323c143293151ca039f1b6) @@ -69,6 +69,7 @@ import java.io.IOException; import java.util.Iterator; import java.util.LinkedList; +import java.util.List; import java.util.Map; import java.util.TreeMap; @@ -107,6 +108,7 @@ Map mapQuestionContent= new TreeMap(new QaComparator()); /** these two are for repository access */ + /**holds the final offline files list */ LinkedList listUploadedOfflineFiles= new LinkedList(); LinkedList listUploadedOnlineFiles= new LinkedList(); @@ -125,6 +127,7 @@ request.getSession().setAttribute(LIST_UPLOADED_OFFLINE_FILENAMES,listUploadedOfflineFileNames); request.getSession().setAttribute(LIST_UPLOADED_ONLINE_FILENAMES,listUploadedOnlineFileNames); + /** * retrive the service */ @@ -351,8 +354,11 @@ mapQuestionContent.put(INITIAL_QUESTION_COUNT,request.getSession().getAttribute(DEFAULT_QUESTION_CONTENT)); logger.debug("Map initialized with default contentid to: " + mapQuestionContent); - /** retrieve uploaded offline file names */ + /** set uploaded offline file names to empty list*/ + List listOfflineFileNames=new LinkedList(); + /** set uploaded online file names to empty list*/ + List listOnlineFileNames=new LinkedList(); } else @@ -423,7 +429,10 @@ logger.debug("IS_QUESTIONS_SEQUENCED_MONITORING: " + request.getSession().getAttribute(IS_QUESTIONS_SEQUENCED_MONITORING)); logger.debug("IS_DEFINE_LATER: " + request.getSession().getAttribute(IS_DEFINE_LATER)); - /** + QaUtils.populateUploadedFilesData(request, defaultQaContent); + logger.debug("populated UploadedFilesData"); + + /** * get the existing question content */ logger.debug("setting existing content data from the db"); Index: lams_tool_laqa/web/WEB-INF/tiles/tiles-defs.xml =================================================================== diff -u -rcae190bef6a3e4f857bdfaff17eb3a0ae680cb72 -r5137b070eb144e247a323c143293151ca039f1b6 --- lams_tool_laqa/web/WEB-INF/tiles/tiles-defs.xml (.../tiles-defs.xml) (revision cae190bef6a3e4f857bdfaff17eb3a0ae680cb72) +++ lams_tool_laqa/web/WEB-INF/tiles/tiles-defs.xml (.../tiles-defs.xml) (revision 5137b070eb144e247a323c143293151ca039f1b6) @@ -19,9 +19,6 @@ http://www.gnu.org/licenses/gpl.txt --> -