EDU-452 Save task status when converting to new course format

This commit is contained in:
liana.bakradze
2015-09-08 10:46:48 +03:00
parent 54217b461b
commit a3847653db
11 changed files with 37 additions and 27 deletions
@@ -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;
}
}
@@ -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);
@@ -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;
@@ -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
}
@@ -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;
@@ -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;
@@ -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;
@@ -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;
}