diff --git a/platform/vcs-log/impl/src/META-INF/vcs-log.xml b/platform/vcs-log/impl/src/META-INF/vcs-log.xml index 8a8f4ace27f8..f98b4ef31fc3 100644 --- a/platform/vcs-log/impl/src/META-INF/vcs-log.xml +++ b/platform/vcs-log/impl/src/META-INF/vcs-log.xml @@ -30,6 +30,11 @@ + + + + + diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/statistics/VcsLogValidators.kt b/platform/vcs-log/impl/src/com/intellij/vcs/log/statistics/VcsLogValidators.kt new file mode 100644 index 000000000000..0d53d1b39e48 --- /dev/null +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/statistics/VcsLogValidators.kt @@ -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) : 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()) \ No newline at end of file diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/highlighters/MergeCommitsHighlighter.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/highlighters/MergeCommitsHighlighter.java index a5ce599ecc63..f36f5c8fcd6a 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/highlighters/MergeCommitsHighlighter.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/highlighters/MergeCommitsHighlighter.java @@ -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