fixed EDU-378 Clean all _windows files just before run

This commit is contained in:
Ekaterina Tuzova
2015-08-06 14:44:09 +03:00
parent c08f4f22be
commit 01f592ff79
2 changed files with 33 additions and 23 deletions
@@ -35,7 +35,6 @@ import com.intellij.openapi.wm.WindowManager;
import com.intellij.openapi.wm.ex.StatusBarEx;
import com.intellij.openapi.wm.ex.WindowManagerEx;
import com.jetbrains.edu.EduDocumentListener;
import com.jetbrains.edu.EduNames;
import com.jetbrains.edu.EduUtils;
import com.jetbrains.edu.courseFormat.AnswerPlaceholder;
import com.jetbrains.edu.courseFormat.Task;
@@ -85,26 +84,6 @@ public class StudyCheckAction extends DumbAwareAction {
}
}
private static void deleteWindowDescriptions(@NotNull final Task task, @NotNull final VirtualFile taskDir) {
for (Map.Entry<String, TaskFile> entry : task.getTaskFiles().entrySet()) {
String name = entry.getKey();
VirtualFile virtualFile = taskDir.findChild(name);
if (virtualFile == null) {
continue;
}
String windowsFileName = virtualFile.getNameWithoutExtension() + EduNames.WINDOWS_POSTFIX;
final VirtualFile windowsFile = taskDir.findChild(windowsFileName);
if (windowsFile != null) {
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
StudyUtils.deleteFile(windowsFile);
}
});
}
}
}
private static void drawAllPlaceholders(@NotNull final Project project, @NotNull final Task task, @NotNull final VirtualFile taskDir) {
for (Map.Entry<String, TaskFile> entry : task.getTaskFiles().entrySet()) {
String name = entry.getKey();
@@ -219,14 +198,14 @@ public class StudyCheckAction extends DumbAwareAction {
StudyUtils.updateStudyToolWindow(project);
drawAllPlaceholders(project, task, taskDir);
ProjectView.getInstance(project).refresh();
deleteWindowDescriptions(task, taskDir);
EduUtils.deleteWindowDescriptions(task, taskDir);
checkInProgress = false;
}
@Override
public void onCancel() {
taskManager.setStatus(task, statusBeforeCheck);
deleteWindowDescriptions(task, taskDir);
EduUtils.deleteWindowDescriptions(task, taskDir);
checkInProgress = false;
}
@@ -19,6 +19,7 @@ import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.jetbrains.edu.courseFormat.AnswerPlaceholder;
import com.jetbrains.edu.courseFormat.Task;
import com.jetbrains.edu.courseFormat.TaskFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -106,6 +107,7 @@ public class EduUtils {
}
if (taskDir != null) {
final String name = file.getNameWithoutExtension() + EduNames.WINDOWS_POSTFIX;
deleteWindowsFile(taskDir, name);
PrintWriter printWriter = null;
try {
fileWindows = taskDir.createChildData(taskFile, name);
@@ -232,4 +234,33 @@ public class EduUtils {
}
}, "Replace Answer Placeholders", "Replace Answer Placeholders");
}
public static void deleteWindowDescriptions(@NotNull final Task task, @NotNull final VirtualFile taskDir) {
for (Map.Entry<String, TaskFile> entry : task.getTaskFiles().entrySet()) {
String name = entry.getKey();
VirtualFile virtualFile = taskDir.findChild(name);
if (virtualFile == null) {
continue;
}
String windowsFileName = virtualFile.getNameWithoutExtension() + EduNames.WINDOWS_POSTFIX;
deleteWindowsFile(taskDir, windowsFileName);
}
}
private static void deleteWindowsFile(@NotNull final VirtualFile taskDir, @NotNull final String name) {
final VirtualFile fileWindows = taskDir.findChild(name);
if (fileWindows != null && fileWindows.exists()) {
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
try {
fileWindows.delete(taskDir);
}
catch (IOException e) {
LOG.warn("Tried to delete non existed _windows file");
}
}
});
}
}
}