From b5fa8ae0060b4807dbf6c702c9e50763af56bce4 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Wed, 10 May 2017 15:25:10 +0200 Subject: [PATCH] natural comparator instance --- .../com/intellij/execution/impl/RunManagerImpl.kt | 4 ++-- .../openapi/util/text/NaturalComparator.java | 4 ++++ .../com/intellij/openapi/util/text/StringUtil.java | 4 +--- .../com/intellij/util/text/StringUtilTest.java | 13 +++++++------ .../plugins/github/ui/GithubSelectForkPanel.java | 4 ++-- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt index 85b05b769dda..22764049b3b9 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt +++ b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt @@ -40,7 +40,7 @@ import com.intellij.openapi.roots.ModuleRootListener import com.intellij.openapi.updateSettings.impl.pluginsAdvertisement.UnknownFeaturesCollector import com.intellij.openapi.util.Key import com.intellij.openapi.util.registry.Registry -import com.intellij.openapi.util.text.StringUtil +import com.intellij.openapi.util.text.NaturalComparator import com.intellij.util.IconUtil import com.intellij.util.SmartList import com.intellij.util.containers.* @@ -422,7 +422,7 @@ open class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persi } } - folderNames.sortWith(StringUtil.NATURAL_COMPARATOR) + folderNames.sortWith(NaturalComparator.INSTANCE) folderNames.add(null) list.sortWith(Comparator { o1, o2 -> diff --git a/platform/util/src/com/intellij/openapi/util/text/NaturalComparator.java b/platform/util/src/com/intellij/openapi/util/text/NaturalComparator.java index 0e4885c367db..3664d20ec5e5 100644 --- a/platform/util/src/com/intellij/openapi/util/text/NaturalComparator.java +++ b/platform/util/src/com/intellij/openapi/util/text/NaturalComparator.java @@ -27,6 +27,10 @@ import java.util.Comparator; */ public class NaturalComparator implements Comparator { + public static final Comparator INSTANCE = new NaturalComparator(); + + private NaturalComparator() {} + @Override public int compare(String s1, String s2) { //noinspection StringEquality diff --git a/platform/util/src/com/intellij/openapi/util/text/StringUtil.java b/platform/util/src/com/intellij/openapi/util/text/StringUtil.java index 02b90710df74..d16f2d027f0c 100644 --- a/platform/util/src/com/intellij/openapi/util/text/StringUtil.java +++ b/platform/util/src/com/intellij/openapi/util/text/StringUtil.java @@ -2715,11 +2715,9 @@ public class StringUtil extends StringUtilRt { return res; } - public static final Comparator NATURAL_COMPARATOR = new NaturalComparator(); - @Contract(pure = true) public static int naturalCompare(@Nullable String string1, @Nullable String string2) { - return NATURAL_COMPARATOR.compare(string1, string2); + return NaturalComparator.INSTANCE.compare(string1, string2); } @Contract(pure = true) diff --git a/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java b/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java index 4f4003ec6c18..558af9b5ba08 100644 --- a/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java +++ b/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java @@ -16,6 +16,7 @@ package com.intellij.util.text; import com.intellij.openapi.util.Comparing; +import com.intellij.openapi.util.text.NaturalComparator; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.LineSeparator; import com.intellij.xml.util.XmlStringUtil; @@ -184,32 +185,32 @@ public class StringUtilTest { public void testNaturalCompare() { final List numbers = Arrays.asList("1a000001", "000001a1", "001a0001", "0001A001" , "00001a01", "01a00001"); - numbers.sort(StringUtil.NATURAL_COMPARATOR); + numbers.sort(NaturalComparator.INSTANCE); assertEquals(Arrays.asList("1a000001", "01a00001", "001a0001", "0001A001" , "00001a01", "000001a1"), numbers); final List test = Arrays.asList("test011", "test10", "test10a", "test010"); - test.sort(StringUtil.NATURAL_COMPARATOR); + test.sort(NaturalComparator.INSTANCE); assertEquals(Arrays.asList("test10", "test10a", "test010", "test011"), test); final List strings = Arrays.asList("Test99", "tes0", "test0", "testing", "test", "test99", "test011", "test1", "test 3", "test2", "test10a", "test10", "1.2.10.5", "1.2.9.1"); - strings.sort(StringUtil.NATURAL_COMPARATOR); + strings.sort(NaturalComparator.INSTANCE); assertEquals(Arrays.asList("1.2.9.1", "1.2.10.5", "tes0", "test", "test0", "test1", "test2", "test 3", "test10", "test10a", "test011", "Test99", "test99", "testing"), strings); final List strings2 = Arrays.asList("t1", "t001", "T2", "T002", "T1", "t2"); - strings2.sort(StringUtil.NATURAL_COMPARATOR); + strings2.sort(NaturalComparator.INSTANCE); assertEquals(Arrays.asList("T1", "t1", "t001", "T2", "t2", "T002"), strings2); assertEquals(1 ,StringUtil.naturalCompare("7403515080361171695", "07403515080361171694")); assertEquals(-14, StringUtil.naturalCompare("_firstField", "myField1")); //idea-80853 final List strings3 = Arrays.asList("C148A_InsomniaCure", "C148B_Escape", "C148C_TersePrincess", "C148D_BagOfMice", "C148E_Porcelain"); - strings3.sort(StringUtil.NATURAL_COMPARATOR); + strings3.sort(NaturalComparator.INSTANCE); assertEquals(Arrays.asList("C148A_InsomniaCure", "C148B_Escape", "C148C_TersePrincess", "C148D_BagOfMice", "C148E_Porcelain"), strings3); final List l = Arrays.asList("a0002", "a0 2", "a001"); - l.sort(StringUtil.NATURAL_COMPARATOR); + l.sort(NaturalComparator.INSTANCE); assertEquals(Arrays.asList("a0 2", "a001", "a0002"), l); } diff --git a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSelectForkPanel.java b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSelectForkPanel.java index 50355a0147ed..d79f8a955118 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSelectForkPanel.java +++ b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSelectForkPanel.java @@ -16,7 +16,7 @@ package org.jetbrains.plugins.github.ui; import com.intellij.openapi.ui.ComboBox; -import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.util.text.NaturalComparator; import com.intellij.ui.SortedComboBoxModel; import org.jetbrains.annotations.NotNull; @@ -32,7 +32,7 @@ public class GithubSelectForkPanel { private ComboBox myComboBox; public GithubSelectForkPanel() { - myModel = new SortedComboBoxModel<>(StringUtil.NATURAL_COMPARATOR); + myModel = new SortedComboBoxModel<>(NaturalComparator.INSTANCE); myComboBox.setModel(myModel); }