From 1bc47c4d3e892a6d6575d1012eaa3d99296769f2 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Fri, 7 Apr 2017 16:47:00 +0300 Subject: [PATCH] publish proper course language to stepik --- .../com/jetbrains/edu/learning/StudyUtils.java | 2 +- .../stepic/EduAdaptiveStepicConnector.java | 2 +- .../learning/stepic/EduStepicConnector.java | 18 +++++++++++++++++- .../edu/learning/stepic/EduStepicNames.java | 2 ++ .../edu/learning/stepic/StepicWrappers.java | 1 + 5 files changed, 22 insertions(+), 3 deletions(-) diff --git a/python/educational-core/src/com/jetbrains/edu/learning/StudyUtils.java b/python/educational-core/src/com/jetbrains/edu/learning/StudyUtils.java index c12b44757ee6..46d3ca1b1fc2 100644 --- a/python/educational-core/src/com/jetbrains/edu/learning/StudyUtils.java +++ b/python/educational-core/src/com/jetbrains/edu/learning/StudyUtils.java @@ -692,7 +692,7 @@ public class StudyUtils { } public static void registerStudyToolWindow(@Nullable final Course course, Project project) { - if (course != null && "PyCharm".equals(course.getCourseType())) { + if (course != null && EduNames.PYCHARM.equals(course.getCourseType())) { final ToolWindowManager toolWindowManager = ToolWindowManager.getInstance(project); registerToolWindows(toolWindowManager, project); final ToolWindow studyToolWindow = toolWindowManager.getToolWindow(StudyToolWindowFactory.STUDY_TOOL_WINDOW); diff --git a/python/educational-core/src/com/jetbrains/edu/learning/stepic/EduAdaptiveStepicConnector.java b/python/educational-core/src/com/jetbrains/edu/learning/stepic/EduAdaptiveStepicConnector.java index f94ecb071d2e..d1da82314213 100644 --- a/python/educational-core/src/com/jetbrains/edu/learning/stepic/EduAdaptiveStepicConnector.java +++ b/python/educational-core/src/com/jetbrains/edu/learning/stepic/EduAdaptiveStepicConnector.java @@ -147,7 +147,7 @@ public class EduAdaptiveStepicConnector { else if (stepType.equals(CHOICE_TYPE_TEXT)) { return getChoiceTaskFromStep(name, step.block, stepId, userId); } - else if (stepType.startsWith(EduStepicConnector.PYCHARM_PREFIX)) { + else if (stepType.startsWith(EduStepicNames.PYCHARM_PREFIX)) { return EduStepicConnector.createTask(stepId); } else if (stepType.equals(TEXT_STEP_TYPE)) { diff --git a/python/educational-core/src/com/jetbrains/edu/learning/stepic/EduStepicConnector.java b/python/educational-core/src/com/jetbrains/edu/learning/stepic/EduStepicConnector.java index 185e53613d4c..1a3adeb35fa2 100644 --- a/python/educational-core/src/com/jetbrains/edu/learning/stepic/EduStepicConnector.java +++ b/python/educational-core/src/com/jetbrains/edu/learning/stepic/EduStepicConnector.java @@ -2,13 +2,16 @@ package com.jetbrains.edu.learning.stepic; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.intellij.lang.LanguageExtensionPoint; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; +import com.intellij.openapi.extensions.Extensions; 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.EduPluginConfigurator; import com.jetbrains.edu.learning.StudySettings; import com.jetbrains.edu.learning.core.EduNames; import com.jetbrains.edu.learning.courseFormat.*; @@ -33,12 +36,13 @@ import java.net.URI; import java.net.URISyntaxException; import java.util.*; +import static com.jetbrains.edu.learning.stepic.EduStepicNames.PYCHARM_PREFIX; + public class EduStepicConnector { private static final Logger LOG = Logger.getInstance(EduStepicConnector.class.getName()); public static final int CURRENT_VERSION = 2; //this prefix indicates that course can be opened by educational plugin - public static final String PYCHARM_PREFIX = "pycharm"; private static final String ADAPTIVE_NOTE = "\n\nInitially, the adaptive system may behave somewhat randomly, but the more problems you solve, the smarter it becomes!"; @@ -170,8 +174,20 @@ public class EduStepicConnector { return true; } String courseType = courseInfo.getType(); + + final ArrayList supportedLanguages = new ArrayList<>(); + final LanguageExtensionPoint[] extensions = Extensions.getExtensions(EduPluginConfigurator.EP_NAME, null); + for (LanguageExtensionPoint extension : extensions) { + String languageId = extension.getKey(); + supportedLanguages.add(languageId); + } + final List typeLanguage = StringUtil.split(courseType, " "); String prefix = typeLanguage.get(0); + if (typeLanguage.size() > 1) { + final String courseLanguage = typeLanguage.get(typeLanguage.size() - 1); + if (!supportedLanguages.contains(courseLanguage)) return false; + } if (typeLanguage.size() < 2 || !prefix.startsWith(PYCHARM_PREFIX)) { return false; } diff --git a/python/educational-core/src/com/jetbrains/edu/learning/stepic/EduStepicNames.java b/python/educational-core/src/com/jetbrains/edu/learning/stepic/EduStepicNames.java index b25e80fcea34..5ee99dc6cde8 100644 --- a/python/educational-core/src/com/jetbrains/edu/learning/stepic/EduStepicNames.java +++ b/python/educational-core/src/com/jetbrains/edu/learning/stepic/EduStepicNames.java @@ -21,4 +21,6 @@ public class EduStepicNames { public static final String SECTIONS = "/sections/"; public static final String ENROLLMENTS = "/enrollments"; public static final String STEPIC_REGISTRATION_LINK = "https://stepic.org/registration?next=%2Fexplore%2Fcourses"; + + public static final String PYCHARM_PREFIX = "pycharm"; } diff --git a/python/educational-core/src/com/jetbrains/edu/learning/stepic/StepicWrappers.java b/python/educational-core/src/com/jetbrains/edu/learning/stepic/StepicWrappers.java index e7d1eefcdd91..5124acab9833 100644 --- a/python/educational-core/src/com/jetbrains/edu/learning/stepic/StepicWrappers.java +++ b/python/educational-core/src/com/jetbrains/edu/learning/stepic/StepicWrappers.java @@ -194,6 +194,7 @@ public class StepicWrappers { public CourseWrapper(Course course) { this.course = new RemoteCourse(); this.course.setName(course.getName()); + this.course.setLanguage(course.getLanguageID()); this.course.setDescription(course.getDescription()); this.course.setAuthors(course.getAuthors()); }