mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
add separate class for PyCharm Task (EDU-882)
This commit is contained in:
+2
-1
@@ -28,6 +28,7 @@ import com.jetbrains.edu.learning.courseFormat.AnswerPlaceholder;
|
||||
import com.jetbrains.edu.learning.courseFormat.AnswerPlaceholderSubtaskInfo;
|
||||
import com.jetbrains.edu.learning.courseFormat.Lesson;
|
||||
import com.jetbrains.edu.learning.courseFormat.TaskFile;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.PyCharmTask;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.Task;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.TaskWithSubtasks;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -227,7 +228,7 @@ public class CCSubtaskEditorNotificationProvider extends EditorNotifications.Pro
|
||||
final Lesson lesson = myTask.getLesson();
|
||||
final List<Task> list = lesson.getTaskList();
|
||||
final int i = list.indexOf(myTask);
|
||||
final Task task = new Task();
|
||||
final Task task = new PyCharmTask();
|
||||
task.copyTaskParameters(myTask);
|
||||
for (TaskFile taskFile : task.getTaskFiles().values()) {
|
||||
taskFile.setTask(task);
|
||||
|
||||
@@ -29,6 +29,7 @@ import com.jetbrains.edu.learning.courseFormat.Course;
|
||||
import com.jetbrains.edu.learning.courseFormat.Lesson;
|
||||
import com.jetbrains.edu.learning.courseFormat.StudyItem;
|
||||
import com.jetbrains.edu.learning.courseFormat.TaskFile;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.PyCharmTask;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.Task;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -264,7 +265,7 @@ public class CCUtils {
|
||||
|
||||
final Lesson lesson = new Lesson();
|
||||
lesson.setName(EduNames.PYCHARM_ADDITIONAL);
|
||||
final Task task = new Task();
|
||||
final Task task = new PyCharmTask();
|
||||
task.setLesson(lesson);
|
||||
task.setName(EduNames.PYCHARM_ADDITIONAL);
|
||||
task.setIndex(1);
|
||||
|
||||
+2
-1
@@ -11,6 +11,7 @@ import com.jetbrains.edu.learning.core.EduUtils;
|
||||
import com.jetbrains.edu.learning.courseFormat.Course;
|
||||
import com.jetbrains.edu.learning.courseFormat.Lesson;
|
||||
import com.jetbrains.edu.learning.courseFormat.StudyItem;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.PyCharmTask;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.Task;
|
||||
import icons.EducationalCoreIcons;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -109,7 +110,7 @@ public class CCCreateTask extends CCCreateStudyItemActionBase {
|
||||
|
||||
@Override
|
||||
protected StudyItem createAndInitItem(@NotNull Course course, @Nullable StudyItem parentItem, String name, int index) {
|
||||
final Task task = new Task(name);
|
||||
final Task task = new PyCharmTask(name);
|
||||
task.setIndex(index);
|
||||
if (parentItem == null) {
|
||||
return null;
|
||||
|
||||
@@ -97,6 +97,7 @@ public class StudySerializationUtils {
|
||||
private static String THEORY_TAG = "theoryTask";
|
||||
private static String ADAPTIVE_TASK_PARAMETERS = "adaptiveTaskParameters";
|
||||
private static String ADAPTIVE = "adaptive";
|
||||
public static final String PYCHARM_TASK = "PyCharmTask";
|
||||
private static String TASK_WITH_SUBTASKS = "TaskWithSubtasks";
|
||||
private static String THEORY_TASK = "TheoryTask";
|
||||
private static String CHOICE_TASK = "ChoiceTask";
|
||||
@@ -285,6 +286,9 @@ public class StudySerializationUtils {
|
||||
else if (Boolean.valueOf(adaptive.getAttributeValue(VALUE))) {
|
||||
task.setName(CODE_TASK);
|
||||
}
|
||||
else {
|
||||
task.setName(PYCHARM_TASK);
|
||||
}
|
||||
task.removeContent(adaptiveParams);
|
||||
task.removeContent(theoryTask);
|
||||
}
|
||||
@@ -638,7 +642,7 @@ public class StudySerializationUtils {
|
||||
case "choice": return gson.fromJson(json, ChoiceTask.class);
|
||||
case "theory": return gson.fromJson(json, TheoryTask.class);
|
||||
case "code": return gson.fromJson(json, CodeTask.class);
|
||||
case "pycharm": return gson.fromJson(json, Task.class);
|
||||
case "pycharm": return gson.fromJson(json, PyCharmTask.class);
|
||||
case "subtasks": return gson.fromJson(json, TaskWithSubtasks.class);
|
||||
default: {
|
||||
LOG.warn("Unsupported task type " + taskType);
|
||||
|
||||
@@ -28,7 +28,7 @@ public class Lesson implements StudyItem {
|
||||
@Expose
|
||||
@SerializedName("task_list")
|
||||
@AbstractCollection(elementTypes = {
|
||||
Task.class,
|
||||
PyCharmTask.class,
|
||||
ChoiceTask.class,
|
||||
TheoryTask.class,
|
||||
CodeTask.class,
|
||||
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package com.jetbrains.edu.learning.courseFormat.tasks;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* Original PyCharm Edu tasks with local tests and answer placeholders
|
||||
*/
|
||||
public class PyCharmTask extends Task {
|
||||
|
||||
public PyCharmTask() {
|
||||
}
|
||||
|
||||
public PyCharmTask(@NotNull String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTaskType() {
|
||||
return "pycharm";
|
||||
}
|
||||
}
|
||||
@@ -29,7 +29,7 @@ import java.util.Map;
|
||||
* - go to Lesson and update elementTypes in taskList AbstractCollection. Needed for proper xml serialization
|
||||
* - Update TaskSerializer and TaskDeserializer in StudySerializationUtil to handle json serialization
|
||||
*/
|
||||
public class Task implements StudyItem {
|
||||
public abstract class Task implements StudyItem {
|
||||
@Expose private String name;
|
||||
|
||||
// index is visible to user number of task from 1 to task number
|
||||
@@ -268,7 +268,5 @@ public class Task implements StudyItem {
|
||||
}
|
||||
|
||||
// used in json serialization/deserialization
|
||||
public String getTaskType() {
|
||||
return "pycharm";
|
||||
}
|
||||
public abstract String getTaskType();
|
||||
}
|
||||
|
||||
+2
-1
@@ -12,6 +12,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.jetbrains.edu.learning.StudySettings;
|
||||
import com.jetbrains.edu.learning.core.EduNames;
|
||||
import com.jetbrains.edu.learning.courseFormat.*;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.PyCharmTask;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.Task;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.TaskWithSubtasks;
|
||||
import org.apache.http.HttpEntity;
|
||||
@@ -267,7 +268,7 @@ public class EduStepicConnector {
|
||||
return null;
|
||||
}
|
||||
final int lastSubtaskIndex = block.options.lastSubtaskIndex;
|
||||
Task task = new Task();
|
||||
Task task = new PyCharmTask();
|
||||
if (lastSubtaskIndex != 0) {
|
||||
task = createTaskWithSubtasks(lastSubtaskIndex);
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.intellij.testFramework.fixtures.CodeInsightFixtureTestCase;
|
||||
import com.jetbrains.edu.learning.StudyTaskManager;
|
||||
import com.jetbrains.edu.learning.StudyUtils;
|
||||
import com.jetbrains.edu.learning.courseFormat.*;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.PyCharmTask;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.Task;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -85,7 +86,7 @@ public abstract class CCTestCase extends CodeInsightFixtureTestCase {
|
||||
|
||||
Lesson lesson = new Lesson();
|
||||
lesson.setName("lesson1");
|
||||
Task task = new Task();
|
||||
Task task = new PyCharmTask();
|
||||
task.setName("task1");
|
||||
task.setIndex(1);
|
||||
lesson.addTask(task);
|
||||
|
||||
Reference in New Issue
Block a user