Fisheye: Tag e7f9f5772bf6f3cf2786a65e78d7de441d348c37 refers to a dead (removed) revision in file `lams_tool_sbmt/conf/hibernate/mappings/org/lamsfoundation/lams/tool/sbmt/Learner.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_sbmt/conf/hibernate/mappings/org/lamsfoundation/lams/tool/sbmt/SubmissionDetails.hbm.xml =================================================================== diff -u -r843aa271bd7b90368cc12ce6547069eaedffa066 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/conf/hibernate/mappings/org/lamsfoundation/lams/tool/sbmt/SubmissionDetails.hbm.xml (.../SubmissionDetails.hbm.xml) (revision 843aa271bd7b90368cc12ce6547069eaedffa066) +++ lams_tool_sbmt/conf/hibernate/mappings/org/lamsfoundation/lams/tool/sbmt/SubmissionDetails.hbm.xml (.../SubmissionDetails.hbm.xml) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -91,7 +91,7 @@ @@ -111,7 +111,7 @@ name="instructionFiles" lazy="true" inverse="false" - cascade="all-delete-orphan" + cascade="all" sort="unsorted" > @@ -151,6 +151,48 @@ column="reflect_on_activity" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_sbmt/db/sql/table-schema.sql =================================================================== diff -u -r843aa271bd7b90368cc12ce6547069eaedffa066 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/db/sql/table-schema.sql (.../table-schema.sql) (revision 843aa271bd7b90368cc12ce6547069eaedffa066) +++ lams_tool_sbmt/db/sql/table-schema.sql (.../table-schema.sql) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -1,20 +1,22 @@ +alter table tl_lasbmt11_content drop foreign key FKAEF329AC172BC670; alter table tl_lasbmt11_instruction_files drop foreign key FKA75538F9785A173A; alter table tl_lasbmt11_session drop foreign key FKEC8C77C9785A173A; -alter table tl_lasbmt11_submission_details drop foreign key FK1411A53C10BBAB1B; +alter table tl_lasbmt11_submission_details drop foreign key FK1411A53CFFD5A38B; alter table tl_lasbmt11_submission_details drop foreign key FK1411A53C93C861A; drop table if exists tl_lasbmt11_content; drop table if exists tl_lasbmt11_instruction_files; drop table if exists tl_lasbmt11_report; drop table if exists tl_lasbmt11_session; -drop table if exists tl_lasbmt11_session_learners; drop table if exists tl_lasbmt11_submission_details; -create table tl_lasbmt11_content (content_id bigint not null, title varchar(64) not null, instruction text, define_later bit not null, run_offline bit not null, offline_instruction text, online_instruction text, content_in_use bit, lock_on_finished bit, reflect_instructions varchar(255), reflect_on_activity bit, primary key (content_id)); +drop table if exists tl_lasbmt11_user; +create table tl_lasbmt11_content (content_id bigint not null, title varchar(64) not null, instruction text, define_later bit not null, run_offline bit not null, offline_instruction text, online_instruction text, content_in_use bit, lock_on_finished bit, reflect_instructions varchar(255), reflect_on_activity bit, limit_upload bit, limit_upload_number integer, created datetime, created_by bigint, updated datetime, primary key (content_id)); create table tl_lasbmt11_instruction_files (uid bigint not null auto_increment, uuid bigint, version_id bigint, type varchar(20), name varchar(255), content_id bigint, primary key (uid)); create table tl_lasbmt11_report (report_id bigint not null auto_increment, comments varchar(250), marks bigint, date_marks_released datetime, primary key (report_id)); create table tl_lasbmt11_session (session_id bigint not null, status integer not null, content_id bigint, session_name varchar(250), primary key (session_id)); -create table tl_lasbmt11_session_learners (learner_id bigint not null auto_increment, user_id integer, finished bit, session_id bigint, first_name varchar(255), login_name varchar(255), last_name varchar(255), primary key (learner_id)); create table tl_lasbmt11_submission_details (submission_id bigint not null auto_increment, filePath varchar(250), fileDescription varchar(250), date_of_submission datetime, uuid bigint, version_id bigint, session_id bigint, learner_id bigint, primary key (submission_id)); +create table tl_lasbmt11_user (uid bigint not null auto_increment, user_id integer, finished bit, session_id bigint, first_name varchar(255), login_name varchar(255), last_name varchar(255), content_id bigint, primary key (uid)); +alter table tl_lasbmt11_content add index FKAEF329AC172BC670 (created_by), add constraint FKAEF329AC172BC670 foreign key (created_by) references tl_lasbmt11_user (uid); alter table tl_lasbmt11_instruction_files add index FKA75538F9785A173A (content_id), add constraint FKA75538F9785A173A foreign key (content_id) references tl_lasbmt11_content (content_id); alter table tl_lasbmt11_session add index FKEC8C77C9785A173A (content_id), add constraint FKEC8C77C9785A173A foreign key (content_id) references tl_lasbmt11_content (content_id); -alter table tl_lasbmt11_submission_details add index FK1411A53C10BBAB1B (learner_id), add constraint FK1411A53C10BBAB1B foreign key (learner_id) references tl_lasbmt11_session_learners (learner_id); +alter table tl_lasbmt11_submission_details add index FK1411A53CFFD5A38B (learner_id), add constraint FK1411A53CFFD5A38B foreign key (learner_id) references tl_lasbmt11_user (uid); alter table tl_lasbmt11_submission_details add index FK1411A53C93C861A (session_id), add constraint FK1411A53C93C861A foreign key (session_id) references tl_lasbmt11_session (session_id); Fisheye: Tag e7f9f5772bf6f3cf2786a65e78d7de441d348c37 refers to a dead (removed) revision in file `lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/Learner.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag e7f9f5772bf6f3cf2786a65e78d7de441d348c37 refers to a dead (removed) revision in file `lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/Learner.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/SubmissionDetails.hbm.xml =================================================================== diff -u -r843aa271bd7b90368cc12ce6547069eaedffa066 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/SubmissionDetails.hbm.xml (.../SubmissionDetails.hbm.xml) (revision 843aa271bd7b90368cc12ce6547069eaedffa066) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/SubmissionDetails.hbm.xml (.../SubmissionDetails.hbm.xml) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -91,7 +91,7 @@ @@ -111,7 +111,7 @@ name="instructionFiles" lazy="true" inverse="false" - cascade="all-delete-orphan" + cascade="all" sort="unsorted" > @@ -151,6 +151,48 @@ column="reflect_on_activity" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/SubmitUser.java =================================================================== diff -u --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/SubmitUser.java (revision 0) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/SubmitUser.java (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -0,0 +1,190 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $$Id$$ */ +package org.lamsfoundation.lams.tool.sbmt; + +import java.io.Serializable; +import java.util.Set; + +import org.apache.log4j.Logger; +/** + * + * @hibernate.class table="tl_lasbmt11_user" + * @author Steve.Ni + * + * @version $Revision$ + * @serial 4951104689120529660L; + */ +public class SubmitUser implements Serializable,Cloneable{ + + private static final long serialVersionUID = 4951104689120529660L; + private static Logger log = Logger.getLogger(SubmitUser.class); + + //key + private Long uid; + //lams User ID + private Integer userID; + private String firstName; + private String lastName; + private String login; + private Long sessionID; + private Long contentID; + + private boolean finished; + private Set submissionDetails; + + + /* (non-Javadoc) + * @see java.lang.Object#clone() + */ + public Object clone() { + + Object obj = null; + try { + obj = super.clone(); + } catch (CloneNotSupportedException e) { + log.error("When clone " + SubmitUser.class + " failed"); + } + return obj; + } + + //*********************************************************** + // Get / Set methods + //*********************************************************** + /** + * @hibernate.id generator-class="identity" type="java.lang.Long" column="uid" + * @return Returns the learnerID. + */ + public Long getUid() { + return uid; + } + /** + * @param learnerID The learnerID to set. + */ + public void setUid(Long uid) { + this.uid = uid; + } + + /** + * @hibernate.property column="user_id" length="20" + * @return Returns the userID. + */ + public Integer getUserID() { + return userID; + } + /** + * @param userID + * The userID to set. + */ + public void setUserID(Integer userID) { + this.userID = userID; + } + /** + * @hibernate.property column="finished" length="1" + * @return Returns the finished. + */ + public boolean isFinished() { + return finished; + } + /** + * @param finished The finished to set. + */ + public void setFinished(boolean finished) { + this.finished = finished; + } + + /** + * @hibernate.property column="session_id" length="20" + * @return Returns the sessionID. + */ + public Long getSessionID() { + return sessionID; + } + /** + * @param sessionID The sessionID to set. + */ + public void setSessionID(Long sessionID) { + this.sessionID = sessionID; + } + + /** + * @hibernate.set lazy="true" inverse="true" cascade="all-delete-orphan" + * @hibernate.collection-key column="learner_id" + * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.sbmt.SubmissionDetails" + * + * @return Returns the submissionDetails. + */ + public Set getSubmissionDetails() { + return submissionDetails; + } + /** + * @param submissionDetails The submissionDetails to set. + */ + public void setSubmissionDetails(Set submissionDetails) { + this.submissionDetails = submissionDetails; + } + /** + * @hibernate.property column="first_name" + */ + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + /** + * @hibernate.property column="login_name" + */ + public String getLogin() { + return login; + } + + public void setLogin(String loginName) { + this.login = loginName; + } + + /** + * @hibernate.property column="last_name" + */ + public String getLastName() { + return lastName; + } + + public void setLastName(String secondName) { + this.lastName = secondName; + } + /** + * @hibernate.property column="content_id" + * @return Returns the sessionID. + */ + public Long getContentID() { + return contentID; + } + + public void setContentID(Long contentID) { + this.contentID = contentID; + } +} Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/IAttachmentDAO.java =================================================================== diff -u --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/IAttachmentDAO.java (revision 0) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/IAttachmentDAO.java (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -0,0 +1,7 @@ +package org.lamsfoundation.lams.tool.sbmt.dao; + +import org.lamsfoundation.lams.dao.IBaseDAO; + +public interface IAttachmentDAO extends IBaseDAO { + +} Fisheye: Tag e7f9f5772bf6f3cf2786a65e78d7de441d348c37 refers to a dead (removed) revision in file `lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ILearnerDAO.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmissionDetailsDAO.java =================================================================== diff -u -rd9c7ddef141d19423b6ab2914d153c2cb748f187 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmissionDetailsDAO.java (.../ISubmissionDetailsDAO.java) (revision d9c7ddef141d19423b6ab2914d153c2cb748f187) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmissionDetailsDAO.java (.../ISubmissionDetailsDAO.java) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -45,7 +45,6 @@ */ public SubmissionDetails getSubmissionDetailsByID(Long submissionID); - public List getUsersForSession(Long contentID); /** * Save or update the given SubmitFilesSession value. Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmitFilesContentDAO.java =================================================================== diff -u -rd9c7ddef141d19423b6ab2914d153c2cb748f187 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmitFilesContentDAO.java (.../ISubmitFilesContentDAO.java) (revision d9c7ddef141d19423b6ab2914d153c2cb748f187) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmitFilesContentDAO.java (.../ISubmitFilesContentDAO.java) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -50,6 +50,5 @@ */ public void saveOrUpdate(SubmitFilesContent content); - public void deleteInstructionFile(Long contentID, Long uuid, Long versionID, String type); - + } Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmitUserDAO.java =================================================================== diff -u --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmitUserDAO.java (revision 0) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmitUserDAO.java (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -0,0 +1,49 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.sbmt.dao; + +import java.util.List; + +import org.lamsfoundation.lams.dao.IBaseDAO; +import org.lamsfoundation.lams.tool.sbmt.SubmitUser; + +public interface ISubmitUserDAO extends IBaseDAO { + + /** + * get user from some Tool Session + * @param sessionID + * @param userID + * @return + */ + public SubmitUser getLearner(Long sessionID, Integer userID); + public SubmitUser getContentUser(Long contentId, Integer userID); + + public List getUsersBySession(Long sessionID); + + public void saveOrUpdateUser(SubmitUser user); + + +} Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/AttachmentDAO.java =================================================================== diff -u --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/AttachmentDAO.java (revision 0) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/AttachmentDAO.java (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -0,0 +1,9 @@ +package org.lamsfoundation.lams.tool.sbmt.dao.hibernate; + +import org.lamsfoundation.lams.dao.hibernate.BaseDAO; +import org.lamsfoundation.lams.tool.sbmt.dao.IAttachmentDAO; + +public class AttachmentDAO extends BaseDAO implements IAttachmentDAO { + + +} Fisheye: Tag e7f9f5772bf6f3cf2786a65e78d7de441d348c37 refers to a dead (removed) revision in file `lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/LearnerDAO.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmissionDetailsDAO.java =================================================================== diff -u -r843aa271bd7b90368cc12ce6547069eaedffa066 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmissionDetailsDAO.java (.../SubmissionDetailsDAO.java) (revision 843aa271bd7b90368cc12ce6547069eaedffa066) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmissionDetailsDAO.java (.../SubmissionDetailsDAO.java) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -27,14 +27,10 @@ import java.util.List; -import org.hibernate.FlushMode; -import org.hibernate.HibernateException; -import org.hibernate.Session; import org.lamsfoundation.lams.dao.hibernate.BaseDAO; import org.lamsfoundation.lams.tool.sbmt.SubmissionDetails; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesSession; import org.lamsfoundation.lams.tool.sbmt.dao.ISubmissionDetailsDAO; -import org.springframework.orm.hibernate3.HibernateCallback; /** * @author Manpreet Minhas @@ -46,12 +42,6 @@ SubmissionDetails.class.getName() + " where session_id=?"; - private static final String FIND_DISTINCT_USER = " select distinct learner.userID from SubmissionDetails details " + - ", Learner learner " + - " where details.submitFileSession =:sessionID " + - " and details.learner = learner.learnerID"; - - /** * (non-Javadoc) * @see org.lamsfoundation.lams.tool.sbmt.dao.ISubmissionDetailsDAO#getSubmissionDetailsByID(java.lang.Long) @@ -61,25 +51,13 @@ get(SubmissionDetails.class, submissionID); } - public List getUsersForSession(final Long sessionID){ - return (List) this.getHibernateTemplate().execute(new HibernateCallback(){ - public Object doInHibernate(Session session) throws HibernateException{ - return session.createQuery(FIND_DISTINCT_USER) - .setLong("sessionID",sessionID.longValue()) - .list(); - } - }); - } + /* (non-Javadoc) * @see org.lamsfoundation.lams.tool.sbmt.dao.ISubmissionDetailsDAO#saveOrUpdate(org.lamsfoundation.lams.tool.sbmt.SubmitFilesSession) */ public void saveOrUpdate(SubmitFilesSession session) { - - this.getSession().setFlushMode(FlushMode.AUTO); this.getHibernateTemplate().saveOrUpdate(session); - this.getHibernateTemplate().flush(); - this.getHibernateTemplate().clear(); } /* (non-Javadoc) Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitFilesContentDAO.java =================================================================== diff -u -rd9c7ddef141d19423b6ab2914d153c2cb748f187 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitFilesContentDAO.java (.../SubmitFilesContentDAO.java) (revision d9c7ddef141d19423b6ab2914d153c2cb748f187) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitFilesContentDAO.java (.../SubmitFilesContentDAO.java) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -39,8 +39,6 @@ */ public class SubmitFilesContentDAO extends BaseDAO implements ISubmitFilesContentDAO { - private static final String FIND_INSTRUCTION_FILE = "from " + InstructionFiles.class.getName() - + " as i where content_id=? and i.uuID=? and i.versionID=? and i.type=?"; /** * (non-Javadoc) * @see org.lamsfoundation.lams.tool.sbmt.dao.ISubmitFilesContentDAO#getContentByID(java.lang.Long) @@ -53,28 +51,7 @@ * @see org.lamsfoundation.lams.tool.sbmt.dao.ISubmitFilesContentDAO#save(org.lamsfoundation.lams.tool.sbmt.SubmitFilesContent) */ public void saveOrUpdate(SubmitFilesContent content) { - this.getSession().setFlushMode(FlushMode.COMMIT); this.getHibernateTemplate().saveOrUpdate(content); - this.getHibernateTemplate().flush(); } - - public void deleteInstructionFile(Long contentID, Long uuid, Long versionID, String type) { - HibernateTemplate templ = this.getHibernateTemplate(); - if ( contentID != null && uuid != null && versionID != null ) { - List list = getSession().createQuery(FIND_INSTRUCTION_FILE) - .setLong(0,contentID.longValue()) - .setLong(1,uuid.longValue()) - .setLong(2,versionID.longValue()) - .setString(3,type) - .list(); - if(list != null && list.size() > 0){ - InstructionFiles file = (InstructionFiles) list.get(0); - this.getSession().setFlushMode(FlushMode.AUTO); - templ.delete(file); - templ.flush(); - } - } - } - } Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitFilesReportDAO.java =================================================================== diff -u -r843aa271bd7b90368cc12ce6547069eaedffa066 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitFilesReportDAO.java (.../SubmitFilesReportDAO.java) (revision 843aa271bd7b90368cc12ce6547069eaedffa066) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitFilesReportDAO.java (.../SubmitFilesReportDAO.java) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -66,8 +66,6 @@ * @see org.lamsfoundation.lams.tool.sbmt.dao.ISubmitFilesReportDAO#updateReport(org.lamsfoundation.lams.tool.sbmt.SubmitFilesReport) */ public void updateReport(SubmitFilesReport report) { - this.getSession().setFlushMode(FlushMode.AUTO); getHibernateTemplate().update(report); - getHibernateTemplate().flush(); } } Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitFilesSessionDAO.java =================================================================== diff -u -rd9c7ddef141d19423b6ab2914d153c2cb748f187 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitFilesSessionDAO.java (.../SubmitFilesSessionDAO.java) (revision d9c7ddef141d19423b6ab2914d153c2cb748f187) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitFilesSessionDAO.java (.../SubmitFilesSessionDAO.java) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -55,7 +55,6 @@ */ public void createSession(SubmitFilesSession submitSession) { this.getHibernateTemplate().save(submitSession); - this.getHibernateTemplate().flush(); } public List getSubmitFilesSessionByContentID(Long contentID){ Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitUserDAO.java =================================================================== diff -u --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitUserDAO.java (revision 0) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitUserDAO.java (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -0,0 +1,73 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.sbmt.dao.hibernate; + +import java.util.ArrayList; +import java.util.List; + +import org.lamsfoundation.lams.dao.hibernate.BaseDAO; +import org.lamsfoundation.lams.tool.sbmt.SubmitUser; +import org.lamsfoundation.lams.tool.sbmt.dao.ISubmitUserDAO; + +public class SubmitUserDAO extends BaseDAO implements ISubmitUserDAO { + private static final String FIND_BY_USER_ID_SESSION_ID = "from " + SubmitUser.class.getName() + + " where user_id=? and session_id=?"; + private static final String FIND_BY_USER_ID_CONTENT_ID = "from " + SubmitUser.class.getName() + + " where user_id=? and content_id=?"; + + private static final String FIND_BY_SESSION_ID = "from " + SubmitUser.class.getName() + " where session_id=?"; + + + public SubmitUser getLearner(Long sessionID, Integer userID) { + List list = getHibernateTemplate().find(FIND_BY_USER_ID_SESSION_ID,new Object[]{userID,sessionID}); + if(list.size() > 0) + return (SubmitUser) list.get(0); + else + return null; + } + + public SubmitUser getContentUser(Long contentId, Integer userID) { + List list = getHibernateTemplate().find(FIND_BY_USER_ID_CONTENT_ID,new Object[]{userID,contentId}); + if(list.size() > 0) + return (SubmitUser) list.get(0); + else + return null; + } + + public List getUsersBySession(Long sessionID){ + return getHibernateTemplate().find(FIND_BY_SESSION_ID,sessionID); + } + + + /* (non-Javadoc) + * @see org.lamsfoundation.lams.tool.sbmt.dao.ILearnerDAO#updateLearer(org.lamsfoundation.lams.tool.sbmt.Learner) + */ + public void saveOrUpdateUser(SubmitUser learner) { + this.insertOrUpdate(learner); + } + + +} Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dto/FileDetailsDTO.java =================================================================== diff -u -r843aa271bd7b90368cc12ce6547069eaedffa066 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dto/FileDetailsDTO.java (.../FileDetailsDTO.java) (revision 843aa271bd7b90368cc12ce6547069eaedffa066) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dto/FileDetailsDTO.java (.../FileDetailsDTO.java) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -29,7 +29,7 @@ import java.util.Date; import org.apache.log4j.Logger; -import org.lamsfoundation.lams.tool.sbmt.Learner; +import org.lamsfoundation.lams.tool.sbmt.SubmitUser; import org.lamsfoundation.lams.tool.sbmt.SubmissionDetails; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesReport; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; @@ -41,32 +41,42 @@ private Logger log = Logger.getLogger(FileDetailsDTO.class); private static final long serialVersionUID = 2964711101016972263L; - private Integer userID; + private Long submissionID; - private Long reportID; + + //basic info private String filePath; private String fileDescription; - private Date dateOfSubmission; - private Date dateMarksReleased; - private boolean finished; + + //owner info + private SubmitUserDTO owner; + + //report (mark) info + private Long reportID; private String comments; private String marks; + private Date dateOfSubmission; + private Date dateMarksReleased; + + //file repository info private Long uuID; private Long versionID; + + private boolean finished; + //if this file uploaded by current learner + private boolean currentLearner; private String exportedURL; // the location of this file saved by the export function. - private UserDTO userDTO; - public FileDetailsDTO(SubmissionDetails details, UserDTO userDTO){ + public FileDetailsDTO(SubmissionDetails details){ if(details == null){ log.warn("SubmissionDetails is null, failed to initial FileDetailDTO"); return; } - Learner learner = details.getLearner(); + SubmitUser learner = details.getLearner(); if(learner != null){ - this.userID = learner.getUserID(); - this.finished = learner.isFinished(); + this.owner = new SubmitUserDTO(learner); } this.submissionID = details.getSubmissionID(); @@ -82,7 +92,6 @@ this.comments = report.getComments(); this.marks = report.getMarks() != null? report.getMarks().toString():""; } - this.userDTO = userDTO; } public String getExportedURL() { @@ -214,34 +223,8 @@ this.submissionID = submissionID; } + /** - * @return Returns the userID. - */ - public Integer getUserID() { - return userID; - } - - /** - * @param userID The userID to set. - */ - public void setUserID(Integer userID) { - this.userID = userID; - } - - /** - * @return Returns the userDTO. - */ - public UserDTO getUserDTO() { - return userDTO; - } - - /** - * @param userDTO The userDTO to set. - */ - public void setUserDTO(UserDTO userDTO) { - this.userDTO = userDTO; - } - /** * @return Returns the finished. */ public boolean isFinished() { @@ -253,4 +236,21 @@ public void setFinished(boolean finished) { this.finished = finished; } + + public boolean isCurrentLearner() { + return currentLearner; + } + + public void setCurrentLearner(boolean currentLearner) { + this.currentLearner = currentLearner; + } + + public SubmitUserDTO getOwner() { + return owner; + } + + public void setOwner(SubmitUserDTO owner) { + this.owner = owner; + } + } Fisheye: Tag e7f9f5772bf6f3cf2786a65e78d7de441d348c37 refers to a dead (removed) revision in file `lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dto/LearnerDetailsDTO.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dto/SubmitUserDTO.java =================================================================== diff -u --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dto/SubmitUserDTO.java (revision 0) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dto/SubmitUserDTO.java (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -0,0 +1,232 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.sbmt.dto; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +import org.lamsfoundation.lams.tool.sbmt.SubmitUser; + +/** + * @author Manpreet Minhas + * @serial 5900249986365640342L + */ +public class SubmitUserDTO implements Serializable{ + + private static final long serialVersionUID = 5900249986365640342L; + private Long toolSessionID; + + //user personal info dto + private Long userUid; + private Integer userID; + private String firstName; + private String lastName; + private String login; + + //learner uploaded file info + private String fileName; + private String fileDescription; + private String comments; + private Long marks; + private Date dateOfSubmission; + private Date dateMarksReleased; + + //submit file list + private List filesUploaded; + + //reflect option + private boolean hasRefection; + private String reflectInstrctions; + private boolean finishReflection; + private String reflect; + + + public SubmitUserDTO(){ + + } + public SubmitUserDTO(SubmitUser user){ + this.userUid = user.getUid(); + this.userID = user.getUserID(); + this.firstName = user.getFirstName(); + this.lastName = user.getLastName(); + this.login = user.getLogin(); + + } + /** + * @return Returns the comments. + */ + public String getComments() { + return comments; + } + /** + * @param comments The comments to set. + */ + public void setComments(String comments) { + this.comments = comments; + } + /** + * @return Returns the dateMarksReleased. + */ + public Date getDateMarksReleased() { + return dateMarksReleased; + } + /** + * @param dateMarksReleased The dateMarksReleased to set. + */ + public void setDateMarksReleased(Date dateMarksReleased) { + this.dateMarksReleased = dateMarksReleased; + } + /** + * @return Returns the dateOfSubmission. + */ + public Date getDateOfSubmission() { + return dateOfSubmission; + } + /** + * @param dateOfSubmission The dateOfSubmission to set. + */ + public void setDateOfSubmission(Date dateOfSubmission) { + this.dateOfSubmission = dateOfSubmission; + } + /** + * @return Returns the fileDescription. + */ + public String getFileDescription() { + return fileDescription; + } + /** + * @param fileDescription The fileDescription to set. + */ + public void setFileDescription(String fileDescription) { + this.fileDescription = fileDescription; + } + /** + * @return Returns the name. + */ + public String getFileName() { + return fileName; + } + /** + * @param name The name to set. + */ + public void setFileName(String name) { + this.fileName = name; + } + /** + * @return Returns the marks. + */ + public Long getMarks() { + return marks; + } + /** + * @param marks The marks to set. + */ + public void setMarks(Long marks) { + this.marks = marks; + } + /** + * @return Returns the toolSessionID. + */ + public Long getToolSessionID() { + return toolSessionID; + } + /** + * @param toolSessionID The toolSessionID to set. + */ + public void setToolSessionID(Long toolSessionID) { + this.toolSessionID = toolSessionID; + } + + /** + * @return Returns the filesUploaded. + */ + public List getFilesUploaded() { + return filesUploaded; + } + /** + * @param filesUploaded The filesUploaded to set. + */ + public void setFilesUploaded(List filesUploaded) { + this.filesUploaded = filesUploaded; + } + + + public boolean isFinishReflection() { + return finishReflection; + } + public void setFinishReflection(boolean finishReflection) { + this.finishReflection = finishReflection; + } + public boolean isHasRefection() { + return hasRefection; + } + public void setHasRefection(boolean hasRefection) { + this.hasRefection = hasRefection; + } + public String getReflect() { + return reflect; + } + public void setReflect(String reflect) { + this.reflect = reflect; + } + public String getReflectInstrctions() { + return reflectInstrctions; + } + public void setReflectInstrctions(String reflectInstrctions) { + this.reflectInstrctions = reflectInstrctions; + } + public String getFirstName() { + return firstName; + } + public void setFirstName(String firstName) { + this.firstName = firstName; + } + public String getLastName() { + return lastName; + } + public void setLastName(String lastName) { + this.lastName = lastName; + } + public String getLogin() { + return login; + } + public void setLogin(String loginName) { + this.login = loginName; + } + public Long getUserUid() { + return userUid; + } + public void setUserUid(Long userUid) { + this.userUid = userUid; + } + public Integer getUserID() { + return userID; + } + public void setUserID(Integer userID) { + this.userID = userID; + } +} Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/form/AuthoringForm.java =================================================================== diff -u -r843aa271bd7b90368cc12ce6547069eaedffa066 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/form/AuthoringForm.java (.../AuthoringForm.java) (revision 843aa271bd7b90368cc12ce6547069eaedffa066) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/form/AuthoringForm.java (.../AuthoringForm.java) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -42,11 +42,18 @@ private FormFile onlineFile; private List onlineFileList; private List offlineFileList; + + private boolean limitUpload; + private int limitUploadNumber; + private boolean reflectOnActivity; private String reflectInstructions; public void reset(ActionMapping mapping, HttpServletRequest request){ lockOnFinished = false; + limitUpload= false; + reflectOnActivity = false; + } public void initContentValue(SubmitFilesContent content){ if(content == null) @@ -60,6 +67,9 @@ this.onlineInstruction = content.getOnlineInstruction(); this.lockOnFinished = content.isLockOnFinished(); + this.limitUpload = content.isLimitUpload(); + this.limitUploadNumber = content.getLimitUploadNumber(); + this.reflectOnActivity = content.isReflectOnActivity(); this.reflectInstructions = content.getReflectInstructions(); @@ -194,4 +204,16 @@ public void setContentFolderID(String contentFolderID) { this.contentFolderID = contentFolderID; } + public boolean isLimitUpload() { + return limitUpload; + } + public void setLimitUpload(boolean limitUpload) { + this.limitUpload = limitUpload; + } + public int getLimitUploadNumber() { + return limitUploadNumber; + } + public void setLimitUploadNumber(int limitUploadNumber) { + this.limitUploadNumber = limitUploadNumber; + } } Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/ISubmitFilesService.java =================================================================== diff -u -r843aa271bd7b90368cc12ce6547069eaedffa066 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/ISubmitFilesService.java (.../ISubmitFilesService.java) (revision 843aa271bd7b90368cc12ce6547069eaedffa066) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/ISubmitFilesService.java (.../ISubmitFilesService.java) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -32,7 +32,7 @@ import org.lamsfoundation.lams.contentrepository.IVersionedNode; import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.tool.sbmt.InstructionFiles; -import org.lamsfoundation.lams.tool.sbmt.Learner; +import org.lamsfoundation.lams.tool.sbmt.SubmitUser; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesContent; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesReport; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesSession; @@ -119,16 +119,8 @@ */ public SortedMap getFilesUploadedBySession(Long sessionID); - /** - * Get information of all users who have submitted file. - * @return The user information list - */ - public List getUsers(Long contentID); - public void updateMarks(Long reportID, Long marks, String comments); - public UserDTO getUserDetails(Integer userID); - public FileDetailsDTO getFileDetails(Long detailID); /** * Get SubmitFilesSession instance according to the given session id. @@ -146,22 +138,13 @@ public boolean releaseMarksForSession(Long sessionID); public void deleteFromRepository(Long uuid, Long versionID); - public void deleteInstructionFile(Long contentID, Long uuid, Long versionID, String type); /** * When learner finish submission, it invokes this function and will remark the finished field. * * @param sessionID * @param userID */ public void finishSubmission(Long sessionID, Integer userID); - /** - * Get learner by given toolSessionID and userID. - * - * @param sessionID - * @param userID - * @return - */ - public Learner getLearner(Long sessionID, Integer userID); /** * Create the default content for the given contentID. These default data will copy from default record in * Tool Content database table. @@ -212,7 +195,48 @@ */ public NotebookEntry getEntry(Long sessionId, Integer idType, String signature, Integer userID); - public Learner createLearner(UserDTO userDto, Long sessionID); + /** + * Delete instruction file by UID + * @param uid + */ + public void deleteInstructionFile(Long uid); + //************************************************************* + // get SubmitUser methods + //************************************************************* - public Learner getLearnerByUid(Long uid); + /** + * Get learner by given toolSessionID and userID. + * + * @param sessionID + * @param userID + * @return + */ + public SubmitUser getSessionUser(Long sessionID, Integer userID); + public SubmitUser getContentUser(Long contentId, Integer userID); + + /** + * Create new user + * @param userDto + * @param sessionID + * @return + */ + public SubmitUser createSessionUser(UserDTO userDto, Long sessionID); + public SubmitUser createContentUser(UserDTO user, Long contentId); + + + /** + * Get information of all users who have submitted file. + * @return The user information list + */ + public List getUsersBySession(Long sessionID); + + /** + * get user by UID + * @param uid + * @return + */ + public SubmitUser getUserByUid(Long uid); + + + } Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java =================================================================== diff -u -r843aa271bd7b90368cc12ce6547069eaedffa066 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision 843aa271bd7b90368cc12ce6547069eaedffa066) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -29,14 +29,17 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Calendar; +import java.util.Comparator; import java.util.Date; import java.util.HashSet; import java.util.Hashtable; import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.SortedMap; +import java.util.SortedSet; import java.util.TreeMap; +import java.util.TreeSet; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; @@ -56,7 +59,6 @@ import org.lamsfoundation.lams.contentrepository.service.IRepositoryService; import org.lamsfoundation.lams.contentrepository.service.RepositoryProxy; import org.lamsfoundation.lams.contentrepository.service.SimpleCredentials; -import org.lamsfoundation.lams.dao.IBaseDAO; import org.lamsfoundation.lams.learning.service.ILearnerService; import org.lamsfoundation.lams.learningdesign.service.ExportToolContentException; import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; @@ -71,23 +73,25 @@ import org.lamsfoundation.lams.tool.exception.SessionDataExistsException; import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.sbmt.InstructionFiles; -import org.lamsfoundation.lams.tool.sbmt.Learner; import org.lamsfoundation.lams.tool.sbmt.SubmissionDetails; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesContent; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesReport; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesSession; -import org.lamsfoundation.lams.tool.sbmt.dao.ILearnerDAO; +import org.lamsfoundation.lams.tool.sbmt.SubmitUser; +import org.lamsfoundation.lams.tool.sbmt.dao.IAttachmentDAO; import org.lamsfoundation.lams.tool.sbmt.dao.ISubmissionDetailsDAO; import org.lamsfoundation.lams.tool.sbmt.dao.ISubmitFilesContentDAO; import org.lamsfoundation.lams.tool.sbmt.dao.ISubmitFilesReportDAO; import org.lamsfoundation.lams.tool.sbmt.dao.ISubmitFilesSessionDAO; +import org.lamsfoundation.lams.tool.sbmt.dao.ISubmitUserDAO; import org.lamsfoundation.lams.tool.sbmt.dto.FileDetailsDTO; import org.lamsfoundation.lams.tool.sbmt.exception.SubmitFilesException; import org.lamsfoundation.lams.tool.sbmt.util.SbmtConstants; import org.lamsfoundation.lams.tool.sbmt.util.SbmtToolContentHandler; import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.usermanagement.util.LastNameAlphabeticComparator; import org.lamsfoundation.lams.util.DateUtil; import org.springframework.dao.DataAccessException; @@ -104,16 +108,30 @@ private ISubmitFilesReportDAO submitFilesReportDAO; private ISubmitFilesSessionDAO submitFilesSessionDAO; private ISubmissionDetailsDAO submissionDetailsDAO; - private ILearnerDAO learnerDAO; - private IBaseDAO baseDAO; + private ISubmitUserDAO submitUserDAO; + private IAttachmentDAO attachmentDAO; private IToolContentHandler sbmtToolContentHandler; private ILamsToolService toolService; private ILearnerService learnerService; private IRepositoryService repositoryService; private IExportToolContentService exportContentService; private ICoreNotebookService coreNotebookService; + private IUserManagementService userManagementService; + private class FileDtoComparator implements Comparator{ + + public int compare(FileDetailsDTO o1, FileDetailsDTO o2) { + if(o1 != null && o2 != null){ + //don't use Date.comparaTo() directly, because the date could be Timestamp or Date (depeneds the object is persist or not) + return (int) (o1.getDateOfSubmission().getTime() - o2.getDateOfSubmission().getTime()); + }else if(o1 != null) + return 1; + else + return -1; + } + + } public Long createNotebookEntry(Long sessionId, Integer notebookToolType, String toolSignature, Integer userId, String entryText) { return coreNotebookService.createNotebookEntry(sessionId, notebookToolType, toolSignature, userId, "", entryText); } @@ -272,6 +290,23 @@ //reset it to new toolContentId toolContentObj.setContentID(toolContentId); + + SubmitUser user = submitUserDAO.getContentUser(toolContentId,newUserUid); + if(user == null){ + user = new SubmitUser(); + UserDTO sysUser = ((User)userManagementService.findById(User.class,newUserUid)).getUserDTO(); + user.setFirstName(sysUser.getFirstName()); + user.setLastName(sysUser.getLastName()); + user.setLogin(sysUser.getLogin()); + user.setUserID(newUserUid); + user.setContentID(toolContentId); + submitUserDAO.saveOrUpdateUser(user); + } + + toolContentObj.setCreatedBy(user); + toolContentObj.setCreated(new Date()); + toolContentObj.setUpdated(new Date()); + submitFilesContentDAO.saveOrUpdate(toolContentObj); } catch (ImportToolContentException e) { throw new ToolException(e); @@ -284,6 +319,7 @@ * @see org.lamsfoundation.lams.tool.sbmt.service.ISubmitFilesService#updateSubmitFilesContent(org.lamsfoundation.lams.tool.sbmt.SubmitFilesContent) */ public void saveOrUpdateContent(SubmitFilesContent submitFilesContent) { + submitFilesContent.setUpdated(new Date()); submitFilesContentDAO.saveOrUpdate(submitFilesContent); } @@ -366,9 +402,8 @@ + " the repository " + e.getMessage()); } } - - public void deleteInstructionFile(Long contentID, Long uuid, Long versionID, String type){ - submitFilesContentDAO.deleteInstructionFile(contentID, uuid, versionID, type); + public void deleteInstructionFile(Long uid){ + attachmentDAO.deleteById(InstructionFiles.class, uid); } /* @@ -541,7 +576,7 @@ now = DateUtil.convertToUTC(now); details.setDateOfSubmission(now); - Learner learner = learnerDAO.getLearner(sessionID,userID); + SubmitUser learner = submitUserDAO.getLearner(sessionID,userID); details.setLearner(learner); details.setUuid(nodeKey.getUuid()); details.setVersionID(nodeKey.getVersion()); @@ -589,20 +624,19 @@ * @see org.lamsfoundation.lams.tool.sbmt.service.ISubmitFilesService#getFilesUploadedByUserForContent(java.lang.Long, java.lang.Long) */ public List getFilesUploadedByUser(Integer userID, Long sessionID){ - List list = learnerDAO.getSubmissionDetailsForUserBySession(userID,sessionID); - ArrayList details = new ArrayList(); + SubmitUser learner = getSessionUser(sessionID, userID); + Set list = learner.getSubmissionDetails(); + SortedSet details = new TreeSet(this.new FileDtoComparator()); if(list ==null) - return details; + return new ArrayList(details); Iterator iterator = list.iterator(); while(iterator.hasNext()){ SubmissionDetails submissionDetails = (SubmissionDetails)iterator.next(); - UserDTO user = getUserDetails(userID); - FileDetailsDTO detailDto = new FileDetailsDTO(submissionDetails,user); - detailDto.setDateOfSubmission(DateUtil.convertFromUTCToLocal(Calendar.getInstance().getTimeZone(), detailDto.getDateOfSubmission())); + FileDetailsDTO detailDto = new FileDetailsDTO(submissionDetails); details.add(detailDto); } - return details; + return new ArrayList(details); } /** * This method save SubmissionDetails list into a map container: key is user id, @@ -617,21 +651,20 @@ List userFileList; while(iterator.hasNext()){ SubmissionDetails submissionDetails = (SubmissionDetails)iterator.next(); - Learner learner = submissionDetails.getLearner(); + SubmitUser learner = submissionDetails.getLearner(); if(learner == null){ log.error("Could not find learer for special submission item:" + submissionDetails); return null; } - UserDTO user = getUserDetails(learner.getUserID()); - FileDetailsDTO detailDto = new FileDetailsDTO(submissionDetails,user); + FileDetailsDTO detailDto = new FileDetailsDTO(submissionDetails); detailDto.setDateOfSubmission(DateUtil.convertFromUTCToLocal(Calendar.getInstance().getTimeZone(), detailDto.getDateOfSubmission())); - userFileList = (List) map.get(user); + userFileList = (List) map.get(learner); //if it is first time to this user, creating a new ArrayList for this user. if(userFileList == null) userFileList = new ArrayList(); userFileList.add(detailDto); - map.put(user, userFileList); + map.put(learner, userFileList); } return map; } @@ -641,28 +674,14 @@ public FileDetailsDTO getFileDetails(Long detailID){ SubmissionDetails details = submissionDetailsDAO.getSubmissionDetailsByID(detailID); details.setDateOfSubmission(DateUtil.convertFromUTCToLocal(Calendar.getInstance().getTimeZone(), details.getDateOfSubmission())); - UserDTO user = getUserDetails(details.getLearner().getUserID()); - - return new FileDetailsDTO(details,user); + return new FileDetailsDTO(details); } /** * (non-Javadoc) - * @see org.lamsfoundation.lams.tool.sbmt.service.ISubmitFilesService#getUsers(java.lang.Long) + * @see org.lamsfoundation.lams.tool.sbmt.service.ISubmitFilesService#getUsersBySession(java.lang.Long) */ - public List getUsers(Long sessionID){ - List users = submissionDetailsDAO.getUsersForSession(sessionID); - List table = new ArrayList(); - - if(users == null) - return table; - - Iterator iterator = users.iterator(); - while(iterator.hasNext()){ - Integer userID = (Integer) iterator.next(); - User user = (User)baseDAO.find(User.class,userID); - table.add(user.getUserDTO()); - } - return table; + public List getUsersBySession(Long sessionID){ + return submitUserDAO.getUsersBySession(sessionID); } public void updateMarks(Long reportID, Long marks, String comments){ @@ -673,13 +692,6 @@ submitFilesReportDAO.update(report); } } - public UserDTO getUserDetails(Integer userID){ - User user = (User)baseDAO.find(User.class,userID.intValue()); - if(user == null) - return null; - - return user.getUserDTO(); - } public IVersionedNode downloadFile(Long uuid, Long versionID)throws SubmitFilesException{ ITicket ticket = getRepositoryLoginTicket(); try{ @@ -713,9 +725,9 @@ return true; } public void finishSubmission(Long sessionID, Integer userID){ - Learner learner = learnerDAO.getLearner(sessionID,userID); + SubmitUser learner = submitUserDAO.getLearner(sessionID,userID); learner.setFinished(true); - learnerDAO.updateLearer(learner); + submitUserDAO.saveOrUpdateUser(learner); } /* (non-Javadoc) @@ -785,17 +797,19 @@ toolContentObj.setTitle((String)importValues.get(ToolContentImport102Manager.CONTENT_TITLE)); toolContentObj.setContentID(toolContentId); toolContentObj.setContentInUse(Boolean.FALSE); - // toolContentObj.setCreated(now); + toolContentObj.setCreated(now); toolContentObj.setDefineLater(Boolean.FALSE); toolContentObj.setInstruction((String)importValues.get(ToolContentImport102Manager.CONTENT_BODY)); toolContentObj.setOfflineInstruction(null); toolContentObj.setOnlineInstruction(null); toolContentObj.setRunOffline(Boolean.FALSE); - // toolContentObj.setUpdated(now); + toolContentObj.setUpdated(now); // 1.0.2 doesn't allow users to go back after completion, which is the equivalent of lock on finish. toolContentObj.setLockOnFinished(Boolean.TRUE); - // toolContentObj.setCreatedBy(user); + SubmitUser suser = createSessionUser(user, null); + toolContentObj.setCreatedBy(suser); + // leave as empty, no need to set them to anything. //toolContentObj.setInstructionFiles(attachments); @@ -818,27 +832,49 @@ // toolContentObj.setReflectInstructions(description); } - public Learner getLearnerByUid(Long learnerID){ - return (Learner) learnerDAO.find(Learner.class,learnerID); + public SubmitUser getUserByUid(Long learnerID){ + return (SubmitUser) submitUserDAO.find(SubmitUser.class,learnerID); } - public Learner createLearner(UserDTO userDto, Long sessionID){ - Learner learner = learnerDAO.getLearner(sessionID, userDto.getUserID()); + public SubmitUser createSessionUser(UserDTO userDto, Long sessionID){ + SubmitUser learner = submitUserDAO.getLearner(sessionID, userDto.getUserID()); if(learner != null) return learner; - learner = new Learner(); + learner = new SubmitUser(); learner.setUserID(userDto.getUserID()); learner.setFirstName(userDto.getFirstName()); learner.setLastName(userDto.getLastName()); - learner.setLoginName(userDto.getLogin()); + learner.setLogin(userDto.getLogin()); learner.setSessionID(sessionID); learner.setFinished(false); + submitUserDAO.saveOrUpdateUser(learner); - learnerDAO.saveLearner(learner); - return learner; } + public SubmitUser getSessionUser(Long sessionID, Integer userID) { + return submitUserDAO.getLearner(sessionID,userID); + } + public SubmitUser createContentUser(UserDTO userDto, Long contentId) { + SubmitUser learner = submitUserDAO.getContentUser(contentId, userDto.getUserID()); + if(learner != null) + return learner; + learner = new SubmitUser(); + learner.setUserID(userDto.getUserID()); + learner.setFirstName(userDto.getFirstName()); + learner.setLastName(userDto.getLastName()); + learner.setLogin(userDto.getLogin()); + learner.setContentID(contentId); + learner.setFinished(false); + + submitUserDAO.saveOrUpdateUser(learner); + return learner; + + } + public SubmitUser getContentUser(Long contentId, Integer userID) { + return submitUserDAO.getContentUser(contentId,userID); + } + /*************************************************************************** * Property Injection Methods **************************************************************************/ @@ -894,30 +930,19 @@ } /** - * @param baseDAO The baseDAO to set. - */ - public void setBaseDAO(IBaseDAO baseDAO) { - this.baseDAO = baseDAO; - } - - /** * @return Returns the learnerDAO. */ - public ILearnerDAO getLearnerDAO() { - return learnerDAO; + public ISubmitUserDAO getSubmitUserDAO() { + return submitUserDAO; } /** * @param learnerDAO The learnerDAO to set. */ - public void setLearnerDAO(ILearnerDAO learnerDAO) { - this.learnerDAO = learnerDAO; + public void setSubmitUserDAO(ISubmitUserDAO learnerDAO) { + this.submitUserDAO = learnerDAO; } - public Learner getLearner(Long sessionID, Integer userID) { - return learnerDAO.getLearner(sessionID,userID); - } - public ILearnerService getLearnerService() { return learnerService; } @@ -945,6 +970,12 @@ public void setCoreNotebookService(ICoreNotebookService coreNotebookService) { this.coreNotebookService = coreNotebookService; } + public void setAttachmentDAO(IAttachmentDAO attachmentDAO) { + this.attachmentDAO = attachmentDAO; + } + public void setUserManagementService(IUserManagementService userManagementService) { + this.userManagementService = userManagementService; + } } \ No newline at end of file Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/submitFilesApplicationContext.xml =================================================================== diff -u -r843aa271bd7b90368cc12ce6547069eaedffa066 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/submitFilesApplicationContext.xml (.../submitFilesApplicationContext.xml) (revision 843aa271bd7b90368cc12ce6547069eaedffa066) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/submitFilesApplicationContext.xml (.../submitFilesApplicationContext.xml) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -22,7 +22,7 @@ org/lamsfoundation/lams/tool/sbmt/SubmitFilesSession.hbm.xml org/lamsfoundation/lams/tool/sbmt/SubmissionDetails.hbm.xml org/lamsfoundation/lams/tool/sbmt/InstructionFiles.hbm.xml - org/lamsfoundation/lams/tool/sbmt/Learner.hbm.xml + org/lamsfoundation/lams/tool/sbmt/SubmitUser.hbm.xml @@ -46,22 +46,28 @@ - + + + + + - + + - + + @@ -79,10 +85,16 @@ PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED + PROPAGATION_REQUIRED PROPAGATION_REQUIRED + PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED PROPAGATION_REQUIRED PROPAGATION_REQUIRED,-java.lang.Exception Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/util/SbmtConstants.java =================================================================== diff -u -r843aa271bd7b90368cc12ce6547069eaedffa066 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/util/SbmtConstants.java (.../SbmtConstants.java) (revision 843aa271bd7b90368cc12ce6547069eaedffa066) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/util/SbmtConstants.java (.../SbmtConstants.java) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -51,6 +51,8 @@ public static final String ATTR_INSTRUCTION = "instruction"; public static final String ATTR_LOCK_ON_FINISH = "lockOnFinish"; public static final String PARAM_MIN_UPLOAD = "minUpload"; + public static final String ATTR_LIMIT_UPLOAD = "limitUpload"; + public static final String ATTR_LIMIT_UPLOAD_NUMBER = "limitUploadNumber"; } Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/AuthoringAction.java =================================================================== diff -u -r843aa271bd7b90368cc12ce6547069eaedffa066 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/AuthoringAction.java (.../AuthoringAction.java) (revision 843aa271bd7b90368cc12ce6547069eaedffa066) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/AuthoringAction.java (.../AuthoringAction.java) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -25,14 +25,17 @@ package org.lamsfoundation.lams.tool.sbmt.web; +import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; +import java.util.Date; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.lang.StringUtils; @@ -48,13 +51,16 @@ import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.sbmt.InstructionFiles; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesContent; +import org.lamsfoundation.lams.tool.sbmt.SubmitUser; import org.lamsfoundation.lams.tool.sbmt.form.AuthoringForm; import org.lamsfoundation.lams.tool.sbmt.service.ISubmitFilesService; import org.lamsfoundation.lams.tool.sbmt.service.SubmitFilesServiceProxy; import org.lamsfoundation.lams.tool.sbmt.util.SbmtConstants; import org.lamsfoundation.lams.tool.sbmt.util.SbmtWebUtils; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.action.LamsDispatchAction; +import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; import org.lamsfoundation.lams.web.util.SessionMap; @@ -156,14 +162,16 @@ * @param request * @param response * @return + * @throws NoSuchMethodException + * @throws InvocationTargetException + * @throws Exception */ public ActionForward updateContent(ActionMapping mapping, ActionForm form, - HttpServletRequest request, HttpServletResponse response) { + HttpServletRequest request, HttpServletResponse response) throws Exception{ AuthoringForm authForm = (AuthoringForm) form; SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(authForm.getSessionMapID()); - ToolAccessMode mode = null; try{ mode = WebUtil.readToolAccessModeParam(request, AttributeNames.PARAM_MODE,true); @@ -182,73 +190,81 @@ SubmitFilesContent content = getContent(form); submitFilesService = getService(); - try { - SubmitFilesContent persistContent = submitFilesService.getSubmitFilesContent(content.getContentID()); - - if(persistContent == null || content.getContentID() == null - || !content.getContentID().equals(persistContent.getContentID())){ - //new content - persistContent = content; - } - - //keep Set type attribute for persist content becuase this update only - //include updating simple properties from web page(i.e. text value, list value, etc) - Set attPOSet = persistContent.getInstructionFiles(); - if(attPOSet == null) - attPOSet = new HashSet(); - List attachmentList = getAttachmentList(sessionMap); - List deleteAttachmentList = getDeletedAttachmentList(sessionMap); - Iterator iter = attachmentList.iterator(); - while(iter.hasNext()){ - InstructionFiles newAtt = (InstructionFiles) iter.next(); - //add new attachment, UID is not null - if(newAtt.getUid() == null) - attPOSet.add(newAtt); - } - attachmentList.clear(); - - iter = deleteAttachmentList.iterator(); - while(iter.hasNext()){ - InstructionFiles delAtt = (InstructionFiles) iter.next(); - //delete from repository - submitFilesService.deleteFromRepository(delAtt.getUuID(),delAtt.getVersionID()); - //it is an existed att, then delete it from current attachmentPO - if(delAtt.getUid() != null){ - Iterator attIter = attPOSet.iterator(); - while(attIter.hasNext()){ - InstructionFiles att = (InstructionFiles) attIter.next(); - if(delAtt.getUid().equals(att.getUid())){ - attIter.remove(); - break; - } - } - submitFilesService.deleteInstructionFile(content.getContentID(), delAtt.getUuID(), delAtt - .getVersionID(), delAtt.getType()); - }//end remove from persist value - } - deleteAttachmentList.clear(); - - //copy back - content.setInstructionFiles(attPOSet); - content.setToolSession(persistContent.getToolSession()); + SubmitFilesContent persistContent = submitFilesService.getSubmitFilesContent(content.getContentID()); + + if(persistContent == null){ + //new content + persistContent = content; + content.setCreated(new Date()); + }else{ //copy web page value into persist content, as above, the "Set" type value kept. if(mode.isAuthor()){ Long uid = persistContent.getContentID(); PropertyUtils.copyProperties(persistContent,content); persistContent.setContentID(uid); }else{ -// if it is Teacher, then just update basic tab content (definelater) +// if it is Teacher, then just update basic tab content (definelater) persistContent.setInstruction(content.getInstruction()); persistContent.setTitle(content.getTitle()); - persistContent.setDefineLater(content.isDefineLater()); - persistContent.setRunOffline(content.isRunOffline()); + //change define later status + persistContent.setDefineLater(false); } - - submitFilesService.saveOrUpdateContent(persistContent); - } catch (Exception e) { - log.error(e); } +// *******************************Handle user******************* + //get session from shared session. + HttpSession ss = SessionManager.getSession(); + //get back login user DTO + UserDTO userDto = (UserDTO) ss.getAttribute(AttributeNames.USER); + Long contentId = authForm.getToolContentID(); + SubmitUser user = submitFilesService.getContentUser(contentId,userDto.getUserID()); + if(user == null){ + user = submitFilesService.createContentUser(userDto, contentId); + } + persistContent.setCreatedBy(user); + + //**********************************Handle Authoring Instruction Attachement ********************* +// so far, attPOSet will be empty if content is existed. because PropertyUtils.copyProperties() is executed + Set attPOSet = persistContent.getInstructionFiles(); + if(attPOSet == null) + attPOSet = new HashSet(); + + //get Attachment from HttpSession + List attachmentList = getAttachmentList(sessionMap); + Iterator iter = attachmentList.iterator(); + while(iter.hasNext()){ + InstructionFiles newAtt = (InstructionFiles) iter.next(); + attPOSet.add(newAtt); + } + attachmentList.clear(); + + //handle deleted instruction files + List deleteAttachmentList = getDeletedAttachmentList(sessionMap); + iter = deleteAttachmentList.iterator(); + while(iter.hasNext()){ + InstructionFiles delAtt = (InstructionFiles) iter.next(); + //delete from repository + submitFilesService.deleteFromRepository(delAtt.getUuID(),delAtt.getVersionID()); + //it is an existed att, then delete it from current attachmentPO + if(delAtt.getUid() != null){ + Iterator attIter = attPOSet.iterator(); + while(attIter.hasNext()){ + InstructionFiles att = (InstructionFiles) attIter.next(); + if(delAtt.getUid().equals(att.getUid())){ + attIter.remove(); + break; + } + } + submitFilesService.deleteInstructionFile(delAtt.getUid()); + }//end remove from persist value + } + deleteAttachmentList.clear(); + + //copy back + persistContent.setInstructionFiles(attPOSet); + + submitFilesService.saveOrUpdateContent(persistContent); + //to jump to common success page in lams_central request.setAttribute(AuthoringConstants.LAMS_AUTHORING_SUCCESS_FLAG,Boolean.TRUE); return mapping.findForward("success"); @@ -386,22 +402,19 @@ */ private SubmitFilesContent getContent(ActionForm form) { AuthoringForm authForm = (AuthoringForm) form; - Long contentID = authForm.getToolContentID(); - String title = authForm.getTitle(); - String instructions = authForm.getInstructions(); - String online_instruction = authForm.getOnlineInstruction(); - String offline_instruction = authForm.getOfflineInstruction(); - boolean lock_on_finished = authForm.isLockOnFinished(); + Long contentId = authForm.getToolContentID(); SubmitFilesContent content = new SubmitFilesContent(); - content.setContentID(contentID); - content.setInstruction(instructions); - content.setOfflineInstruction(offline_instruction); - content.setOnlineInstruction(online_instruction); - content.setTitle(title); - content.setLockOnFinished(lock_on_finished); + content.setContentID(contentId); + content.setInstruction(authForm.getInstructions()); + content.setOfflineInstruction(authForm.getOfflineInstruction()); + content.setOnlineInstruction(authForm.getOnlineInstruction()); + content.setTitle(authForm.getTitle()); + content.setLockOnFinished( authForm.isLockOnFinished()); content.setReflectInstructions(authForm.getReflectInstructions()); content.setReflectOnActivity(authForm.isReflectOnActivity()); + content.setLimitUpload(authForm.isLimitUpload()); + content.setLimitUploadNumber(authForm.getLimitUploadNumber()); // content.setInstrctionFiles() // content.setToolSession(); return content; Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/ExportServlet.java =================================================================== diff -u -r843aa271bd7b90368cc12ce6547069eaedffa066 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/ExportServlet.java (.../ExportServlet.java) (revision 843aa271bd7b90368cc12ce6547069eaedffa066) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/ExportServlet.java (.../ExportServlet.java) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -53,7 +53,7 @@ import org.lamsfoundation.lams.contentrepository.IVersionedNode; import org.lamsfoundation.lams.contentrepository.NodeType; import org.lamsfoundation.lams.tool.ToolAccessMode; -import org.lamsfoundation.lams.tool.sbmt.Learner; +import org.lamsfoundation.lams.tool.sbmt.SubmitUser; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesContent; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesSession; import org.lamsfoundation.lams.tool.sbmt.dto.FileDetailsDTO; @@ -112,7 +112,7 @@ Iterator userIter = map.keySet().iterator(); while (userIter.hasNext()) { - UserDTO user = (UserDTO) userIter.next(); + SubmitUser user = (SubmitUser) userIter.next(); List fileList = (List) map.get(user); Iterator fileListIter = fileList.iterator(); @@ -230,7 +230,7 @@ throw new SubmitFilesException(error); } - Learner learner = sbmtService.getLearner(toolSessionID, new Integer(userID.intValue())); + SubmitUser learner = sbmtService.getSessionUser(toolSessionID, new Integer(userID.intValue())); if (learner == null) { String error = "The user with user id " @@ -265,7 +265,7 @@ } Map userFilesMap = new HashMap(); - userFilesMap.put(sbmtService.getUserDetails(learner.getUserID()),fileList); + userFilesMap.put(sbmtService.getSessionUser(toolSessionID, learner.getUserID()),fileList); //add session name to construct a new map Map report = new TreeMap(this.new StringComparator()); Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/LearnerAction.java =================================================================== diff -u -r843aa271bd7b90368cc12ce6547069eaedffa066 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/LearnerAction.java (.../LearnerAction.java) (revision 843aa271bd7b90368cc12ce6547069eaedffa066) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/LearnerAction.java (.../LearnerAction.java) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -47,11 +47,11 @@ import org.lamsfoundation.lams.tool.ToolSessionManager; import org.lamsfoundation.lams.tool.exception.DataMissingException; import org.lamsfoundation.lams.tool.exception.ToolException; -import org.lamsfoundation.lams.tool.sbmt.Learner; +import org.lamsfoundation.lams.tool.sbmt.SubmitUser; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesContent; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesSession; import org.lamsfoundation.lams.tool.sbmt.dto.FileDetailsDTO; -import org.lamsfoundation.lams.tool.sbmt.dto.LearnerDetailsDTO; +import org.lamsfoundation.lams.tool.sbmt.dto.SubmitUserDTO; import org.lamsfoundation.lams.tool.sbmt.exception.SubmitFilesException; import org.lamsfoundation.lams.tool.sbmt.form.LearnerForm; import org.lamsfoundation.lams.tool.sbmt.service.ISubmitFilesService; @@ -128,9 +128,10 @@ SubmitFilesSession session = submitFilesService.getSessionById(sessionID); SubmitFilesContent content = session.getContent(); + //this must before getFileUploadByUser() method becuase getCurrentLearner() + // will create session user if it does not exist. + SubmitUser learner = getCurrentLearner(sessionID, submitFilesService); List filesUploaded = submitFilesService.getFilesUploadedByUser(userID,sessionID); - Learner learner = getCurrentLearner(sessionID, submitFilesService); - setLearnerDTO(request, user,learner, filesUploaded); // check whehter finish lock is on/off boolean lock = content.isLockOnFinished() && learner.isFinished(); @@ -143,7 +144,11 @@ sessionMap.put(SbmtConstants.ATTR_REFLECTION_INSTRUCTION,content.getReflectInstructions()); sessionMap.put(SbmtConstants.ATTR_TITLE,content.getTitle()); sessionMap.put(SbmtConstants.ATTR_INSTRUCTION,content.getInstruction()); + sessionMap.put(SbmtConstants.ATTR_LIMIT_UPLOAD,content.isLimitUpload()); + sessionMap.put(SbmtConstants.ATTR_LIMIT_UPLOAD_NUMBER,content.getLimitUploadNumber()); + + setLearnerDTO(request, sessionMap, learner, filesUploaded); //if content in use, return special page. if(content.isDefineLater()){ @@ -183,16 +188,12 @@ SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); request.setAttribute(SbmtConstants.ATTR_SESSION_MAP_ID, sessionMapID); - if(validateUploadForm(learnerForm,request)){ - return mapping.getInputForward(); - } - - //set the mode into http session Long sessionID = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID); - if(!isTokenValid(request,true)){ + if(!isTokenValid(request,true) || validateUploadForm(learnerForm,request)){ resetToken(request); + //get session from shared session. HttpSession ss = SessionManager.getSession(); //get back login user DTO @@ -202,9 +203,10 @@ ISubmitFilesService submitFilesService = getService(); List filesUploaded = submitFilesService.getFilesUploadedByUser(userID,sessionID); - Learner learner = getCurrentLearner(sessionID, submitFilesService); - setLearnerDTO(request, user,learner, filesUploaded); - return returnErrors(mapping,request,"submit.upload.twice","success"); + SubmitUser learner = getCurrentLearner(sessionID, submitFilesService); + setLearnerDTO(request,sessionMap, learner, filesUploaded); + + return mapping.getInputForward(); } //to avoid user without patience click "upload" button too fast saveToken(request); @@ -223,17 +225,12 @@ ISubmitFilesService submitFilesService = getService(); - try{ - submitFilesService.uploadFileToSession(sessionID,uploadedFile,fileDescription,userID); - List filesUploaded = submitFilesService.getFilesUploadedByUser(userID,sessionID); - Learner learner = getCurrentLearner(sessionID, submitFilesService); - - setLearnerDTO(request,user, learner, filesUploaded); - return mapping.getInputForward(); - }catch(SubmitFilesException se){ - logger.error("uploadFile: Submit Files Exception has occured" + se.getMessage()); - return returnErrors(mapping,request,se.getMessage(),"success"); - } + submitFilesService.uploadFileToSession(sessionID,uploadedFile,fileDescription,userID); + List filesUploaded = submitFilesService.getFilesUploadedByUser(userID,sessionID); + SubmitUser learner = getCurrentLearner(sessionID, submitFilesService); + + setLearnerDTO(request,sessionMap, learner, filesUploaded); + return mapping.getInputForward(); } @@ -317,51 +314,31 @@ return error; } - /** - * This is a utily function for forwarding the errors to the respective JSP - * page indicated by forward - * - * @param mapping - * @param request - * @param errorMessage - * The error message to be displayed - * @param forward - * The JSP page to which the errors would be forwarded - * @return ActionForward - */ - private ActionForward returnErrors(ActionMapping mapping, - HttpServletRequest request, - String errorMessage,String forward){ - ActionMessages messages = new ActionMessages(); - messages.add(ActionMessages.GLOBAL_MESSAGE, - new ActionMessage(errorMessage)); - saveErrors(request,messages); - return mapping.findForward(forward); - } - /** * * Set information into learner DTO object for page display. * Fill file list uploaded by the special user into web form. Remove the unauthorized mark and comments. * @param request + * @param sessionMap * @param sessionID * @param userID * @param content * @param filesUploaded */ - private void setLearnerDTO(HttpServletRequest request, UserDTO userDto, Learner learner, - List filesUploaded) { + private void setLearnerDTO(HttpServletRequest request, SessionMap sessionMap, SubmitUser currUser, List filesUploaded) { - LearnerDetailsDTO dto = new LearnerDetailsDTO(); - dto.setUserDto(userDto); - - if(learner != null){ + SubmitUserDTO dto = new SubmitUserDTO(currUser); + if(currUser != null){ //if Monitoring does not release marks, then skip this mark and comment content. if(filesUploaded != null){ Iterator iter = filesUploaded.iterator(); while(iter.hasNext()){ FileDetailsDTO filedto = (FileDetailsDTO) iter.next(); + if(currUser.getUid().equals(filedto.getOwner().getUserUid())) + filedto.setCurrentLearner(true); + else + filedto.setCurrentLearner(false); if(filedto .getDateMarksReleased() == null){ filedto .setComments(null); filedto .setMarks(null); @@ -370,19 +347,30 @@ } dto.setFilesUploaded(filesUploaded); } + + //preset + boolean limitUpload = (Boolean) sessionMap.get(SbmtConstants.ATTR_LIMIT_UPLOAD); + if(limitUpload && filesUploaded != null){ + int limit = (Integer)sessionMap.get(SbmtConstants.ATTR_LIMIT_UPLOAD_NUMBER); + if(limit == filesUploaded.size()){ + //lock upload: currently, use same lock with "FINISH_ON_LOCK" + sessionMap.put(SbmtConstants.ATTR_FINISH_LOCK, true); + } + } + request.setAttribute("learner",dto); } - private Learner getCurrentLearner(Long sessionID, ISubmitFilesService submitFilesService) { + private SubmitUser getCurrentLearner(Long sessionID, ISubmitFilesService submitFilesService) { //get session from shared session. HttpSession ss = SessionManager.getSession(); //get back login user DTO UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); Integer userID = user.getUserID(); - Learner learner = submitFilesService.getLearner(sessionID,userID); + SubmitUser learner = submitFilesService.getSessionUser(sessionID,userID); if(learner == null){ - learner = submitFilesService.createLearner(user, sessionID); + learner = submitFilesService.createSessionUser(user, sessionID); } return learner; Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/MonitoringAction.java =================================================================== diff -u -r843aa271bd7b90368cc12ce6547069eaedffa066 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/MonitoringAction.java (.../MonitoringAction.java) (revision 843aa271bd7b90368cc12ce6547069eaedffa066) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/MonitoringAction.java (.../MonitoringAction.java) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -28,6 +28,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.PrintWriter; +import java.text.NumberFormat; import java.util.ArrayList; import java.util.Comparator; import java.util.Iterator; @@ -37,9 +38,9 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.math.NumberUtils; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; @@ -52,12 +53,12 @@ import org.apache.struts.action.ActionMessages; import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; -import org.lamsfoundation.lams.tool.sbmt.Learner; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesContent; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesSession; +import org.lamsfoundation.lams.tool.sbmt.SubmitUser; import org.lamsfoundation.lams.tool.sbmt.dto.AuthoringDTO; import org.lamsfoundation.lams.tool.sbmt.dto.FileDetailsDTO; -import org.lamsfoundation.lams.tool.sbmt.dto.LearnerDetailsDTO; +import org.lamsfoundation.lams.tool.sbmt.dto.SubmitUserDTO; import org.lamsfoundation.lams.tool.sbmt.dto.SessionDTO; import org.lamsfoundation.lams.tool.sbmt.dto.StatisticDTO; import org.lamsfoundation.lams.tool.sbmt.service.ISubmitFilesService; @@ -68,7 +69,6 @@ import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.action.LamsDispatchAction; -import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; @@ -231,7 +231,7 @@ if(first){ row = sheet.createRow(idx++); cell = row.createCell((short) 0); - cell.setCellValue(dto.getUserDTO().getFirstName()+" "+dto.getUserDTO().getLastName()); + cell.setCellValue(dto.getOwner().getFirstName()+" "+dto.getOwner().getLastName()); sheet.addMergedRegion(new Region(idx-1,(short)0,idx-1, (short)1)); first = false; row1 = sheet.createRow(idx+1); @@ -258,9 +258,16 @@ cell.setCellValue(dto.getFileDescription()); cell = row3.createCell((short) fileCount); - if(dto.getMarks() != null) - cell.setCellValue(new Double(dto.getMarks().toString()).doubleValue()); - else + if(dto.getMarks() != null){ + String marks = ""; + try { + NumberFormat format = NumberFormat.getInstance(); + format.setMaximumFractionDigits(1); + marks = format.format(NumberUtils.createFloat(dto.getMarks())); + } catch (Exception e) { + } + cell.setCellValue(marks); + }else cell.setCellValue(""); cell = row4.createCell((short) fileCount); @@ -335,7 +342,6 @@ HttpServletResponse response){ Long sessionID =new Long(WebUtil.readLongParam(request,AttributeNames.PARAM_TOOL_SESSION_ID)); - Long userID = new Long(WebUtil.readLongParam(request,"userID")); Long detailID = new Long(WebUtil.readLongParam(request,"detailID")); String updateMode = request.getParameter("updateMode"); @@ -405,10 +411,10 @@ submitFilesService.updateMarks(reportID,marks,comments); + request.setAttribute(AttributeNames.PARAM_TOOL_SESSION_ID,sessionID); if(StringUtils.equals(updateMode, "listMark")){ List report = submitFilesService.getFilesUploadedByUser(userID,sessionID); request.setAttribute("report",report); - request.setAttribute(AttributeNames.PARAM_TOOL_SESSION_ID,sessionID); return mapping.findForward("listMark"); }else{ Map report = submitFilesService.getFilesUploadedBySession(sessionID); @@ -534,11 +540,10 @@ boolean hasReflect = sfs.getContent().isReflectOnActivity(); //construct LearnerDTO list - List userList = submitFilesService.getUsers(sessionID); - List learnerList = new ArrayList(); - for(UserDTO user : userList){ - LearnerDetailsDTO learnerDto = new LearnerDetailsDTO(); - learnerDto.setUserDto(user); + List userList = submitFilesService.getUsersBySession(sessionID); + List learnerList = new ArrayList(); + for(SubmitUser user : userList){ + SubmitUserDTO learnerDto = new SubmitUserDTO(user); learnerDto.setHasRefection(hasReflect); learnerList.add(learnerDto); } @@ -551,11 +556,11 @@ public ActionForward viewReflection(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - Integer userID = WebUtil.readIntParam(request,SbmtConstants.ATTR_USER_UID); + Long userUid = WebUtil.readLongParam(request,SbmtConstants.ATTR_USER_UID); Long sessionID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID); submitFilesService = getSubmitFilesService(); - UserDTO userDto = submitFilesService.getUserDetails(userID); + SubmitUser userDto = submitFilesService.getUserByUid(userUid); submitFilesService = getSubmitFilesService(); NotebookEntry notebookEntry = submitFilesService.getEntry(sessionID, @@ -564,7 +569,7 @@ SubmitFilesSession session = submitFilesService.getSessionById(sessionID); - LearnerDetailsDTO userDTO = new LearnerDetailsDTO(userDto); + SubmitUserDTO userDTO = new SubmitUserDTO(userDto); if(notebookEntry == null){ userDTO.setFinishReflection(false); userDTO.setReflect(null); Index: lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/TestSubmissionDetailsDAO.java =================================================================== diff -u -rd9c7ddef141d19423b6ab2914d153c2cb748f187 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/TestSubmissionDetailsDAO.java (.../TestSubmissionDetailsDAO.java) (revision d9c7ddef141d19423b6ab2914d153c2cb748f187) +++ lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/TestSubmissionDetailsDAO.java (.../TestSubmissionDetailsDAO.java) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -27,7 +27,7 @@ import java.util.List; -import org.lamsfoundation.lams.tool.sbmt.Learner; +import org.lamsfoundation.lams.tool.sbmt.SubmitUser; import org.lamsfoundation.lams.tool.sbmt.SbmtBaseTestCase; import org.lamsfoundation.lams.tool.sbmt.SubmissionDetails; @@ -74,11 +74,6 @@ assertEquals(details.getFilePath(),TEST_FILE_NAME); } - public void testGetUsersForSession() { - List list = submissionDetailsDAO.getUsersForSession(TEST_SESSION_ID); - assertEquals("Expect only 1 learner", list.size(), 1); - Long userId = (Long) list.iterator().next(); - assertNotNull("userId", userId); - } + } Index: lams_tool_sbmt/web/WEB-INF/web.xml =================================================================== diff -u -rfaf64b3f7ac476bd6932d00a5ce8143a940d3943 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/web/WEB-INF/web.xml (.../web.xml) (revision faf64b3f7ac476bd6932d00a5ce8143a940d3943) +++ lams_tool_sbmt/web/WEB-INF/web.xml (.../web.xml) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -226,7 +226,7 @@ LEARNER TEACHER - STAFF + MONITOR AUTHOR ADMIN SYSADMIN @@ -248,7 +248,7 @@ /monitoring.do - STAFF + MONITOR TEACHER @@ -279,7 +279,7 @@ AUTHOR - STAFF + MONITOR TEACHER ADMIN SYSADMIN @@ -305,7 +305,7 @@ Can running and monitoring a learning session - STAFF + MONITOR Index: lams_tool_sbmt/web/authoring/advance.jsp =================================================================== diff -u -r843aa271bd7b90368cc12ce6547069eaedffa066 -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/web/authoring/advance.jsp (.../advance.jsp) (revision 843aa271bd7b90368cc12ce6547069eaedffa066) +++ lams_tool_sbmt/web/authoring/advance.jsp (.../advance.jsp) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -11,6 +11,20 @@ + + + + + + 1 + 2 + 3 + 4 + 5 + + + + @@ -23,3 +37,16 @@ + \ No newline at end of file Index: lams_tool_sbmt/web/error.jsp =================================================================== diff -u -r88acb04987abd12bc87754fbbe1f835dcd99a5cc -re7f9f5772bf6f3cf2786a65e78d7de441d348c37 --- lams_tool_sbmt/web/error.jsp (.../error.jsp) (revision 88acb04987abd12bc87754fbbe1f835dcd99a5cc) +++ lams_tool_sbmt/web/error.jsp (.../error.jsp) (revision e7f9f5772bf6f3cf2786a65e78d7de441d348c37) @@ -55,7 +55,7 @@
- +