From cde1212143f17d914b7377c40cab0b09ebbd5f68 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Fri, 13 Feb 2015 22:33:39 +0300 Subject: [PATCH] get rid of lessonInfo completely --- .../learning/actions/StudyCheckAction.java | 8 +-- .../actions/StudyRefreshTaskFileAction.java | 15 ++--- .../courseGeneration/StudyGenerator.java | 4 -- .../edu/learning/run/StudySmartChecker.java | 2 +- .../learning/ui/StudyToolWindowFactory.java | 17 +++-- .../edu/courseFormat/AnswerPlaceholder.java | 4 +- .../jetbrains/edu/courseFormat/Lesson.java | 11 +--- .../edu/courseFormat/StudyStateful.java | 2 +- .../com/jetbrains/edu/courseFormat/Task.java | 10 +-- .../jetbrains/edu/courseFormat/TaskFile.java | 4 +- .../edu/courseFormat/info/LessonInfo.java | 62 ------------------- 11 files changed, 32 insertions(+), 107 deletions(-) delete mode 100644 python/educational/src/com/jetbrains/edu/courseFormat/info/LessonInfo.java diff --git a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyCheckAction.java b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyCheckAction.java index 10531b584a95..34431c0cbfa0 100644 --- a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyCheckAction.java +++ b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyCheckAction.java @@ -205,7 +205,7 @@ public class StudyCheckAction extends DumbAwareAction { @Override public void onCancel() { StudyStatus currentStatus = task.getStatus(); - task.setStatus(statusBeforeCheck, currentStatus); + task.setStatus(statusBeforeCheck); deleteWindowDescriptions(task, taskDir); selectedEditor.getCheckButton().setEnabled(true); } @@ -226,7 +226,7 @@ public class StudyCheckAction extends DumbAwareAction { } final String failedMessage = testRunner.getTestsOutput(output); if (StudyTestRunner.TEST_OK.equals(failedMessage)) { - task.setStatus(StudyStatus.Solved, statusBeforeCheck); + task.setStatus(StudyStatus.Solved); ApplicationManager.getApplication().invokeLater(new Runnable() { @Override public void run() { @@ -239,12 +239,12 @@ public class StudyCheckAction extends DumbAwareAction { @Override public void run() { if (taskDir == null) return; - task.setStatus(StudyStatus.Failed, statusBeforeCheck); + task.setStatus(StudyStatus.Failed); for (Map.Entry entry : taskFiles.entrySet()) { final String name = entry.getKey(); final TaskFile taskFile = entry.getValue(); if (taskFile.getAnswerPlaceholders().size() < 2) { - taskFile.setStatus(StudyStatus.Failed, StudyStatus.Unchecked); + taskFile.setStatus(StudyStatus.Failed); continue; } CommandProcessor.getInstance().runUndoTransparentAction(new Runnable() { diff --git a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyRefreshTaskFileAction.java b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyRefreshTaskFileAction.java index 027d50deef7d..1d142558575d 100644 --- a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyRefreshTaskFileAction.java +++ b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyRefreshTaskFileAction.java @@ -21,8 +21,10 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.problems.WolfTheProblemSolver; import com.jetbrains.edu.StudyNames; -import com.jetbrains.edu.courseFormat.*; -import com.jetbrains.edu.courseFormat.info.LessonInfo; +import com.jetbrains.edu.courseFormat.AnswerPlaceholder; +import com.jetbrains.edu.courseFormat.Course; +import com.jetbrains.edu.courseFormat.Task; +import com.jetbrains.edu.courseFormat.TaskFile; import com.jetbrains.edu.learning.StudyAnswerPlaceholderPainter; import com.jetbrains.edu.learning.StudyState; import com.jetbrains.edu.learning.StudyUtils; @@ -86,10 +88,9 @@ public class StudyRefreshTaskFileAction extends DumbAwareAction { if (!resetDocument(project, document, taskFile, name)) { return false; } - updateLessonInfo(taskFile.getTask()); - StudyUtils.updateStudyToolWindow(project); resetTaskWindows(taskFile); ProjectView.getInstance(project).refresh(); + StudyUtils.updateStudyToolWindow(project); return true; } @@ -109,12 +110,6 @@ public class StudyRefreshTaskFileAction extends DumbAwareAction { } } - private static void updateLessonInfo(Task currentTask) { - StudyStatus oldStatus = currentTask.getStatus(); - LessonInfo lessonInfo = currentTask.getLesson().getLessonInfo(); - lessonInfo.update(oldStatus, -1); - lessonInfo.update(StudyStatus.Unchecked, +1); - } private static boolean resetDocument(@NotNull final Project project, @NotNull final Document document, diff --git a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/courseGeneration/StudyGenerator.java b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/courseGeneration/StudyGenerator.java index c760ea735379..185edb35df41 100644 --- a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/courseGeneration/StudyGenerator.java +++ b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/courseGeneration/StudyGenerator.java @@ -6,7 +6,6 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VirtualFile; import com.jetbrains.edu.StudyNames; import com.jetbrains.edu.courseFormat.*; -import com.jetbrains.edu.courseFormat.info.LessonInfo; import com.jetbrains.edu.learning.StudyUtils; import org.jetbrains.annotations.NotNull; @@ -136,10 +135,7 @@ public class StudyGenerator { public static void initLesson(@NotNull final Lesson lesson, final Course course, boolean isRestarted) { lesson.setCourse(course); - final LessonInfo info = lesson.getLessonInfo(); final List taskList = lesson.getTaskList(); - info.setTaskNum(taskList.size()); - info.setTaskUnchecked(taskList.size()); for (Task task : taskList) { initTask(task, lesson, isRestarted); } diff --git a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/run/StudySmartChecker.java b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/run/StudySmartChecker.java index 9321ec2b3f52..b1eee315216d 100644 --- a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/run/StudySmartChecker.java +++ b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/run/StudySmartChecker.java @@ -66,7 +66,7 @@ public class StudySmartChecker { final CapturingProcessHandler handler = new CapturingProcessHandler(smartTestProcess); final ProcessOutput output = handler.runProcess(); boolean res = testRunner.getTestsOutput(output).equals(StudyTestRunner.TEST_OK); - userAnswerPlaceholder.setStatus(res ? StudyStatus.Solved : StudyStatus.Failed, StudyStatus.Unchecked); + userAnswerPlaceholder.setStatus(res ? StudyStatus.Solved : StudyStatus.Failed); StudyUtils.deleteFile(windowCopy); if (fileWindows != null) { StudyUtils.deleteFile(fileWindows); diff --git a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/ui/StudyToolWindowFactory.java b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/ui/StudyToolWindowFactory.java index 30a40c6fc156..f383e5e7f18c 100644 --- a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/ui/StudyToolWindowFactory.java +++ b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/ui/StudyToolWindowFactory.java @@ -10,7 +10,7 @@ import com.intellij.util.ui.UIUtil; import com.jetbrains.edu.courseFormat.Course; import com.jetbrains.edu.courseFormat.Lesson; import com.jetbrains.edu.courseFormat.StudyStatus; -import com.jetbrains.edu.courseFormat.info.LessonInfo; +import com.jetbrains.edu.courseFormat.Task; import com.jetbrains.edu.learning.StudyTaskManager; import org.jetbrains.annotations.NotNull; @@ -50,9 +50,8 @@ public class StudyToolWindowFactory implements ToolWindowFactory, DumbAware { if (lesson.getStatus() == StudyStatus.Solved) { lessonsCompleted++; } - LessonInfo lessonInfo = lesson.getLessonInfo(); - taskNum += lessonInfo.getTaskNum(); - taskSolved += lessonInfo.getTaskSolved(); + taskNum += lesson.getTaskList().size(); + taskSolved += getTaskSolved(lesson); } String completedLessons = String.format("%d of %d lessons completed", lessonsCompleted, course.getLessons().size()); String completedTasks = String.format("%d of %d tasks completed", taskSolved, taskNum); @@ -72,6 +71,16 @@ public class StudyToolWindowFactory implements ToolWindowFactory, DumbAware { } } + private static int getTaskSolved(@NotNull final Lesson lesson) { + int solved = 0; + for (Task task : lesson.getTaskList()) { + if (task.getStatus() == StudyStatus.Solved) { + solved += 1; + } + } + return solved; + } + private static void addStatistics(String statistics, JPanel contentPanel) { String labelText = UIUtil.toHtml(statistics, 5); contentPanel.add(Box.createRigidArea(new Dimension(0, 10))); diff --git a/python/educational/src/com/jetbrains/edu/courseFormat/AnswerPlaceholder.java b/python/educational/src/com/jetbrains/edu/courseFormat/AnswerPlaceholder.java index 7e9c8742784d..3cfa988e55bc 100644 --- a/python/educational/src/com/jetbrains/edu/courseFormat/AnswerPlaceholder.java +++ b/python/educational/src/com/jetbrains/edu/courseFormat/AnswerPlaceholder.java @@ -16,6 +16,7 @@ public class AnswerPlaceholder implements Comparable, StudyStateful { @Expose private int line = 0; @Expose private int start = 0; @Expose private String hint = ""; + @SerializedName("possible_answer") @Expose private String possibleAnswer = ""; @Expose private int length = 0; @@ -24,14 +25,13 @@ public class AnswerPlaceholder implements Comparable, StudyStateful { private String myTaskText; private MyInitialState myInitialState; - @Transient private TaskFile myTaskFile; public StudyStatus getStatus() { return myStatus; } - public void setStatus(StudyStatus status, StudyStatus oldStatus) { + public void setStatus(StudyStatus status) { myStatus = status; } diff --git a/python/educational/src/com/jetbrains/edu/courseFormat/Lesson.java b/python/educational/src/com/jetbrains/edu/courseFormat/Lesson.java index d62b544ded55..31f27aa00b83 100644 --- a/python/educational/src/com/jetbrains/edu/courseFormat/Lesson.java +++ b/python/educational/src/com/jetbrains/edu/courseFormat/Lesson.java @@ -2,7 +2,6 @@ package com.jetbrains.edu.courseFormat; import com.google.gson.annotations.SerializedName; import com.intellij.util.xmlb.annotations.Transient; -import com.jetbrains.edu.courseFormat.info.LessonInfo; import java.util.ArrayList; import java.util.List; @@ -24,8 +23,6 @@ public class Lesson implements StudyStateful { @Transient private Course myCourse = null; private int myIndex = -1; - private LessonInfo myLessonInfo = new LessonInfo(); - public String getName() { return name; @@ -43,10 +40,6 @@ public class Lesson implements StudyStateful { myIndex = index; } - public LessonInfo getLessonInfo() { - return myLessonInfo; - } - @Transient public StudyStatus getStatus() { for (Task task : taskList) { @@ -59,9 +52,9 @@ public class Lesson implements StudyStateful { } @Override - public void setStatus(StudyStatus status, StudyStatus oldStatus) { + public void setStatus(StudyStatus status) { for (Task task : taskList) { - task.setStatus(status, oldStatus); + task.setStatus(status); } } diff --git a/python/educational/src/com/jetbrains/edu/courseFormat/StudyStateful.java b/python/educational/src/com/jetbrains/edu/courseFormat/StudyStateful.java index 57984fd5b6da..117f661e445f 100644 --- a/python/educational/src/com/jetbrains/edu/courseFormat/StudyStateful.java +++ b/python/educational/src/com/jetbrains/edu/courseFormat/StudyStateful.java @@ -2,5 +2,5 @@ package com.jetbrains.edu.courseFormat; public interface StudyStateful { StudyStatus getStatus(); - void setStatus(StudyStatus status, StudyStatus oldStatus); + void setStatus(StudyStatus status); } diff --git a/python/educational/src/com/jetbrains/edu/courseFormat/Task.java b/python/educational/src/com/jetbrains/edu/courseFormat/Task.java index 87f664db6f7a..427042bfc782 100644 --- a/python/educational/src/com/jetbrains/edu/courseFormat/Task.java +++ b/python/educational/src/com/jetbrains/edu/courseFormat/Task.java @@ -4,7 +4,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.xmlb.annotations.Transient; import com.jetbrains.edu.StudyNames; -import com.jetbrains.edu.courseFormat.info.LessonInfo; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -80,14 +79,9 @@ public class Task implements StudyStateful { return StudyStatus.Solved; } - public void setStatus(@NotNull final StudyStatus status, @NotNull final StudyStatus oldStatus) { - LessonInfo lessonInfo = myLesson.getLessonInfo(); - if (status != oldStatus) { - lessonInfo.update(oldStatus, -1); - lessonInfo.update(status, +1); - } + public void setStatus(@NotNull final StudyStatus status) { for (TaskFile taskFile : taskFiles.values()) { - taskFile.setStatus(status, oldStatus); + taskFile.setStatus(status); } } diff --git a/python/educational/src/com/jetbrains/edu/courseFormat/TaskFile.java b/python/educational/src/com/jetbrains/edu/courseFormat/TaskFile.java index c7e5302af649..36f1c03ab0a3 100644 --- a/python/educational/src/com/jetbrains/edu/courseFormat/TaskFile.java +++ b/python/educational/src/com/jetbrains/edu/courseFormat/TaskFile.java @@ -47,9 +47,9 @@ public class TaskFile implements StudyStateful { return StudyStatus.Solved; } - public void setStatus(@NotNull final StudyStatus status, @NotNull final StudyStatus oldStatus) { + public void setStatus(@NotNull final StudyStatus status) { for (AnswerPlaceholder answerPlaceholder : myAnswerPlaceholders) { - answerPlaceholder.setStatus(status, oldStatus); + answerPlaceholder.setStatus(status); } } diff --git a/python/educational/src/com/jetbrains/edu/courseFormat/info/LessonInfo.java b/python/educational/src/com/jetbrains/edu/courseFormat/info/LessonInfo.java deleted file mode 100644 index 251777b7a74d..000000000000 --- a/python/educational/src/com/jetbrains/edu/courseFormat/info/LessonInfo.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.jetbrains.edu.courseFormat.info; - -import com.jetbrains.edu.courseFormat.StudyStatus; - -/** - * Implementation of class which contains information about student progress in current lesson - */ -public class LessonInfo { - private int myTaskNum; - private int myTaskFailed; - private int myTaskSolved; - private int myTaskUnchecked; - - public int getTaskNum() { - return myTaskNum; - } - - public void setTaskNum(int taskNum) { - myTaskNum = taskNum; - } - - public int getTaskFailed() { - return myTaskFailed; - } - - public void setTaskFailed(int taskFailed) { - myTaskFailed = taskFailed; - } - - public int getTaskSolved() { - return myTaskSolved; - } - - public void setTaskSolved(int taskSolved) { - myTaskSolved = taskSolved; - } - - public int getTaskUnchecked() { - return myTaskUnchecked; - } - - public void setTaskUnchecked(int taskUnchecked) { - myTaskUnchecked = taskUnchecked; - } - - public void update(StudyStatus status, int delta) { - switch (status) { - case Solved: { - myTaskSolved += delta; - break; - } - case Failed: { - myTaskFailed += delta; - break; - } - case Unchecked: { - myTaskUnchecked += delta; - break; - } - } - } -}