[vcs-log] write validators for collectors

FUS-397, FUS-411

GitOrigin-RevId: 31ae95f19491c1a8c2a501c0d45542d30188c292
This commit is contained in:
Julia Beliaeva
2019-07-02 06:52:16 +03:00
committed by intellij-monorepo-bot
parent e4657d68ab
commit d65feeba27
3 changed files with 47 additions and 1 deletions
@@ -30,6 +30,11 @@
<statistics.applicationUsagesCollector implementation="com.intellij.vcs.log.statistics.VcsLogIndexApplicationStatisticsCollector"/>
<statistics.counterUsagesCollector groupId="vcs.log.trigger" version="1"/>
<statistics.validation.customWhiteListRule implementation="com.intellij.vcs.log.statistics.VcsLogTriggerEventIdValidator"/>
<statistics.validation.customWhiteListRule implementation="com.intellij.vcs.log.statistics.VcsLogFilterNameValidator"/>
<statistics.validation.customWhiteListRule implementation="com.intellij.vcs.log.statistics.VcsLogHighlighterIdValidator"/>
<statistics.validation.customWhiteListRule implementation="com.intellij.vcs.log.statistics.VcsLogColumnNameValidator"/>
<statistics.validation.customWhiteListRule implementation="com.intellij.vcs.log.statistics.VcsLogSortKindValidator"/>
<logHighlighterFactory implementation="com.intellij.vcs.log.ui.highlighters.MyCommitsHighlighter$Factory"/>
<logHighlighterFactory implementation="com.intellij.vcs.log.ui.highlighters.MergeCommitsHighlighter$Factory"/>
@@ -0,0 +1,41 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.vcs.log.statistics
import com.intellij.internal.statistic.eventLog.validator.ValidationResultType
import com.intellij.internal.statistic.eventLog.validator.rules.EventContext
import com.intellij.internal.statistic.eventLog.validator.rules.impl.CustomWhiteListRule
import com.intellij.internal.statistic.eventLog.validator.rules.impl.LocalEnumCustomWhitelistRule
import com.intellij.openapi.util.text.StringUtil
import com.intellij.vcs.log.VcsLogFilterCollection
import com.intellij.vcs.log.graph.PermanentGraph
import com.intellij.vcs.log.ui.highlighters.CurrentBranchHighlighter
import com.intellij.vcs.log.ui.highlighters.MergeCommitsHighlighter
import com.intellij.vcs.log.ui.highlighters.MyCommitsHighlighter
import com.intellij.vcs.log.ui.table.GraphTableModel
open class CustomStringsWhiteListRule(private val id: String, private val values: Collection<String>) : CustomWhiteListRule() {
final override fun acceptRuleId(ruleId: String?): Boolean = id == ruleId
final override fun doValidate(data: String, context: EventContext): ValidationResultType {
if (values.contains(data)) return ValidationResultType.ACCEPTED
return ValidationResultType.REJECTED
}
}
class VcsLogTriggerEventIdValidator :
CustomStringsWhiteListRule("vcs_log_trigger_event_id", VcsLogUsageTriggerCollector.VcsLogEvent.values().map { it.id }.toSet())
class VcsLogFilterNameValidator :
CustomStringsWhiteListRule("vcs_log_filter_name", VcsLogFilterCollection.STANDARD_KEYS.map { it.name }.toSet())
class VcsLogSortKindValidator :
LocalEnumCustomWhitelistRule("vcs_log_sort_kind", PermanentGraph.SortType::class.java)
class VcsLogHighlighterIdValidator :
CustomStringsWhiteListRule("vcs_log_highlighter_id", setOf(MyCommitsHighlighter.Factory.ID, MergeCommitsHighlighter.Factory.ID,
CurrentBranchHighlighter.Factory.ID))
class VcsLogColumnNameValidator :
CustomStringsWhiteListRule("vcs_log_column_name", GraphTableModel.DYNAMIC_COLUMNS.map {
StringUtil.toLowerCase(GraphTableModel.COLUMN_NAMES[it])
}.toSet())
@@ -45,7 +45,7 @@ public class MergeCommitsHighlighter implements VcsLogHighlighter {
}
public static class Factory implements VcsLogHighlighterFactory {
@NotNull private static final String ID = "MERGE_COMMITS";
@NotNull public static final String ID = "MERGE_COMMITS";
@NotNull
@Override