/* * Created on 16 juin 2003 * Copyright (C) 2003, 2004, 2005, 2006 Aelitis, All Rights Reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * 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 General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * AELITIS, SAS au capital de 46,603.30 euros * 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France. * */ package org.gudy.azureus2.core3.util; import java.nio.charset.Charset; import java.util.Locale; import java.util.StringTokenizer; /** * * @author Olivier * */ public class Constants { public static final String EMPTY_STRING = ""; public static final String SF_WEB_SITE = "http://azureus.sourceforge.net/"; public static final String AELITIS_TORRENTS = "http://torrent.vuze.com:88/torrents/"; public static final String AELITIS_FILES = "http://torrent.vuze.com:88/files/"; public static final String AZUREUS_WIKI = "http://wiki.vuze.com/index.php/"; public static final String VERSION_SERVER_V4 = "version.vuze.com"; public static final String VERSION_SERVER_V6 = "version6.vuze.com"; public static final String DHT_SEED_ADDRESS_V4 = "dht.vuze.com"; public static final String DHT_SEED_ADDRESS_V6 = "dht6.vuze.com"; public static final String NAT_TEST_SERVER = "nettest.vuze.com"; public static final String NAT_TEST_SERVER_HTTP = "http://nettest.vuze.com/"; public static final String SPEED_TEST_SERVER = "speedtest.vuze.com"; public static final String PAIRING_URL = "http://pair.vuze.com/pairing"; public static final String[] AZUREUS_DOMAINS = { "azureusplatform.com", "azureus.com", "aelitis.com", "vuze.com" }; public static final String DEFAULT_ENCODING = "UTF8"; public static final String BYTE_ENCODING = "ISO-8859-1"; public static Charset BYTE_CHARSET; public static Charset DEFAULT_CHARSET; static{ try{ BYTE_CHARSET = Charset.forName( Constants.BYTE_ENCODING ); DEFAULT_CHARSET = Charset.forName( Constants.DEFAULT_ENCODING ); }catch( Throwable e ){ e.printStackTrace(); } } public static final Locale LOCALE_ENGLISH = new Locale("en", ""); public static final String INFINITY_STRING = "\u221E"; // "oo";pa public static final int CRAPPY_INFINITY_AS_INT = 365*24*3600; // seconds (365days) public static final long CRAPPY_INFINITE_AS_LONG = 10000*365*24*3600; // seconds (10k years) // keep the CVS style constant coz version checkers depend on it! // e.g. 2.0.8.3 // 2.0.8.3_CVS // 2.0.8.3_Bnn // incremental build public static String APP_NAME = "Vuze"; public static final String AZUREUS_NAME = "Azureus"; public static final String AZUREUS_VERSION = "4.3.0.4"; //4.3.0.5_CVS public static final byte[] VERSION_ID = ("-" + "AZ" + "4304" + "-").getBytes(); //MUST be 8 chars long! private static final boolean FORCE_NON_CVS = System.getProperty( "az.force.noncvs", "0" ).equals( "1" ); public static final boolean IS_CVS_VERSION = isCVSVersion( AZUREUS_VERSION ) && !FORCE_NON_CVS; public static final String OSName = System.getProperty("os.name"); public static final boolean isOSX = OSName.toLowerCase().startsWith("mac os"); public static final boolean isLinux = OSName.equalsIgnoreCase("Linux"); public static final boolean isSolaris = OSName.equalsIgnoreCase("SunOS"); public static final boolean isFreeBSD = OSName.equalsIgnoreCase("FreeBSD"); public static final boolean isWindowsXP = OSName.equalsIgnoreCase("Windows XP"); public static final boolean isWindowsVista = OSName.equalsIgnoreCase("Windows Vista"); public static final boolean isWindows95 = OSName.equalsIgnoreCase("Windows 95"); public static final boolean isWindows98 = OSName.equalsIgnoreCase("Windows 98"); public static final boolean isWindows2000 = OSName.equalsIgnoreCase("Windows 2000"); public static final boolean isWindowsME = OSName.equalsIgnoreCase("Windows ME"); public static final boolean isWindows9598ME = isWindows95 || isWindows98 || isWindowsME; public static boolean isSafeMode = false; public static final boolean isWindows = OSName.toLowerCase().startsWith("windows"); // If it isn't windows or osx, it's most likely an unix flavor public static final boolean isUnix = !isWindows && !isOSX; public static final boolean isWindowsVistaOrHigher; static{ if ( isWindows ){ Float ver = null; try{ ver = new Float( System.getProperty( "os.version" )); }catch (Throwable e){ } isWindowsVistaOrHigher = ver != null && ver.floatValue() >= 6; }else{ isWindowsVistaOrHigher = false; } } public static final boolean isOSX_10_5_OrHigher; public static final boolean isOSX_10_6_OrHigher; static{ if ( isOSX ){ int first_digit = 0; int second_digit = 0; try{ String os_version = System.getProperty( "os.version" ); String[] bits = os_version.split( "\\." ); first_digit = Integer.parseInt( bits[0] ); if ( bits.length > 1 ){ second_digit = Integer.parseInt( bits[1] ); } }catch( Throwable e ){ } isOSX_10_5_OrHigher = first_digit > 10 || ( first_digit == 10 && second_digit >= 5 ); isOSX_10_6_OrHigher = first_digit > 10 || ( first_digit == 10 && second_digit >= 6 ); }else{ isOSX_10_5_OrHigher = false; isOSX_10_6_OrHigher = false; } } public static final String JAVA_VERSION = System.getProperty("java.version"); public static final String FILE_WILDCARD = isWindows?"*.*":"*"; /** * Gets the current version, or if a CVS version, the one on which it is based * @return */ public static String getBaseVersion() { return( getBaseVersion( AZUREUS_VERSION )); } public static String getBaseVersion( String version ) { int p1 = version.indexOf("_"); // _CVS or _Bnn if ( p1 == -1 ){ return( version ); } return( version.substring(0,p1)); } /** * is this a formal build or CVS/incremental * @return */ public static boolean isCVSVersion() { return IS_CVS_VERSION; } public static boolean isCVSVersion( String version ) { return( version.indexOf("_") != -1 ); } /** * For CVS builds this returns the incremental build number. For people running their own * builds this returns -1 * @return */ public static int getIncrementalBuild() { return( getIncrementalBuild( AZUREUS_VERSION )); } public static int getIncrementalBuild( String version ) { if ( !isCVSVersion(version)){ return( 0 ); } int p1 = version.indexOf( "_B" ); if ( p1 == -1 ){ return( -1 ); } try{ return( Integer.parseInt( version.substring(p1+2))); }catch( Throwable e ){ System.out.println("can't parse version"); return( -1 ); } } /** * compare two version strings of form n.n.n.n (e.g. 1.2.3.4) * @param version_1 * @param version_2 * @return -ve -> version_1 lower, 0 = same, +ve -> version_1 higher */ public static int compareVersions( String version_1, String version_2 ) { try{ if ( version_1.startsWith("." )){ version_1 = "0" + version_1; } if ( version_2.startsWith("." )){ version_2 = "0" + version_2; } version_1 = version_1.replaceAll("[^0-9.]", "."); version_2 = version_2.replaceAll("[^0-9.]", "."); StringTokenizer tok1 = new StringTokenizer(version_1,"."); StringTokenizer tok2 = new StringTokenizer(version_2,"."); while( true ){ if ( tok1.hasMoreTokens() && tok2.hasMoreTokens()){ int i1 = Integer.parseInt(tok1.nextToken()); int i2 = Integer.parseInt(tok2.nextToken()); if ( i1 != i2 ){ return( i1 - i2 ); } }else if ( tok1.hasMoreTokens()){ int i1 = Integer.parseInt(tok1.nextToken()); if ( i1 != 0 ){ return( 1 ); } }else if ( tok2.hasMoreTokens()){ int i2 = Integer.parseInt(tok2.nextToken()); if ( i2 != 0 ){ return( -1 ); } }else{ return( 0 ); } } }catch( Throwable e ){ // Debug.printStackTrace(e); return( 0 ); } } public static boolean isValidVersionFormat( String version ) { if ( version == null || version.length() == 0 ){ return( false ); } for (int i=0;i<version.length();i++){ char c = version.charAt(i); if ( !( Character.isDigit( c ) || c == '.' )){ return( false) ; } } if ( version.startsWith( "." ) || version.endsWith( "." ) || version.indexOf( ".." ) != -1 ){ return( false ); } return( true ); } public static boolean isAzureusDomain( String host ) { host = host.toLowerCase(); for (int i=0; i<AZUREUS_DOMAINS.length; i++) { String domain = (String) AZUREUS_DOMAINS[i]; if ( domain.equals( host )){ return( true ); } if ( host.endsWith("." + domain)){ return( true ); } } return( false ); } public static void main(String[] args) { System.out.println(compareVersions("3.0.0.1", "3.0.0.0")); System.out.println(compareVersions("3.0.0.0_B1", "3.0.0.0")); System.out.println(compareVersions("3.0.0.0", "3.0.0.0_B1")); System.out.println(compareVersions("3.0.0.0_B1", "3.0.0.0_B4")); System.out.println(compareVersions("3.0.0.0..B1", "3.0.0.0_B4")); } }