/*!
* 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 (c) 2002-2013 Pentaho Corporation.. All rights reserved.
*/
package org.pentaho.platform.util.versionchecker;
import org.pentaho.platform.api.util.IVersionHelper;
import org.pentaho.platform.engine.core.system.PentahoSystem;
import org.pentaho.platform.util.VersionHelper;
import org.pentaho.platform.util.VersionInfo;
import org.pentaho.versionchecker.IVersionCheckDataProvider;
import java.util.Map;
public class PentahoVersionCheckDataProvider implements IVersionCheckDataProvider {
/**
* The version information for the pentaho platform is in the core jar - that is the fallback position. The
* VersionHelper implementation however should be in a .jar file with correct manifest.
*/
protected static final VersionInfo versionInfo;
static {
//
// Allow override of product id information
//
IVersionHelper versionHelper = PentahoSystem.get( IVersionHelper.class, null );
if ( versionHelper != null ) {
versionInfo = VersionHelper.getVersionInfo( versionHelper.getClass() );
} else {
versionInfo = VersionHelper.getVersionInfo( PentahoSystem.class );
}
}
protected int versionRequestFlags = IVersionCheckDataProvider.DEPTH_MINOR_MASK
+ IVersionCheckDataProvider.DEPTH_GA_MASK;
public void setVersionRequestFlags( final int flags ) {
versionRequestFlags = flags;
}
/**
* Returns the application id (code) for this application (the pentaho platform)
*/
public String getApplicationID() {
return PentahoVersionCheckDataProvider.versionInfo == null ? null : PentahoVersionCheckDataProvider.versionInfo
.getProductID();
}
/**
* Returns the application version number found in the manifest
*/
public String getApplicationVersion() {
return PentahoVersionCheckDataProvider.versionInfo == null ? null : PentahoVersionCheckDataProvider.versionInfo
.getVersionNumber();
}
/**
* Returns the base url for the connection to the pentaho version checking server. Currently, there is no reason
* to use anything other than the default.
*/
public String getBaseURL() {
return null;
}
/**
* Returns the extra information that can be provided.
*/
public Map getExtraInformation() {
return null;
}
protected int computeOSMask() {
try {
String os = System.getProperty( "os.name" ); //$NON-NLS-1$
if ( os != null ) {
os = os.toLowerCase();
if ( os.indexOf( "windows" ) >= 0 ) { //$NON-NLS-1$
return IVersionCheckDataProvider.DEPTH_WINDOWS_MASK;
} else if ( os.indexOf( "mac" ) >= 0 ) { //$NON-NLS-1$
return IVersionCheckDataProvider.DEPTH_MAC_MASK;
} else if ( os.indexOf( "linux" ) >= 0 ) { //$NON-NLS-1$
return IVersionCheckDataProvider.DEPTH_LINUX_MASK;
} else {
return IVersionCheckDataProvider.DEPTH_ALL_MASK;
}
}
} catch ( Exception e ) {
// ignore any issues
}
return IVersionCheckDataProvider.DEPTH_ALL_MASK;
}
/**
* generates the depth flags
*/
public int getDepth() {
int depth = versionRequestFlags + computeOSMask();
return depth;
}
}