org.pentaho.di.trans.steps.monetdbbulkloader.MonetDbVersion Maven / Gradle / Ivy
Show all versions of kettle-engine Show documentation
/*! ******************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2017 by Hitachi Vantara : http://www.pentaho.com
*
*******************************************************************************
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
package org.pentaho.di.trans.steps.monetdbbulkloader;
import java.util.regex.Pattern;
import org.pentaho.di.i18n.BaseMessages;
/**
* @author Tatsiana_Kasiankova
*
*/
public class MonetDbVersion implements Comparable {
private static Class> PKG = MonetDbVersion.class; // for i18n purposes, needed by Translator2!!
private Integer minorVersion;
private Integer majorVersion;
private Integer patchVersion;
private static final String SEPARATOR = "\\.";
/**
* The pattern to determine if the given string is a valid MonetDB version in the assumption that it should contain
* only digits separated by dots. Ideally version should be represented as
*
* majorVersion.minorVersion.patchVersion
*
* But also we could have any additional groups of digits after patchVersion
. Or have only major and
* minor version parts.
*
* Examples of valid MonetDB versions:
*
*
* 11.17.17
*
11.0
*
11.5.17.1
*
*
*/
private static final Pattern VERSION_PATTERN = Pattern.compile( "^[0-9]+(\\.[0-9]+)*$" );
/**
* The major version of the Jan2014-SP2 release.
*/
private static final int JAN_2014_SP2_RELEASE_DB_MAJOR_VERSION = 11;
/**
* The minor version of the Jan2014-SP2 release.
*/
private static final int JAN_2014_SP2_RELEASE_DB_MINOR_VERSION = 17;
/**
* The patch version of the Jan2014-SP2 release.
*/
private static final int JAN_2014_SP2_RELEASE_DB_PATCH_VERSION = 17;
/**
* Jan2014-SP2 release MonetDB version.
*/
public static final MonetDbVersion JAN_2014_SP2_DB_VERSION = new MonetDbVersion(
JAN_2014_SP2_RELEASE_DB_MAJOR_VERSION, JAN_2014_SP2_RELEASE_DB_MINOR_VERSION,
JAN_2014_SP2_RELEASE_DB_PATCH_VERSION );
public MonetDbVersion() {
super();
}
public MonetDbVersion( int majorVersion, int minorVersion, int patchVersion ) {
super();
this.majorVersion = majorVersion;
this.minorVersion = minorVersion;
this.patchVersion = patchVersion;
}
/**
* @param productVersion
* @throws MonetDbVersionException
*/
public MonetDbVersion( String productVersion ) throws MonetDbVersionException {
super();
parseVersion( productVersion );
}
/**
* @return the minorVersion
*/
public Integer getMinorVersion() {
return minorVersion;
}
/**
* @return the majorVersion
*/
public Integer getMajorVersion() {
return majorVersion;
}
/**
* @return the patchVersion
*/
public Integer getPatchVersion() {
return patchVersion;
}
@Override
public int compareTo( MonetDbVersion mDbVersion ) {
int result = majorVersion.compareTo( mDbVersion.majorVersion );
if ( result != 0 ) {
return result;
}
result = minorVersion.compareTo( mDbVersion.minorVersion );
if ( result != 0 ) {
return result;
}
result = patchVersion.compareTo( mDbVersion.patchVersion );
if ( result != 0 ) {
return result;
}
return result;
}
/**
* Parses string representation of MonetDb version. Sets up majorVersion
. Also minorVersion
* and patchVersion
if they are present in the product version. Omits all other possible parts as
* insignificant.
*
* @param productVersion
* a string representation of version
* @throws MonetDbVersionException
* if productVersion is null or has incorrect format ( see {@link MonetDbVersion#VERSION_PATTERN} )
*/
private void parseVersion( String productVersion ) throws MonetDbVersionException {
if ( productVersion == null ) {
throw new MonetDbVersionException( BaseMessages.getString( PKG, "MonetDBVersion.Exception.VersionIsNull" ) );
}
if ( !VERSION_PATTERN.matcher( productVersion ).matches() ) {
throw new MonetDbVersionException( BaseMessages.getString( PKG,
"MonetDBVersion.Exception.VersionFormatIsInvalid", productVersion ) );
}
int startIndex = 0;
String[] versionParts = productVersion.split( SEPARATOR );
majorVersion = Integer.valueOf( versionParts[startIndex] );
if ( versionParts.length > 1 ) {
minorVersion = Integer.valueOf( versionParts[startIndex + 1] );
}
if ( versionParts.length > 2 ) {
patchVersion = Integer.valueOf( versionParts[startIndex + 2] );
}
}
@Override
public String toString() {
return "MonetDbVersion: " + majorVersion + "." + minorVersion + "." + patchVersion;
}
}