result =
+ runner.getRuntimeResult(
+ submission, workDirectory, baseFileName, inputFilePath, outputFilePath);
+ Assertions.assertEquals("AC", result.get("runtimeResult"));
+ }
+
+ /**
+ * 测试用例: 测试getRuntimeResult(Submission, int, String, String, String, String)方法 测试数据:
+ * 使用可以编译通过的Java代码 预期结果: 编译成功并运行产生输出
+ *
+ * The test case is disabled for passing CI on AppVeyor.
+ */
+ public void testGetRuntimeResultJava() throws Exception {
+ String workDirectory = workBaseDirectory + "/voj-1001";
+ String baseFileName = "RandomName";
+ Submission submission = submissionMapper.getSubmission(1001);
+
+ String inputFilePath = workBaseDirectory + "/testpoints/1001/input#0.txt";
+ String outputFilePath = workBaseDirectory + "/voj-1000/output#0.txt";
+
+ preprocessor.createTestCode(submission, workDirectory, baseFileName);
+ preprocessor.fetchTestPoints(submission.getProblem().getProblemId());
+ compiler.getCompileResult(submission, workDirectory, baseFileName);
+
+ Map result =
+ runner.getRuntimeResult(
+ submission, workDirectory, baseFileName, inputFilePath, outputFilePath);
+ Assertions.assertEquals("AC", result.get("runtimeResult"));
+ }
+
+ /** 待测试的Runner对象. */
+ @Autowired private Runner runner;
+
+ /** 自动注入的Compiler对象. 用于构建测试用例. */
+ @Autowired private Compiler compiler;
+
+ /** 自动注入的Preprocessor对象. 用于构建测试用例. */
+ @Autowired private Preprocessor preprocessor;
+
+ /** 自动注入的SubmissionMapper对象. 用于构建测试用例. */
+ @Autowired private SubmissionMapper submissionMapper;
+
+ /** 评测机的工作目录. 用于存储编译结果以及程序输出结果. */
+ @Value("${judger.workDir}")
+ private String workBaseDirectory;
}
diff --git a/judger/src/test/java/org/verwandlung/voj/judger/mapper/CheckpointMapperTest.java b/judger/src/test/java/org/verwandlung/voj/judger/mapper/CheckpointMapperTest.java
index 7dcd2850..66427066 100644
--- a/judger/src/test/java/org/verwandlung/voj/judger/mapper/CheckpointMapperTest.java
+++ b/judger/src/test/java/org/verwandlung/voj/judger/mapper/CheckpointMapperTest.java
@@ -15,24 +15,24 @@
* along with this program. If not, see .
*
*
- * _ooOoo_
- * o8888888o
- * 88" . "88
- * (| -_- |)
- * O\ = /O
- * ____/`---'\____
- * .' \\| |// `.
- * / \\||| : |||// \
- * / _||||| -:- |||||- \
- * | | \\\ - /// | |
- * | \_| ''\---/'' | |
- * \ .-\__ `-` ___/-. /
- * ___`. .' /--.--\ `. . __
- * ."" '< `.___\_<|>_/___.' >'"".
- * | | : `- \`.;`\ _ /`;.`/ - ` : | |
- * \ \ `-. \_ __\ /__ _/ .-` / /
- * ======`-.____`-.___\_____/___.-`____.-'======
- * `=---='
+ * _ooOoo_
+ * o8888888o
+ * 88" . "88
+ * (| -_- |)
+ * O\ = /O
+ * ____/`---'\____
+ * .' \\| |// `.
+ * / \\||| : |||// \
+ * / _||||| -:- |||||- \
+ * | | \\\ - /// | |
+ * | \_| ''\---/'' | |
+ * \ .-\__ `-` ___/-. /
+ * ___`. .' /--.--\ `. . __
+ * ."" '< `.___\_<|>_/___.' >'"".
+ * | | : `- \`.;`\ _ /`;.`/ - ` : | |
+ * \ \ `-. \_ __\ /__ _/ .-` / /
+ * ======`-.____`-.___\_____/___.-`____.-'======
+ * `=---='
*
* HERE BE BUDDHA
*
@@ -53,42 +53,33 @@
/**
* CheckpointMapper测试类.
- *
+ *
* @author Haozhe Xie
*/
@ExtendWith(SpringExtension.class)
@Transactional
@ContextConfiguration({"classpath:test-spring-context.xml"})
public class CheckpointMapperTest {
- /**
- * 测试用例: 测试getCheckpointsUsingProblemId(long)方法
- * 测试数据: 使用存在的试题唯一标识符(1000)
- * 预期结果: 返回对应的测试点列表(10个项目)
- */
- @Test
- public void testGetCheckpointsUsingProblemIdExists() {
- List checkpoints = checkpointMapper.getCheckpointsUsingProblemId(1000);
- Assertions.assertEquals(10, checkpoints.size());
-
- Checkpoint firstCheckpoint = checkpoints.get(0);
- String output = firstCheckpoint.getOutput();
- Assertions.assertEquals("45652\r\n", output);
- }
-
- /**
- * 测试用例: 测试getCheckpointsUsingProblemId(long)方法
- * 测试数据: 使用不存在的试题唯一标识符(0)
- * 预期结果: 返回对应的测试点列表(0个项目)
- */
- @Test
- public void testGetCheckpointsUsingProblemIdNotExists() {
- List checkpoints = checkpointMapper.getCheckpointsUsingProblemId(0);
- Assertions.assertEquals(0, checkpoints.size());
- }
-
- /**
- * 待测试的CheckpointMapper对象.
- */
- @Autowired
- private CheckpointMapper checkpointMapper;
+ /**
+ * 测试用例: 测试getCheckpointsUsingProblemId(long)方法 测试数据: 使用存在的试题唯一标识符(1000) 预期结果: 返回对应的测试点列表(10个项目)
+ */
+ @Test
+ public void testGetCheckpointsUsingProblemIdExists() {
+ List checkpoints = checkpointMapper.getCheckpointsUsingProblemId(1000);
+ Assertions.assertEquals(10, checkpoints.size());
+
+ Checkpoint firstCheckpoint = checkpoints.get(0);
+ String output = firstCheckpoint.getOutput();
+ Assertions.assertEquals("45652\r\n", output);
+ }
+
+ /** 测试用例: 测试getCheckpointsUsingProblemId(long)方法 测试数据: 使用不存在的试题唯一标识符(0) 预期结果: 返回对应的测试点列表(0个项目) */
+ @Test
+ public void testGetCheckpointsUsingProblemIdNotExists() {
+ List checkpoints = checkpointMapper.getCheckpointsUsingProblemId(0);
+ Assertions.assertEquals(0, checkpoints.size());
+ }
+
+ /** 待测试的CheckpointMapper对象. */
+ @Autowired private CheckpointMapper checkpointMapper;
}
diff --git a/judger/src/test/java/org/verwandlung/voj/judger/mapper/JudgeResultMapperTest.java b/judger/src/test/java/org/verwandlung/voj/judger/mapper/JudgeResultMapperTest.java
index c4c093aa..3d227b68 100644
--- a/judger/src/test/java/org/verwandlung/voj/judger/mapper/JudgeResultMapperTest.java
+++ b/judger/src/test/java/org/verwandlung/voj/judger/mapper/JudgeResultMapperTest.java
@@ -15,24 +15,24 @@
* along with this program. If not, see .
*
*
- * _ooOoo_
- * o8888888o
- * 88" . "88
- * (| -_- |)
- * O\ = /O
- * ____/`---'\____
- * .' \\| |// `.
- * / \\||| : |||// \
- * / _||||| -:- |||||- \
- * | | \\\ - /// | |
- * | \_| ''\---/'' | |
- * \ .-\__ `-` ___/-. /
- * ___`. .' /--.--\ `. . __
- * ."" '< `.___\_<|>_/___.' >'"".
- * | | : `- \`.;`\ _ /`;.`/ - ` : | |
- * \ \ `-. \_ __\ /__ _/ .-` / /
- * ======`-.____`-.___\_____/___.-`____.-'======
- * `=---='
+ * _ooOoo_
+ * o8888888o
+ * 88" . "88
+ * (| -_- |)
+ * O\ = /O
+ * ____/`---'\____
+ * .' \\| |// `.
+ * / \\||| : |||// \
+ * / _||||| -:- |||||- \
+ * | | \\\ - /// | |
+ * | \_| ''\---/'' | |
+ * \ .-\__ `-` ___/-. /
+ * ___`. .' /--.--\ `. . __
+ * ."" '< `.___\_<|>_/___.' >'"".
+ * | | : `- \`.;`\ _ /`;.`/ - ` : | |
+ * \ \ `-. \_ __\ /__ _/ .-` / /
+ * ======`-.____`-.___\_____/___.-`____.-'======
+ * `=---='
*
* HERE BE BUDDHA
*
@@ -51,40 +51,33 @@
/**
* JudgeResultMapper测试类.
+ *
* @author Haozhe Xie
*/
@ExtendWith(SpringExtension.class)
@Transactional
@ContextConfiguration({"classpath:test-spring-context.xml"})
public class JudgeResultMapperTest {
- /**
- * 测试用例: 测试getJudgeResultUsingSlug(String)方法
- * 测试数据: 普通评测结果(JudgeResult)的评测结果组唯一英文缩写
- * 预期结果: 返回评测结果(JudgeResult)的评测结果组对象
- */
- @Test
- public void testGetJudgeResultUsingSlugExists() {
- JudgeResult judgeResult = judgeResultMapper.getJudgeResultUsingSlug("AC");
- Assertions.assertNotNull(judgeResult);
-
- int judgeResultId = judgeResult.getJudgeResultId();
- Assertions.assertEquals(2, judgeResultId);
- }
-
- /**
- * 测试用例: 测试getJudgeResultUsingSlug(String)方法
- * 测试数据: 不存在的评测结果组唯一英文缩写
- * 预期结果: 返回空引用
- */
- @Test
- public void testGetJudgeResultUsingSlugNotExists() {
- JudgeResult judgeResult = judgeResultMapper.getJudgeResultUsingSlug("Not-Exists");
- Assertions.assertNull(judgeResult);
- }
-
- /**
- * 待测试的JudgeResultMapper对象.
- */
- @Autowired
- private JudgeResultMapper judgeResultMapper;
+ /**
+ * 测试用例: 测试getJudgeResultUsingSlug(String)方法 测试数据: 普通评测结果(JudgeResult)的评测结果组唯一英文缩写 预期结果:
+ * 返回评测结果(JudgeResult)的评测结果组对象
+ */
+ @Test
+ public void testGetJudgeResultUsingSlugExists() {
+ JudgeResult judgeResult = judgeResultMapper.getJudgeResultUsingSlug("AC");
+ Assertions.assertNotNull(judgeResult);
+
+ int judgeResultId = judgeResult.getJudgeResultId();
+ Assertions.assertEquals(2, judgeResultId);
+ }
+
+ /** 测试用例: 测试getJudgeResultUsingSlug(String)方法 测试数据: 不存在的评测结果组唯一英文缩写 预期结果: 返回空引用 */
+ @Test
+ public void testGetJudgeResultUsingSlugNotExists() {
+ JudgeResult judgeResult = judgeResultMapper.getJudgeResultUsingSlug("Not-Exists");
+ Assertions.assertNull(judgeResult);
+ }
+
+ /** 待测试的JudgeResultMapper对象. */
+ @Autowired private JudgeResultMapper judgeResultMapper;
}
diff --git a/judger/src/test/java/org/verwandlung/voj/judger/mapper/LanguageMapperTest.java b/judger/src/test/java/org/verwandlung/voj/judger/mapper/LanguageMapperTest.java
index f37941a4..16f113e0 100644
--- a/judger/src/test/java/org/verwandlung/voj/judger/mapper/LanguageMapperTest.java
+++ b/judger/src/test/java/org/verwandlung/voj/judger/mapper/LanguageMapperTest.java
@@ -15,24 +15,24 @@
* along with this program. If not, see .
*
*
- * _ooOoo_
- * o8888888o
- * 88" . "88
- * (| -_- |)
- * O\ = /O
- * ____/`---'\____
- * .' \\| |// `.
- * / \\||| : |||// \
- * / _||||| -:- |||||- \
- * | | \\\ - /// | |
- * | \_| ''\---/'' | |
- * \ .-\__ `-` ___/-. /
- * ___`. .' /--.--\ `. . __
- * ."" '< `.___\_<|>_/___.' >'"".
- * | | : `- \`.;`\ _ /`;.`/ - ` : | |
- * \ \ `-. \_ __\ /__ _/ .-` / /
- * ======`-.____`-.___\_____/___.-`____.-'======
- * `=---='
+ * _ooOoo_
+ * o8888888o
+ * 88" . "88
+ * (| -_- |)
+ * O\ = /O
+ * ____/`---'\____
+ * .' \\| |// `.
+ * / \\||| : |||// \
+ * / _||||| -:- |||||- \
+ * | | \\\ - /// | |
+ * | \_| ''\---/'' | |
+ * \ .-\__ `-` ___/-. /
+ * ___`. .' /--.--\ `. . __
+ * ."" '< `.___\_<|>_/___.' >'"".
+ * | | : `- \`.;`\ _ /`;.`/ - ` : | |
+ * \ \ `-. \_ __\ /__ _/ .-` / /
+ * ======`-.____`-.___\_____/___.-`____.-'======
+ * `=---='
*
* HERE BE BUDDHA
*
@@ -53,83 +53,60 @@
/**
* LanguageMapper测试类.
- *
+ *
* @author Haozhe Xie
*/
@ExtendWith(SpringExtension.class)
@Transactional
@ContextConfiguration({"classpath:test-spring-context.xml"})
public class LanguageMapperTest {
- /**
- * 测试用例: 测试getLanguageUsingId(int)方法
- * 测试数据: C语言的编程语言唯一标识符
- * 预期结果: 返回C语言的编程语言对象
- */
- @Test
- public void testGetLanguageUsingIdExists() {
- Language language = languageMapper.getLanguageUsingId(1);
- Assertions.assertNotNull(language);
-
- String languageName = language.getLanguageName();
- Assertions.assertEquals("C", languageName);
- }
-
- /**
- * 测试用例: 测试getLanguageUsingId(int)方法
- * 测试数据: 不存在的编程语言唯一标识符
- * 预期结果: 返回空引用
- */
- @Test
- public void testGetLanguageUsingIdNotExists() {
- Language language = languageMapper.getLanguageUsingId(0);
- Assertions.assertNull(language);
- }
-
- /**
- * 测试用例: 测试getLanguageUsingSlug(String)方法
- * 测试数据: C语言的编程语言唯一英文缩写
- * 预期结果: 返回C语言的编程语言对象
- */
- @Test
- public void testGetLanguageUsingSlugExists() {
- Language language = languageMapper.getLanguageUsingSlug("text/x-csrc");
- Assertions.assertNotNull(language);
-
- String languageName = language.getLanguageName();
- Assertions.assertEquals("C", languageName);
- }
-
- /**
- * 测试用例: 测试getLanguageUsingSlug(String)方法
- * 测试数据: 不存在的编程语言唯一英文缩写
- * 预期结果: 返回空引用
- */
- @Test
- public void testGetLanguageUsingSlugNotExists() {
- Language language = languageMapper.getLanguageUsingSlug("Not-Exists");
- Assertions.assertNull(language);
- }
+ /** 测试用例: 测试getLanguageUsingId(int)方法 测试数据: C语言的编程语言唯一标识符 预期结果: 返回C语言的编程语言对象 */
+ @Test
+ public void testGetLanguageUsingIdExists() {
+ Language language = languageMapper.getLanguageUsingId(1);
+ Assertions.assertNotNull(language);
+
+ String languageName = language.getLanguageName();
+ Assertions.assertEquals("C", languageName);
+ }
+
+ /** 测试用例: 测试getLanguageUsingId(int)方法 测试数据: 不存在的编程语言唯一标识符 预期结果: 返回空引用 */
+ @Test
+ public void testGetLanguageUsingIdNotExists() {
+ Language language = languageMapper.getLanguageUsingId(0);
+ Assertions.assertNull(language);
+ }
+
+ /** 测试用例: 测试getLanguageUsingSlug(String)方法 测试数据: C语言的编程语言唯一英文缩写 预期结果: 返回C语言的编程语言对象 */
+ @Test
+ public void testGetLanguageUsingSlugExists() {
+ Language language = languageMapper.getLanguageUsingSlug("text/x-csrc");
+ Assertions.assertNotNull(language);
+
+ String languageName = language.getLanguageName();
+ Assertions.assertEquals("C", languageName);
+ }
+
+ /** 测试用例: 测试getLanguageUsingSlug(String)方法 测试数据: 不存在的编程语言唯一英文缩写 预期结果: 返回空引用 */
+ @Test
+ public void testGetLanguageUsingSlugNotExists() {
+ Language language = languageMapper.getLanguageUsingSlug("Not-Exists");
+ Assertions.assertNull(language);
+ }
+
+ /** 测试用例: 测试getAllLanguages()方法 测试数据: N/a 预期结果: 返回全部的编程语言列表(共6种语言) */
+ @Test
+ public void testGetAllLanguages() {
+ List languages = languageMapper.getAllLanguages();
+ Assertions.assertNotNull(languages);
+ Assertions.assertEquals(6, languages.size());
+
+ Language firstLanguage = languages.get(0);
+ Assertions.assertNotNull(firstLanguage);
- /**
- * 测试用例: 测试getAllLanguages()方法
- * 测试数据: N/a
- * 预期结果: 返回全部的编程语言列表(共6种语言)
- */
- @Test
- public void testGetAllLanguages() {
- List languages = languageMapper.getAllLanguages();
- Assertions.assertNotNull(languages);
- Assertions.assertEquals(6, languages.size());
-
- Language firstLanguage = languages.get(0);
- Assertions.assertNotNull(firstLanguage);
-
- String languageName = firstLanguage.getLanguageName();
- Assertions.assertEquals("C", languageName);
- }
- /**
- * 待测试的LanguageMapper对象.
- */
- @Autowired
- private LanguageMapper languageMapper;
+ String languageName = firstLanguage.getLanguageName();
+ Assertions.assertEquals("C", languageName);
+ }
+ /** 待测试的LanguageMapper对象. */
+ @Autowired private LanguageMapper languageMapper;
}
diff --git a/judger/src/test/java/org/verwandlung/voj/judger/mapper/ProblemMapperTest.java b/judger/src/test/java/org/verwandlung/voj/judger/mapper/ProblemMapperTest.java
index edf3abf6..67065e40 100644
--- a/judger/src/test/java/org/verwandlung/voj/judger/mapper/ProblemMapperTest.java
+++ b/judger/src/test/java/org/verwandlung/voj/judger/mapper/ProblemMapperTest.java
@@ -15,24 +15,24 @@
* along with this program. If not, see .
*
*
- * _ooOoo_
- * o8888888o
- * 88" . "88
- * (| -_- |)
- * O\ = /O
- * ____/`---'\____
- * .' \\| |// `.
- * / \\||| : |||// \
- * / _||||| -:- |||||- \
- * | | \\\ - /// | |
- * | \_| ''\---/'' | |
- * \ .-\__ `-` ___/-. /
- * ___`. .' /--.--\ `. . __
- * ."" '< `.___\_<|>_/___.' >'"".
- * | | : `- \`.;`\ _ /`;.`/ - ` : | |
- * \ \ `-. \_ __\ /__ _/ .-` / /
- * ======`-.____`-.___\_____/___.-`____.-'======
- * `=---='
+ * _ooOoo_
+ * o8888888o
+ * 88" . "88
+ * (| -_- |)
+ * O\ = /O
+ * ____/`---'\____
+ * .' \\| |// `.
+ * / \\||| : |||// \
+ * / _||||| -:- |||||- \
+ * | | \\\ - /// | |
+ * | \_| ''\---/'' | |
+ * \ .-\__ `-` ___/-. /
+ * ___`. .' /--.--\ `. . __
+ * ."" '< `.___\_<|>_/___.' >'"".
+ * | | : `- \`.;`\ _ /`;.`/ - ` : | |
+ * \ \ `-. \_ __\ /__ _/ .-` / /
+ * ======`-.____`-.___\_____/___.-`____.-'======
+ * `=---='
*
* HERE BE BUDDHA
*
@@ -51,40 +51,30 @@
/**
* ProblemMapper测试类.
+ *
* @author Haozhe Xie
*/
@ExtendWith(SpringExtension.class)
@Transactional
@ContextConfiguration({"classpath:test-spring-context.xml"})
public class ProblemMapperTest {
- /**
- * 测试用例: 测试getProblem()方法
- * 测试数据: 使用A+B Problem的试题唯一标识符
- * 预期结果: 返回预期的试题对象
- */
- @Test
- public void testGetProblemExists() {
- Problem problem = problemMapper.getProblem(1000);
- Assertions.assertNotNull(problem);
-
- String problemName = problem.getProblemName();
- Assertions.assertEquals("A+B Problem", problemName);
- }
-
- /**
- * 测试用例: 测试getProblem()方法
- * 测试数据: 使用不存在的试题唯一标识符
- * 预期结果: 返回空引用
- */
- @Test
- public void testGetProblemNotExists() {
- Problem problem = problemMapper.getProblem(0);
- Assertions.assertNull(problem);
- }
-
- /**
- * 待测试的ProblemMapper对象.
- */
- @Autowired
- private ProblemMapper problemMapper;
+ /** 测试用例: 测试getProblem()方法 测试数据: 使用A+B Problem的试题唯一标识符 预期结果: 返回预期的试题对象 */
+ @Test
+ public void testGetProblemExists() {
+ Problem problem = problemMapper.getProblem(1000);
+ Assertions.assertNotNull(problem);
+
+ String problemName = problem.getProblemName();
+ Assertions.assertEquals("A+B Problem", problemName);
+ }
+
+ /** 测试用例: 测试getProblem()方法 测试数据: 使用不存在的试题唯一标识符 预期结果: 返回空引用 */
+ @Test
+ public void testGetProblemNotExists() {
+ Problem problem = problemMapper.getProblem(0);
+ Assertions.assertNull(problem);
+ }
+
+ /** 待测试的ProblemMapper对象. */
+ @Autowired private ProblemMapper problemMapper;
}
diff --git a/judger/src/test/java/org/verwandlung/voj/judger/mapper/SubmissionMapperTest.java b/judger/src/test/java/org/verwandlung/voj/judger/mapper/SubmissionMapperTest.java
index 3ba053dd..532f72e3 100644
--- a/judger/src/test/java/org/verwandlung/voj/judger/mapper/SubmissionMapperTest.java
+++ b/judger/src/test/java/org/verwandlung/voj/judger/mapper/SubmissionMapperTest.java
@@ -15,24 +15,24 @@
* along with this program. If not, see .
*
*
- * _ooOoo_
- * o8888888o
- * 88" . "88
- * (| -_- |)
- * O\ = /O
- * ____/`---'\____
- * .' \\| |// `.
- * / \\||| : |||// \
- * / _||||| -:- |||||- \
- * | | \\\ - /// | |
- * | \_| ''\---/'' | |
- * \ .-\__ `-` ___/-. /
- * ___`. .' /--.--\ `. . __
- * ."" '< `.___\_<|>_/___.' >'"".
- * | | : `- \`.;`\ _ /`;.`/ - ` : | |
- * \ \ `-. \_ __\ /__ _/ .-` / /
- * ======`-.____`-.___\_____/___.-`____.-'======
- * `=---='
+ * _ooOoo_
+ * o8888888o
+ * 88" . "88
+ * (| -_- |)
+ * O\ = /O
+ * ____/`---'\____
+ * .' \\| |// `.
+ * / \\||| : |||// \
+ * / _||||| -:- |||||- \
+ * | | \\\ - /// | |
+ * | \_| ''\---/'' | |
+ * \ .-\__ `-` ___/-. /
+ * ___`. .' /--.--\ `. . __
+ * ."" '< `.___\_<|>_/___.' >'"".
+ * | | : `- \`.;`\ _ /`;.`/ - ` : | |
+ * \ \ `-. \_ __\ /__ _/ .-` / /
+ * ======`-.____`-.___\_____/___.-`____.-'======
+ * `=---='
*
* HERE BE BUDDHA
*
@@ -51,40 +51,30 @@
/**
* SubmissionMapper测试类.
+ *
* @author Haozhe Xie
*/
@ExtendWith(SpringExtension.class)
@Transactional
@ContextConfiguration({"classpath:test-spring-context.xml"})
public class SubmissionMapperTest {
- /**
- * 测试用例: 测试getSubmission(long)方法
- * 测试数据: Problem#1000的提交记录的唯一标识符
- * 预期结果: 返回预期的Submission对象
- */
- @Test
- public void testGetSubmissionExists() {
- Submission submission = submissionMapper.getSubmission(1000);
- Assertions.assertNotNull(submission);
-
- long problemId = submission.getProblem().getProblemId();
- Assertions.assertEquals(1000, problemId);
- }
-
- /**
- * 测试用例: 测试getSubmission(long)方法
- * 测试数据: 不存在的的提交记录唯一标识符
- * 预期结果: 返回空引用
- */
- @Test
- public void testGetSubmissionNotExists() {
- Submission submission = submissionMapper.getSubmission(0);
- Assertions.assertNull(submission);
- }
-
- /**
- * 待测试的SubmissionMapper对象.
- */
- @Autowired
- private SubmissionMapper submissionMapper;
+ /** 测试用例: 测试getSubmission(long)方法 测试数据: Problem#1000的提交记录的唯一标识符 预期结果: 返回预期的Submission对象 */
+ @Test
+ public void testGetSubmissionExists() {
+ Submission submission = submissionMapper.getSubmission(1000);
+ Assertions.assertNotNull(submission);
+
+ long problemId = submission.getProblem().getProblemId();
+ Assertions.assertEquals(1000, problemId);
+ }
+
+ /** 测试用例: 测试getSubmission(long)方法 测试数据: 不存在的的提交记录唯一标识符 预期结果: 返回空引用 */
+ @Test
+ public void testGetSubmissionNotExists() {
+ Submission submission = submissionMapper.getSubmission(0);
+ Assertions.assertNull(submission);
+ }
+
+ /** 待测试的SubmissionMapper对象. */
+ @Autowired private SubmissionMapper submissionMapper;
}
diff --git a/judger/src/test/java/org/verwandlung/voj/judger/mapper/UserGroupMapperTest.java b/judger/src/test/java/org/verwandlung/voj/judger/mapper/UserGroupMapperTest.java
index 267ea2ba..f0c5366b 100644
--- a/judger/src/test/java/org/verwandlung/voj/judger/mapper/UserGroupMapperTest.java
+++ b/judger/src/test/java/org/verwandlung/voj/judger/mapper/UserGroupMapperTest.java
@@ -15,24 +15,24 @@
* along with this program. If not, see .
*
*
- * _ooOoo_
- * o8888888o
- * 88" . "88
- * (| -_- |)
- * O\ = /O
- * ____/`---'\____
- * .' \\| |// `.
- * / \\||| : |||// \
- * / _||||| -:- |||||- \
- * | | \\\ - /// | |
- * | \_| ''\---/'' | |
- * \ .-\__ `-` ___/-. /
- * ___`. .' /--.--\ `. . __
- * ."" '< `.___\_<|>_/___.' >'"".
- * | | : `- \`.;`\ _ /`;.`/ - ` : | |
- * \ \ `-. \_ __\ /__ _/ .-` / /
- * ======`-.____`-.___\_____/___.-`____.-'======
- * `=---='
+ * _ooOoo_
+ * o8888888o
+ * 88" . "88
+ * (| -_- |)
+ * O\ = /O
+ * ____/`---'\____
+ * .' \\| |// `.
+ * / \\||| : |||// \
+ * / _||||| -:- |||||- \
+ * | | \\\ - /// | |
+ * | \_| ''\---/'' | |
+ * \ .-\__ `-` ___/-. /
+ * ___`. .' /--.--\ `. . __
+ * ."" '< `.___\_<|>_/___.' >'"".
+ * | | : `- \`.;`\ _ /`;.`/ - ` : | |
+ * \ \ `-. \_ __\ /__ _/ .-` / /
+ * ======`-.____`-.___\_____/___.-`____.-'======
+ * `=---='
*
* HERE BE BUDDHA
*
@@ -51,41 +51,30 @@
/**
* UserGroupMapper测试类.
- *
+ *
* @author Haozhe Xie
*/
@ExtendWith(SpringExtension.class)
@Transactional
@ContextConfiguration({"classpath:test-spring-context.xml"})
public class UserGroupMapperTest {
- /**
- * 测试用例: 测试getUserGroupUsingId(int)方法
- * 测试数据: 普通用户(User)的用户组唯一标识符
- * 预期结果: 返回用户(User)的用户组对象
- */
- @Test
- public void testGetUserGroupUsingIdExists() {
- UserGroup userGroup = userGroupMapper.getUserGroupUsingId(1);
- Assertions.assertNotNull(userGroup);
-
- String userGroupSlug = userGroup.getUserGroupSlug();
- Assertions.assertEquals("forbidden", userGroupSlug);
- }
-
- /**
- * 测试用例: 测试getUserGroupUsingId(int)方法
- * 测试数据: 不存在的用户组唯一标识符
- * 预期结果: 返回空引用
- */
- @Test
- public void testGetUserGroupUsingIdNotExists() {
- UserGroup userGroup = userGroupMapper.getUserGroupUsingId(0);
- Assertions.assertNull(userGroup);
- }
-
- /**
- * 待测试的UserGroupMapper对象.
- */
- @Autowired
- private UserGroupMapper userGroupMapper;
+ /** 测试用例: 测试getUserGroupUsingId(int)方法 测试数据: 普通用户(User)的用户组唯一标识符 预期结果: 返回用户(User)的用户组对象 */
+ @Test
+ public void testGetUserGroupUsingIdExists() {
+ UserGroup userGroup = userGroupMapper.getUserGroupUsingId(1);
+ Assertions.assertNotNull(userGroup);
+
+ String userGroupSlug = userGroup.getUserGroupSlug();
+ Assertions.assertEquals("forbidden", userGroupSlug);
+ }
+
+ /** 测试用例: 测试getUserGroupUsingId(int)方法 测试数据: 不存在的用户组唯一标识符 预期结果: 返回空引用 */
+ @Test
+ public void testGetUserGroupUsingIdNotExists() {
+ UserGroup userGroup = userGroupMapper.getUserGroupUsingId(0);
+ Assertions.assertNull(userGroup);
+ }
+
+ /** 待测试的UserGroupMapper对象. */
+ @Autowired private UserGroupMapper userGroupMapper;
}
diff --git a/judger/src/test/java/org/verwandlung/voj/judger/mapper/UserMapperTest.java b/judger/src/test/java/org/verwandlung/voj/judger/mapper/UserMapperTest.java
index 394d4eb4..50093d5c 100644
--- a/judger/src/test/java/org/verwandlung/voj/judger/mapper/UserMapperTest.java
+++ b/judger/src/test/java/org/verwandlung/voj/judger/mapper/UserMapperTest.java
@@ -15,24 +15,24 @@
* along with this program. If not, see .
*
*
- * _ooOoo_
- * o8888888o
- * 88" . "88
- * (| -_- |)
- * O\ = /O
- * ____/`---'\____
- * .' \\| |// `.
- * / \\||| : |||// \
- * / _||||| -:- |||||- \
- * | | \\\ - /// | |
- * | \_| ''\---/'' | |
- * \ .-\__ `-` ___/-. /
- * ___`. .' /--.--\ `. . __
- * ."" '< `.___\_<|>_/___.' >'"".
- * | | : `- \`.;`\ _ /`;.`/ - ` : | |
- * \ \ `-. \_ __\ /__ _/ .-` / /
- * ======`-.____`-.___\_____/___.-`____.-'======
- * `=---='
+ * _ooOoo_
+ * o8888888o
+ * 88" . "88
+ * (| -_- |)
+ * O\ = /O
+ * ____/`---'\____
+ * .' \\| |// `.
+ * / \\||| : |||// \
+ * / _||||| -:- |||||- \
+ * | | \\\ - /// | |
+ * | \_| ''\---/'' | |
+ * \ .-\__ `-` ___/-. /
+ * ___`. .' /--.--\ `. . __
+ * ."" '< `.___\_<|>_/___.' >'"".
+ * | | : `- \`.;`\ _ /`;.`/ - ` : | |
+ * \ \ `-. \_ __\ /__ _/ .-` / /
+ * ======`-.____`-.___\_____/___.-`____.-'======
+ * `=---='
*
* HERE BE BUDDHA
*
@@ -51,41 +51,30 @@
/**
* UserMapper测试类.
- *
+ *
* @author Haozhe Xie
*/
@ExtendWith(SpringExtension.class)
@Transactional
@ContextConfiguration({"classpath:test-spring-context.xml"})
public class UserMapperTest {
- /**
- * 测试用例: 测试getUserUsingUsername(String)方法
- * 测试数据: 使用用户名为zjhzxhz的用户
- * 预期结果: 返回预期的用户对象
- */
- @Test
- public void testGetUserUsingUsernameExists() {
- User user = userMapper.getUserUsingUsername("Zjhzxhz");
- Assertions.assertNotNull(user);
-
- long uid = user.getUid();
- Assertions.assertEquals(1000, uid);
- }
-
- /**
- * 测试用例: 测试getUserUsingUsername(String)方法
- * 测试数据: 使用不存在的用户名
- * 预期结果: 返回空引用
- */
- @Test
- public void testGetUserUsingUsernameNotExists() {
- User user = userMapper.getUserUsingUsername("Not-Exists");
- Assertions.assertNull(user);
- }
-
- /**
- * 待测试的UserMapper对象.
- */
- @Autowired
- private UserMapper userMapper;
+ /** 测试用例: 测试getUserUsingUsername(String)方法 测试数据: 使用用户名为zjhzxhz的用户 预期结果: 返回预期的用户对象 */
+ @Test
+ public void testGetUserUsingUsernameExists() {
+ User user = userMapper.getUserUsingUsername("Zjhzxhz");
+ Assertions.assertNotNull(user);
+
+ long uid = user.getUid();
+ Assertions.assertEquals(1000, uid);
+ }
+
+ /** 测试用例: 测试getUserUsingUsername(String)方法 测试数据: 使用不存在的用户名 预期结果: 返回空引用 */
+ @Test
+ public void testGetUserUsingUsernameNotExists() {
+ User user = userMapper.getUserUsingUsername("Not-Exists");
+ Assertions.assertNull(user);
+ }
+
+ /** 待测试的UserMapper对象. */
+ @Autowired private UserMapper userMapper;
}
diff --git a/web/src/main/java/org/verwandlung/voj/web/aspect/InterceptorAspect.java b/web/src/main/java/org/verwandlung/voj/web/aspect/InterceptorAspect.java
index 31d47c3b..e86e49a8 100644
--- a/web/src/main/java/org/verwandlung/voj/web/aspect/InterceptorAspect.java
+++ b/web/src/main/java/org/verwandlung/voj/web/aspect/InterceptorAspect.java
@@ -15,24 +15,24 @@
* along with this program. If not, see .
*
*
- * _ooOoo_
- * o8888888o
- * 88" . "88
- * (| -_- |)
- * O\ = /O
- * ____/`---'\____
- * .' \\| |// `.
- * / \\||| : |||// \
- * / _||||| -:- |||||- \
- * | | \\\ - /// | |
- * | \_| ''\---/'' | |
- * \ .-\__ `-` ___/-. /
- * ___`. .' /--.--\ `. . __
- * ."" '< `.___\_<|>_/___.' >'"".
- * | | : `- \`.;`\ _ /`;.`/ - ` : | |
- * \ \ `-. \_ __\ /__ _/ .-` / /
- * ======`-.____`-.___\_____/___.-`____.-'======
- * `=---='
+ * _ooOoo_
+ * o8888888o
+ * 88" . "88
+ * (| -_- |)
+ * O\ = /O
+ * ____/`---'\____
+ * .' \\| |// `.
+ * / \\||| : |||// \
+ * / _||||| -:- |||||- \
+ * | | \\\ - /// | |
+ * | \_| ''\---/'' | |
+ * \ .-\__ `-` ___/-. /
+ * ___`. .' /--.--\ `. . __
+ * ."" '< `.___\_<|>_/___.' >'"".
+ * | | : `- \`.;`\ _ /`;.`/ - ` : | |
+ * \ \ `-. \_ __\ /__ _/ .-` / /
+ * ======`-.____`-.___\_____/___.-`____.-'======
+ * `=---='
*
* HERE BE BUDDHA
*
@@ -57,131 +57,144 @@
import org.verwandlung.voj.web.service.UserService;
/**
- * 拦截器的切面.
- * 用于完成系统的权限控制.
- *
+ * 拦截器的切面. 用于完成系统的权限控制.
+ *
* @author Haozhe Xie
*/
@Aspect
public class InterceptorAspect {
- /**
- * 控制板视图的切面.
- * 用于检查用户是否有权限加载控制板视图.
- * @param proceedingJoinPoint - ProceedingJoinPoint对象
- * @param request - HttpServletRequest对象
- * @return 一个包含预期试图的ModelAndView对象
- * @throws Throwable
- */
- @Around(value = "execution(* org.verwandlung.voj.web.controller.AccountsController.dashboardView(..)) && args(request, ..)")
- public ModelAndView dashboardViewInterceptor(ProceedingJoinPoint proceedingJoinPoint,
- HttpServletRequest request) throws Throwable {
- ModelAndView view = null;
- HttpSession session = request.getSession();
-
- if ( !isAllowToAccess(session, new String[] { "users", "administrators" }) ) {
- RedirectView redirectView = new RedirectView(request.getContextPath() + "/accounts/login");
- redirectView.setExposeModelAttributes(false);
- return new ModelAndView(redirectView);
- }
- view = (ModelAndView) proceedingJoinPoint.proceed();
- return view;
- }
-
- /**
- * 控制板中异步操作请求的切面.
- * 检查用户是否有权限执行该操作.
- * @param proceedingJoinPoint - ProceedingJoinPoint对象
- * @param request - HttpServletRequest对象
- * @return 预期的操作结果(Map对象)
- * @throws Throwable
- */
- @Around(value = "execution(* org.verwandlung.voj.web.controller.AccountsController.*InDashboardAction(..)) && args(.., request)")
- public Map dashboardActionInterceptor(ProceedingJoinPoint proceedingJoinPoint,
- HttpServletRequest request) throws Throwable {
- HttpSession session = request.getSession();
-
- if ( !isAllowToAccess(session, new String[] { "users", "administrators" }) ) {
- throw new ResourceNotFoundException();
- }
- @SuppressWarnings("unchecked")
- Map result = (Map) proceedingJoinPoint.proceed();
- return result;
- }
-
- /**
- * 系统管理控制器的切面.
- * 用于检查用户是否有权限执行对应操作.
- * @param proceedingJoinPoint - ProceedingJoinPoint对象
- * @param request - HttpServletRequest对象
- * @param request - HttpServletResponse对象
- * @return 一个包含预期试图的ModelAndView对象
- * @throws Throwable
- */
- @Around(value = "execution(* org.verwandlung.voj.web.controller.AdministrationController.*View(..)) && args(.., request, response)")
- public ModelAndView administrationViewInterceptor(ProceedingJoinPoint proceedingJoinPoint,
- HttpServletRequest request, HttpServletResponse response) throws Throwable {
- ModelAndView view = null;
- HttpSession session = request.getSession();
-
- if ( !isAllowToAccess(session, new String[] { "administrators" }) ) {
- RedirectView redirectView = new RedirectView(request.getContextPath() + "/accounts/dashboard");
- redirectView.setExposeModelAttributes(false);
- return new ModelAndView(redirectView);
- }
- view = (ModelAndView) proceedingJoinPoint.proceed();
- return view;
- }
-
- /**
- * 系统管理控制器的切面.
- * 用于检查用户是否有权限执行对应操作.
- * @param proceedingJoinPoint - ProceedingJoinPoint对象
- * @param request - HttpRequest对象
- * @return 一个包含预期结果的Map对象
- * @throws Throwable
- */
- @SuppressWarnings("unchecked")
- @Around(value = "execution(* org.verwandlung.voj.web.controller.AdministrationController.*Action(..)) && args(.., request)")
- public Map AdministrationActionInterceptor(ProceedingJoinPoint proceedingJoinPoint,
- HttpServletRequest request) throws Throwable {
- Map result = null;
- HttpSession session = request.getSession();
-
- if ( !isAllowToAccess(session, new String[] { "administrators" }) ) {
- return null;
- }
- result = (Map) proceedingJoinPoint.proceed();
- return result;
- }
-
- /**
- * 检查用户是否有权限执行该操作.
- * @param session - HttpSession对象
- * @param expectedUserGroupSlugs - 允许执行该操作对应的用户组
- * @return 用户是否有权限执行该操作
- */
- private boolean isAllowToAccess(HttpSession session, String[] expectedUserGroupSlugs) {
- Boolean isLoggedIn = (Boolean)session.getAttribute("isLoggedIn");
- if ( isLoggedIn == null || !isLoggedIn.booleanValue() ) {
- return false;
- }
-
- long uid = (Long)session.getAttribute("uid");
- User user = userService.getUserUsingUid(uid);
- String userGroupSlug = user.getUserGroup().getUserGroupSlug();
-
- for ( String expectedUserGroupSlug : expectedUserGroupSlugs ) {
- if ( userGroupSlug.equals(expectedUserGroupSlug) ) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * 自动注入的UserService对象.
- * 用于查询用户所属的用户组.
- */
- @Autowired
- private UserService userService;
+ /**
+ * 控制板视图的切面. 用于检查用户是否有权限加载控制板视图.
+ *
+ * @param proceedingJoinPoint - ProceedingJoinPoint对象
+ * @param request - HttpServletRequest对象
+ * @return 一个包含预期试图的ModelAndView对象
+ * @throws Throwable
+ */
+ @Around(
+ value =
+ "execution(* org.verwandlung.voj.web.controller.AccountsController.dashboardView(..)) &&"
+ + " args(request, ..)")
+ public ModelAndView dashboardViewInterceptor(
+ ProceedingJoinPoint proceedingJoinPoint, HttpServletRequest request) throws Throwable {
+ ModelAndView view = null;
+ HttpSession session = request.getSession();
+
+ if (!isAllowToAccess(session, new String[] {"users", "administrators"})) {
+ RedirectView redirectView = new RedirectView(request.getContextPath() + "/accounts/login");
+ redirectView.setExposeModelAttributes(false);
+ return new ModelAndView(redirectView);
+ }
+ view = (ModelAndView) proceedingJoinPoint.proceed();
+ return view;
+ }
+
+ /**
+ * 控制板中异步操作请求的切面. 检查用户是否有权限执行该操作.
+ *
+ * @param proceedingJoinPoint - ProceedingJoinPoint对象
+ * @param request - HttpServletRequest对象
+ * @return 预期的操作结果(Map对象)
+ * @throws Throwable
+ */
+ @Around(
+ value =
+ "execution(*"
+ + " org.verwandlung.voj.web.controller.AccountsController.*InDashboardAction(..)) &&"
+ + " args(.., request)")
+ public Map dashboardActionInterceptor(
+ ProceedingJoinPoint proceedingJoinPoint, HttpServletRequest request) throws Throwable {
+ HttpSession session = request.getSession();
+
+ if (!isAllowToAccess(session, new String[] {"users", "administrators"})) {
+ throw new ResourceNotFoundException();
+ }
+ @SuppressWarnings("unchecked")
+ Map result = (Map) proceedingJoinPoint.proceed();
+ return result;
+ }
+
+ /**
+ * 系统管理控制器的切面. 用于检查用户是否有权限执行对应操作.
+ *
+ * @param proceedingJoinPoint - ProceedingJoinPoint对象
+ * @param request - HttpServletRequest对象
+ * @param request - HttpServletResponse对象
+ * @return 一个包含预期试图的ModelAndView对象
+ * @throws Throwable
+ */
+ @Around(
+ value =
+ "execution(* org.verwandlung.voj.web.controller.AdministrationController.*View(..)) &&"
+ + " args(.., request, response)")
+ public ModelAndView administrationViewInterceptor(
+ ProceedingJoinPoint proceedingJoinPoint,
+ HttpServletRequest request,
+ HttpServletResponse response)
+ throws Throwable {
+ ModelAndView view = null;
+ HttpSession session = request.getSession();
+
+ if (!isAllowToAccess(session, new String[] {"administrators"})) {
+ RedirectView redirectView =
+ new RedirectView(request.getContextPath() + "/accounts/dashboard");
+ redirectView.setExposeModelAttributes(false);
+ return new ModelAndView(redirectView);
+ }
+ view = (ModelAndView) proceedingJoinPoint.proceed();
+ return view;
+ }
+
+ /**
+ * 系统管理控制器的切面. 用于检查用户是否有权限执行对应操作.
+ *
+ * @param proceedingJoinPoint - ProceedingJoinPoint对象
+ * @param request - HttpRequest对象
+ * @return 一个包含预期结果的Map对象
+ * @throws Throwable
+ */
+ @SuppressWarnings("unchecked")
+ @Around(
+ value =
+ "execution(* org.verwandlung.voj.web.controller.AdministrationController.*Action(..)) &&"
+ + " args(.., request)")
+ public Map AdministrationActionInterceptor(
+ ProceedingJoinPoint proceedingJoinPoint, HttpServletRequest request) throws Throwable {
+ Map result = null;
+ HttpSession session = request.getSession();
+
+ if (!isAllowToAccess(session, new String[] {"administrators"})) {
+ return null;
+ }
+ result = (Map) proceedingJoinPoint.proceed();
+ return result;
+ }
+
+ /**
+ * 检查用户是否有权限执行该操作.
+ *
+ * @param session - HttpSession对象
+ * @param expectedUserGroupSlugs - 允许执行该操作对应的用户组
+ * @return 用户是否有权限执行该操作
+ */
+ private boolean isAllowToAccess(HttpSession session, String[] expectedUserGroupSlugs) {
+ Boolean isLoggedIn = (Boolean) session.getAttribute("isLoggedIn");
+ if (isLoggedIn == null || !isLoggedIn.booleanValue()) {
+ return false;
+ }
+
+ long uid = (Long) session.getAttribute("uid");
+ User user = userService.getUserUsingUid(uid);
+ String userGroupSlug = user.getUserGroup().getUserGroupSlug();
+
+ for (String expectedUserGroupSlug : expectedUserGroupSlugs) {
+ if (userGroupSlug.equals(expectedUserGroupSlug)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /** 自动注入的UserService对象. 用于查询用户所属的用户组. */
+ @Autowired private UserService userService;
}
diff --git a/web/src/main/java/org/verwandlung/voj/web/aspect/ViewAspect.java b/web/src/main/java/org/verwandlung/voj/web/aspect/ViewAspect.java
index b4f2b228..28f30bf3 100644
--- a/web/src/main/java/org/verwandlung/voj/web/aspect/ViewAspect.java
+++ b/web/src/main/java/org/verwandlung/voj/web/aspect/ViewAspect.java
@@ -15,24 +15,24 @@
* along with this program. If not, see .
*
*
- * _ooOoo_
- * o8888888o
- * 88" . "88
- * (| -_- |)
- * O\ = /O
- * ____/`---'\____
- * .' \\| |// `.
- * / \\||| : |||// \
- * / _||||| -:- |||||- \
- * | | \\\ - /// | |
- * | \_| ''\---/'' | |
- * \ .-\__ `-` ___/-. /
- * ___`. .' /--.--\ `. . __
- * ."" '< `.___\_<|>_/___.' >'"".
- * | | : `- \`.;`\ _ /`;.`/ - ` : | |
- * \ \ `-. \_ __\ /__ _/ .-` / /
- * ======`-.____`-.___\_____/___.-`____.-'======
- * `=---='
+ * _ooOoo_
+ * o8888888o
+ * 88" . "88
+ * (| -_- |)
+ * O\ = /O
+ * ____/`---'\____
+ * .' \\| |// `.
+ * / \\||| : |||// \
+ * / _||||| -:- |||||- \
+ * | | \\\ - /// | |
+ * | \_| ''\---/'' | |
+ * \ .-\__ `-` ___/-. /
+ * ___`. .' /--.--\ `. . __
+ * ."" '< `.___\_<|>_/___.' >'"".
+ * | | : `- \`.;`\ _ /`;.`/ - ` : | |
+ * \ \ `-. \_ __\ /__ _/ .-` / /
+ * ======`-.____`-.___\_____/___.-`____.-'======
+ * `=---='
*
* HERE BE BUDDHA
*
@@ -62,134 +62,138 @@
import org.verwandlung.voj.web.util.LocaleUtils;
/**
- * 视图的切面类.
- * 在加载页面前加载已登录用户的个人信息及答题情况.
+ * 视图的切面类. 在加载页面前加载已登录用户的个人信息及答题情况.
+ *
* @author Haozhe Xie
*/
@Aspect
public class ViewAspect {
- /**
- * 加载已登录用户的个人信息及答题情况.
- * @param proceedingJoinPoint - ProceedingJoinPoint对象
- * @param request - HttpRequest对象
- * @param response - HttpResponse对象
- * @return 一个包含预期视图的ModelAndView对象
- * @throws Throwable - ResourceNotFound异常
- */
- @Around(value = "execution(* org.verwandlung.voj.web.controller.*.*View(..)) && args(.., request, response)")
- public ModelAndView getUserProfile(ProceedingJoinPoint proceedingJoinPoint,
- HttpServletRequest request, HttpServletResponse response) throws Throwable {
- ModelAndView view = null;
- HttpSession session = request.getSession();
-
- view = (ModelAndView) proceedingJoinPoint.proceed();
- view.addAllObjects(getSystemOptions());
- view.addObject("language", getUserLanguage(request, response));
-
- boolean isLoggedIn = isLoggedIn(session);
- if ( isLoggedIn ) {
- long userId = (Long)session.getAttribute("uid");
- User user = userService.getUserUsingUid(userId);
-
- view.addObject("isLogin", isLoggedIn)
- .addObject("myProfile", user)
- .addObject("mySubmissionStats", submissionService.getSubmissionStatsOfUser(userId));
- }
- return view;
- }
-
- /**
- * 检查用户是否已经登录.
- * @param session - HttpSession 对象
- * @return 用户是否已经登录
- */
- private boolean isLoggedIn(HttpSession session) {
- Boolean isLoggedIn = (Boolean)session.getAttribute("isLoggedIn");
- if ( isLoggedIn == null || !isLoggedIn.booleanValue() ) {
- return false;
- }
- return true;
- }
-
- /**
- * 加载系统定义的选项(Option).
- * @return 包含系统定义选项的键值对列表
- */
- private Map getSystemOptions() {
- List