diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/statistics/VcsOptionsUsagesCollector.kt b/platform/vcs-impl/src/com/intellij/openapi/vcs/statistics/VcsOptionsUsagesCollector.kt index c66b2945ea83..87d400253901 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/statistics/VcsOptionsUsagesCollector.kt +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/statistics/VcsOptionsUsagesCollector.kt @@ -1,88 +1,74 @@ // Copyright 2000-2018 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.openapi.vcs.statistics; +package com.intellij.openapi.vcs.statistics -import com.intellij.internal.statistic.beans.UsageDescriptor; -import com.intellij.internal.statistic.service.fus.collectors.ProjectUsagesCollector; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.vcs.VcsConfiguration; -import com.intellij.openapi.vcs.VcsShowConfirmationOption; -import kotlin.jvm.functions.Function1; -import org.jetbrains.annotations.NotNull; +import com.intellij.internal.statistic.beans.UsageDescriptor +import com.intellij.internal.statistic.service.fus.collectors.ProjectUsagesCollector +import com.intellij.internal.statistic.utils.addIfDiffers +import com.intellij.openapi.project.Project +import com.intellij.openapi.vcs.VcsConfiguration +import com.intellij.openapi.vcs.VcsShowConfirmationOption +import java.util.* -import java.util.HashSet; -import java.util.Set; +class VcsOptionsUsagesCollector : ProjectUsagesCollector() { + override fun getGroupId(): String = "vcs.options" -import static com.intellij.internal.statistic.utils.StatisticsUtilKt.addIfDiffers; + override fun getUsages(project: Project): Set = getDescriptors(project) -public class VcsOptionsUsagesCollector extends ProjectUsagesCollector { - @Override - @NotNull - public String getGroupId() { return "vcs.options"; } + companion object { + private fun getDescriptors(project: Project): Set { + val set = HashSet() - @Override - @NotNull - public Set getUsages(@NotNull Project project) { - return getDescriptors(project); - } + val conf = VcsConfiguration.getInstance(project) + val confDefault = VcsConfiguration() - @NotNull - public static Set getDescriptors(@NotNull Project project) { - Set set = new HashSet<>(); + addBoolIfDiffers(set, conf, confDefault, { it.OFFER_MOVE_TO_ANOTHER_CHANGELIST_ON_PARTIAL_COMMIT }, "offer.move.partially.committed") + addConfirmationIfDiffers(set, conf, confDefault, { it.MOVE_TO_FAILED_COMMIT_CHANGELIST }, "offer.move.failed.committed") + addConfirmationIfDiffers(set, conf, confDefault, { it.REMOVE_EMPTY_INACTIVE_CHANGELISTS }, "offer.remove.empty.changelist") - VcsConfiguration conf = VcsConfiguration.getInstance(project); - VcsConfiguration confDefault = new VcsConfiguration(); + addBoolIfDiffers(set, conf, confDefault, { it.MAKE_NEW_CHANGELIST_ACTIVE }, "changelist.make.new.active") + addBoolIfDiffers(set, conf, confDefault, { it.PRESELECT_EXISTING_CHANGELIST }, "changelist.preselect.existing") - addBoolIfDiffers(set, conf, confDefault, s -> s.OFFER_MOVE_TO_ANOTHER_CHANGELIST_ON_PARTIAL_COMMIT, "offer.move.partially.committed"); - addConfirmationIfDiffers(set, conf, confDefault, s -> s.MOVE_TO_FAILED_COMMIT_CHANGELIST, "offer.move.failed.committed"); - addConfirmationIfDiffers(set, conf, confDefault, s -> s.REMOVE_EMPTY_INACTIVE_CHANGELISTS, "offer.remove.empty.changelist"); + addBoolIfDiffers(set, conf, confDefault, { it.PERFORM_UPDATE_IN_BACKGROUND }, "perform.update.in.background") + addBoolIfDiffers(set, conf, confDefault, { it.PERFORM_COMMIT_IN_BACKGROUND }, "perform.commit.in.background") + addBoolIfDiffers(set, conf, confDefault, { it.PERFORM_EDIT_IN_BACKGROUND }, "perform.edit.in.background") + addBoolIfDiffers(set, conf, confDefault, { it.PERFORM_CHECKOUT_IN_BACKGROUND }, "perform.checkout.in.background") + addBoolIfDiffers(set, conf, confDefault, { it.PERFORM_ADD_REMOVE_IN_BACKGROUND }, "perform.add_remove.in.background") + addBoolIfDiffers(set, conf, confDefault, { it.PERFORM_ROLLBACK_IN_BACKGROUND }, "perform.rollback.in.background") - addBoolIfDiffers(set, conf, confDefault, s -> s.MAKE_NEW_CHANGELIST_ACTIVE, "changelist.make.new.active"); - addBoolIfDiffers(set, conf, confDefault, s -> s.PRESELECT_EXISTING_CHANGELIST, "changelist.preselect.existing"); + addBoolIfDiffers(set, conf, confDefault, { it.CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT }, "commit.before.check.code.smell") + addBoolIfDiffers(set, conf, confDefault, { it.CHECK_CODE_CLEANUP_BEFORE_PROJECT_COMMIT }, "commit.before.check.code.cleanup") + addBoolIfDiffers(set, conf, confDefault, { it.CHECK_NEW_TODO }, "commit.before.check.todo") + addBoolIfDiffers(set, conf, confDefault, { it.FORCE_NON_EMPTY_COMMENT }, "commit.before.check.non.empty.comment") + addBoolIfDiffers(set, conf, confDefault, { it.OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT }, "commit.before.optimize.imports") + addBoolIfDiffers(set, conf, confDefault, { it.REFORMAT_BEFORE_PROJECT_COMMIT }, "commit.before.reformat.project") + addBoolIfDiffers(set, conf, confDefault, { it.REARRANGE_BEFORE_PROJECT_COMMIT }, "commit.before.rearrange") - addBoolIfDiffers(set, conf, confDefault, s -> s.PERFORM_UPDATE_IN_BACKGROUND, "perform.update.in.background"); - addBoolIfDiffers(set, conf, confDefault, s -> s.PERFORM_COMMIT_IN_BACKGROUND, "perform.commit.in.background"); - addBoolIfDiffers(set, conf, confDefault, s -> s.PERFORM_EDIT_IN_BACKGROUND, "perform.edit.in.background"); - addBoolIfDiffers(set, conf, confDefault, s -> s.PERFORM_CHECKOUT_IN_BACKGROUND, "perform.checkout.in.background"); - addBoolIfDiffers(set, conf, confDefault, s -> s.PERFORM_ADD_REMOVE_IN_BACKGROUND, "perform.add_remove.in.background"); - addBoolIfDiffers(set, conf, confDefault, s -> s.PERFORM_ROLLBACK_IN_BACKGROUND, "perform.rollback.in.background"); + addBoolIfDiffers(set, conf, confDefault, { it.CLEAR_INITIAL_COMMIT_MESSAGE }, "commit.clear.initial.comment") + addBoolIfDiffers(set, conf, confDefault, { it.USE_COMMIT_MESSAGE_MARGIN }, "commit.use.right.margin") + addBoolIfDiffers(set, conf, confDefault, { it.SHOW_UNVERSIONED_FILES_WHILE_COMMIT }, "commit.show.unversioned") - addBoolIfDiffers(set, conf, confDefault, s -> s.CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT, "commit.before.check.code.smell"); - addBoolIfDiffers(set, conf, confDefault, s -> s.CHECK_CODE_CLEANUP_BEFORE_PROJECT_COMMIT, "commit.before.check.code.cleanup"); - addBoolIfDiffers(set, conf, confDefault, s -> s.CHECK_NEW_TODO, "commit.before.check.todo"); - addBoolIfDiffers(set, conf, confDefault, s -> s.FORCE_NON_EMPTY_COMMENT, "commit.before.check.non.empty.comment"); - addBoolIfDiffers(set, conf, confDefault, s -> s.OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT, "commit.before.optimize.imports"); - addBoolIfDiffers(set, conf, confDefault, s -> s.REFORMAT_BEFORE_PROJECT_COMMIT, "commit.before.reformat.project"); - addBoolIfDiffers(set, conf, confDefault, s -> s.REARRANGE_BEFORE_PROJECT_COMMIT, "commit.before.rearrange"); + addBoolIfDiffers(set, conf, confDefault, { it.LOCAL_CHANGES_DETAILS_PREVIEW_SHOWN }, "show.changes.preview") + addBoolIfDiffers(set, conf, confDefault, { it.INCLUDE_TEXT_INTO_SHELF }, "include.text.into.shelf") + addBoolIfDiffers(set, conf, confDefault, { it.CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND }, "check.conflicts.in.background") - addBoolIfDiffers(set, conf, confDefault, s -> s.CLEAR_INITIAL_COMMIT_MESSAGE, "commit.clear.initial.comment"); - addBoolIfDiffers(set, conf, confDefault, s -> s.USE_COMMIT_MESSAGE_MARGIN, "commit.use.right.margin"); - addBoolIfDiffers(set, conf, confDefault, s -> s.SHOW_UNVERSIONED_FILES_WHILE_COMMIT, "commit.show.unversioned"); + return set + } - addBoolIfDiffers(set, conf, confDefault, s -> s.LOCAL_CHANGES_DETAILS_PREVIEW_SHOWN, "show.changes.preview"); - addBoolIfDiffers(set, conf, confDefault, s -> s.INCLUDE_TEXT_INTO_SHELF, "include.text.into.shelf"); - addBoolIfDiffers(set, conf, confDefault, s -> s.CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND, "check.conflicts.in.background"); + private fun addBoolIfDiffers(set: MutableSet, settingsBean: T, defaultSettingsBean: T, + valueFunction: Function1, featureId: String) { + addIfDiffers(set, settingsBean, defaultSettingsBean, valueFunction) { if (it) featureId else "$featureId.disabled" } + } - return set; - } - - private static void addBoolIfDiffers(Set set, T settingsBean, T defaultSettingsBean, - Function1 valueFunction, String featureId) { - addIfDiffers(set, settingsBean, defaultSettingsBean, valueFunction, (it) -> it ? featureId : featureId + ".disabled"); - } - - private static void addConfirmationIfDiffers(Set set, T settingsBean, T defaultSettingsBean, - Function1 valueFunction, String featureId) { - addIfDiffers(set, settingsBean, defaultSettingsBean, valueFunction, (it) -> { - switch (it) { - case SHOW_CONFIRMATION: - return featureId + ".ask"; - case DO_NOTHING_SILENTLY: - return featureId + ".disabled"; - case DO_ACTION_SILENTLY: - return featureId + ".silently"; - default: - return featureId + ".unknown"; + private fun addConfirmationIfDiffers(set: MutableSet, settingsBean: T, defaultSettingsBean: T, + valueFunction: Function1, featureId: String) { + addIfDiffers(set, settingsBean, defaultSettingsBean, valueFunction) { + when (it) { + VcsShowConfirmationOption.Value.SHOW_CONFIRMATION -> return@addIfDiffers "$featureId.ask" + VcsShowConfirmationOption.Value.DO_NOTHING_SILENTLY -> return@addIfDiffers "$featureId.disabled" + VcsShowConfirmationOption.Value.DO_ACTION_SILENTLY -> return@addIfDiffers "$featureId.silently" + else -> return@addIfDiffers "$featureId.unknown" + } } - }); + } } }