mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
EDU-452 Save task status when converting to new course format
This commit is contained in:
+10
-2
@@ -3,12 +3,14 @@ package com.jetbrains.edu.learning;
|
||||
import com.intellij.openapi.components.*;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.ui.JBColor;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.containers.hash.HashMap;
|
||||
import com.intellij.util.xmlb.XmlSerializer;
|
||||
import com.jetbrains.edu.EduUtils;
|
||||
import com.jetbrains.edu.courseFormat.*;
|
||||
import com.jetbrains.edu.learning.courseFormat.StudyStatus;
|
||||
import com.jetbrains.edu.courseFormat.StudyStatus;
|
||||
import com.jetbrains.edu.learning.courseFormat.UserTest;
|
||||
import com.jetbrains.edu.oldCourseFormat.OldCourse;
|
||||
import org.jdom.Element;
|
||||
@@ -203,7 +205,13 @@ public class StudyTaskManager implements PersistentStateComponent<Element>, Dumb
|
||||
if (oldCourseElement != null) {
|
||||
myOldCourse = XmlSerializer.deserialize(oldCourseElement, OldCourse.class);
|
||||
if (myOldCourse != null) {
|
||||
myCourse = EduUtils.transformOldCourse(myOldCourse);
|
||||
myCourse = EduUtils.transformOldCourse(myOldCourse, new Function<Pair<AnswerPlaceholder, StudyStatus>, Void>() {
|
||||
@Override
|
||||
public Void fun(Pair<AnswerPlaceholder, StudyStatus> pair) {
|
||||
setStatus(pair.first, pair.second);
|
||||
return null;
|
||||
}
|
||||
});
|
||||
myOldCourse = null;
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -43,7 +43,7 @@ import com.jetbrains.edu.courseFormat.TaskFile;
|
||||
import com.jetbrains.edu.learning.StudyState;
|
||||
import com.jetbrains.edu.learning.StudyTaskManager;
|
||||
import com.jetbrains.edu.learning.StudyUtils;
|
||||
import com.jetbrains.edu.learning.courseFormat.StudyStatus;
|
||||
import com.jetbrains.edu.courseFormat.StudyStatus;
|
||||
import com.jetbrains.edu.learning.editor.StudyEditor;
|
||||
import com.jetbrains.edu.learning.navigation.StudyNavigator;
|
||||
import com.jetbrains.edu.learning.run.StudySmartChecker;
|
||||
@@ -193,7 +193,7 @@ public class StudyCheckAction extends DumbAwareAction {
|
||||
|
||||
final StudyTaskManager taskManager = StudyTaskManager.getInstance(project);
|
||||
final StudyStatus statusBeforeCheck = taskManager.getStatus(task);
|
||||
return new com.intellij.openapi.progress.Task.Backgroundable(project, "Checking task", true) {
|
||||
return new com.intellij.openapi.progress.Task.Backgroundable(project, "Checking Task", true) {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
StudyUtils.updateToolWindows(project);
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ import com.jetbrains.edu.courseFormat.TaskFile;
|
||||
import com.jetbrains.edu.learning.StudyState;
|
||||
import com.jetbrains.edu.learning.StudyTaskManager;
|
||||
import com.jetbrains.edu.learning.StudyUtils;
|
||||
import com.jetbrains.edu.learning.courseFormat.StudyStatus;
|
||||
import com.jetbrains.edu.courseFormat.StudyStatus;
|
||||
import com.jetbrains.edu.learning.editor.StudyEditor;
|
||||
import com.jetbrains.edu.learning.navigation.StudyNavigator;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
-10
@@ -1,10 +0,0 @@
|
||||
package com.jetbrains.edu.learning.courseFormat;
|
||||
|
||||
import com.jetbrains.edu.courseFormat.AnswerPlaceholder;
|
||||
|
||||
/**
|
||||
* @see {@link AnswerPlaceholder#myStatus}
|
||||
*/
|
||||
public enum StudyStatus {
|
||||
Unchecked, Solved, Failed
|
||||
}
|
||||
+1
-1
@@ -10,7 +10,7 @@ import com.jetbrains.edu.courseFormat.Task;
|
||||
import com.jetbrains.edu.courseFormat.TaskFile;
|
||||
import com.jetbrains.edu.learning.StudyTaskManager;
|
||||
import com.jetbrains.edu.learning.StudyUtils;
|
||||
import com.jetbrains.edu.learning.courseFormat.StudyStatus;
|
||||
import com.jetbrains.edu.courseFormat.StudyStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ import com.jetbrains.edu.courseFormat.Task;
|
||||
import com.jetbrains.edu.courseFormat.TaskFile;
|
||||
import com.jetbrains.edu.learning.StudyTaskManager;
|
||||
import com.jetbrains.edu.learning.StudyUtils;
|
||||
import com.jetbrains.edu.learning.courseFormat.StudyStatus;
|
||||
import com.jetbrains.edu.courseFormat.StudyStatus;
|
||||
import icons.EducationalIcons;
|
||||
import icons.InteractiveLearningIcons;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ import com.jetbrains.edu.courseFormat.AnswerPlaceholder;
|
||||
import com.jetbrains.edu.courseFormat.TaskFile;
|
||||
import com.jetbrains.edu.learning.StudyTaskManager;
|
||||
import com.jetbrains.edu.learning.StudyUtils;
|
||||
import com.jetbrains.edu.learning.courseFormat.StudyStatus;
|
||||
import com.jetbrains.edu.courseFormat.StudyStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ import com.jetbrains.edu.courseFormat.Course;
|
||||
import com.jetbrains.edu.courseFormat.Lesson;
|
||||
import com.jetbrains.edu.courseFormat.Task;
|
||||
import com.jetbrains.edu.learning.StudyTaskManager;
|
||||
import com.jetbrains.edu.learning.courseFormat.StudyStatus;
|
||||
import com.jetbrains.edu.courseFormat.StudyStatus;
|
||||
import icons.InteractiveLearningIcons;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
|
||||
@@ -9,18 +9,15 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.openapi.util.io.FileUtilRt;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileManager;
|
||||
import com.intellij.psi.PsiDirectory;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import com.jetbrains.edu.courseFormat.AnswerPlaceholder;
|
||||
import com.jetbrains.edu.courseFormat.Course;
|
||||
import com.jetbrains.edu.courseFormat.Lesson;
|
||||
import com.jetbrains.edu.courseFormat.StudyItem;
|
||||
import com.jetbrains.edu.courseFormat.Task;
|
||||
import com.jetbrains.edu.courseFormat.TaskFile;
|
||||
import com.jetbrains.edu.courseFormat.*;
|
||||
import com.jetbrains.edu.oldCourseFormat.OldCourse;
|
||||
import com.jetbrains.edu.oldCourseFormat.TaskWindow;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
@@ -280,6 +277,12 @@ public class EduUtils {
|
||||
|
||||
@NotNull
|
||||
public static Course transformOldCourse(@NotNull final OldCourse oldCourse) {
|
||||
return transformOldCourse(oldCourse, null);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static Course transformOldCourse(@NotNull final OldCourse oldCourse,
|
||||
@Nullable Function<Pair<AnswerPlaceholder, StudyStatus>, Void> setStatus) {
|
||||
Course course = new Course();
|
||||
course.setDescription(oldCourse.description);
|
||||
course.setName(oldCourse.name);
|
||||
@@ -307,15 +310,16 @@ public class EduUtils {
|
||||
final ArrayList<AnswerPlaceholder> placeholders = new ArrayList<AnswerPlaceholder>();
|
||||
for (TaskWindow window : oldTaskFile.taskWindows) {
|
||||
final AnswerPlaceholder placeholder = new AnswerPlaceholder();
|
||||
|
||||
placeholder.setIndex(window.myIndex);
|
||||
placeholder.setHint(window.hint);
|
||||
placeholder.setLength(window.length);
|
||||
placeholder.setLine(window.line);
|
||||
placeholder.setPossibleAnswer(window.possibleAnswer);
|
||||
placeholder.setStart(window.start);
|
||||
|
||||
placeholders.add(placeholder);
|
||||
if (setStatus != null) {
|
||||
setStatus.fun(Pair.create(placeholder, window.myStatus));
|
||||
}
|
||||
}
|
||||
|
||||
taskFile.setAnswerPlaceholders(placeholders);
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.jetbrains.edu.courseFormat;
|
||||
|
||||
public enum StudyStatus {
|
||||
Unchecked, Solved, Failed
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.jetbrains.edu.oldCourseFormat;
|
||||
|
||||
import com.jetbrains.edu.courseFormat.StudyStatus;
|
||||
|
||||
/**
|
||||
* Implementation of windows which user should type in
|
||||
*/
|
||||
@@ -15,4 +17,5 @@ public class TaskWindow {
|
||||
public int myInitialLine = -1;
|
||||
public int myInitialStart = -1;
|
||||
public int myInitialLength = -1;
|
||||
public StudyStatus myStatus = StudyStatus.Unchecked;
|
||||
}
|
||||
Reference in New Issue
Block a user