mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
removed redundant tasks map
This commit is contained in:
+2
-3
@@ -152,12 +152,11 @@ public class CCProjectComponent implements ProjectComponent {
|
||||
if (lesson == null) {
|
||||
return;
|
||||
}
|
||||
Task task = projectService.getTask(removedFile.getPath());
|
||||
Task task = lesson.getTask(removedFile.getName());
|
||||
if (task == null) {
|
||||
return;
|
||||
}
|
||||
lesson.getTaskList().remove(task);
|
||||
projectService.getTasksMap().remove(removedFile.getPath());
|
||||
}
|
||||
|
||||
private void deleteTaskFile(@NotNull final VirtualFile removedFile) {
|
||||
@@ -179,7 +178,7 @@ public class CCProjectComponent implements ProjectComponent {
|
||||
if (lesson == null) {
|
||||
return;
|
||||
}
|
||||
Task task = projectService.getTask(taskDir.getPath());
|
||||
Task task = lesson.getTask(taskDir.getName());
|
||||
if (task == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
+1
-23
@@ -20,14 +20,12 @@ import com.intellij.openapi.components.PersistentStateComponent;
|
||||
import com.intellij.openapi.components.ServiceManager;
|
||||
import com.intellij.openapi.components.State;
|
||||
import com.intellij.openapi.components.Storage;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.io.FileUtilRt;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiDirectory;
|
||||
import com.intellij.ui.JBColor;
|
||||
import com.intellij.util.xmlb.XmlSerializerUtil;
|
||||
import com.jetbrains.edu.EduAnswerPlaceholderPainter;
|
||||
@@ -48,30 +46,10 @@ import java.util.Map;
|
||||
}
|
||||
)
|
||||
public class CCProjectService implements PersistentStateComponent<CCProjectService> {
|
||||
private static final Logger LOG = Logger.getInstance(CCProjectService.class.getName());
|
||||
private Course myCourse;
|
||||
|
||||
//directory path to Task
|
||||
private Map<String, Task> myTasksMap = new HashMap<String, Task>();
|
||||
|
||||
private static final Map<Document, EduDocumentListener> myDocumentListeners = new HashMap<Document, EduDocumentListener>();
|
||||
|
||||
public Map<String, Task> getTasksMap() {
|
||||
return myTasksMap;
|
||||
}
|
||||
|
||||
public void setTasksMap(Map<String, Task> tasksMap) {
|
||||
myTasksMap = tasksMap;
|
||||
}
|
||||
|
||||
public void addTask(@NotNull final Task task, PsiDirectory taskDirectory) {
|
||||
myTasksMap.put(taskDirectory.getVirtualFile().getPath(), task);
|
||||
}
|
||||
|
||||
public Task getTask(@NotNull final String name) {
|
||||
return myTasksMap.get(name);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public TaskFile getTaskFile(@NotNull final VirtualFile virtualFile) {
|
||||
VirtualFile taskDir = virtualFile.getParent();
|
||||
@@ -94,7 +72,7 @@ public class CCProjectService implements PersistentStateComponent<CCProjectServi
|
||||
if (lesson == null) {
|
||||
return null;
|
||||
}
|
||||
Task task = getTask(taskDir.getPath());
|
||||
Task task = lesson.getTask(taskDir.getName());
|
||||
if (task == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
+1
-1
@@ -81,7 +81,7 @@ public class CCRefactoringElementListenerProvider implements RefactoringElementL
|
||||
if (lesson == null) {
|
||||
return;
|
||||
}
|
||||
Task task = service.getTask(taskDir.getVirtualFile().getPath());
|
||||
Task task = lesson.getTask(taskDir.getName());
|
||||
if (task == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
+1
-1
@@ -132,7 +132,7 @@ public class CCAddAnswerPlaceholder extends DumbAwareAction {
|
||||
presentation.setEnabled(false);
|
||||
return;
|
||||
}
|
||||
final Task task = service.getTask(taskDir.getVirtualFile().getPath());
|
||||
final Task task = lesson.getTask(taskDir.getName());
|
||||
if (task == null) {
|
||||
presentation.setVisible(false);
|
||||
presentation.setEnabled(false);
|
||||
|
||||
+16
-14
@@ -16,7 +16,6 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileManager;
|
||||
import com.intellij.util.io.ZipUtil;
|
||||
@@ -30,7 +29,7 @@ import com.jetbrains.edu.coursecreator.ui.CreateCourseArchiveDialog;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.AbstractMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
|
||||
@@ -75,19 +74,22 @@ public class CCCreateCourseArchive extends DumbAwareAction {
|
||||
return;
|
||||
}
|
||||
final VirtualFile baseDir = project.getBaseDir();
|
||||
final List<Lesson> lessons = course.getLessons();
|
||||
|
||||
for (Map.Entry<String, Task> task : service.getTasksMap().entrySet()) {
|
||||
final VirtualFile taskDir = LocalFileSystem.getInstance().findFileByPath(task.getKey());
|
||||
if (taskDir == null) continue;
|
||||
for (final Map.Entry<String, TaskFile> entry : task.getValue().getTaskFiles().entrySet()) {
|
||||
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
TaskFile taskFileCopy = new TaskFile();
|
||||
TaskFile.copy(entry.getValue(), taskFileCopy);
|
||||
createUserFile(project, taskDir, taskDir, new AbstractMap.SimpleEntry<String, TaskFile>(entry.getKey(), taskFileCopy));
|
||||
}
|
||||
});
|
||||
for (Lesson lesson : lessons) {
|
||||
final VirtualFile lessonDir = baseDir.findChild(EduNames.LESSON + String.valueOf(lesson.getIndex()));
|
||||
if (lessonDir == null) continue;
|
||||
for (Task task : lesson.getTaskList()) {
|
||||
final VirtualFile taskDir = lessonDir.findChild(EduNames.TASK + String.valueOf(task.getIndex()));
|
||||
if (taskDir == null) continue;
|
||||
for (final Map.Entry<String, TaskFile> entry : task.getTaskFiles().entrySet()) {
|
||||
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
createUserFile(project, taskDir, taskDir, entry);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
generateJson(project);
|
||||
|
||||
+1
-3
@@ -83,15 +83,13 @@ public class CCCreateTask extends DumbAwareAction {
|
||||
EduUtils.markDirAsSourceRoot(taskDirectory.getVirtualFile(), project);
|
||||
final Task task = new Task(taskName);
|
||||
task.setIndex(size + 1);
|
||||
service.addTask(task, taskDirectory);
|
||||
lesson.addTask(task);
|
||||
|
||||
createFromTemplateAndOpen(taskDirectory, manager.getTestsTemplate(project), view);
|
||||
createFromTemplateAndOpen(taskDirectory, FileTemplateManager.getInstance(project).getInternalTemplate("task.html"), view);
|
||||
String defaultExtension = manager.getDefaultTaskFileExtension();
|
||||
if (defaultExtension != null) {
|
||||
FileTemplate taskFileTemplate = manager.getTaskFileTemplateForExtension(project,
|
||||
defaultExtension);
|
||||
FileTemplate taskFileTemplate = manager.getTaskFileTemplateForExtension(project, defaultExtension);
|
||||
createFromTemplateAndOpen(taskDirectory, taskFileTemplate, view);
|
||||
if (taskFileTemplate != null) {
|
||||
String taskFileName = FileUtil.getNameWithoutExtension(taskFileTemplate.getName());
|
||||
|
||||
+3
-1
@@ -21,6 +21,7 @@ import com.intellij.psi.PsiDirectory;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.jetbrains.edu.EduNames;
|
||||
import com.jetbrains.edu.courseFormat.Course;
|
||||
import com.jetbrains.edu.courseFormat.Lesson;
|
||||
import com.jetbrains.edu.courseFormat.Task;
|
||||
import com.jetbrains.edu.coursecreator.CCLanguageManager;
|
||||
import com.jetbrains.edu.coursecreator.CCProjectService;
|
||||
@@ -52,7 +53,8 @@ public class CCCreateTaskFile extends DumbAwareAction {
|
||||
}
|
||||
final CCProjectService service = CCProjectService.getInstance(project);
|
||||
final Course course = service.getCourse();
|
||||
final Task task = service.getTask(taskDir.getVirtualFile().getPath());
|
||||
final Lesson lesson = course.getLesson(lessonDir.getName());
|
||||
final Task task = lesson.getTask(taskDir.getName());
|
||||
|
||||
final int index = task.getTaskFiles().size() + 1;
|
||||
String generatedName = "file" + index;
|
||||
|
||||
+1
-3
@@ -22,7 +22,6 @@ import com.jetbrains.edu.EduNames;
|
||||
import com.jetbrains.edu.courseFormat.Course;
|
||||
import com.jetbrains.edu.courseFormat.Lesson;
|
||||
import com.jetbrains.edu.courseFormat.Task;
|
||||
import com.jetbrains.edu.coursecreator.CCProjectService;
|
||||
|
||||
public class CCRenameTask extends CCRename {
|
||||
public CCRenameTask() {
|
||||
@@ -40,12 +39,11 @@ public class CCRenameTask extends CCRename {
|
||||
if (lessonDir == null || !lessonDir.getName().contains(EduNames.LESSON)) {
|
||||
return false;
|
||||
}
|
||||
final CCProjectService service = CCProjectService.getInstance(project);
|
||||
Lesson lesson = course.getLesson(lessonDir.getName());
|
||||
if (lesson == null) {
|
||||
return false;
|
||||
}
|
||||
Task task = service.getTask(directory.getVirtualFile().getPath());
|
||||
Task task = lesson.getTask(directory.getName());
|
||||
if (task == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
+7
-2
@@ -82,7 +82,7 @@ public abstract class CCRunTestsAction extends AnAction {
|
||||
if (course == null) return;
|
||||
final Lesson lesson = course.getLesson(lessonDir.getName());
|
||||
if (lesson == null) return;
|
||||
final Task task = service.getTask(taskDir.getVirtualFile().getPath());
|
||||
final Task task = lesson.getTask(taskDir.getName());
|
||||
if (task == null) {
|
||||
presentation.setVisible(false);
|
||||
presentation.setEnabled(false);
|
||||
@@ -127,7 +127,12 @@ public abstract class CCRunTestsAction extends AnAction {
|
||||
if (taskDir == null) {
|
||||
return;
|
||||
}
|
||||
final Task task = CCProjectService.getInstance(project).getTask(taskDir.getPath());
|
||||
VirtualFile lessonDir = taskDir.getParent();
|
||||
Lesson lesson = course.getLesson(lessonDir.getName());
|
||||
if (lesson == null) {
|
||||
return;
|
||||
}
|
||||
final Task task = lesson.getTask(taskDir.getName());
|
||||
if (task == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
+1
-1
@@ -52,7 +52,7 @@ public class CCDirectoryNode extends PsiDirectoryNode {
|
||||
if (parentDir != null) {
|
||||
final Lesson parentLesson = course.getLesson(parentDir.getName());
|
||||
if (parentLesson != null) {
|
||||
final Task task = service.getTask(myValue.getVirtualFile().getPath());
|
||||
final Task task = parentLesson.getTask(valueName);
|
||||
if (task != null) {
|
||||
data.clearText();
|
||||
data.addText(valueName, SimpleTextAttributes.REGULAR_ATTRIBUTES);
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.jetbrains.edu.courseFormat;
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import com.intellij.util.xmlb.annotations.Transient;
|
||||
import com.jetbrains.edu.EduNames;
|
||||
import com.jetbrains.edu.EduUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -61,4 +63,14 @@ public class Lesson {
|
||||
public void addTask(@NotNull final Task task) {
|
||||
taskList.add(task);
|
||||
}
|
||||
|
||||
public Task getTask(@NotNull final String name) {
|
||||
int index = EduUtils.getIndex(name, EduNames.TASK);
|
||||
List<Task> tasks = getTaskList();
|
||||
if (!EduUtils.indexIsValid(index, tasks)) {
|
||||
return null;
|
||||
}
|
||||
return tasks.get(index);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user