Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McResources.properties
===================================================================
diff -u -rb7285ac977222460053f4293718569503f17fe1e -rf6991bff0a6a158b9432f338079cc3fc650dd389
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McResources.properties (.../McResources.properties) (revision b7285ac977222460053f4293718569503f17fe1e)
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McResources.properties (.../McResources.properties) (revision f6991bff0a6a158b9432f338079cc3fc650dd389)
@@ -120,6 +120,7 @@
error.weights.total.invalid =Please correct this: The total weight must equal 100.
error.file.notPersisted =An error occurred: The file is not viewable yet. Please save all the content first and check back.
error.learningUser.notAvailable =Tool Activity Error! Can't continue. Tool Activity expects a user id.
+error.fileName.empty =Please correct this: Under "Instructions", the file(name) to upload can not be empty.
submit.successful =The content has been created successfully.
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/IMcUploadedFileDAO.java
===================================================================
diff -u -ra94de5ff6e0fa1bf65e068d94c81ccdd232c06df -rf6991bff0a6a158b9432f338079cc3fc650dd389
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/IMcUploadedFileDAO.java (.../IMcUploadedFileDAO.java) (revision a94de5ff6e0fa1bf65e068d94c81ccdd232c06df)
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/IMcUploadedFileDAO.java (.../IMcUploadedFileDAO.java) (revision f6991bff0a6a158b9432f338079cc3fc650dd389)
@@ -166,8 +166,21 @@
* @return List
*/
+
+ public void removeOffLineFile(String filename, Long mcContentId);
+
+ public void removeOnLineFile(String filename, Long mcContentId);
+
+ public boolean isOffLineFilePersisted(String filename);
+
+ public boolean isOnLineFilePersisted(String filename);
+
public boolean isUuidPersisted(String uuid);
+ public List getOnlineFilesMetaData(Long mcContentId);
+
+ public List getOfflineFilesMetaData(Long mcContentId);
+
public void cleanUploadedFilesMetaData();
public void flush();
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McUploadedFileDAO.java
===================================================================
diff -u -ra94de5ff6e0fa1bf65e068d94c81ccdd232c06df -rf6991bff0a6a158b9432f338079cc3fc650dd389
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McUploadedFileDAO.java (.../McUploadedFileDAO.java) (revision a94de5ff6e0fa1bf65e068d94c81ccdd232c06df)
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McUploadedFileDAO.java (.../McUploadedFileDAO.java) (revision f6991bff0a6a158b9432f338079cc3fc650dd389)
@@ -47,7 +47,7 @@
private static final String GET_ONLINE_FILES_UUID = "select mcUploadedFile.uuid from McUploadedFile mcUploadedFile where mcUploadedFile.mcContentId = :mcContentId and mcUploadedFile.fileOnline=1";
private static final String GET_ONLINE_FILES_NAME ="select mcUploadedFile.filename from McUploadedFile mcUploadedFile where mcUploadedFile.mcContentId = :mcContentId and mcUploadedFile.fileOnline=1 order by mcUploadedFile.uuid";
- private static final String GET_OFFLINE_FILES_UUID = "select mcUploadedFile.uuid from McUploadedFile mcUploadedFile where mcUploadedFile.mcContentId = :mcContentId and mcUploadedFile.fileOnline=0";
+ private static final String GET_OFFLINE_FILES_UUID = "select mcUploadedFile.uuid from McUploadedFile mcUploadedFile where mcUploadedFile.mcContentId = :mcContentId and mcUploadedFile.fileOnline=0";
private static final String GET_OFFLINE_FILES_NAME ="select mcUploadedFile.filename from McUploadedFile mcUploadedFile where mcUploadedFile.mcContentId = :mcContentId and mcUploadedFile.fileOnline=0 order by mcUploadedFile.uuid";
private static final String GET_FILES_UUID ="select mcUploadedFile.uuid from McUploadedFile mcUploadedFile where mcUploadedFile.filename=:filename";
@@ -57,8 +57,16 @@
private static final String FIND_ALL_UPLOADED_FILE_DATA = "from mcUploadedFile in class McUploadedFile";
private static final String IS_UUID_PERSISTED ="select mcUploadedFile.uuid from McUploadedFile mcUploadedFile where mcUploadedFile.uuid=:uuid";
-
+ private static final String GET_ONLINE_FILES_METADATA = "from mcUploadedFile in class McUploadedFile where mcUploadedFile.mcContentId = :mcContentId and mcUploadedFile.fileOnline=1";
+
+ private static final String GET_OFFLINE_FILES_METADATA = "from mcUploadedFile in class McUploadedFile where mcUploadedFile.mcContentId = :mcContentId and mcUploadedFile.fileOnline=0";
+
+ private static final String IS_OFFLINE_FILENAME_PERSISTED ="select mcUploadedFile from McUploadedFile mcUploadedFile where mcUploadedFile.mcContentId = :mcContentId and mcUploadedFile.filename=:filename and mcUploadedFile.fileOnline=0";
+
+ private static final String IS_ONLINE_FILENAME_PERSISTED ="select mcUploadedFile from McUploadedFile mcUploadedFile where mcUploadedFile.mcContentId = :mcContentId and mcUploadedFile.filename=:filename and mcUploadedFile.fileOnline=1";
+
+
public McUploadedFile getUploadedFileById(long submissionId)
{
return (McUploadedFile) this.getHibernateTemplate()
@@ -104,12 +112,34 @@
}
- public void cleanUploadedFilesMetaData()
+ public void removeOffLineFile(String filename, Long mcContentId)
{
HibernateTemplate templ = this.getHibernateTemplate();
- List list = getSession().createQuery(FIND_ALL_UPLOADED_FILE_DATA)
+ List list = getSession().createQuery(IS_OFFLINE_FILENAME_PERSISTED)
+ .setString("filename", filename)
+ .setLong("mcContentId", mcContentId.longValue())
.list();
+
+ if(list != null && list.size() > 0){
+ Iterator listIterator=list.iterator();
+ while (listIterator.hasNext())
+ {
+ McUploadedFile mcFile=(McUploadedFile)listIterator.next();
+ this.getSession().setFlushMode(FlushMode.AUTO);
+ templ.delete(mcFile);
+ templ.flush();
+ }
+ }
+ }
+ public void removeOnLineFile(String filename, Long mcContentId)
+ {
+ HibernateTemplate templ = this.getHibernateTemplate();
+ List list = getSession().createQuery(IS_ONLINE_FILENAME_PERSISTED)
+ .setString("filename", filename)
+ .setLong("mcContentId", mcContentId.longValue())
+ .list();
+
if(list != null && list.size() > 0){
Iterator listIterator=list.iterator();
while (listIterator.hasNext())
@@ -120,9 +150,60 @@
templ.flush();
}
}
+ }
+
+ public boolean isOffLineFilePersisted(String filename)
+ {
+ HibernateTemplate templ = this.getHibernateTemplate();
+ List list = getSession().createQuery(IS_OFFLINE_FILENAME_PERSISTED)
+ .setString("filename", filename)
+ .list();
+
+ if (list != null && list.size() > 0)
+ {
+ return true;
+ }
+ return false;
}
+
+
+ public boolean isOnLineFilePersisted(String filename)
+ {
+ HibernateTemplate templ = this.getHibernateTemplate();
+ List list = getSession().createQuery(IS_ONLINE_FILENAME_PERSISTED)
+ .setString("filename", filename)
+ .list();
+
+ if (list != null && list.size() > 0)
+ {
+ return true;
+ }
+ return false;
+ }
+
+ public List getOnlineFilesMetaData(Long mcContentId)
+ {
+ HibernateTemplate templ = this.getHibernateTemplate();
+ List list = getSession().createQuery(GET_ONLINE_FILES_METADATA)
+ .setLong("mcContentId", mcContentId.longValue())
+ .list();
+
+ return list;
+ }
+
+ public List getOfflineFilesMetaData(Long mcContentId)
+ {
+ HibernateTemplate templ = this.getHibernateTemplate();
+ List list = getSession().createQuery(GET_OFFLINE_FILES_METADATA)
+ .setLong("mcContentId", mcContentId.longValue())
+ .list();
+
+ return list;
+ }
+
+
public boolean isUuidPersisted(String uuid)
{
HibernateTemplate templ = this.getHibernateTemplate();
@@ -137,6 +218,26 @@
return false;
}
+
+ public void cleanUploadedFilesMetaData()
+ {
+ HibernateTemplate templ = this.getHibernateTemplate();
+ List list = getSession().createQuery(FIND_ALL_UPLOADED_FILE_DATA)
+ .list();
+
+ if(list != null && list.size() > 0){
+ Iterator listIterator=list.iterator();
+ while (listIterator.hasNext())
+ {
+ McUploadedFile mcFile=(McUploadedFile)listIterator.next();
+ this.getSession().setFlushMode(FlushMode.AUTO);
+ templ.delete(mcFile);
+ templ.flush();
+ }
+ }
+ }
+
+
public String getFileUuid(String filename)
{
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java
===================================================================
diff -u -ra94de5ff6e0fa1bf65e068d94c81ccdd232c06df -rf6991bff0a6a158b9432f338079cc3fc650dd389
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java (.../IMcService.java) (revision a94de5ff6e0fa1bf65e068d94c81ccdd232c06df)
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java (.../IMcService.java) (revision f6991bff0a6a158b9432f338079cc3fc650dd389)
@@ -227,6 +227,18 @@
public NodeKey uploadFile(InputStream istream, String filename, String contentType, String fileType) throws RepositoryCheckedException;
+ public void removeOffLineFile(String filename, Long mcContentId) throws McApplicationException;
+
+ public void removeOnLineFile(String filename, Long mcContentId) throws McApplicationException;
+
+ public boolean isOffLineFilePersisted(String filename) throws McApplicationException;
+
+ public boolean isOnLineFilePersisted(String filename) throws McApplicationException;
+
public boolean isUuidPersisted(String uuid) throws McApplicationException;
+
+ public List getOnlineFilesMetaData(Long mcContentId) throws McApplicationException;
+
+ public List getOfflineFilesMetaData(Long mcContentId) throws McApplicationException;
}
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java
===================================================================
diff -u -ra94de5ff6e0fa1bf65e068d94c81ccdd232c06df -rf6991bff0a6a158b9432f338079cc3fc650dd389
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision a94de5ff6e0fa1bf65e068d94c81ccdd232c06df)
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision f6991bff0a6a158b9432f338079cc3fc650dd389)
@@ -1752,8 +1752,63 @@
}
+ public void removeOffLineFile(String filename, Long mcContentId) throws McApplicationException
+ {
+ try
+ {
+ mcUploadedFileDAO.removeOffLineFile(filename, mcContentId);
+ }
+ catch (DataAccessException e)
+ {
+ throw new McApplicationException("Exception occured when lams is removing offline filename"
+ + e.getMessage(),
+ e);
+ }
+ }
+
+ public void removeOnLineFile(String filename, Long mcContentId) throws McApplicationException
+ {
+ try
+ {
+ mcUploadedFileDAO.removeOnLineFile(filename, mcContentId);
+ }
+ catch (DataAccessException e)
+ {
+ throw new McApplicationException("Exception occured when lams is removing online filename"
+ + e.getMessage(),
+ e);
+ }
+ }
+ public boolean isOffLineFilePersisted(String filename) throws McApplicationException
+ {
+ try
+ {
+ return mcUploadedFileDAO.isOffLineFilePersisted(filename);
+ }
+ catch (DataAccessException e)
+ {
+ throw new McApplicationException("Exception occured when lams is checking if offline filename is persisted: "
+ + e.getMessage(),
+ e);
+ }
+ }
+
+ public boolean isOnLineFilePersisted(String filename) throws McApplicationException
+ {
+ try
+ {
+ return mcUploadedFileDAO.isOnLineFilePersisted(filename);
+ }
+ catch (DataAccessException e)
+ {
+ throw new McApplicationException("Exception occured when lams is checking if online filename is persisted: "
+ + e.getMessage(),
+ e);
+ }
+ }
+
public String getFileUuid(String filename) throws McApplicationException
{
try
@@ -1769,6 +1824,17 @@
}
+ public List getOnlineFilesMetaData(Long mcContentId) throws McApplicationException
+ {
+ return mcUploadedFileDAO.getOnlineFilesMetaData(mcContentId);
+ }
+
+
+ public List getOfflineFilesMetaData(Long mcContentId) throws McApplicationException
+ {
+ return mcUploadedFileDAO.getOfflineFilesMetaData(mcContentId);
+ }
+
public boolean isUuidPersisted(String uuid) throws McApplicationException
{
return mcUploadedFileDAO.isUuidPersisted(uuid);
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/AuthoringUtil.java
===================================================================
diff -u -ra94de5ff6e0fa1bf65e068d94c81ccdd232c06df -rf6991bff0a6a158b9432f338079cc3fc650dd389
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/AuthoringUtil.java (.../AuthoringUtil.java) (revision a94de5ff6e0fa1bf65e068d94c81ccdd232c06df)
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/AuthoringUtil.java (.../AuthoringUtil.java) (revision f6991bff0a6a158b9432f338079cc3fc650dd389)
@@ -9,6 +9,7 @@
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
@@ -29,6 +30,7 @@
import org.lamsfoundation.lams.tool.mc.McContent;
import org.lamsfoundation.lams.tool.mc.McOptsContent;
import org.lamsfoundation.lams.tool.mc.McQueContent;
+import org.lamsfoundation.lams.tool.mc.McUploadedFile;
import org.lamsfoundation.lams.tool.mc.McUtils;
import org.lamsfoundation.lams.tool.mc.service.IMcService;
import org.lamsfoundation.lams.usermanagement.dto.UserDTO;
@@ -1562,11 +1564,14 @@
FormFile theOfflineFile = mcAuthoringForm.getTheOfflineFile();
logger.debug("retrieved theOfflineFile: " + theOfflineFile);
-
try
{
stream = theOfflineFile.getInputStream();
fileName=theOfflineFile.getFileName();
+ if (fileName.length() == 0)
+ {
+ return null;
+ }
logger.debug("retrieved fileName: " + fileName);
fileProperty="OFFLINE";
@@ -1580,11 +1585,20 @@
logger.debug("io exception occured in accessing the repository server for the offline file : " + e.getMessage());
}
- List listUploadedOfflineFileNames=(List)request.getSession().getAttribute(LIST_UPLOADED_OFFLINE_FILENAMES);
- logger.debug("listUploadedOfflineFileNames:" + listUploadedOfflineFileNames);
- listUploadedOfflineFileNames.add(fileName);
- logger.debug("listUploadedOfflineFileNames after add :" + listUploadedOfflineFileNames);
- request.getSession().setAttribute(LIST_UPLOADED_OFFLINE_FILENAMES,listUploadedOfflineFileNames);
+ if (fileName.length() > 0)
+ {
+ List listUploadedOfflineFileNames=(List)request.getSession().getAttribute(LIST_UPLOADED_OFFLINE_FILENAMES);
+ logger.debug("listUploadedOfflineFileNames:" + listUploadedOfflineFileNames);
+ int index=findFileNameIndex(listUploadedOfflineFileNames, fileName);
+ logger.debug("index:" + index);
+ if (index == 0)
+ {
+ listUploadedOfflineFileNames.add(fileName);
+ logger.debug("listUploadedOfflineFileNames after add :" + listUploadedOfflineFileNames);
+ request.getSession().setAttribute(LIST_UPLOADED_OFFLINE_FILENAMES,listUploadedOfflineFileNames);
+ }
+ }
+
}
else
{
@@ -1595,6 +1609,12 @@
{
stream = theOnlineFile.getInputStream();
fileName=theOnlineFile.getFileName();
+
+ if (fileName.length() == 0)
+ {
+ return null;
+ }
+
logger.debug("retrieved fileName: " + fileName);
fileProperty="ONLINE";
@@ -1607,11 +1627,20 @@
{
logger.debug("io exception occured in accessing the repository server for the online file : " + e.getMessage());
}
- List listUploadedOnlineFileNames=(List)request.getSession().getAttribute(LIST_UPLOADED_ONLINE_FILENAMES);
- logger.debug("listUploadedOnlineFileNames:" + listUploadedOnlineFileNames);
- listUploadedOnlineFileNames.add(fileName);
- logger.debug("listUploadedOnlineFileNames after add :" + listUploadedOnlineFileNames);
- request.getSession().setAttribute(LIST_UPLOADED_ONLINE_FILENAMES,listUploadedOnlineFileNames);
+
+ if (fileName.length() > 0)
+ {
+ List listUploadedOnlineFileNames=(List)request.getSession().getAttribute(LIST_UPLOADED_ONLINE_FILENAMES);
+ logger.debug("listUploadedOnlineFileNames:" + listUploadedOnlineFileNames);
+ int index=findFileNameIndex(listUploadedOnlineFileNames, fileName);
+ logger.debug("index:" + index);
+ if (index == 0)
+ {
+ listUploadedOnlineFileNames.add(fileName);
+ logger.debug("listUploadedOnlineFileNames after add :" + listUploadedOnlineFileNames);
+ request.getSession().setAttribute(LIST_UPLOADED_ONLINE_FILENAMES,listUploadedOnlineFileNames);
+ }
+ }
}
IMcService mcService =McUtils.getToolService(request);
@@ -1634,7 +1663,53 @@
return mcAttachmentDTO;
}
+
+ public static List populateMetaDataAsAttachments(List listOfflineFilesMetaData)
+ {
+ List listAttachments=new LinkedList();
+
+ Iterator itList = listOfflineFilesMetaData.iterator();
+ while (itList.hasNext())
+ {
+ McUploadedFile mcUploadedFile=(McUploadedFile)itList.next();
+ logger.debug("mcUploadedFile:" + mcUploadedFile);
+ logger.debug("mcUploadedFile details, uid" + mcUploadedFile.getUid().toString());
+ logger.debug("mcUploadedFile details, uuid" + mcUploadedFile.getUuid());
+ logger.debug("mcUploadedFile details, filename" + mcUploadedFile.getFilename());
+ logger.debug("mcUploadedFile details, isOfflineFile" + !mcUploadedFile.isFileOnline());
+
+ McAttachmentDTO mcAttachmentDTO= new McAttachmentDTO();
+ mcAttachmentDTO.setUid(mcUploadedFile.getUid().toString());
+ mcAttachmentDTO.setUuid(mcUploadedFile.getUuid());
+ mcAttachmentDTO.setFilename(mcUploadedFile.getFilename());
+ mcAttachmentDTO.setOfflineFile(!mcUploadedFile.isFileOnline());
+
+ listAttachments.add(mcAttachmentDTO);
+ logger.debug("listAttachments after add" + listAttachments);
+ }
+ logger.debug("final listAttachments after populating all: " + listAttachments);
+ return listAttachments;
+ }
+
+
+ public static List populateMetaDataAsFilenames(List listFilesMetaData)
+ {
+ List listFilenames=new LinkedList();
+
+ Iterator itList = listFilesMetaData.iterator();
+ while (itList.hasNext())
+ {
+ McAttachmentDTO mcAttachmentDTO=(McAttachmentDTO)itList.next();
+ logger.debug("current filename" + mcAttachmentDTO.getFilename());
+ listFilenames.add(mcAttachmentDTO.getFilename());
+ logger.debug("listFilenames after add" + listFilenames);
+ }
+ logger.debug("final listFilenames after populating all: " + listFilenames);
+ return listFilenames;
+ }
+
+
public static void removeFileItem(HttpServletRequest request, String filename, String offlineFile)
{
logger.debug("offlineFile:" + offlineFile);
@@ -1643,9 +1718,10 @@
logger.debug("will remove an offline file");
List listUploadedOfflineFileNames=(List)request.getSession().getAttribute(LIST_UPLOADED_OFFLINE_FILENAMES);
logger.debug("listUploadedOfflineFileNames:" + listUploadedOfflineFileNames);
- int index=findFileNameIndex(listUploadedOfflineFileNames, filename);
- logger.debug("returned index:" + index);
- listUploadedOfflineFileNames.remove(index);
+
+ listUploadedOfflineFileNames.remove(filename);
+ logger.debug("removed offline filename:" + filename);
+
logger.debug("listUploadedOfflineFileNames after remove :" + listUploadedOfflineFileNames);
request.getSession().setAttribute(LIST_UPLOADED_OFFLINE_FILENAMES,listUploadedOfflineFileNames);
}
@@ -1654,9 +1730,10 @@
logger.debug("will remove an online file");
List listUploadedOnlineFileNames=(List)request.getSession().getAttribute(LIST_UPLOADED_ONLINE_FILENAMES);
logger.debug("listUploadedOnlineFileNames:" + listUploadedOnlineFileNames);
- int index=findFileNameIndex(listUploadedOnlineFileNames, filename);
- logger.debug("returned index:" + index);
- listUploadedOnlineFileNames.remove(index);
+
+ listUploadedOnlineFileNames.remove(filename);
+ logger.debug("removed online filename:" + filename);
+
logger.debug("listUploadedOnlineFileNames after remove :" + listUploadedOnlineFileNames);
request.getSession().setAttribute(LIST_UPLOADED_ONLINE_FILENAMES,listUploadedOnlineFileNames);
}
@@ -1665,12 +1742,12 @@
public static int findFileNameIndex(List listUploadedFileNames, String filename)
{
- Iterator itListUploadedOfflineFileNames = listUploadedFileNames.iterator();
+ Iterator itListUploadedFileNames = listUploadedFileNames.iterator();
int mainIndex=0;
- while (itListUploadedOfflineFileNames.hasNext())
+ while (itListUploadedFileNames.hasNext())
{
mainIndex++;
- String currentFilename=(String) itListUploadedOfflineFileNames.next();
+ String currentFilename=(String) itListUploadedFileNames.next();
logger.debug("currentFilename :" + currentFilename);
if (currentFilename.equals(filename))
{
@@ -1724,8 +1801,94 @@
}
+ public static void removeRedundantOfflineFileItems(HttpServletRequest request, McContent mcContent)
+ {
+ IMcService mcService =McUtils.getToolService(request);
+
+ List allOfflineFilenames=mcService.retrieveMcUploadedOfflineFilesName(mcContent.getUid());
+ logger.debug("allOfflineFilenames:" + allOfflineFilenames);
+
+ List listUploadedOfflineFileNames=(List)request.getSession().getAttribute(LIST_UPLOADED_OFFLINE_FILENAMES);
+ logger.debug("listUploadedOfflineFileNames:" + listUploadedOfflineFileNames);
+
+ boolean matchFound=false;
+ Iterator itAllOfflineFiles = allOfflineFilenames.iterator();
+ while (itAllOfflineFiles.hasNext())
+ {
+ String filename =(String)itAllOfflineFiles.next();
+ logger.debug("filename: " + filename);
+
+ matchFound=false;
+ Iterator itFiles = listUploadedOfflineFileNames.iterator();
+ while (itFiles.hasNext())
+ {
+ matchFound=false;
+ String currentFilename =(String)itFiles.next();
+ logger.debug("currentFilename: " + currentFilename);
+
+ if (filename.equals(currentFilename))
+ {
+ logger.debug("filename match found : " + currentFilename);
+ matchFound=true;
+ break;
+ }
+ }
+
+ logger.debug("matchFound : " + matchFound);
+ if (matchFound == false)
+ {
+ logger.debug("matchFound is false for filename: " + filename);
+ mcService.removeOffLineFile(filename, mcContent.getUid());
+ logger.debug("filename removed: " + filename);
+ }
+ }
+ }
+ public static void removeRedundantOnlineFileItems(HttpServletRequest request, McContent mcContent)
+ {
+ IMcService mcService =McUtils.getToolService(request);
+
+ List allOnlineFilenames=mcService.retrieveMcUploadedOnlineFilesName(mcContent.getUid());
+ logger.debug("allOnlineFilenames:" + allOnlineFilenames);
+
+ List listUploadedOnlineFileNames=(List)request.getSession().getAttribute(LIST_UPLOADED_ONLINE_FILENAMES);
+ logger.debug("listUploadedOnlineFileNames:" + listUploadedOnlineFileNames);
+
+ boolean matchFound=false;
+ Iterator itAllOnlineFiles = allOnlineFilenames.iterator();
+ while (itAllOnlineFiles.hasNext())
+ {
+ String filename =(String)itAllOnlineFiles.next();
+ logger.debug("filename: " + filename);
+
+ matchFound=false;
+ Iterator itFiles = listUploadedOnlineFileNames.iterator();
+ while (itFiles.hasNext())
+ {
+ matchFound=false;
+ String currentFilename =(String)itFiles.next();
+ logger.debug("currentFilename: " + currentFilename);
+
+ if (filename.equals(currentFilename))
+ {
+ logger.debug("filename match found : " + currentFilename);
+ matchFound=true;
+ break;
+ }
+ }
+
+ logger.debug("matchFound : " + matchFound);
+ if (matchFound == false)
+ {
+ logger.debug("matchFound is false for filename: " + filename);
+ mcService.removeOnLineFile(filename, mcContent.getUid());
+ logger.debug("filename removed: " + filename);
+ }
+ }
+ }
+
+
public void simulatePropertyInspector_RunOffline(HttpServletRequest request)
{
IMcService mcService =McUtils.getToolService(request);
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McAction.java
===================================================================
diff -u -ra94de5ff6e0fa1bf65e068d94c81ccdd232c06df -rf6991bff0a6a158b9432f338079cc3fc650dd389
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McAction.java (.../McAction.java) (revision a94de5ff6e0fa1bf65e068d94c81ccdd232c06df)
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McAction.java (.../McAction.java) (revision f6991bff0a6a158b9432f338079cc3fc650dd389)
@@ -1429,6 +1429,15 @@
logger.debug("start persisting online files metadata");
AuthoringUtil.persistFilesMetaData(request, false, mcContent);
+ /* making sure only the filenames in the session cache are persisted and the others in the db are removed*/
+ logger.debug("start removing redundant offline files metadata");
+ AuthoringUtil.removeRedundantOfflineFileItems(request, mcContent);
+
+ logger.debug("start removing redundant online files metadata");
+ AuthoringUtil.removeRedundantOnlineFileItems(request, mcContent);
+
+ logger.debug("done removing redundant files");
+
//logger.debug("will do addUploadedFilesMetaData");
//McUtils.addUploadedFilesMetaData(request,mcContent);
//logger.debug("done addUploadedFilesMetaData");
@@ -1499,7 +1508,7 @@
request.getSession().setAttribute(EDIT_OPTIONS_MODE, new Integer(2));
logger.debug("setting EDIT_OPTIONS_MODE :" + 2);
- return (mapping.findForward(ALL_INSTRUCTIONS));
+ return (mapping.findForward(LOAD_QUESTIONS));
}
InputStream fileInputStream=mcService.downloadFile(new Long(uuid), null);
@@ -1577,9 +1586,13 @@
logger.debug("offlineFile:" + offlineFile);
logger.debug("start removing file:" + filename + " it is an:" + offlineFile);
- AuthoringUtil.removeFileItem(request, filename, offlineFile);
- logger.debug("done removing offline file");
+ if (!filename.equals(""))
+ {
+ AuthoringUtil.removeFileItem(request, filename, offlineFile);
+ logger.debug("done removing offline file");
+ }
+
mcAuthoringForm.resetUserAction();
request.getSession().setAttribute(EDIT_OPTIONS_MODE, new Integer(0));
logger.debug("setting EDIT_OPTIONS_MODE :" + 0);
@@ -1685,6 +1698,21 @@
logger.debug("will uploadFile for offline file:");
McAttachmentDTO mcAttachmentDTO=AuthoringUtil.uploadFile(request, mcAuthoringForm, true);
logger.debug("returned mcAttachmentDTO:" + mcAttachmentDTO);
+
+ if (mcAttachmentDTO == null)
+ {
+ ActionMessages errors= new ActionMessages();
+ errors= new ActionMessages();
+ errors.add(Globals.ERROR_KEY,new ActionMessage("error.fileName.empty"));
+ saveErrors(request,errors);
+ mcAuthoringForm.resetUserAction();
+ persistError(request,"error.fileName.empty");
+
+ request.getSession().setAttribute(EDIT_OPTIONS_MODE, new Integer(0));
+ logger.debug("setting EDIT_OPTIONS_MODE :" + 0);
+ return (mapping.findForward(LOAD_QUESTIONS));
+ }
+
List listOfflineFilesMetaData =(List)request.getSession().getAttribute(LIST_OFFLINEFILES_METADATA);
logger.debug("listOfflineFilesMetaData:" + listOfflineFilesMetaData);
@@ -1731,6 +1759,20 @@
logger.debug("will uploadFile for online file:");
McAttachmentDTO mcAttachmentDTO=AuthoringUtil.uploadFile(request, mcAuthoringForm, false);
logger.debug("returned mcAttachmentDTO:" + mcAttachmentDTO);
+
+ if (mcAttachmentDTO == null)
+ {
+ ActionMessages errors= new ActionMessages();
+ errors= new ActionMessages();
+ errors.add(Globals.ERROR_KEY,new ActionMessage("error.fileName.empty"));
+ saveErrors(request,errors);
+ mcAuthoringForm.resetUserAction();
+ persistError(request,"error.fileName.empty");
+
+ request.getSession().setAttribute(EDIT_OPTIONS_MODE, new Integer(0));
+ logger.debug("setting EDIT_OPTIONS_MODE :" + 0);
+ return (mapping.findForward(LOAD_QUESTIONS));
+ }
List listOnlineFilesMetaData =(List)request.getSession().getAttribute(LIST_ONLINEFILES_METADATA);
logger.debug("listOnlineFilesMetaData:" + listOnlineFilesMetaData);
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java
===================================================================
diff -u -ra94de5ff6e0fa1bf65e068d94c81ccdd232c06df -rf6991bff0a6a158b9432f338079cc3fc650dd389
--- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java (.../McStarterAction.java) (revision a94de5ff6e0fa1bf65e068d94c81ccdd232c06df)
+++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McStarterAction.java (.../McStarterAction.java) (revision f6991bff0a6a158b9432f338079cc3fc650dd389)
@@ -442,6 +442,27 @@
logger.debug("starter initialized the existing Questions Map: " + request.getSession().getAttribute(MAP_QUESTIONS_CONTENT));
AuthoringUtil.refreshMaps(request, toolContentId);
+ /*process offline files metadata*/
+ List listOfflineFilesMetaData=mcService.getOfflineFilesMetaData(mcContent.getUid());
+ logger.debug("existing listOfflineFilesMetaData, to be structured as McAttachmentDTO: " + listOfflineFilesMetaData);
+ listOfflineFilesMetaData=AuthoringUtil.populateMetaDataAsAttachments(listOfflineFilesMetaData);
+ logger.debug("populated listOfflineFilesMetaData: " + listOfflineFilesMetaData);
+ request.getSession().setAttribute(LIST_OFFLINEFILES_METADATA, listOfflineFilesMetaData);
+
+ List listUploadedOfflineFileNames=AuthoringUtil.populateMetaDataAsFilenames(listOfflineFilesMetaData);
+ logger.debug("returned from db listUploadedOfflineFileNames: " + listUploadedOfflineFileNames);
+ request.getSession().setAttribute(LIST_UPLOADED_OFFLINE_FILENAMES, listUploadedOfflineFileNames);
+
+ /*process online files metadata*/
+ List listOnlineFilesMetaData=mcService.getOnlineFilesMetaData(mcContent.getUid());
+ logger.debug("existing listOnlineFilesMetaData, to be structured as McAttachmentDTO: " + listOnlineFilesMetaData);
+ listOnlineFilesMetaData=AuthoringUtil.populateMetaDataAsAttachments(listOnlineFilesMetaData);
+ logger.debug("populated listOnlineFilesMetaData: " + listOnlineFilesMetaData);
+ request.getSession().setAttribute(LIST_ONLINEFILES_METADATA, listOnlineFilesMetaData);
+
+ List listUploadedOnlineFileNames=AuthoringUtil.populateMetaDataAsFilenames(listOnlineFilesMetaData);
+ logger.debug("returned from db listUploadedOnlineFileNames: " + listUploadedOnlineFileNames);
+ request.getSession().setAttribute(LIST_UPLOADED_ONLINE_FILENAMES, listUploadedOnlineFileNames);
}
@@ -595,6 +616,8 @@
request.getSession().setAttribute(LIST_OFFLINEFILES_METADATA, listOfflineFilesMetaData);
request.getSession().setAttribute(LIST_ONLINEFILES_METADATA, listOnlineFilesMetaData);
+
+
Map mapQuestionsContent= new TreeMap(new McComparator());
Map mapOptionsContent= new TreeMap(new McComparator());
Map mapDefaultOptionsContent= new TreeMap(new McComparator());
Index: lams_tool_lamc/web/InstructionsContent.jsp
===================================================================
diff -u -ra94de5ff6e0fa1bf65e068d94c81ccdd232c06df -rf6991bff0a6a158b9432f338079cc3fc650dd389
--- lams_tool_lamc/web/InstructionsContent.jsp (.../InstructionsContent.jsp) (revision a94de5ff6e0fa1bf65e068d94c81ccdd232c06df)
+++ lams_tool_lamc/web/InstructionsContent.jsp (.../InstructionsContent.jsp) (revision f6991bff0a6a158b9432f338079cc3fc650dd389)
@@ -62,7 +62,7 @@
','viewFileItem');">