From 0cbea727948969ef96a0069f06d638e5ae4e7736 Mon Sep 17 00:00:00 2001 From: "liana.bakradze" Date: Mon, 18 Apr 2016 12:24:06 +0300 Subject: [PATCH] do not use old service --- .../CCRefactoringElementListenerProvider.java | 30 +++++++++++++++---- .../jetbrains/edu/coursecreator/CCUtils.java | 24 +++++++++++++++ .../coursecreator/CCVirtualFileListener.java | 28 +---------------- .../jetbrains/edu/learning/StudyUtils.java | 13 ++++++-- .../PyCCReferenceResolveProvider.java | 4 ++- 5 files changed, 63 insertions(+), 36 deletions(-) diff --git a/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCRefactoringElementListenerProvider.java b/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCRefactoringElementListenerProvider.java index ed9b404e04a5..7dbd894d8980 100644 --- a/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCRefactoringElementListenerProvider.java +++ b/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCRefactoringElementListenerProvider.java @@ -16,24 +16,30 @@ package com.jetbrains.edu.coursecreator; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.refactoring.listeners.RefactoringElementAdapter; import com.intellij.refactoring.listeners.RefactoringElementListener; import com.intellij.refactoring.listeners.RefactoringElementListenerProvider; +import com.jetbrains.edu.learning.StudyTaskManager; +import com.jetbrains.edu.learning.StudyUtils; import com.jetbrains.edu.learning.core.EduNames; import com.jetbrains.edu.learning.courseFormat.Course; import com.jetbrains.edu.learning.courseFormat.Lesson; import com.jetbrains.edu.learning.courseFormat.Task; import com.jetbrains.edu.learning.courseFormat.TaskFile; -import com.jetbrains.edu.coursecreator.actions.CCRunTestsAction; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.io.IOException; import java.util.Map; public class CCRefactoringElementListenerProvider implements RefactoringElementListenerProvider { + private static final Logger LOG = Logger.getInstance(CCRefactoringElementListenerProvider.class); + @Nullable @Override public RefactoringElementListener getListener(PsiElement element) { @@ -62,8 +68,7 @@ public class CCRefactoringElementListenerProvider implements RefactoringElementL private static void tryToRenameTaskFile(PsiFile file, String oldName) { final PsiDirectory taskDir = file.getContainingDirectory(); - final CCProjectService service = CCProjectService.getInstance(file.getProject()); - Course course = service.getCourse(); + Course course = StudyTaskManager.getInstance(file.getProject()).getCourse(); if (course == null) { return; } @@ -82,16 +87,29 @@ public class CCRefactoringElementListenerProvider implements RefactoringElementL if (task == null) { return; } + Map taskFiles = task.getTaskFiles(); + TaskFile taskFile = task.getTaskFile(oldName); + if (taskFile == null) { + return; + } ApplicationManager.getApplication().runWriteAction(new Runnable() { @Override public void run() { - CCRunTestsAction.clearTestEnvironment(taskDir.getVirtualFile(), taskDir.getProject()); + VirtualFile patternFile = StudyUtils.getPatternFile(taskFile, oldName); + if (patternFile != null) { + try { + patternFile.delete(CCRefactoringElementListenerProvider.class); + } + catch (IOException e) { + LOG.info(e); + } + } } }); - Map taskFiles = task.getTaskFiles(); - TaskFile taskFile = task.getTaskFile(oldName); + taskFiles.remove(oldName); taskFiles.put(file.getName(), taskFile); + CCUtils.createResourceFile(file.getVirtualFile(), course, taskDir.getVirtualFile()); } @Override diff --git a/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCUtils.java b/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCUtils.java index 139a15be6845..78ad05d7aaa0 100644 --- a/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCUtils.java +++ b/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCUtils.java @@ -14,6 +14,7 @@ import com.intellij.openapi.roots.ContentEntry; import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.util.Ref; +import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileEvent; import com.intellij.psi.PsiDirectory; @@ -25,6 +26,7 @@ import com.jetbrains.edu.learning.courseFormat.StudyItem; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -190,4 +192,26 @@ public class CCUtils { } return manager.isTestFile(file); } + + public static void createResourceFile(VirtualFile createdFile, Course course, VirtualFile taskVF) { + VirtualFile lessonVF = taskVF.getParent(); + if (lessonVF == null) { + return; + } + + String taskResourcesPath = FileUtil.join(course.getCourseDirectory(), lessonVF.getName(), taskVF.getName()); + File taskResourceFile = new File(taskResourcesPath); + if (!taskResourceFile.exists()) { + if (!taskResourceFile.mkdirs()) { + LOG.info("Failed to create resources for task " + taskResourcesPath); + } + } + try { + File toFile = new File(taskResourceFile, createdFile.getName()); + FileUtil.copy(new File(createdFile.getPath()), toFile); + } + catch (IOException e) { + LOG.info("Failed to copy created task file to resources " + createdFile.getPath()); + } + } } diff --git a/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCVirtualFileListener.java b/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCVirtualFileListener.java index 967d885cdf2e..3c3be598ca7f 100644 --- a/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCVirtualFileListener.java +++ b/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCVirtualFileListener.java @@ -3,7 +3,6 @@ package com.jetbrains.edu.coursecreator; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectUtil; -import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileAdapter; import com.intellij.openapi.vfs.VirtualFileEvent; @@ -14,9 +13,6 @@ import com.jetbrains.edu.learning.core.EduNames; import com.jetbrains.edu.learning.courseFormat.*; import org.jetbrains.annotations.NotNull; -import java.io.File; -import java.io.IOException; - public class CCVirtualFileListener extends VirtualFileAdapter { private static final Logger LOG = Logger.getInstance(CCVirtualFileListener.class); @@ -55,33 +51,11 @@ public class CCVirtualFileListener extends VirtualFileAdapter { return; } - createResourceFile(createdFile, course, taskVF); + CCUtils.createResourceFile(createdFile, course, taskVF); task.addTaskFile(name, 1); } - private static void createResourceFile(VirtualFile createdFile, Course course, VirtualFile taskVF) { - VirtualFile lessonVF = taskVF.getParent(); - if (lessonVF == null) { - return; - } - - String taskResourcesPath = FileUtil.join(course.getCourseDirectory(), lessonVF.getName(), taskVF.getName()); - File taskResourceFile = new File(taskResourcesPath); - if (!taskResourceFile.exists()) { - if (!taskResourceFile.mkdirs()) { - LOG.info("Failed to create resources for task " + taskResourcesPath); - } - } - try { - File toFile = new File(taskResourceFile, createdFile.getName()); - FileUtil.copy(new File(createdFile.getPath()), toFile); - } - catch (IOException e) { - LOG.info("Failed to copy created task file to resources " + createdFile.getPath()); - } - } - @Override public void fileDeleted(@NotNull VirtualFileEvent event) { VirtualFile removedFile = event.getFile(); diff --git a/python/educational-core/student/src/com/jetbrains/edu/learning/StudyUtils.java b/python/educational-core/student/src/com/jetbrains/edu/learning/StudyUtils.java index 590bf97c79aa..fcb9943c56c5 100644 --- a/python/educational-core/student/src/com/jetbrains/edu/learning/StudyUtils.java +++ b/python/educational-core/student/src/com/jetbrains/edu/learning/StudyUtils.java @@ -354,20 +354,29 @@ public class StudyUtils { @Nullable public static Document getPatternDocument(@NotNull final TaskFile taskFile, String name) { + VirtualFile patternFile = getPatternFile(taskFile, name); + if (patternFile == null) { + return null; + } + return FileDocumentManager.getInstance().getDocument(patternFile); + } + + @Nullable + public static VirtualFile getPatternFile(@NotNull TaskFile taskFile, String name) { Task task = taskFile.getTask(); String lessonDir = EduNames.LESSON + String.valueOf(task.getLesson().getIndex()); String taskDir = EduNames.TASK + String.valueOf(task.getIndex()); Course course = task.getLesson().getCourse(); File resourceFile = new File(course.getCourseDirectory()); if (!resourceFile.exists()) { - return null; + return null; } String patternPath = FileUtil.join(resourceFile.getPath(), lessonDir, taskDir, name); VirtualFile patternFile = VfsUtil.findFileByIoFile(new File(patternPath), true); if (patternFile == null) { return null; } - return FileDocumentManager.getInstance().getDocument(patternFile); + return patternFile; } public static boolean isRenameableOrMoveable(@NotNull final Project project, @NotNull final Course course, @NotNull final PsiElement element) { diff --git a/python/educational-python/course-creator-python/src/com/jetbrains/edu/coursecreator/PyCCReferenceResolveProvider.java b/python/educational-python/course-creator-python/src/com/jetbrains/edu/coursecreator/PyCCReferenceResolveProvider.java index 95cf9321df3b..e1bb8ee267d6 100644 --- a/python/educational-python/course-creator-python/src/com/jetbrains/edu/coursecreator/PyCCReferenceResolveProvider.java +++ b/python/educational-python/course-creator-python/src/com/jetbrains/edu/coursecreator/PyCCReferenceResolveProvider.java @@ -1,5 +1,6 @@ package com.jetbrains.edu.coursecreator; +import com.intellij.openapi.project.Project; import com.jetbrains.python.edu.PyEduUtils; import com.jetbrains.python.psi.PyQualifiedExpression; import com.jetbrains.python.psi.resolve.PyReferenceResolveProvider; @@ -13,7 +14,8 @@ public class PyCCReferenceResolveProvider implements PyReferenceResolveProvider @NotNull @Override public List resolveName(@NotNull final PyQualifiedExpression element) { - if (CCProjectService.getInstance(element.getProject()).getCourse() == null) { + Project project = element.getProject(); + if (!CCUtils.isCourseCreator(project)) { return Collections.emptyList(); } return PyEduUtils.getResolveResultFromContainingDirectory(element);