/*
* Copyright (c) 2010-2012 Research In Motion Limited. All rights reserved.
*
* This program and the accompanying materials are made available
* under the terms of the Apache License, Version 2.0,
* which accompanies this distribution and is available at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*/
package net.rim.ejde.installer.version;
public class ComplexVersion {
// version number for released eclipse product.
protected EclipseVersion _eclipseVersionRelease;
// version number is retrieved from "Manifest.mf" file in specified product plugin
protected EclipseVersion _eclipseVersionManifest;
// version number is retrieved from "plugin.proerties" file in specified product plugin
protected EclipseVersion _eclipseVersionPluginProperties;
/**
* Create an instance from version string
*/
public ComplexVersion(String versionRelease, String versionManifest, String versionPluginProperties) {
_eclipseVersionRelease=EclipseVersion.parseVersion(versionRelease);
_eclipseVersionManifest=EclipseVersion.parseVersion(versionManifest);
_eclipseVersionPluginProperties=EclipseVersion.parseVersion(versionPluginProperties);
}
/**
*
* @param versionManifest
* @param versionPluginProperties
* @return
*/
public EclipseVersion getReleasedVersion(String versionManifest, String versionPluginProperties) {
return getReleasedVersion(EclipseVersion.parseVersion(versionManifest),
EclipseVersion.parseVersion(versionPluginProperties));
}
/**
*
* @param versionManifest
* @param versionPluginProperties
* @return
*/
public EclipseVersion getReleasedVersion(EclipseVersion versionManifest, EclipseVersion versionPluginProperties) {
EclipseVersion result=null;
if ((versionManifest != null) && (versionPluginProperties != null)){
if (isMatched(versionManifest, versionPluginProperties)) {
// if matched, return corresponding released version.
result=_eclipseVersionRelease;
}
}
return result;
}
/**
* Test if versions in manifest and plugin.properties are matched with their counterparts
*
* subclasses can define their own matching rules.
*
* @param versionManifest
* @param versionPluginProperties
* @return
*/
protected boolean isMatched(EclipseVersion versionManifest, EclipseVersion versionPluginProperties) {
boolean result=false;
// the default matching rule is to compare major.minor.micro in manifest and plugin.properties files
if ((versionManifest != null) && (versionPluginProperties != null)){
result=_eclipseVersionManifest.equals(versionManifest, EclipseVersion.TYPE_MAJOR_MINOR_MICRO)
&& _eclipseVersionPluginProperties.equals(versionPluginProperties, EclipseVersion.TYPE_MAJOR_MINOR_MICRO);
}
return result;
}
}