do not use old service
authorliana.bakradze <liana.bakradze@jetbrains.com>
Mon, 18 Apr 2016 09:24:06 +0000 (12:24 +0300)
committerliana.bakradze <liana.bakradze@jetbrains.com>
Mon, 18 Apr 2016 09:24:06 +0000 (12:24 +0300)
python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCRefactoringElementListenerProvider.java
python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCUtils.java
python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/CCVirtualFileListener.java
python/educational-core/student/src/com/jetbrains/edu/learning/StudyUtils.java
python/educational-python/course-creator-python/src/com/jetbrains/edu/coursecreator/PyCCReferenceResolveProvider.java

index ed9b404e04a540d4fcf046256ca7797ea3d15ab0..7dbd894d898035e49963d815ce836eece1e01b87 100644 (file)
 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<String, TaskFile> 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<String, TaskFile> taskFiles = task.getTaskFiles();
-      TaskFile taskFile = task.getTaskFile(oldName);
+
       taskFiles.remove(oldName);
       taskFiles.put(file.getName(), taskFile);
+      CCUtils.createResourceFile(file.getVirtualFile(), course, taskDir.getVirtualFile());
     }
 
     @Override
index 139a15be6845fe9ba30bdce56837e21b64302481..78ad05d7aaa086e42f7d285ce8a0aea706126569 100644 (file)
@@ -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());
+    }
+  }
 }
index 967d885cdf2e0c82178f63fc85c24ef7a792b03f..3c3be598ca7f064e7ced9d1d437285a9bff197e8 100644 (file)
@@ -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();
index 590bf97c79aa250b2995e548c33a6a6c37248997..fcb9943c56c5a882d75e8dbe7d0809ed1505de0a 100644 (file)
@@ -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) {
index 95cf9321df3b084178c7e03ea65c694495078c72..e1bb8ee267d6f121d61a2fb415d2baee182b5b18 100644 (file)
@@ -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<RatedResolveResult> 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);