From 27128ffc8cd1db5d8329bec8592db1424f32d801 Mon Sep 17 00:00:00 2001 From: mikrise2 Date: Wed, 6 Dec 2023 16:38:18 +0100 Subject: [PATCH] [ML4SE-168] Connection between server and client. Uploading log files. --- .../config/DefaultConfigsFactory.kt | 4 +- .../config/MainTaskTrackerConfig.kt | 15 +++-- ...geContentConfig.kt => PluginInfoConfig.kt} | 6 +- .../tasktracker/requests/FileRequests.kt | 24 ++++---- .../tasktracker/requests/IdRequests.kt | 59 +++++++++++++++++++ .../tasktracker/tracking/BaseTracker.kt | 2 +- .../research/tasktracker/tracking/Loggable.kt | 11 +++- .../tracking/logger/DocumentLogger.kt | 11 +++- .../ui/main/panel/MainPluginPanelFactory.kt | 4 ++ .../main/panel/panelStates/DefaultStates.kt | 9 ++- .../main/panel/storage/GlobalPluginStorage.kt | 5 ++ .../ui/main/panel/storage/MainPanelStorage.kt | 2 - .../main/panel/template/MainPageTemplate.kt | 2 +- .../ui/main/panel/template/SurveyTemplate.kt | 5 +- .../tasktracker/util/survey/SurveyParser.kt | 4 +- ...in_page_default.yaml => info_default.yaml} | 0 .../plugins/requests/FileRequests.kt | 7 ++- .../tasktracker/util/logFile/LogFileType.kt | 6 +- .../tasktracker/util/logFile/LogTableUtil.kt | 5 +- 19 files changed, 137 insertions(+), 44 deletions(-) rename ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/config/content/{MainPageContentConfig.kt => PluginInfoConfig.kt} (66%) create mode 100644 ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/requests/IdRequests.kt rename ij-plugin/src/main/resources/org/jetbrains/research/tasktracker/config/{main_page_default.yaml => info_default.yaml} (100%) diff --git a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/config/DefaultConfigsFactory.kt b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/config/DefaultConfigsFactory.kt index 3e1e812f..c8b70332 100644 --- a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/config/DefaultConfigsFactory.kt +++ b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/config/DefaultConfigsFactory.kt @@ -3,7 +3,7 @@ package org.jetbrains.research.tasktracker.config import com.intellij.openapi.diagnostic.Logger import org.jetbrains.research.tasktracker.config.agreement.AgreementConfig import org.jetbrains.research.tasktracker.config.content.FinalPageContentConfig -import org.jetbrains.research.tasktracker.config.content.MainPageContentConfig +import org.jetbrains.research.tasktracker.config.content.PluginInfoConfig import org.jetbrains.research.tasktracker.config.content.ServerErrorPageConfig import org.jetbrains.research.tasktracker.config.content.TaskContentConfig import org.jetbrains.research.tasktracker.config.emotion.EmotionConfig @@ -28,7 +28,7 @@ object DefaultConfigsFactory { TaskContentConfig.CONFIG_FILE_PREFIX, ScenarioConfig.CONFIG_FILE_PREFIX, WebCamTrackingConfig.CONFIG_FILE_PREFIX, - MainPageContentConfig.CONFIG_FILE_PREFIX, + PluginInfoConfig.CONFIG_FILE_PREFIX, FinalPageContentConfig.CONFIG_FILE_PREFIX, ServerErrorPageConfig.CONFIG_FILE_PREFIX, SurveyConfig.CONFIG_FILE_PREFIX, diff --git a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/config/MainTaskTrackerConfig.kt b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/config/MainTaskTrackerConfig.kt index 2d4c7113..ad4fd10d 100644 --- a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/config/MainTaskTrackerConfig.kt +++ b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/config/MainTaskTrackerConfig.kt @@ -4,7 +4,7 @@ import com.intellij.openapi.application.PathManager import com.intellij.openapi.diagnostic.Logger import org.jetbrains.research.tasktracker.config.agreement.AgreementConfig import org.jetbrains.research.tasktracker.config.content.FinalPageContentConfig -import org.jetbrains.research.tasktracker.config.content.MainPageContentConfig +import org.jetbrains.research.tasktracker.config.content.PluginInfoConfig import org.jetbrains.research.tasktracker.config.content.ServerErrorPageConfig import org.jetbrains.research.tasktracker.config.content.TaskContentConfig import org.jetbrains.research.tasktracker.config.emotion.EmotionConfig @@ -29,7 +29,7 @@ data class MainTaskTrackerConfig( var activityTrackingConfig: ActivityTrackingConfig? = null, var codeTrackingConfig: CodeTrackingConfig? = null, var webCamConfig: WebCamTrackingConfig? = null, - var mainPageConfig: MainPageContentConfig? = null, + var pluginInfoConfig: PluginInfoConfig? = null, var finalPageConfig: FinalPageContentConfig? = null, var serverErrorPageConfig: ServerErrorPageConfig? = null, var emotionConfig: EmotionConfig? = null, @@ -45,7 +45,7 @@ data class MainTaskTrackerConfig( codeTrackingConfig, scenarioConfig, webCamConfig, - mainPageConfig, + pluginInfoConfig, finalPageConfig, serverErrorPageConfig, emotionConfig, @@ -60,6 +60,9 @@ data class MainTaskTrackerConfig( val agreementFilePath = "$pluginFolderPath/agreement/agreement.json" val logFilesFolder = "$pluginFolderPath/logs" const val PLUGIN_PROPERTIES_FILE = "$PLUGIN_NAME.properties" + private const val DOMAIN = "http://0.0.0.0:8080" + + fun getRoute(path: String) = "$DOMAIN/$path" private fun File.isConfigFile() = this.extension == "yaml" @@ -103,9 +106,9 @@ data class MainTaskTrackerConfig( ) } - fileName.startsWith(MainPageContentConfig.CONFIG_FILE_PREFIX) -> { - mainConfig.mainPageConfig = buildBaseConfig( - mainConfig.mainPageConfig, configFile, MainPageContentConfig::buildConfig, logger + fileName.startsWith(PluginInfoConfig.CONFIG_FILE_PREFIX) -> { + mainConfig.pluginInfoConfig = buildBaseConfig( + mainConfig.pluginInfoConfig, configFile, PluginInfoConfig::buildConfig, logger ) } diff --git a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/config/content/MainPageContentConfig.kt b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/config/content/PluginInfoConfig.kt similarity index 66% rename from ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/config/content/MainPageContentConfig.kt rename to ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/config/content/PluginInfoConfig.kt index b36fa69c..dbc1718f 100644 --- a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/config/content/MainPageContentConfig.kt +++ b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/config/content/PluginInfoConfig.kt @@ -6,14 +6,14 @@ import org.jetbrains.research.tasktracker.config.YamlConfigLoadStrategy import java.io.File @Serializable -class MainPageContentConfig(val pluginName: String, val pluginDescription: String) : BaseConfig { +class PluginInfoConfig(val pluginName: String, val pluginDescription: String) : BaseConfig { override val configName: String get() = CONFIG_FILE_PREFIX companion object { - const val CONFIG_FILE_PREFIX: String = "main_page" + const val CONFIG_FILE_PREFIX: String = "info" - fun buildConfig(configFile: File): MainPageContentConfig = + fun buildConfig(configFile: File): PluginInfoConfig = YamlConfigLoadStrategy.load(configFile.readText(), serializer()) } } diff --git a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/requests/FileRequests.kt b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/requests/FileRequests.kt index 6888c42b..6bf6a2ed 100644 --- a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/requests/FileRequests.kt +++ b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/requests/FileRequests.kt @@ -6,8 +6,9 @@ import io.ktor.client.engine.cio.* import io.ktor.client.request.forms.* import io.ktor.http.* import kotlinx.coroutines.runBlocking -import org.jetbrains.research.tasktracker.tracking.Loggable -import org.jetbrains.research.tasktracker.ui.main.panel.storage.MainPanelStorage +import org.apache.http.client.utils.URIBuilder +import org.jetbrains.research.tasktracker.config.MainTaskTrackerConfig.Companion.getRoute +import org.jetbrains.research.tasktracker.ui.main.panel.storage.GlobalPluginStorage import java.io.File object FileRequests { @@ -15,15 +16,15 @@ object FileRequests { private val client = HttpClient(CIO) private val logger: Logger = Logger.getInstance(FileRequests::class.java) - fun Loggable.send() = this.getLogFiles().all { - sendFile(it, this.subDir) - } - @Suppress("TooGenericExceptionCaught") - private fun sendFile(file: File, subdir: String) = runBlocking { + fun sendFile(file: File, logFileType: String) = runBlocking { try { + val researchId = GlobalPluginStorage.currentResearchId + ?: error("ResearchId is undefined") + val url = URIBuilder(getRoute("upload-log-file")).addParameter("logFileType", logFileType) + .addParameter("id", researchId.toString()).build().toString() client.submitFormWithBinaryData( - url = "$DOMAIN/upload-document/${MainPanelStorage.currentResearchId}?subdir=$subdir", + url = url, formData = formData { append( "file", @@ -37,11 +38,12 @@ object FileRequests { } ) true + } catch (e: IllegalStateException) { + logger.error(e.localizedMessage) + false } catch (e: Exception) { - logger.warn("Server interaction error! File to send: ${file.path}", e) + logger.error("Server interaction error! File to send: ${file.path}", e) false } } - - const val DOMAIN = "http://3.249.245.244:8888" } diff --git a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/requests/IdRequests.kt b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/requests/IdRequests.kt new file mode 100644 index 00000000..92f76460 --- /dev/null +++ b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/requests/IdRequests.kt @@ -0,0 +1,59 @@ +package org.jetbrains.research.tasktracker.requests + +import com.intellij.openapi.diagnostic.Logger +import io.ktor.client.* +import io.ktor.client.call.* +import io.ktor.client.engine.cio.* +import io.ktor.client.request.forms.* +import io.ktor.http.* +import kotlinx.coroutines.runBlocking +import org.jetbrains.research.tasktracker.TaskTrackerPlugin +import org.jetbrains.research.tasktracker.config.MainTaskTrackerConfig.Companion.getRoute +import org.jetbrains.research.tasktracker.ui.main.panel.storage.GlobalPluginStorage + +object IdRequests { + private val client = HttpClient(CIO) + private val logger = Logger.getInstance(IdRequests::class.java) + + @Suppress("TooGenericExceptionCaught") + fun getUserId(name: String, email: String): Int? = + runBlocking { + val url = getRoute("create-user") + try { + return@runBlocking client.submitForm( + url = url, + formParameters = parameters { + append("name", name) + append("email", email) + } + ).body() + } catch (e: Exception) { + logger.error("Server interaction error while getting user id! Url: $url", e) + } + return@runBlocking null + } + + @Suppress("TooGenericExceptionCaught") + fun getResearchId(): Int? = + runBlocking { + val url = getRoute("create-research") + val pluginInfoConfig = TaskTrackerPlugin.mainConfig.pluginInfoConfig + ?: error("MainPageConfig must not be null") + try { + requireNotNull(GlobalPluginStorage.userId) { "User id is not defined" } + return@runBlocking client.submitForm( + url = url, + formParameters = parameters { + append("name", pluginInfoConfig.pluginName) + append("description", pluginInfoConfig.pluginDescription) + append("user_id", GlobalPluginStorage.userId.toString()) + } + ).body() + } catch (e: IllegalArgumentException) { + logger.error(e.localizedMessage) + } catch (e: Exception) { + logger.error("Server interaction error while getting user id! Url: $url", e) + } + return@runBlocking null + } +} diff --git a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/tracking/BaseTracker.kt b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/tracking/BaseTracker.kt index c546431d..94033d51 100644 --- a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/tracking/BaseTracker.kt +++ b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/tracking/BaseTracker.kt @@ -3,7 +3,7 @@ package org.jetbrains.research.tasktracker.tracking import org.jetbrains.research.tasktracker.tracking.logger.BaseLogger import java.io.File -abstract class BaseTracker(override val subDir: String = "") : Loggable { +abstract class BaseTracker(override val logFileType: String = "") : Loggable() { protected abstract val trackerLogger: BaseLogger diff --git a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/tracking/Loggable.kt b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/tracking/Loggable.kt index aace0491..111b7464 100644 --- a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/tracking/Loggable.kt +++ b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/tracking/Loggable.kt @@ -1,10 +1,15 @@ package org.jetbrains.research.tasktracker.tracking +import org.jetbrains.research.tasktracker.requests.FileRequests import java.io.File -interface Loggable { +abstract class Loggable { - val subDir: String + abstract val logFileType: String - fun getLogFiles(): List + abstract fun getLogFiles(): List + + fun send() = getLogFiles().all { + FileRequests.sendFile(it, this.logFileType) + } } diff --git a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/tracking/logger/DocumentLogger.kt b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/tracking/logger/DocumentLogger.kt index e271805e..e5fa7d2e 100644 --- a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/tracking/logger/DocumentLogger.kt +++ b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/tracking/logger/DocumentLogger.kt @@ -2,6 +2,8 @@ package org.jetbrains.research.tasktracker.tracking.logger import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.editor.Document +import org.jetbrains.research.tasktracker.requests.FileRequests +import java.io.File object DocumentLogger { private val myDocumentsToPrinters: HashMap = HashMap() @@ -17,8 +19,13 @@ object DocumentLogger { fun removeDocumentLogPrinter(document: Document) { log(document) - getDocumentLogPrinter(document)?.getLogFiles() - ?: logger.error("attempt to flush non-existing csv printer for document '$document'") + val logFiles: List = getDocumentLogPrinter(document)?.getLogFiles() + ?: emptyList().also { + logger.error("attempt to flush non-existing csv printer for document '$document'") + } + logFiles.all { + FileRequests.sendFile(it, "document") + } myDocumentsToPrinters.remove(document) } } diff --git a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/MainPluginPanelFactory.kt b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/MainPluginPanelFactory.kt index 8789286b..84b1744c 100644 --- a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/MainPluginPanelFactory.kt +++ b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/MainPluginPanelFactory.kt @@ -90,6 +90,9 @@ class MainPluginPanelFactory : ToolWindowFactory { trackers.forEach { it.stopTracking() } + trackers.forEach { + it.send() + } } fun loadBasePage( @@ -185,6 +188,7 @@ class MainPluginPanelFactory : ToolWindowFactory { mainWindow.executeJavaScriptAsync("checkAllInputs()").then { val agreementChecker = Json.decodeFromString(AgreementChecker.serializer(), it.toString()) if (agreementChecker.allRequiredChecked()) { + GlobalPluginStorage.agreementChecker = agreementChecker saveAgreements(it.toString()) return@then false } diff --git a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/panelStates/DefaultStates.kt b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/panelStates/DefaultStates.kt index d504f4b5..8590edfb 100644 --- a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/panelStates/DefaultStates.kt +++ b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/panelStates/DefaultStates.kt @@ -8,9 +8,11 @@ import org.jetbrains.research.tasktracker.TaskTrackerPlugin import org.jetbrains.research.tasktracker.config.content.task.base.Task import org.jetbrains.research.tasktracker.config.content.task.base.TaskWithFiles import org.jetbrains.research.tasktracker.config.scenario.models.* +import org.jetbrains.research.tasktracker.requests.IdRequests import org.jetbrains.research.tasktracker.tracking.TaskFileHandler import org.jetbrains.research.tasktracker.ui.main.panel.MainPluginPanelFactory import org.jetbrains.research.tasktracker.ui.main.panel.runOnSuccess +import org.jetbrains.research.tasktracker.ui.main.panel.storage.GlobalPluginStorage import org.jetbrains.research.tasktracker.ui.main.panel.storage.MainPanelStorage import org.jetbrains.research.tasktracker.ui.main.panel.template.* import org.jetbrains.research.tasktracker.util.UIBundle @@ -41,6 +43,10 @@ fun Panel.agreementAcceptance() { fun Panel.welcomePage() { loadBasePage(MainPageTemplate.loadCurrentTemplate(), "ui.button.next", false) setNextAction { + GlobalPluginStorage.agreementChecker?.let { + GlobalPluginStorage.userId = IdRequests.getUserId(it.name, it.email) + } + GlobalPluginStorage.currentResearchId = IdRequests.getResearchId() TaskTrackerPlugin.initializationHandler.setupEnvironment(project) startTracking() processScenario() @@ -105,8 +111,9 @@ fun Panel.survey(id: String) { val surveyParser = SurveyParser(mainWindow, project) GlobalScope.launch { surveyParser.parseAndLog(survey) + surveyParser.send() + processScenario() } - processScenario() } else { notifyError(project, UIBundle.message("ui.please.fill")) } diff --git a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/storage/GlobalPluginStorage.kt b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/storage/GlobalPluginStorage.kt index 5448a104..9012fc51 100644 --- a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/storage/GlobalPluginStorage.kt +++ b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/storage/GlobalPluginStorage.kt @@ -2,10 +2,15 @@ package org.jetbrains.research.tasktracker.ui.main.panel.storage import org.jetbrains.research.tasktracker.modelInference.EmoPredictor import org.jetbrains.research.tasktracker.tracking.webcam.WebCamInfo +import org.jetbrains.research.tasktracker.ui.main.panel.models.AgreementChecker object GlobalPluginStorage { val camerasInfo: MutableList = mutableListOf() var currentDeviceNumber: Int? = null var emoPredictor: EmoPredictor? = null + + var agreementChecker: AgreementChecker? = null + var userId: Int? = null + var currentResearchId: Int? = null } diff --git a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/storage/MainPanelStorage.kt b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/storage/MainPanelStorage.kt index fdf0512c..7997179f 100644 --- a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/storage/MainPanelStorage.kt +++ b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/storage/MainPanelStorage.kt @@ -9,7 +9,5 @@ import java.util.* */ object MainPanelStorage { var taskIdTask: MutableMap = mutableMapOf() - var currentResearchId: Int? = null - var userId: Int? = null val activeIdeHandlers = LinkedList() } diff --git a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/template/MainPageTemplate.kt b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/template/MainPageTemplate.kt index f1dab0ea..65e8d6c7 100644 --- a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/template/MainPageTemplate.kt +++ b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/template/MainPageTemplate.kt @@ -11,7 +11,7 @@ class MainPageTemplate(private val pluginName: String, private val pluginDescrip companion object { fun loadCurrentTemplate(): MainPageTemplate { - val config = TaskTrackerPlugin.mainConfig.mainPageConfig + val config = TaskTrackerPlugin.mainConfig.pluginInfoConfig ?: error("mainPageConfig has not initialized yet!") return MainPageTemplate(config.pluginName, config.pluginDescription) } diff --git a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/template/SurveyTemplate.kt b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/template/SurveyTemplate.kt index b6043dde..c0150e40 100644 --- a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/template/SurveyTemplate.kt +++ b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/ui/main/panel/template/SurveyTemplate.kt @@ -1,8 +1,6 @@ package org.jetbrains.research.tasktracker.ui.main.panel.template import org.jetbrains.research.tasktracker.config.survey.Survey -import org.jetbrains.research.tasktracker.requests.FileRequests -import org.jetbrains.research.tasktracker.ui.main.panel.storage.MainPanelStorage class SurveyTemplate(val survey: Survey) : HtmlBaseFileTemplate() { override val contentFilename: String @@ -14,5 +12,6 @@ class SurveyTemplate(val survey: Survey) : HtmlBaseFileTemplate() { override val arguments: Array get() = arrayOf(request(), survey.toHtml()) - private fun request() = "${FileRequests.DOMAIN}/confirm-survey?id=${MainPanelStorage.currentResearchId}" + @Suppress("FunctionOnlyReturningConstant") + private fun request() = "" // TODO remove request from survey html } diff --git a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/util/survey/SurveyParser.kt b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/util/survey/SurveyParser.kt index 7542e38f..24a6e5dc 100644 --- a/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/util/survey/SurveyParser.kt +++ b/ij-plugin/src/main/kotlin/org/jetbrains/research/tasktracker/util/survey/SurveyParser.kt @@ -7,7 +7,7 @@ import org.jetbrains.research.tasktracker.tracking.Loggable import org.jetbrains.research.tasktracker.ui.main.panel.MainPluginWindow import java.io.File -class SurveyParser(private val mainWindow: MainPluginWindow, project: Project) : Loggable { +class SurveyParser(private val mainWindow: MainPluginWindow, project: Project) : Loggable() { private val surveyLogger = SurveyLogger(project) suspend fun parseAndLog(survey: Survey) = @@ -36,7 +36,7 @@ class SurveyParser(private val mainWindow: MainPluginWindow, project: Project) : } } - override val subDir: String + override val logFileType: String get() = "survey" override fun getLogFiles(): List = surveyLogger.getLogFiles() diff --git a/ij-plugin/src/main/resources/org/jetbrains/research/tasktracker/config/main_page_default.yaml b/ij-plugin/src/main/resources/org/jetbrains/research/tasktracker/config/info_default.yaml similarity index 100% rename from ij-plugin/src/main/resources/org/jetbrains/research/tasktracker/config/main_page_default.yaml rename to ij-plugin/src/main/resources/org/jetbrains/research/tasktracker/config/info_default.yaml diff --git a/ij-server/src/main/kotlin/org/jetbrains/research/tasktracker/plugins/requests/FileRequests.kt b/ij-server/src/main/kotlin/org/jetbrains/research/tasktracker/plugins/requests/FileRequests.kt index 42a81fcb..64c3a903 100644 --- a/ij-server/src/main/kotlin/org/jetbrains/research/tasktracker/plugins/requests/FileRequests.kt +++ b/ij-server/src/main/kotlin/org/jetbrains/research/tasktracker/plugins/requests/FileRequests.kt @@ -14,8 +14,9 @@ private const val DEFAULT_FOLDER = "default" fun Routing.uploadLogFile() { post("/upload-log-file") { try { - val logFileType = call.request.queryParameters["logFileType"] ?: DEFAULT_FOLDER - val researchId = call.parameters.getOrFail("id") + val parameters = call.parameters + val logFileType = parameters["logFileType"]?: DEFAULT_FOLDER + val researchId = parameters.getOrFail("id") val logFile = createLogFile(logFileType, researchId) logFile.parseLogFile(logFileType, researchId) call.respond(HttpStatusCode.OK) @@ -23,6 +24,8 @@ fun Routing.uploadLogFile() { call.respond(HttpStatusCode.BadRequest, e.localizedMessage) } catch (e: ParameterConversionException) { call.respond(HttpStatusCode.BadRequest, e.localizedMessage) + } catch (e: Exception){ + call.respond(HttpStatusCode.BadRequest, e.localizedMessage) } } } diff --git a/ij-server/src/main/kotlin/org/jetbrains/research/tasktracker/util/logFile/LogFileType.kt b/ij-server/src/main/kotlin/org/jetbrains/research/tasktracker/util/logFile/LogFileType.kt index 64de9f2d..f1222f91 100644 --- a/ij-server/src/main/kotlin/org/jetbrains/research/tasktracker/util/logFile/LogFileType.kt +++ b/ij-server/src/main/kotlin/org/jetbrains/research/tasktracker/util/logFile/LogFileType.kt @@ -1,11 +1,11 @@ package org.jetbrains.research.tasktracker.util.logFile @Suppress("UnusedPrivateMember") -enum class LogFileType(private val logFileType: String) { +enum class LogFileType(val logFileType: String) { ActivityData("activity"), DocumentData("document"), - FileEditorData("file-editor"), + FileEditorData("fileEditor"), SurveyData("survey"), - ToolWindowData("tool-window"), + ToolWindowData("toolWindow"), WebCamData("web-cam") } diff --git a/ij-server/src/main/kotlin/org/jetbrains/research/tasktracker/util/logFile/LogTableUtil.kt b/ij-server/src/main/kotlin/org/jetbrains/research/tasktracker/util/logFile/LogTableUtil.kt index 0c2eb42a..4bc88e70 100644 --- a/ij-server/src/main/kotlin/org/jetbrains/research/tasktracker/util/logFile/LogTableUtil.kt +++ b/ij-server/src/main/kotlin/org/jetbrains/research/tasktracker/util/logFile/LogTableUtil.kt @@ -11,9 +11,10 @@ internal val LOGGER = KtorSimpleLogger("org.jetbrains.research.tasktracker.util. @Suppress("SwallowedException") fun File.parseLogFile(logFileTypeString: String, researchId: Int) { val logFileType = try { - LogFileType.valueOf(logFileTypeString) + LogFileType.values().find { it.logFileType == logFileTypeString } + ?: error("An data file was not found that is not defined with the type: $logFileTypeString") } catch (exception: IllegalStateException) { - LOGGER.warn("An data file was found that is not defined with the type: $logFileTypeString") + LOGGER.warn(exception.localizedMessage) return } CSVFormat.Builder.create().apply {