Index: lams_tool_sbmt/conf/middlegen/lams_tool_sbmt-prefs.properties =================================================================== diff -u -reb8df38a09efc89ecb2524cb7cf70ad9f3ec69d8 -r87db12aabbb89e2d5eac26832b1b3f4f8414d8de --- lams_tool_sbmt/conf/middlegen/lams_tool_sbmt-prefs.properties (.../lams_tool_sbmt-prefs.properties) (revision eb8df38a09efc89ecb2524cb7cf70ad9f3ec69d8) +++ lams_tool_sbmt/conf/middlegen/lams_tool_sbmt-prefs.properties (.../lams_tool_sbmt-prefs.properties) (revision 87db12aabbb89e2d5eac26832b1b3f4f8414d8de) @@ -68,6 +68,9 @@ hibernate.tables.tl_lasbmt11_report.columns.report_id.inctostring=true hibernate.tables.tl_lasbmt11_report.columns.report_id.java-name=reportID hibernate.tables.tl_lasbmt11_report.columns.report_id.java-type=java.lang.Long +hibernate.tables.tl_lasbmt11_report.columns.submission_id.columnspecialty=foreign key +hibernate.tables.tl_lasbmt11_report.columns.submission_id.java-name=submissionId +hibernate.tables.tl_lasbmt11_report.columns.submission_id.java-type=long hibernate.tables.tl_lasbmt11_report.columns.user_id.columnspecialty=property hibernate.tables.tl_lasbmt11_report.columns.user_id.incequals=true hibernate.tables.tl_lasbmt11_report.columns.user_id.inctostring=true @@ -94,6 +97,24 @@ hibernate.tables.tl_lasbmt11_session.columns.status.java-type=java.lang.Integer hibernate.tables.tl_lasbmt11_session.equalshashcode=true hibernate.tables.tl_lasbmt11_session.keygenerator=assigned +hibernate.tables.tl_lasbmt11_submission_details.base-class-name=TlLasbmt11SubmissionDetail +hibernate.tables.tl_lasbmt11_submission_details.columns.content_id.java-name=contentId +hibernate.tables.tl_lasbmt11_submission_details.columns.content_id.java-type=long +hibernate.tables.tl_lasbmt11_submission_details.columns.date_of_submission.java-name=dateOfSubmission +hibernate.tables.tl_lasbmt11_submission_details.columns.date_of_submission.java-type=java.sql.Timestamp +hibernate.tables.tl_lasbmt11_submission_details.columns.fileDescription.java-name=fileDescription +hibernate.tables.tl_lasbmt11_submission_details.columns.fileDescription.java-type=java.lang.String +hibernate.tables.tl_lasbmt11_submission_details.columns.filePath.java-name=filePath +hibernate.tables.tl_lasbmt11_submission_details.columns.filePath.java-type=java.lang.String +hibernate.tables.tl_lasbmt11_submission_details.columns.submission_id.java-name=submissionId +hibernate.tables.tl_lasbmt11_submission_details.columns.submission_id.java-type=java.lang.Long +hibernate.tables.tl_lasbmt11_submission_details.columns.user_id.java-name=userId +hibernate.tables.tl_lasbmt11_submission_details.columns.user_id.java-type=long +hibernate.tables.tl_lasbmt11_submission_details.columns.uuid.java-name=uuid +hibernate.tables.tl_lasbmt11_submission_details.columns.uuid.java-type=long +hibernate.tables.tl_lasbmt11_submission_details.columns.version_id.java-name=versionId +hibernate.tables.tl_lasbmt11_submission_details.columns.version_id.java-type=long +hibernate.tables.tl_lasbmt11_submission_details.keygenerator=assigned relations.tl_lasbmt11_content-tl_lasbmt11_report.tl_lasbmt11_content-has-tl_lasbmt11_report.enabled=true relations.tl_lasbmt11_content-tl_lasbmt11_report.tl_lasbmt11_content-has-tl_lasbmt11_report.target-many=true relations.tl_lasbmt11_content-tl_lasbmt11_report.tl_lasbmt11_report-has-tl_lasbmt11_content.enabled=true @@ -102,9 +123,19 @@ relations.tl_lasbmt11_content-tl_lasbmt11_session.tl_lasbmt11_content-has-tl_lasbmt11_session.target-many=true relations.tl_lasbmt11_content-tl_lasbmt11_session.tl_lasbmt11_session-has-tl_lasbmt11_content.enabled=true relations.tl_lasbmt11_content-tl_lasbmt11_session.tl_lasbmt11_session-has-tl_lasbmt11_content.target-many=false -tables.tl_lasbmt11_content.x=339 -tables.tl_lasbmt11_content.y=166 -tables.tl_lasbmt11_report.x=596 -tables.tl_lasbmt11_report.y=8 +relations.tl_lasbmt11_content-tl_lasbmt11_submission_details.tl_lasbmt11_content-has-tl_lasbmt11_submission_details.enabled=true +relations.tl_lasbmt11_content-tl_lasbmt11_submission_details.tl_lasbmt11_content-has-tl_lasbmt11_submission_details.target-many=true +relations.tl_lasbmt11_content-tl_lasbmt11_submission_details.tl_lasbmt11_submission_details-has-tl_lasbmt11_content.enabled=true +relations.tl_lasbmt11_content-tl_lasbmt11_submission_details.tl_lasbmt11_submission_details-has-tl_lasbmt11_content.target-many=false +relations.tl_lasbmt11_submission_details-tl_lasbmt11_report.tl_lasbmt11_report-has-tl_lasbmt11_submission_details.enabled=true +relations.tl_lasbmt11_submission_details-tl_lasbmt11_report.tl_lasbmt11_report-has-tl_lasbmt11_submission_details.target-many=false +relations.tl_lasbmt11_submission_details-tl_lasbmt11_report.tl_lasbmt11_submission_details-has-tl_lasbmt11_report.enabled=true +relations.tl_lasbmt11_submission_details-tl_lasbmt11_report.tl_lasbmt11_submission_details-has-tl_lasbmt11_report.target-many=true +tables.tl_lasbmt11_content.x=324 +tables.tl_lasbmt11_content.y=154 +tables.tl_lasbmt11_report.x=287 +tables.tl_lasbmt11_report.y=6 tables.tl_lasbmt11_session.x=49 tables.tl_lasbmt11_session.y=49 +tables.tl_lasbmt11_submission_details.x=521 +tables.tl_lasbmt11_submission_details.y=44 Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/SubmitFilesContent.java =================================================================== diff -u -rb496f01cb0de2c2968b080bced80c36ce24bb323 -r87db12aabbb89e2d5eac26832b1b3f4f8414d8de --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/SubmitFilesContent.java (.../SubmitFilesContent.java) (revision b496f01cb0de2c2968b080bced80c36ce24bb323) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/SubmitFilesContent.java (.../SubmitFilesContent.java) (revision 87db12aabbb89e2d5eac26832b1b3f4f8414d8de) @@ -206,18 +206,22 @@ try { obj = super.clone(); //clone SubmitFIleSession object - Iterator iter = toolSession.iterator(); - Set set = new TreeSet(); - while(iter.hasNext()) - set.add(((SubmitFilesSession)iter.next()).clone()); - ((SubmitFilesContent)obj).toolSession = set; + if(toolSession != null ){ + Iterator iter = toolSession.iterator(); + Set set = new TreeSet(); + while(iter.hasNext()) + set.add(((SubmitFilesSession)iter.next()).clone()); + ((SubmitFilesContent)obj).toolSession = set; + } //clone SubmissionDetails object - iter = submissionDetails.iterator(); - set = new TreeSet(); - while(iter.hasNext()) - set.add(((SubmissionDetails)iter.next()).clone()); - ((SubmitFilesContent)obj).submissionDetails = set; + if(submissionDetails != null){ + Iterator iter = submissionDetails.iterator(); + Set set = new TreeSet(); + while(iter.hasNext()) + set.add(((SubmissionDetails)iter.next()).clone()); + ((SubmitFilesContent)obj).submissionDetails = set; + } } catch (CloneNotSupportedException e) { log.error("When clone " + SubmissionDetails.class + " failed"); Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/SubmitFilesReport.java =================================================================== diff -u -rb496f01cb0de2c2968b080bced80c36ce24bb323 -r87db12aabbb89e2d5eac26832b1b3f4f8414d8de --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/SubmitFilesReport.java (.../SubmitFilesReport.java) (revision b496f01cb0de2c2968b080bced80c36ce24bb323) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/SubmitFilesReport.java (.../SubmitFilesReport.java) (revision 87db12aabbb89e2d5eac26832b1b3f4f8414d8de) @@ -90,7 +90,7 @@ /* (non-Javadoc) * @see java.lang.Object#clone() */ - protected Object clone() throws CloneNotSupportedException { + public Object clone() { Object obj = null; try { Index: lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/TestModel.java =================================================================== diff -u --- lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/TestModel.java (revision 0) +++ lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/TestModel.java (revision 87db12aabbb89e2d5eac26832b1b3f4f8414d8de) @@ -0,0 +1,146 @@ +/* + *Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * + *This program is free software; you can redistribute it and/or modify + *it under the terms of the GNU General Public License as published by + *the Free Software Foundation; either version 2 of the License, or + *(at your option) any later version. + * + *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 + */ +package org.lamsfoundation.lams.tool.sbmt.dao; + +import java.util.Calendar; +import java.util.Date; + +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 junit.framework.TestCase; + +/** + * @author Steve.Ni + * + * $version$ + */ +public class TestModel extends TestCase { + //report data + private static String commA ="commA"; + private static Long markA = new Long(100); + private static Long repA = new Long(100); + private static int dayA = 10; + private static int mthA = 9; + private static int yearA = 2003; + + private static String commB ="commB"; + private static Long markB = new Long(201); + private static Long repB = new Long(201); + private static int dayB = 11; + private static int mthB = 8; + private static int yearB = 2004; + + //content data + private static String insA = "InstructionsA"; + private static String insB = "InstructionsB"; + private static String titA = "titleA"; + private static String titB = "titleB"; + private static boolean deA = false; + private static boolean deB = true; + private static boolean offA = false; + private static boolean offB = false; + + private SubmitFilesContent content; + private SubmitFilesReport report; + private SubmitFilesSession session; + private SubmissionDetails detail; + + /* + * @see TestCase#setUp() + */ + protected void setUp() throws Exception { + content = new SubmitFilesContent(); + + content.setContentID(new Long(1)); + session = new SubmitFilesSession(); + detail = new SubmissionDetails(); + report = new SubmitFilesReport(); + } + /* + * Class under test for SubmitFilesReport clone() + */ + public void testReportClone(){ + fillReportA(report); + SubmitFilesReport reportC = (SubmitFilesReport) report.clone(); + fillReportB(report); + + assertEquals(reportC.getComments(),commA); + Calendar cal = Calendar.getInstance(); + cal.set(yearA,mthA,dayA); + assertEquals(reportC.getDateMarksReleased(),cal.getTime()); + assertEquals(reportC.getMarks(),markA); + assertEquals(reportC.getReportID(),repA); + + } + /* + * Class under test for SubmitFilesContent clone() + */ + public void testContentClone() { + fillContentA(content); + SubmitFilesContent contentC = (SubmitFilesContent) content.clone(); + fillContentB(content); + + assertEquals(contentC.getInstructions(),insA); + assertEquals(contentC.getTitle(),titA); + assertEquals(contentC.isDefineLater(),deA); + assertEquals(contentC.isRunOffline(),offA); +// assertEquals(contentC.getSubmissionDetails(),insA); +// assertEquals(contentC.getToolSession(),insA); + + } + + private void fillReportA(SubmitFilesReport report){ + report.setComments(commA); + Calendar cal = Calendar.getInstance(); + cal.set(yearA,mthA,dayA); + report.setDateMarksReleased(cal.getTime()); + report.setMarks(markA); + report.setReportID(repA); + } + private void fillReportB(SubmitFilesReport report){ + report.setComments(commB); + Calendar cal = Calendar.getInstance(); + cal.set(yearB,mthB,dayB); + report.setDateMarksReleased(cal.getTime()); + report.setMarks(markB); + report.setReportID(repB); + } + private void fillContentA(SubmitFilesContent content){ + content.setDefineLater(deA); + content.setInstructions(insA); + content.setRunOffline(offA); + content.setTitle(titA); +// content.setSubmissionDetails(); +// content.setToolSession(); + } + private void fillContentB(SubmitFilesContent content){ + content.setDefineLater(deB); + content.setInstructions(insB); + content.setRunOffline(offB); + content.setTitle(titB); +// content.setSubmissionDetails(); +// content.setToolSession(); + } + +} Index: lams_tool_sbmt/velocity.log =================================================================== diff -u -reb8df38a09efc89ecb2524cb7cf70ad9f3ec69d8 -r87db12aabbb89e2d5eac26832b1b3f4f8414d8de --- lams_tool_sbmt/velocity.log (.../velocity.log) (revision eb8df38a09efc89ecb2524cb7cf70ad9f3ec69d8) +++ lams_tool_sbmt/velocity.log (.../velocity.log) (revision 87db12aabbb89e2d5eac26832b1b3f4f8414d8de) @@ -32,3 +32,37 @@ 2005-05-30 12:57:50,875 - Velocimacro : autoload off : VM system will not automatically reload global library macros 2005-05-30 12:57:50,875 - Velocimacro : initialization complete. 2005-05-30 12:57:50,875 - Velocity successfully started. +2005-07-13 15:31:06,425 - Log4JLogSystem initialized using logfile velocity.log +2005-07-13 15:31:06,425 - ************************************************************** +2005-07-13 15:31:06,425 - Starting Jakarta Velocity v1.4-dev +2005-07-13 15:31:06,425 - RuntimeInstance initializing. +2005-07-13 15:31:06,425 - Default Properties File: org\apache\velocity\runtime\defaults\velocity.properties +2005-07-13 15:31:06,425 - Trying to use logger class middlegen.DontCloseLog4JLogSystem +2005-07-13 15:31:06,425 - Using logger class middlegen.DontCloseLog4JLogSystem +2005-07-13 15:31:06,441 - Default ResourceManager initializing. (class org.apache.velocity.runtime.resource.ResourceManagerImpl) +2005-07-13 15:31:06,472 - Resource Loader Instantiated: middlegen.KindFileResourceLoader +2005-07-13 15:31:06,472 - FileResourceLoader : initialization starting. +2005-07-13 15:31:06,472 - FileResourceLoader : adding path '.' +2005-07-13 15:31:06,472 - FileResourceLoader : initialization complete. +2005-07-13 15:31:06,472 - ClasspathResourceLoader : initialization starting. +2005-07-13 15:31:06,472 - ClasspathResourceLoader : initialization complete. +2005-07-13 15:31:06,487 - ResourceCache : initialized. (class org.apache.velocity.runtime.resource.ResourceCacheImpl) +2005-07-13 15:31:06,487 - Default ResourceManager initialization complete. +2005-07-13 15:31:06,487 - Loaded System Directive: org.apache.velocity.runtime.directive.Literal +2005-07-13 15:31:06,503 - Loaded System Directive: org.apache.velocity.runtime.directive.Macro +2005-07-13 15:31:06,503 - Loaded System Directive: org.apache.velocity.runtime.directive.Parse +2005-07-13 15:31:06,519 - Loaded System Directive: org.apache.velocity.runtime.directive.Include +2005-07-13 15:31:06,534 - Loaded System Directive: org.apache.velocity.runtime.directive.Foreach +2005-07-13 15:31:06,769 - Created: 20 parsers. +2005-07-13 15:31:06,816 - Velocimacro : initialization starting. +2005-07-13 15:31:06,816 - Velocimacro : adding VMs from VM library template : VM_global_library.vm +2005-07-13 15:31:06,831 - KindFileResourceLoader : file loader failed to load: VM_global_library.vm +2005-07-13 15:31:06,878 - ResourceManager : found VM_global_library.vm with loader middlegen.KindFileResourceLoader +2005-07-13 15:31:06,878 - Velocimacro : VM library template macro registration complete. +2005-07-13 15:31:06,878 - Velocimacro : allowInline = true : VMs can be defined inline in templates +2005-07-13 15:31:06,878 - Velocimacro : allowInlineToOverride = false : VMs defined inline may NOT replace previous VM definitions +2005-07-13 15:31:06,878 - Velocimacro : allowInlineLocal = false : VMs defined inline will be global in scope if allowed. +2005-07-13 15:31:06,878 - Velocimacro : messages on : VM system will output logging messages +2005-07-13 15:31:06,878 - Velocimacro : autoload off : VM system will not automatically reload global library macros +2005-07-13 15:31:06,878 - Velocimacro : initialization complete. +2005-07-13 15:31:06,878 - Velocity successfully started.