mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
remove text field from task in favour of tasktexts
This commit is contained in:
+8
-3
@@ -15,9 +15,15 @@ import com.intellij.openapi.vfs.VirtualFileFilter;
|
||||
import com.jetbrains.edu.learning.StudySerializationUtils;
|
||||
import com.jetbrains.edu.learning.core.EduNames;
|
||||
import com.jetbrains.edu.learning.core.EduUtils;
|
||||
import com.jetbrains.edu.learning.courseFormat.*;
|
||||
import com.jetbrains.edu.learning.courseFormat.AnswerPlaceholder;
|
||||
import com.jetbrains.edu.learning.courseFormat.Course;
|
||||
import com.jetbrains.edu.learning.courseFormat.CourseInfo;
|
||||
import com.jetbrains.edu.learning.courseFormat.Lesson;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.Task;
|
||||
import com.jetbrains.edu.learning.stepic.*;
|
||||
import com.jetbrains.edu.learning.stepic.EduStepicAuthorizedClient;
|
||||
import com.jetbrains.edu.learning.stepic.EduStepicNames;
|
||||
import com.jetbrains.edu.learning.stepic.StepicUser;
|
||||
import com.jetbrains.edu.learning.stepic.StepicWrappers;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.apache.http.HttpEntity;
|
||||
import org.apache.http.HttpStatus;
|
||||
@@ -135,7 +141,6 @@ public class CCStepicConnector {
|
||||
task.setLesson(lesson);
|
||||
task.setName(EduNames.PYCHARM_ADDITIONAL);
|
||||
task.setIndex(1);
|
||||
task.setText(EduNames.PYCHARM_ADDITIONAL);
|
||||
for (VirtualFile file : files) {
|
||||
try {
|
||||
if (file != null) {
|
||||
|
||||
@@ -64,7 +64,10 @@ import com.jetbrains.edu.learning.core.EduAnswerPlaceholderDeleteHandler;
|
||||
import com.jetbrains.edu.learning.core.EduAnswerPlaceholderPainter;
|
||||
import com.jetbrains.edu.learning.core.EduNames;
|
||||
import com.jetbrains.edu.learning.core.EduUtils;
|
||||
import com.jetbrains.edu.learning.courseFormat.*;
|
||||
import com.jetbrains.edu.learning.courseFormat.AnswerPlaceholder;
|
||||
import com.jetbrains.edu.learning.courseFormat.Course;
|
||||
import com.jetbrains.edu.learning.courseFormat.Lesson;
|
||||
import com.jetbrains.edu.learning.courseFormat.TaskFile;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.ChoiceTask;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.Task;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.TaskWithSubtasks;
|
||||
@@ -492,7 +495,7 @@ public class StudyUtils {
|
||||
return null;
|
||||
}
|
||||
final Course course = task.getLesson().getCourse();
|
||||
String text = task.getText() != null ? task.getText() : getTaskTextByTaskName(task, taskDirectory);
|
||||
String text = task.getTaskDescription() != null ? task.getTaskDescription() : getTaskTextByTaskName(task, taskDirectory);
|
||||
|
||||
if (text == null) return null;
|
||||
text = convertToHtml(text);
|
||||
|
||||
+6
-27
@@ -5,11 +5,9 @@ import com.google.gson.annotations.SerializedName;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.xmlb.XmlSerializer;
|
||||
import com.intellij.util.xmlb.annotations.Transient;
|
||||
import com.jetbrains.edu.learning.StudyUtils;
|
||||
import com.jetbrains.edu.learning.core.EduNames;
|
||||
import com.jetbrains.edu.learning.courseFormat.*;
|
||||
import com.jetbrains.edu.learning.stepic.EduStepicConnector;
|
||||
@@ -37,7 +35,6 @@ public class Task implements StudyItem {
|
||||
@SerializedName("task_files")
|
||||
@Expose public Map<String, TaskFile> taskFiles = new HashMap<>();
|
||||
|
||||
private String text;
|
||||
protected Map<String, String> testsText = new HashMap<>();
|
||||
protected Map<String, String> taskTexts = new HashMap<>();
|
||||
|
||||
@@ -73,14 +70,6 @@ public class Task implements StudyItem {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return text;
|
||||
}
|
||||
|
||||
public void setText(final String text) {
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getIndex() {
|
||||
return myIndex;
|
||||
@@ -166,20 +155,11 @@ public class Task implements StudyItem {
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getTaskText(@NotNull final Project project) {
|
||||
if (!StringUtil.isEmptyOrSpaces(text)) return text;
|
||||
final VirtualFile taskDir = getTaskDir(project);
|
||||
if (taskDir != null) {
|
||||
final VirtualFile file = StudyUtils.findTaskDescriptionVirtualFile(project, taskDir);
|
||||
if (file == null) return "";
|
||||
final Document document = FileDocumentManager.getInstance().getDocument(file);
|
||||
if (document != null) {
|
||||
return document.getImmutableCharSequence().toString();
|
||||
}
|
||||
public String getTaskDescription() {
|
||||
if (!taskTexts.isEmpty()) {
|
||||
return taskTexts.get(EduNames.TASK_HTML);
|
||||
}
|
||||
|
||||
return "";
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -207,7 +187,7 @@ public class Task implements StudyItem {
|
||||
if (myIndex != task.myIndex) return false;
|
||||
if (name != null ? !name.equals(task.name) : task.name != null) return false;
|
||||
if (taskFiles != null ? !taskFiles.equals(task.taskFiles) : task.taskFiles != null) return false;
|
||||
if (text != null ? !text.equals(task.text) : task.text != null) return false;
|
||||
if (taskTexts != null ? !taskTexts.equals(task.taskTexts) : task.taskTexts != null) return false;
|
||||
if (testsText != null ? !testsText.equals(task.testsText) : task.testsText != null) return false;
|
||||
|
||||
return true;
|
||||
@@ -218,7 +198,7 @@ public class Task implements StudyItem {
|
||||
int result = name != null ? name.hashCode() : 0;
|
||||
result = 31 * result + myIndex;
|
||||
result = 31 * result + (taskFiles != null ? taskFiles.hashCode() : 0);
|
||||
result = 31 * result + (text != null ? text.hashCode() : 0);
|
||||
result = 31 * result + (taskTexts != null ? taskTexts.hashCode() : 0);
|
||||
result = 31 * result + (testsText != null ? testsText.hashCode() : 0);
|
||||
return result;
|
||||
}
|
||||
@@ -273,7 +253,6 @@ public class Task implements StudyItem {
|
||||
setStatus(task.getStatus());
|
||||
setStepId(task.getStepId());
|
||||
taskFiles = task.getTaskFiles();
|
||||
setText(task.getText());
|
||||
testsText = task.getTestsText();
|
||||
taskTexts = task.getTaskTexts();
|
||||
setLesson(task.getLesson());
|
||||
|
||||
+2
-19
@@ -28,12 +28,12 @@ import com.jetbrains.edu.learning.StudyUtils;
|
||||
import com.jetbrains.edu.learning.core.EduNames;
|
||||
import com.jetbrains.edu.learning.core.EduUtils;
|
||||
import com.jetbrains.edu.learning.courseFormat.Course;
|
||||
import com.jetbrains.edu.learning.courseFormat.CourseInfo;
|
||||
import com.jetbrains.edu.learning.courseFormat.Lesson;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.Task;
|
||||
import com.jetbrains.edu.learning.courseFormat.TaskFile;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.Task;
|
||||
import com.jetbrains.edu.learning.editor.StudyEditor;
|
||||
import com.jetbrains.edu.learning.statistics.EduUsagesCollector;
|
||||
import com.jetbrains.edu.learning.courseFormat.CourseInfo;
|
||||
import com.jetbrains.edu.learning.stepic.EduStepicConnector;
|
||||
import com.jetbrains.edu.learning.stepic.StepicUpdateSettings;
|
||||
import com.jetbrains.edu.learning.stepic.StepicUser;
|
||||
@@ -291,24 +291,7 @@ public class StudyProjectGenerator {
|
||||
}
|
||||
}
|
||||
createFiles(taskDirectory, task.getTestsText());
|
||||
if (task.getTaskTexts().isEmpty()) {
|
||||
createTaskHtml(task, taskDirectory);
|
||||
return;
|
||||
}
|
||||
task.setText(null);
|
||||
createFiles(taskDirectory, task.getTaskTexts());
|
||||
|
||||
}
|
||||
|
||||
private static void createTaskHtml(@NotNull Task task, @NotNull File taskDirectory) {
|
||||
final File taskText = new File(taskDirectory, EduNames.TASK_HTML);
|
||||
FileUtil.createIfDoesntExist(taskText);
|
||||
try {
|
||||
FileUtil.writeToFile(taskText, task.getText());
|
||||
}
|
||||
catch (IOException e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
private static void createFiles(@NotNull File taskDirectory, Map<String, String> files) {
|
||||
|
||||
+16
-19
@@ -174,7 +174,8 @@ public class EduAdaptiveStepicConnector {
|
||||
private static Task getTheoryTaskFromStep(@NotNull String lessonName, @NotNull StepicWrappers.Step block, int stepId) {
|
||||
final Task task = new TheoryTask(lessonName);
|
||||
task.setStepId(stepId);
|
||||
task.setText(block.text);
|
||||
|
||||
task.addTaskText(EduNames.TASK_HTML, block.text);
|
||||
|
||||
createMockTaskFile(task, "# this is a theory task. You can use this editor as a playground");
|
||||
return task;
|
||||
@@ -186,7 +187,7 @@ public class EduAdaptiveStepicConnector {
|
||||
int stepId, int userId) {
|
||||
final ChoiceTask task = new ChoiceTask(lessonName);
|
||||
task.setStepId(stepId);
|
||||
task.setText(block.text);
|
||||
task.addTaskText(EduNames.TASK_HTML, block.text);
|
||||
|
||||
final StepicWrappers.AdaptiveAttemptWrapper.Attempt attempt = getAttemptForStep(stepId, userId);
|
||||
if (attempt != null) {
|
||||
@@ -338,7 +339,7 @@ public class EduAdaptiveStepicConnector {
|
||||
}
|
||||
final StudyToolWindow window = StudyUtils.getStudyToolWindow(project);
|
||||
if (window != null) {
|
||||
window.setTaskText(StudyUtils.wrapTextToDisplayLatex(unsolvedTask.getText()), unsolvedTask.getTaskDir(project), project);
|
||||
window.setTaskText(StudyUtils.wrapTextToDisplayLatex(unsolvedTask.getTaskDescription()), unsolvedTask.getTaskDir(project), project);
|
||||
}
|
||||
StudyNavigator.navigateToTask(project, lessonName, taskName);
|
||||
}
|
||||
@@ -425,32 +426,28 @@ public class EduAdaptiveStepicConnector {
|
||||
int lessonID) {
|
||||
final Task task = new CodeTask(name);
|
||||
task.setStepId(lessonID);
|
||||
task.setText(step.text);
|
||||
|
||||
task.setStatus(StudyStatus.Unchecked);
|
||||
final StringBuilder taskDescription = new StringBuilder(step.text);
|
||||
if (step.options.samples != null) {
|
||||
final StringBuilder builder = new StringBuilder();
|
||||
taskDescription.append("<br>");
|
||||
for (List<String> sample : step.options.samples) {
|
||||
if (sample.size() == 2) {
|
||||
builder.append("<b>Sample Input:</b><br>");
|
||||
builder.append(StringUtil.replace(sample.get(0), "\n", "<br>"));
|
||||
builder.append("<br>");
|
||||
builder.append("<b>Sample Output:</b><br>");
|
||||
builder.append(StringUtil.replace(sample.get(1), "\n", "<br>"));
|
||||
builder.append("<br><br>");
|
||||
taskDescription.append("<b>Sample Input:</b><br>");
|
||||
taskDescription.append(StringUtil.replace(sample.get(0), "\n", "<br>"));
|
||||
taskDescription.append("<br>");
|
||||
taskDescription.append("<b>Sample Output:</b><br>");
|
||||
taskDescription.append(StringUtil.replace(sample.get(1), "\n", "<br>"));
|
||||
taskDescription.append("<br><br>");
|
||||
}
|
||||
}
|
||||
task.setText(task.getText() + "<br>" + builder.toString());
|
||||
}
|
||||
|
||||
if (step.options.executionMemoryLimit != null && step.options.executionTimeLimit != null) {
|
||||
String builder = "<b>Memory limit</b>: " +
|
||||
step.options.executionMemoryLimit + " Mb" +
|
||||
"<br>" +
|
||||
"<b>Time limit</b>: " +
|
||||
step.options.executionTimeLimit + "s" +
|
||||
"<br><br>";
|
||||
task.setText(task.getText() + builder);
|
||||
taskDescription.append("<br>").append("<b>Memory limit</b>: ").append(step.options.executionMemoryLimit).append(" Mb").append("<br>")
|
||||
.append("<b>Time limit</b>: ").append(step.options.executionTimeLimit).append("s").append("<br><br>");
|
||||
}
|
||||
task.addTaskText(EduNames.TASK_HTML, taskDescription.toString());
|
||||
|
||||
if (step.options.test != null) {
|
||||
for (StepicWrappers.FileWrapper wrapper : step.options.test) {
|
||||
|
||||
+6
-2
@@ -9,7 +9,11 @@ import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.jetbrains.edu.learning.courseFormat.*;
|
||||
import com.jetbrains.edu.learning.core.EduNames;
|
||||
import com.jetbrains.edu.learning.courseFormat.Course;
|
||||
import com.jetbrains.edu.learning.courseFormat.CourseInfo;
|
||||
import com.jetbrains.edu.learning.courseFormat.Lesson;
|
||||
import com.jetbrains.edu.learning.courseFormat.TaskFile;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.Task;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.TaskWithSubtasks;
|
||||
import org.apache.http.HttpEntity;
|
||||
@@ -288,7 +292,7 @@ public class EduStepicConnector {
|
||||
task.addTaskText(wrapper.name, wrapper.text);
|
||||
}
|
||||
} else {
|
||||
task.setText(block.text);
|
||||
task.addTaskText(EduNames.TASK_HTML, block.text);
|
||||
}
|
||||
|
||||
task.taskFiles = new HashMap<>(); // TODO: it looks like we don't need taskFiles as map anymore
|
||||
|
||||
@@ -42,7 +42,6 @@ public class StepicWrappers {
|
||||
|
||||
public static Step fromTask(Project project, @NotNull final Task task) {
|
||||
final Step step = new Step();
|
||||
step.text = task.getTaskText(project);
|
||||
step.source = StepOptions.fromTask(project, task);
|
||||
return step;
|
||||
}
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ public class PyStudyTestRunner extends StudyTestRunner {
|
||||
Course course = myTask.getLesson().getCourse();
|
||||
PyEduPluginConfigurator configurator = new PyEduPluginConfigurator();
|
||||
String testsFileName = configurator.getTestFileName();
|
||||
if (myTask instanceof TaskWithSubtasks && ((TaskWithSubtasks)myTask).getActiveSubtaskIndex() != 0) {
|
||||
if (myTask instanceof TaskWithSubtasks) {
|
||||
testsFileName = FileUtil.getNameWithoutExtension(testsFileName);
|
||||
int index = ((TaskWithSubtasks)myTask).getActiveSubtaskIndex();
|
||||
testsFileName += EduNames.SUBTASK_MARKER + index + "." + FileUtilRt.getExtension(configurator.getTestFileName());
|
||||
|
||||
Reference in New Issue
Block a user