From 395b9129a0d478af7e88ea8ad08454505cb47cb0 Mon Sep 17 00:00:00 2001 From: "Liana.Bakradze" Date: Thu, 17 Aug 2017 17:50:13 +0300 Subject: [PATCH] gather more statistics (EDU-1033) --- .../actions/StudyFillPlaceholdersAction.java | 2 ++ .../actions/StudyRefreshTaskFileAction.java | 2 ++ .../newproject/ui/EduCoursesPanel.java | 2 ++ .../statistics/EduUsagesCollector.java | 24 +++++++++++++++++++ .../learning/stepic/EduStepicConnector.java | 2 ++ .../PyCCCreateProjectFromArchive.java | 2 ++ .../python/edu/debugger/PyEduDebugRunner.java | 2 ++ 7 files changed, 36 insertions(+) diff --git a/python/educational-core/src/com/jetbrains/edu/learning/actions/StudyFillPlaceholdersAction.java b/python/educational-core/src/com/jetbrains/edu/learning/actions/StudyFillPlaceholdersAction.java index 9f4e0ca7c193..ef005ac2da55 100644 --- a/python/educational-core/src/com/jetbrains/edu/learning/actions/StudyFillPlaceholdersAction.java +++ b/python/educational-core/src/com/jetbrains/edu/learning/actions/StudyFillPlaceholdersAction.java @@ -14,6 +14,7 @@ import com.jetbrains.edu.learning.courseFormat.AnswerPlaceholder; import com.jetbrains.edu.learning.courseFormat.Course; import com.jetbrains.edu.learning.courseFormat.TaskFile; import com.jetbrains.edu.learning.editor.StudyEditor; +import com.jetbrains.edu.learning.statistics.EduUsagesCollector; public class StudyFillPlaceholdersAction extends AnAction { @Override @@ -34,6 +35,7 @@ public class StudyFillPlaceholdersAction extends AnAction { } EduUtils.replaceAnswerPlaceholder(document, placeholder, placeholder.getRealLength(), answer); } + EduUsagesCollector.placeholdersFilled(); } } diff --git a/python/educational-core/src/com/jetbrains/edu/learning/actions/StudyRefreshTaskFileAction.java b/python/educational-core/src/com/jetbrains/edu/learning/actions/StudyRefreshTaskFileAction.java index f3d6e2cff894..12c146f79e6f 100644 --- a/python/educational-core/src/com/jetbrains/edu/learning/actions/StudyRefreshTaskFileAction.java +++ b/python/educational-core/src/com/jetbrains/edu/learning/actions/StudyRefreshTaskFileAction.java @@ -31,6 +31,7 @@ import com.jetbrains.edu.learning.courseFormat.tasks.*; import com.jetbrains.edu.learning.editor.StudyChoiceVariantsPanel; import com.jetbrains.edu.learning.editor.StudyEditor; import com.jetbrains.edu.learning.navigation.StudyNavigator; +import com.jetbrains.edu.learning.statistics.EduUsagesCollector; import com.jetbrains.edu.learning.ui.StudyToolWindow; import icons.EducationalCoreIcons; import org.jetbrains.annotations.NotNull; @@ -58,6 +59,7 @@ public class StudyRefreshTaskFileAction extends StudyActionWithShortcut { return; } refreshFile(studyState, project); + EduUsagesCollector.fileRefreshed(); })); } diff --git a/python/educational-core/src/com/jetbrains/edu/learning/newproject/ui/EduCoursesPanel.java b/python/educational-core/src/com/jetbrains/edu/learning/newproject/ui/EduCoursesPanel.java index d4e07dc28905..81dbcff55160 100644 --- a/python/educational-core/src/com/jetbrains/edu/learning/newproject/ui/EduCoursesPanel.java +++ b/python/educational-core/src/com/jetbrains/edu/learning/newproject/ui/EduCoursesPanel.java @@ -33,6 +33,7 @@ import com.jetbrains.edu.learning.courseFormat.Course; import com.jetbrains.edu.learning.courseFormat.RemoteCourse; import com.jetbrains.edu.learning.courseGeneration.StudyProjectGenerator; import com.jetbrains.edu.learning.newproject.EduCourseProjectGenerator; +import com.jetbrains.edu.learning.statistics.EduUsagesCollector; import com.jetbrains.edu.learning.stepic.EduStepicConnector; import com.jetbrains.edu.learning.stepic.StepicUser; import org.jetbrains.annotations.NotNull; @@ -158,6 +159,7 @@ public class EduCoursesPanel extends JPanel { if (course != null) { myCourses.add(course); updateModel(myCourses, course.getName()); + EduUsagesCollector.localCourseAdded(); } else { Messages.showErrorDialog("Selected archive doesn't contain a valid course", "Failed to Add Local Course"); } diff --git a/python/educational-core/src/com/jetbrains/edu/learning/statistics/EduUsagesCollector.java b/python/educational-core/src/com/jetbrains/edu/learning/statistics/EduUsagesCollector.java index d68223724935..09897bfdb6c9 100644 --- a/python/educational-core/src/com/jetbrains/edu/learning/statistics/EduUsagesCollector.java +++ b/python/educational-core/src/com/jetbrains/edu/learning/statistics/EduUsagesCollector.java @@ -28,6 +28,30 @@ import java.util.Set; public class EduUsagesCollector extends UsagesCollector { private static final String GROUP_ID = "educational"; + public static void coursePreviewed() { + advanceKey("coursePreview"); + } + + public static void stepikAuthorization() { + advanceKey("stepikAuthorization"); + } + + public static void localCourseAdded() { + advanceKey("localCourseAdded"); + } + + public static void fileRefreshed() { + advanceKey("refreshFile"); + } + + public static void placeholdersFilled() { + advanceKey("fillPlaceholders"); + } + + public static void stepThroughInvoked() { + advanceKey("stepThroughCode"); + } + public static void projectTypeCreated(@NotNull String projectTypeId) { advanceKey("project.created." + projectTypeId); } 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 c7ca8cad2ca0..dd9bddc0e60d 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 @@ -19,6 +19,7 @@ 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 com.jetbrains.edu.learning.statistics.EduUsagesCollector; import org.apache.http.HttpEntity; import org.apache.http.HttpStatus; import org.apache.http.StatusLine; @@ -468,6 +469,7 @@ public class EduStepicConnector { } public static void doAuthorize(@NotNull Runnable externalRedirectUrlHandler) { + EduUsagesCollector.stepikAuthorization(); String redirectUrl = getOAuthRedirectUrl(); String link = createOAuthLink(redirectUrl); BrowserUtil.browse(link); diff --git a/python/educational-python/Edu-Python/src/com/jetbrains/edu/coursecreator/PyCCCreateProjectFromArchive.java b/python/educational-python/Edu-Python/src/com/jetbrains/edu/coursecreator/PyCCCreateProjectFromArchive.java index 20b5e9e335d1..a9cf061e8a21 100644 --- a/python/educational-python/Edu-Python/src/com/jetbrains/edu/coursecreator/PyCCCreateProjectFromArchive.java +++ b/python/educational-python/Edu-Python/src/com/jetbrains/edu/coursecreator/PyCCCreateProjectFromArchive.java @@ -5,6 +5,7 @@ import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; +import com.jetbrains.edu.learning.statistics.EduUsagesCollector; public class PyCCCreateProjectFromArchive extends DumbAwareAction { public PyCCCreateProjectFromArchive() { @@ -19,6 +20,7 @@ public class PyCCCreateProjectFromArchive extends DumbAwareAction { return; } + EduUsagesCollector.coursePreviewed(); AbstractNewProjectDialog dialog = new AbstractNewProjectDialog() { @Override protected DefaultActionGroup createRootStep() { diff --git a/python/educational-python/src/com/jetbrains/python/edu/debugger/PyEduDebugRunner.java b/python/educational-python/src/com/jetbrains/python/edu/debugger/PyEduDebugRunner.java index c10fc757104f..3562315d7caa 100644 --- a/python/educational-python/src/com/jetbrains/python/edu/debugger/PyEduDebugRunner.java +++ b/python/educational-python/src/com/jetbrains/python/edu/debugger/PyEduDebugRunner.java @@ -26,6 +26,7 @@ import com.intellij.xdebugger.XDebuggerBundle; import com.intellij.xdebugger.impl.XDebugSessionImpl; import com.intellij.xdebugger.impl.actions.XDebuggerActions; import com.intellij.xdebugger.impl.ui.XDebugSessionTab; +import com.jetbrains.edu.learning.statistics.EduUsagesCollector; import com.jetbrains.python.console.PythonDebugLanguageConsoleView; import com.jetbrains.python.debugger.PyDebugProcess; import com.jetbrains.python.debugger.PyDebugRunner; @@ -62,6 +63,7 @@ public class PyEduDebugRunner extends PyDebugRunner { if (file != null) { int line = getBreakpointLineNumber(file, session.getProject()); if (line != NO_LINE) { + EduUsagesCollector.stepThroughInvoked(); return new PyEduDebugProcess(session, serverSocket, executionConsole, processHandler, isMultiProcess, scriptName, line + 1);