/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* Copyright 2006 - 2008 Pentaho Corporation. All rights reserved.
*/
package org.pentaho.platform.util;
/**
* Bean that holds the results of the version information
* @author dkincade
*/
public class VersionInfo {
/**
* The product id of the product
*/
private String productID;
/**
* The text title of the product
*/
private String title;
/**
* The major portion of the version number
*/
private String versionMajor;
/**
* The minor portion of the version number
*/
private String versionMinor;
/**
* The release portion of the version number
*/
private String versionRelease;
/**
* The milestone portion of the version number
*/
private String versionMilestone;
/**
* THe build number portion of the version number
*/
private String versionBuild;
/**
* Boolean indicating if this was retrieved from the manifest
* (indicating that it is running from a build) or from class files
* (indicating it is running from compiled class files).
*/
private boolean fromManifest;
public boolean isFromManifest() {
return fromManifest;
}
public String getProductID() {
return productID;
}
public String getTitle() {
return title;
}
public String getVersionMajor() {
return versionMajor;
}
public String getVersionMinor() {
return versionMinor;
}
public String getVersionRelease() {
return versionRelease;
}
public String getVersionMilestone() {
return versionMilestone;
}
public String getVersionBuild() {
return versionBuild;
}
public String getVersionNumber() {
StringBuffer sb = new StringBuffer();
if (versionMajor != null) {
sb.append(versionMajor);
if (versionMinor != null) {
sb.append('.').append(versionMinor);
if (versionRelease != null) {
sb.append('.').append(versionRelease);
if (versionMilestone != null) {
sb.append('.').append(versionMilestone);
if (versionBuild != null) {
sb.append('.').append(versionBuild);
}
}
}
}
}
return sb.toString();
}
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("fromManifest = [").append(fromManifest).append("]\n"); //$NON-NLS-1$ //$NON-NLS-2$
sb.append("productID = [").append(productID).append("]\n"); //$NON-NLS-1$ //$NON-NLS-2$
sb.append("title = [").append(title).append("]\n"); //$NON-NLS-1$ //$NON-NLS-2$
sb.append("versionMajor = [").append(versionMajor).append("]\n"); //$NON-NLS-1$ //$NON-NLS-2$
sb.append("versionMinor = [").append(versionMinor).append("]\n"); //$NON-NLS-1$ //$NON-NLS-2$
sb.append("versionRelease = [").append(versionRelease).append("]\n"); //$NON-NLS-1$ //$NON-NLS-2$
sb.append("versionMilestone = [").append(versionMilestone).append("]\n"); //$NON-NLS-1$ //$NON-NLS-2$
sb.append("versionBuild = [").append(versionBuild).append("]\n"); //$NON-NLS-1$ //$NON-NLS-2$
sb.append("getVersionNumber() = [").append(getVersionNumber()).append("]\n"); //$NON-NLS-1$ //$NON-NLS-2$
return sb.toString();
}
void setFromManifest(final boolean fromManifest) {
this.fromManifest = fromManifest;
}
void setProductID(final String productID) {
this.productID = productID;
}
void setTitle(final String title) {
this.title = title;
}
void setVersionMajor(final String versionMajor) {
this.versionMajor = versionMajor;
}
void setVersionMinor(final String versionMinor) {
this.versionMinor = versionMinor;
}
void setVersionRelease(final String versionRelease) {
this.versionRelease = versionRelease;
}
void setVersionMilestone(final String versionMilestone) {
this.versionMilestone = versionMilestone;
}
void setVersionBuild(final String versionBuild) {
this.versionBuild = versionBuild;
}
/**
* Sets the version fields by passing the whole string and parsing it.
* <br/>
* NOTE: spaces will be changed to dots before parsing
* @param version the version number (1.6.0.GA.500 or 1.6.0-RC2.400)
*/
@SuppressWarnings({"fallthrough"})
void setVersion(final String version) {
// Parse the version
if (version != null) {
String[] pieces = version.replace('-', '.').split("\\."); //$NON-NLS-1$
switch (pieces.length) {
case 9: // just in case
case 8: // just in case
case 7: // just in case
case 6: // just in case
case 5:
setVersionBuild(pieces[4]); // intentional fall through
case 4:
setVersionMilestone(pieces[3]); // intentional fall through
case 3:
setVersionRelease(pieces[2]); // intentional fall through
case 2:
setVersionMinor(pieces[1]); // intentional fall through
case 1:
setVersionMajor(pieces[0]); // intentional fall through
default: // do nothing
}
}
}
}