EDU-908 Incorrect task text in adaptive courses after reopening a project

Create new test and text files for new recommendation
This commit is contained in:
Valentina Kiryushkina
2017-04-05 18:44:09 +03:00
parent 7b3f154b5b
commit 0c7a1e0b0f
2 changed files with 6 additions and 37 deletions
@@ -294,7 +294,7 @@ public class StudyProjectGenerator {
createFiles(taskDirectory, task.getTaskTexts());
}
private static void createFiles(@NotNull File taskDirectory, Map<String, String> files) {
public static void createFiles(@NotNull File taskDirectory, Map<String, String> files) {
for (Map.Entry<String, String> entry : files.entrySet()) {
final File file = new File(taskDirectory, entry.getKey());
if (file.exists()) {
@@ -16,9 +16,7 @@ import com.intellij.openapi.ui.MessageType;
import com.intellij.openapi.ui.popup.Balloon;
import com.intellij.openapi.ui.popup.JBPopupFactory;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.jetbrains.edu.learning.StudySettings;
@@ -343,10 +341,13 @@ public class EduAdaptiveStepicConnector {
final File taskDirectory = new File(lessonDirectory, taskName);
StudyProjectGenerator.flushTask(task, taskDirectory);
StudyProjectGenerator.flushCourseJson(course, new File(course.getCourseDirectory()));
final VirtualFile lessonDir = project.getBaseDir().findChild(lessonName);
final VirtualFile lessonDir = project.getBaseDir().findChild(lessonName);
if (lessonDir != null) {
createTestFiles(course, project, unsolvedTask, lessonDir);
final File taskResourceRoot = new File(lessonDir.getCanonicalPath(), EduNames.TASK + unsolvedTask.getIndex());
StudyProjectGenerator.createFiles(taskResourceRoot, task.getTaskTexts());
StudyProjectGenerator.createFiles(taskResourceRoot, task.getTestsText());
}
final StudyToolWindow window = StudyUtils.getStudyToolWindow(project);
if (window != null) {
@@ -414,38 +415,6 @@ public class EduAdaptiveStepicConnector {
task.taskFiles.put(DEFAULT_TASK_NAME, currentTaskFile);
}
private static void createTestFiles(@NotNull Course course, @NotNull Project project,
@NotNull Task unsolvedTask, @NotNull VirtualFile lessonDir) {
ApplicationManager.getApplication().invokeLater(() -> ApplicationManager.getApplication().runWriteAction(() -> {
try {
final VirtualFile taskDir = VfsUtil
.findFileByIoFile(new File(lessonDir.getCanonicalPath(), EduNames.TASK + unsolvedTask.getIndex()), true);
final File resourceRoot = new File(course.getCourseDirectory(), lessonDir.getName());
if (taskDir != null) {
final File newResourceRoot = new File(resourceRoot, taskDir.getName());
File[] filesInTask = newResourceRoot.listFiles();
if (filesInTask != null) {
for (File file : filesInTask) {
final String taskRelativePath = FileUtil.getRelativePath(taskDir.getPath(), file.getPath(), '/');
if (taskRelativePath != null && StudyUtils.isTestsFile(project, taskDir.getName())) {
final File resourceFile = new File(newResourceRoot, taskRelativePath);
final File fileInProject = new File(taskDir.getCanonicalPath(), taskRelativePath);
FileUtil.copy(resourceFile, fileInProject);
}
}
}
}
else {
LOG.warn("Task directory is null");
}
}
catch (IOException e) {
LOG.warn(e.getMessage());
}
}));
}
@NotNull
private static Task getCodeTaskFromStep(@NotNull Project project,
@NotNull StepicWrappers.Step step,