📄 configurationmanager.java
字号:
return def;
}
}
public boolean setParameter(String parameter,List value) {
try {
propertiesMap.put(parameter,value);
notifyParameterListeners(parameter);
} catch(Exception e) {
Debug.printStackTrace(e);
return false;
}
return true;
}
public Map
getMapParameter(String parameter, Map def)
{
try {
Map map = (Map) propertiesMap.get(parameter);
if(map == null)
return def;
return map;
} catch(Exception e) {
Debug.printStackTrace(e);
return def;
}
}
public boolean setParameter(String parameter,Map value) {
try {
propertiesMap.put(parameter,value);
notifyParameterListeners(parameter);
} catch(Exception e) {
Debug.printStackTrace(e);
return false;
}
return true;
}
public String getDirectoryParameter(String parameter) throws IOException {
String dir = getStringParameter(parameter);
if( dir.length() > 0 ) {
File temp = new File(dir);
if (!temp.exists()) {
FileUtil.mkdirs(temp);
}
if (!temp.isDirectory()) {
throw new IOException("Configuration error. This is not a directory: " + dir);
}
}
return dir;
}
public float getFloatParameter(String parameter) {
ConfigurationDefaults def = ConfigurationDefaults.getInstance();
try {
Object o = propertiesMap.get(parameter);
if (o instanceof Number) {
return ((Number)o).floatValue();
}
String s = getStringParameter(parameter);
if (!s.equals(def.def_String))
return Float.parseFloat(s);
} catch (Exception e) {
Debug.printStackTrace( e );
}
try {
return def.getFloatParameter(parameter);
} catch (Exception e2) {
return def.def_float;
}
}
public boolean setParameter(String parameter, float defaultValue) {
String newValue = String.valueOf(defaultValue);
return setParameter(parameter, stringToBytes(newValue));
}
public boolean setParameter(String parameter, int defaultValue) {
Long newValue = new Long(defaultValue);
try {
Long oldValue = (Long) propertiesMap.put(parameter, newValue);
return notifyParameterListenersIfChanged(parameter, newValue, oldValue);
} catch (ClassCastException e) {
// Issuing a warning here would be nice, but both logging and config stuff
// at startup create potential deadlocks or stack overflows
notifyParameterListeners(parameter);
return true;
}
}
public boolean setParameter(String parameter, long defaultValue) {
Long newValue = new Long(defaultValue);
try {
Long oldValue = (Long) propertiesMap.put(parameter, newValue);
return notifyParameterListenersIfChanged(parameter, newValue, oldValue);
} catch (ClassCastException e) {
// Issuing a warning here would be nice, but both logging and config stuff
// at startup create potential deadlocks or stack overflows
notifyParameterListeners(parameter);
return true;
}
}
public boolean setParameter(String parameter, byte[] defaultValue) {
try {
byte[] oldValue = (byte[]) propertiesMap.put(parameter, defaultValue);
return notifyParameterListenersIfChanged(parameter, defaultValue,
oldValue);
} catch (ClassCastException e) {
// Issuing a warning here would be nice, but both logging and config stuff
// at startup create potential deadlocks or stack overflows
notifyParameterListeners(parameter);
return true;
}
}
public boolean setParameter(String parameter, String defaultValue) {
return setParameter(parameter, stringToBytes(defaultValue));
}
/**
* Returns true if a parameter with the given name exists.
* @param key The name of the parameter to check.
* @param explicit If <tt>true</tt>, we only check for a value which is
* definitely stored explicitly, <tt>false</tt> means that we'll also
* check against configuration defaults too.
*/
public boolean hasParameter(String key, boolean explicit) {
// We have an explicit value set.
if (propertiesMap.containsKey(key)) {return true;}
// We have a default value set.
if ((!explicit) && ConfigurationDefaults.getInstance().hasParameter(key)) {
return true;
}
return false;
}
public boolean
verifyParameter(
String parameter,
String value )
{
List verifiers = ConfigurationDefaults.getInstance().getVerifiers(parameter);
if ( verifiers != null ){
try{
for (int i=0;i<verifiers.size();i++){
ParameterVerifier verifier = (ParameterVerifier)verifiers.get(i);
if ( verifier != null ){
try{
if ( !verifier.verify(parameter,value)){
return( false );
}
}catch( Throwable e ){
Debug.printStackTrace( e );
}
}
}
}catch( Throwable e ){
// we're not synchronized so possible but unlikely error here
Debug.printStackTrace( e );
}
}
return( true );
}
public boolean setRGBParameter(String parameter, int red, int green, int blue) {
boolean bAnyChanged = false;
bAnyChanged |= setParameter(parameter + ".red", red);
bAnyChanged |= setParameter(parameter + ".green", green);
bAnyChanged |= setParameter(parameter + ".blue", blue);
if (bAnyChanged)
notifyParameterListeners(parameter);
return bAnyChanged;
}
// Sets a parameter back to its default
public boolean setParameter(String parameter) throws ConfigurationParameterNotFoundException {
ConfigurationDefaults def = ConfigurationDefaults.getInstance();
try {
return setParameter(parameter, def.getIntParameter(parameter));
} catch (Exception e) {
return setParameter(parameter, def.getStringParameter(parameter));
}
}
/**
* Remove the given configuration parameter completely.
* @param parameter to remove
* @return true if found and removed, false if not
*/
public boolean removeParameter( String parameter ) {
boolean removed = propertiesMap.remove( parameter ) != null;
if (removed)
notifyParameterListeners(parameter);
return removed;
}
public boolean removeRGBParameter(String parameter) {
boolean bAnyChanged = false;
bAnyChanged |= removeParameter(parameter + ".red");
bAnyChanged |= removeParameter(parameter + ".green");
bAnyChanged |= removeParameter(parameter + ".blue");
if (bAnyChanged)
notifyParameterListeners(parameter);
return bAnyChanged;
}
/**
* Does the given parameter exist.
* @param parameter to check
* @return true if exists, false if not present
*/
public boolean
doesParameterNonDefaultExist(
String parameter )
{
return propertiesMap.containsKey( parameter );
}
private boolean notifyParameterListenersIfChanged(String parameter, Long newValue, Long oldValue) {
if(oldValue == null || 0 != newValue.compareTo(oldValue)) {
notifyParameterListeners(parameter);
return true;
}
return false;
}
private boolean notifyParameterListenersIfChanged(String parameter, byte[] newValue, byte[] oldValue) {
if(oldValue == null || !Arrays.equals(newValue, oldValue)) {
notifyParameterListeners(parameter);
return true;
}
return false;
}
private void notifyParameterListeners(String parameter) {
Vector parameterListener = (Vector) parameterListeners.get(parameter);
if(parameterListener != null) {
try{
for (int i=0;i<parameterListener.size();i++){
ParameterListener listener = (ParameterListener)parameterListener.get(i);
if(listener != null) {
listener.parameterChanged(parameter);
}
}
}catch( Throwable e ){
// we're not synchronized so possible but unlikely error here
Debug.printStackTrace( e );
}
}
}
public void addParameterListener(String parameter, ParameterListener listener){
try{
this_mon.enter();
if(parameter == null || listener == null)
return;
Vector parameterListener = (Vector) parameterListeners.get(parameter);
if(parameterListener == null) {
parameterListeners.put(parameter, parameterListener = new Vector());
}
if(!parameterListener.contains(listener))
parameterListener.add(listener);
}finally{
this_mon.exit();
}
}
public void removeParameterListener(String parameter, ParameterListener listener){
try{
this_mon.enter();
if(parameter == null || listener == null)
return;
Vector parameterListener = (Vector) parameterListeners.get(parameter);
if(parameterListener != null) {
parameterListener.remove(listener);
}
}finally{
this_mon.exit();
}
}
public void addListener(COConfigurationListener listener) {
try{
this_mon.enter();
listeners.add(listener);
}finally{
this_mon.exit();
}
}
public void removeListener(COConfigurationListener listener) {
try{
this_mon.enter();
listeners.remove(listener);
}finally{
this_mon.exit();
}
}
public void
generate(
IndentWriter writer )
{
writer.println( "Configuration Details" );
try{
writer.indent();
writer.println( "System Properties" );
try{
writer.indent();
Properties props = System.getProperties();
Iterator it = new TreeSet( props.keySet()).iterator();
while(it.hasNext()){
String key = (String)it.next();
writer.println( key + "=" + props.get( key ));
}
}finally{
writer.exdent();
}
writer.println( "Azureus Config" );
try{
writer.indent();
Iterator it = new TreeSet(propertiesMap.keySet()).iterator();
while( it.hasNext()){
Object key = it.next();
Object value = propertiesMap.get(key);
boolean bParamExists = ConfigurationDefaults.getInstance().doesParameterDefaultExist(key.toString());
if (!bParamExists)
key = "[NoDef] " + key;
if ( value instanceof Long ){
writer.println( key + "=" + value );
}else if ( value instanceof List ){
writer.println( key + "=" + value + "[list]" );
}else if ( value instanceof Map ){
writer.println( key + "=" + value + "[map]" );
}else if ( value instanceof byte[] ){
byte[] b = (byte[])value;
boolean hex = false;
for (int i=0;i<b.length;i++){
char c = (char)b[i];
if ( ! ( Character.isLetterOrDigit(c) ||
"`琝"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -