Move parseVersion from VersionUtil to Version and use it UpdateInfoDialog

This commit is contained in:
Ivan Chirkov
2015-07-24 15:40:09 +02:00
parent 943064cc9a
commit 6ed5d33618
4 changed files with 29 additions and 29 deletions
@@ -26,6 +26,7 @@ import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.application.ex.ApplicationInfoEx;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.Version;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.ui.BrowserHyperlinkListener;
import com.intellij.ui.JBColor;
@@ -238,9 +239,11 @@ class UpdateInfoDialog extends AbstractUpdateDialog {
configureMessageArea(myLicenseArea, myLicenseInfo, myPaidUpgrade ? JBColor.RED : null, null);
}
}
}
protected String formatVersion(String version, String build) {
return IdeBundle.message("updates.version.info", StringUtil.formatVersionToMajorMinorPatchString(version), build);
}
protected static String formatVersion(String versionString, String build) {
Version version = Version.parseVersion(versionString);
String formattedVersion = version != null ? version.toString() : versionString;
return IdeBundle.message("updates.version.info", formattedVersion, build);
}
}
@@ -1,5 +1,6 @@
package com.intellij.openapi.util;
import com.intellij.openapi.util.text.StringUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -14,6 +15,28 @@ public class Version {
this.major = major;
}
@Nullable
public static Version parseVersion(@NotNull String versionString) {
String[] versions = versionString.split("\\.");
String version = versions[0];
int major = StringUtil.parseInt(version, -1);
if (major < 0) {
return null;
}
int minor = (versions.length > 1) ? StringUtil.parseInt(versions[1], -1) : 0;
if (minor < 0) {
return null;
}
int patch = (versions.length > 2) ? StringUtil.parseInt(versions[2], -1) : 0;
if (patch < 0) {
return null;
}
return new Version(major, minor, patch);
}
public boolean is(@Nullable Integer major) {
return is(major, null);
}
@@ -2390,19 +2390,6 @@ public class StringUtil extends StringUtilRt {
return packageName + '.' + className;
}
@Contract(pure = true)
public static String formatVersionToMajorMinorPatchString(String version) {
if (version.matches("(\\d+\\.)*\\d+")) {
String[] parts = version.split("\\.", 3);
String major = parts.length > 0 ? parts[0] : "0";
String minor = parts.length > 1 ? parts[1] : "0";
String patch = parts.length > 2 ? parts[2] : "0";
version = major + '.' + minor + '.' + patch;
}
return version;
}
@Contract(pure = true)
public static int compareVersionNumbers(@Nullable String v1, @Nullable String v2) {
// todo duplicates com.intellij.util.text.VersionComparatorUtil.compare
@@ -424,17 +424,4 @@ public class StringUtilTest {
assertEquals("Map", StringUtil.getPackageName("Map.Entry"));
assertEquals("", StringUtil.getPackageName("Number"));
}
@Test
public void testFormatVersionToMajorMinorPatchString() {
assertEquals("15.0.0", StringUtil.formatVersionToMajorMinorPatchString("15"));
assertEquals("15.1.0", StringUtil.formatVersionToMajorMinorPatchString("15.1"));
assertEquals("15.1.3", StringUtil.formatVersionToMajorMinorPatchString("15.1.3"));
assertEquals("15.1.3.25", StringUtil.formatVersionToMajorMinorPatchString("15.1.3.25"));
assertEquals("15.1 EAP", StringUtil.formatVersionToMajorMinorPatchString("15.1 EAP"));
assertEquals("15 EAP", StringUtil.formatVersionToMajorMinorPatchString("15 EAP"));
}
}