cleanup (inspection "Java | Class structure | Utility class is not 'final'")
[idea/community.git] / platform / vcs-log / api / src / com / intellij / vcs / log / VcsLogProperties.java
1 // Copyright 2000-2020 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.
2 package com.intellij.vcs.log;
3
4 import org.jetbrains.annotations.NotNull;
5
6 public final class VcsLogProperties {
7   public static class VcsLogProperty<T> {
8     private final @NotNull T defaultValue;
9
10     private VcsLogProperty(@NotNull T defaultValue) {
11       this.defaultValue = defaultValue;
12     }
13
14     @NotNull
15     public T getOrDefault(VcsLogProvider provider) {
16       T value = provider.getPropertyValue(this);
17       return value == null ? defaultValue : value;
18     }
19   }
20
21   @NotNull public static final VcsLogProperty<Boolean> LIGHTWEIGHT_BRANCHES = new VcsLogProperty<>(false);
22   @NotNull public static final VcsLogProperty<Boolean> SUPPORTS_INDEXING = new VcsLogProperty<>(false);
23   @NotNull public static final VcsLogProperty<Boolean> SUPPORTS_LOG_DIRECTORY_HISTORY = new VcsLogProperty<>(false);
24   @NotNull public static final VcsLogProperty<Boolean> CASE_INSENSITIVE_REGEX = new VcsLogProperty<>(true);
25   /**
26    * True if VCS has separate committer and committed date information which may differ from author and author date
27    */
28   @NotNull public static final VcsLogProperty<Boolean> HAS_COMMITTER = new VcsLogProperty<>(false);
29
30   /**
31    * @deprecated use {@link VcsLogProperty#getOrDefault(VcsLogProvider)}
32    */
33   @Deprecated
34   @NotNull
35   public static <T> T get(@NotNull VcsLogProvider provider, VcsLogProperty<T> property) {
36     return property.getOrDefault(provider);
37   }
38 }