📄 configurationchecker.java
字号:
// above migration fix), and there's no value defined for the dir, then
// set it to what it would have been before the default was changed to blank
if ( COConfigurationManager.getBooleanParameter( "Use default data dir" ) &&
!COConfigurationManager.doesParameterNonDefaultExist( "Default save path" )){
COConfigurationManager.setParameter( "Default save path", SystemProperties.getUserPath()+"downloads" );
changed = true;
}
//enable Beginner user mode for first time
if( !COConfigurationManager.doesParameterNonDefaultExist( "User Mode" ) ) {
COConfigurationManager.setParameter( "User Mode", 0 );
changed = true;
}
//make sure we set and save a random listen port
if( !COConfigurationManager.doesParameterNonDefaultExist( "TCP.Listen.Port" ) ) {
COConfigurationManager.setParameter( "TCP.Listen.Port", RandomUtils.generateRandomNetworkListenPort() );
changed = true;
}
}
else { //this is a pre-existing installation, called every time after first
//enable Advanced user mode for existing users by default, to ease 2304-->2306 migrations
if( !COConfigurationManager.doesParameterNonDefaultExist( "User Mode" ) ) {
COConfigurationManager.setParameter( "User Mode", 2 );
changed = true;
}
}
// migrate to split tracker client/server key config
if ( !COConfigurationManager.doesParameterDefaultExist( "Tracker Key Enable Client")){
boolean old_value = COConfigurationManager.getBooleanParameter("Tracker Key Enable");
COConfigurationManager.setParameter("Tracker Key Enable Client", old_value);
COConfigurationManager.setParameter("Tracker Key Enable Server", old_value);
changed = true;
}
int maxUpSpeed = COConfigurationManager.getIntParameter("Max Upload Speed KBs",0);
int maxDownSpeed = COConfigurationManager.getIntParameter("Max Download Speed KBs",0);
if( maxUpSpeed > 0 &&
maxUpSpeed < COConfigurationManager.CONFIG_DEFAULT_MIN_MAX_UPLOAD_SPEED &&
( maxDownSpeed == 0 || maxDownSpeed > (2*maxUpSpeed ))){
changed = true;
COConfigurationManager.setParameter("Max Upload Speed KBs", COConfigurationManager.CONFIG_DEFAULT_MIN_MAX_UPLOAD_SPEED);
}
int peersRatio = COConfigurationManager.getIntParameter("Stop Peers Ratio",0);
if(peersRatio > 14) {
COConfigurationManager.setParameter("Stop Peers Ratio", 14);
changed = true;
}
int minQueueingShareRatio = COConfigurationManager.getIntParameter("StartStopManager_iFirstPriority_ShareRatio");
if (minQueueingShareRatio < 500) {
COConfigurationManager.setParameter("StartStopManager_iFirstPriority_ShareRatio", 500);
changed = true;
}
int iSeedingMin = COConfigurationManager.getIntParameter("StartStopManager_iFirstPriority_SeedingMinutes");
if (iSeedingMin < 90 && iSeedingMin != 0) {
COConfigurationManager.setParameter("StartStopManager_iFirstPriority_SeedingMinutes", 90);
changed = true;
}
int iDLMin = COConfigurationManager.getIntParameter("StartStopManager_iFirstPriority_DLMinutes");
if (iDLMin < 60*3 && iDLMin != 0) {
COConfigurationManager.setParameter("StartStopManager_iFirstPriority_DLMinutes", 60*3);
changed = true;
}
int iIgnoreSPRatio = COConfigurationManager.getIntParameter("StartStopManager_iFirstPriority_ignoreSPRatio");
if (iIgnoreSPRatio < 10 && iIgnoreSPRatio != 0) {
COConfigurationManager.setParameter("StartStopManager_iFirstPriority_ignoreSPRatio", 10);
changed = true;
}
String uniqueId = COConfigurationManager.getStringParameter("ID",null);
if(uniqueId == null || uniqueId.length() != 20) {
uniqueId = RandomUtils.generateRandomAlphanumerics( 20 );
COConfigurationManager.setParameter("ID", uniqueId);
changed = true;
}
int cache_max = COConfigurationManager.getIntParameter("diskmanager.perf.cache.size");
if (cache_max > COConfigurationManager.CONFIG_CACHE_SIZE_MAX_MB ) {
COConfigurationManager.setParameter("diskmanager.perf.cache.size", COConfigurationManager.CONFIG_CACHE_SIZE_MAX_MB );
changed = true;
}
if ( !COConfigurationManager.doesParameterNonDefaultExist( "Sharing Protocol" )){
// replacement of "Sharing Use SSL" with "Sharing Protocol"
boolean ssl = COConfigurationManager.getBooleanParameter("Sharing Use SSL", false);
COConfigurationManager.setParameter( "Sharing Protocol", ssl?"HTTPS":"HTTP" );
changed = true;
}
/**
* Special Patch for OSX users
*/
if (Constants.isOSX) {
boolean sound = COConfigurationManager.getBooleanParameter("Play Download Finished",true);
boolean close = COConfigurationManager.getBooleanParameter("Close To Tray",true);
boolean min = COConfigurationManager.getBooleanParameter("Minimize To Tray",true);
boolean confirmExit = COConfigurationManager.getBooleanParameter("confirmationOnExit",false);
if ( sound || close || min || confirmExit ) {
COConfigurationManager.setParameter("Play Download Finished",false);
COConfigurationManager.setParameter("Close To Tray",false);
COConfigurationManager.setParameter("Minimize To Tray",false);
COConfigurationManager.setParameter("confirmationOnExit",false);
changed = true;
}
}
if( Constants.isOSX ) {
if( COConfigurationManager.getBooleanParameter( "enable_small_osx_fonts" ) ) {
System.setProperty( "org.eclipse.swt.internal.carbon.smallFonts", "1" );
}
else {
System.getProperties().remove( "org.eclipse.swt.internal.carbon.smallFonts" );
}
}
//remove a trailing slash, due to user manually entering the path in config
String[] path_params = { "Default save path",
"General_sDefaultTorrent_Directory",
"Watch Torrent Folder Path",
"Completed Files Directory" };
for( int i=0; i < path_params.length; i++ ) {
if( path_params[i].endsWith( SystemProperties.SEP ) ) {
String new_path = path_params[i].substring( 0, path_params[i].length() - 1 );
COConfigurationManager.setParameter( path_params[i], new_path );
changed = true;
}
}
//2105 removed the language file web-update functionality,
//but old left-over MessagesBundle.properties files in the user dir
//cause display text problems, so let's delete them.
if( ConfigurationManager.getInstance().doesParameterNonDefaultExist( "General_bEnableLanguageUpdate" ) ) {
File user_dir = new File( SystemProperties.getUserPath() );
File[] files = user_dir.listFiles( new FilenameFilter() {
public boolean accept(File dir, String name) {
if( name.startsWith( "MessagesBundle" ) && name.endsWith( ".properties" ) ) {
return true;
}
return false;
}
});
for( int i=0; i < files.length; i++ ) {
File file = files[ i ];
if( file.exists() ) {
if (Logger.isEnabled())
Logger.log(new LogEvent(LOGID, LogEvent.LT_WARNING,
"ConfigurationChecker:: removing old language file: "
+ file.getAbsolutePath()));
file.renameTo( new File( file.getParentFile(), "delme" + file.getName() ) );
}
}
ConfigurationManager.getInstance().removeParameter( "General_bEnableLanguageUpdate" );
changed = true;
}
if(changed) {
COConfigurationManager.save();
}
}finally{
class_mon.exit();
}
}
public static void main(String args[]) {
Integer obj = new Integer(1);
HashMap test = new HashMap();
int collisions = 0;
for(int i = 0 ; i < 1000000 ; i++) {
String id = RandomUtils.generateRandomAlphanumerics( 20 );
if(test.containsKey(id)) {
collisions++;
} else {
test.put(id,obj);
}
if(i%1000 == 0) {
System.out.println(i + " : " + id + " : " + collisions);
}
}
System.out.println("\n" + collisions);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -