From 14c768afa4e5b49f451acafcb73c9b9eaa582235 Mon Sep 17 00:00:00 2001 From: Esteban de la Canal Date: Wed, 1 Apr 2015 15:41:35 +0300 Subject: [PATCH] splits up the different components of the version number --- .../openapi/application/ApplicationInfo.java | 19 ++----- .../application/impl/ApplicationInfoImpl.java | 51 ++++++++++++++++--- 2 files changed, 49 insertions(+), 21 deletions(-) diff --git a/platform/core-api/src/com/intellij/openapi/application/ApplicationInfo.java b/platform/core-api/src/com/intellij/openapi/application/ApplicationInfo.java index 49fb9077e25c..e7a02e5aa710 100644 --- a/platform/core-api/src/com/intellij/openapi/application/ApplicationInfo.java +++ b/platform/core-api/src/com/intellij/openapi/application/ApplicationInfo.java @@ -27,6 +27,8 @@ public abstract class ApplicationInfo { public abstract String getApiVersion(); public abstract String getMajorVersion(); public abstract String getMinorVersion(); + public abstract String getMicroVersion(); + public abstract String getPatchVersion(); public abstract String getVersionName(); public abstract String getHelpURL(); public abstract String getCompanyName(); @@ -38,21 +40,8 @@ public abstract class ApplicationInfo { public abstract boolean hasHelp(); public abstract boolean hasContextHelp(); - public String getFullVersion() { - final String majorVersion = getMajorVersion(); - if (majorVersion != null && majorVersion.trim().length() > 0) { - final String minorVersion = getMinorVersion(); - if (minorVersion != null && minorVersion.trim().length() > 0) { - return majorVersion + "." + minorVersion; - } - else { - return majorVersion + ".0"; - } - } - else { - return getVersionName(); - } - } + public abstract String getFullVersion(); + public abstract String getStrictVersion(); public static ApplicationInfo getInstance() { return ServiceManager.getService(ApplicationInfo.class); diff --git a/platform/core-impl/src/com/intellij/openapi/application/impl/ApplicationInfoImpl.java b/platform/core-impl/src/com/intellij/openapi/application/impl/ApplicationInfoImpl.java index d75c5d8e6b7c..7ed7f94b8327 100644 --- a/platform/core-impl/src/com/intellij/openapi/application/impl/ApplicationInfoImpl.java +++ b/platform/core-impl/src/com/intellij/openapi/application/impl/ApplicationInfoImpl.java @@ -34,6 +34,7 @@ import javax.swing.*; import java.awt.*; import java.io.File; import java.io.FileNotFoundException; +import java.text.MessageFormat; import java.util.*; import java.util.List; import java.util.jar.JarEntry; @@ -45,6 +46,9 @@ public class ApplicationInfoImpl extends ApplicationInfoEx implements JDOMExtern private String myCodeName = null; private String myMajorVersion = null; private String myMinorVersion = null; + private String myMicroVersion = null; + private String myPatchVersion = null; + private String myFullVersion = null; private String myBuildNumber = null; private String myApiVersion = null; private String myCompanyName = "JetBrains s.r.o."; @@ -106,6 +110,9 @@ public class ApplicationInfoImpl extends ApplicationInfoEx implements JDOMExtern private static final String ELEMENT_VERSION = "version"; private static final String ATTRIBUTE_MAJOR = "major"; private static final String ATTRIBUTE_MINOR = "minor"; + private static final String ATTRIBUTE_MICRO = "micro"; + private static final String ATTRIBUTE_PATCH = "patch"; + private static final String ATTRIBUTE_FULL = "full"; private static final String ATTRIBUTE_CODENAME = "codename"; private static final String ATTRIBUTE_NAME = "name"; private static final String ELEMENT_BUILD = "build"; @@ -218,6 +225,40 @@ public class ApplicationInfoImpl extends ApplicationInfoEx implements JDOMExtern return myMinorVersion; } + @Override + public String getMicroVersion() { + return myMicroVersion; + } + + @Override + public String getPatchVersion() { + return myPatchVersion; + } + + @Override + public String getFullVersion() { + if (myFullVersion == null) { + if (myMajorVersion != null && !myMajorVersion.trim().isEmpty()) { + if (myMinorVersion != null && !myMinorVersion.trim().isEmpty()) { + return myMajorVersion + "." + myMinorVersion; + } + else { + return myMajorVersion + ".0"; + } + } + else { + return getVersionName(); + } + } else { + return MessageFormat.format(myFullVersion, myMajorVersion, myMinorVersion, myMicroVersion, myPatchVersion); + } + } + + @Override + public String getStrictVersion() { + return myMajorVersion + "." + myMinorVersion + "." + myMicroVersion + "." + myPatchVersion; + } + @Override public String getVersionName() { final String fullName = ApplicationNamesInfo.getInstance().getFullProductName(); @@ -433,12 +474,7 @@ public class ApplicationInfoImpl extends ApplicationInfoEx implements JDOMExtern buffer.append(getVersionName()); buffer.append(" "); if (getMajorVersion() != null && !isEAP() && !isBetaOrRC()) { - buffer.append(getMajorVersion()); - - if (getMinorVersion() != null && getMinorVersion().length() > 0){ - buffer.append("."); - buffer.append(getMinorVersion()); - } + buffer.append(getFullVersion()); } else { buffer.append(getBuild().asStringWithAllDetails()); @@ -513,6 +549,9 @@ public class ApplicationInfoImpl extends ApplicationInfoEx implements JDOMExtern if (versionElement != null) { myMajorVersion = versionElement.getAttributeValue(ATTRIBUTE_MAJOR); myMinorVersion = versionElement.getAttributeValue(ATTRIBUTE_MINOR); + myMicroVersion = versionElement.getAttributeValue(ATTRIBUTE_MICRO); + myPatchVersion = versionElement.getAttributeValue(ATTRIBUTE_PATCH); + myFullVersion = versionElement.getAttributeValue(ATTRIBUTE_FULL); myCodeName = versionElement.getAttributeValue(ATTRIBUTE_CODENAME); myEAP = Boolean.parseBoolean(versionElement.getAttributeValue(ATTRIBUTE_EAP)); }