📄 set.java
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space
// Source File Name: Set.java
package org.gudy.azureus2.ui.console.commands;
import java.io.PrintStream;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TreeSet;
import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.util.SHA1Hasher;
import org.gudy.azureus2.ui.common.ExternalUIConst;
import org.gudy.azureus2.ui.console.ConsoleInput;
import org.pf.text.StringPattern;
// Referenced classes of package org.gudy.azureus2.ui.console.commands:
// IConsoleCommand
public class Set extends IConsoleCommand
{
private static class Parameter
{
private static final int PARAM_INT = 1;
private static final int PARAM_BOOLEAN = 2;
private static final int PARAM_STRING = 4;
private static final int PARAM_OTHER = 8;
private int type;
private String iname;
private String ename;
private Object value;
private boolean isSet;
private Object def;
public static Parameter get(String internal_name, String external_name)
{
int nextchar;
int underscoreIndex = external_name.indexOf('_');
nextchar = external_name.charAt(underscoreIndex + 1);
if (internal_name == external_name || "ibs".indexOf(nextchar) < 0)
break MISSING_BLOCK_LABEL_164;
int value;
if (nextchar != 105)
break MISSING_BLOCK_LABEL_76;
value = COConfigurationManager.getIntParameter(internal_name, 0x80000000);
return new Parameter(internal_name, external_name, value != 0x80000000 ? new Integer(value) : (Integer)null);
boolean b;
if (nextchar != 98)
break MISSING_BLOCK_LABEL_128;
if (COConfigurationManager.getIntParameter(internal_name, 0x80000000) == 0x80000000)
break MISSING_BLOCK_LABEL_114;
b = COConfigurationManager.getBooleanParameter(internal_name);
return new Parameter(internal_name, external_name, Boolean.valueOf(b));
return new Parameter(internal_name, external_name, (Boolean)null);
String value = COConfigurationManager.getStringParameter(internal_name, "__NULL__");
return new Parameter(internal_name, external_name, "__NULL__".equals(value) ? null : value);
Throwable e;
e;
Object v = COConfigurationManager.getParameter(internal_name);
int value;
if (!(v instanceof Long) && !(v instanceof Integer))
break MISSING_BLOCK_LABEL_227;
value = COConfigurationManager.getIntParameter(internal_name, 0x80000000);
return new Parameter(internal_name, external_name, value != 0x80000000 ? new Integer(value) : (Integer)null);
if (!(v instanceof Boolean))
break MISSING_BLOCK_LABEL_256;
value = COConfigurationManager.getBooleanParameter(internal_name);
return new Parameter(internal_name, external_name, Boolean.valueOf(value));
String value;
if (!(v instanceof String) && !(v instanceof byte[]))
break MISSING_BLOCK_LABEL_304;
value = COConfigurationManager.getStringParameter(internal_name);
return new Parameter(internal_name, external_name, "__NULL__".equals(value) ? null : value);
return new Parameter(internal_name, external_name, v, 8);
Throwable e2;
e2;
return new Parameter(internal_name, external_name, v, 8);
}
public String getType()
{
switch (type)
{
case 2: // '\002'
return "bool";
case 1: // '\001'
return "int";
case 4: // '\004'
return "string";
case 3: // '\003'
default:
return "unknown";
}
}
public boolean isDefault()
{
return !isSet;
}
public String getString(boolean set_format)
{
if (isSet)
if (set_format)
return (new StringBuilder()).append("set ").append(quoteIfNeeded(ename)).append(" ").append(quoteIfNeeded(value.toString())).append(" ").append(getType()).toString();
else
return (new StringBuilder()).append("> ").append(ename).append(": ").append(value).append(" [").append(getType()).append("]").toString();
if (def == null)
return (new StringBuilder()).append("> ").append(ename).append(" is not set. [").append(getType()).append("]").toString();
else
return (new StringBuilder()).append("> ").append(ename).append(" is not set. [").append(getType()).append(", default: ").append(def).append("]").toString();
}
protected String quoteIfNeeded(String str)
{
if (str.indexOf(' ') == -1)
return str;
else
return (new StringBuilder()).append("\"").append(str).append("\"").toString();
}
public Parameter(String iname, String ename, Boolean val)
{
this(iname, ename, val, 2);
}
public Parameter(String iname, String ename, Integer val)
{
this(iname, ename, val, 1);
}
public Parameter(String iname, String ename, String val)
{
this(iname, ename, val, 4);
}
private Parameter(String _iname, String _ename, Object _val, int _type)
{
type = _type;
iname = _iname;
ename = _ename;
value = _val;
isSet = value != null;
if (!isSet)
{
def = COConfigurationManager.getDefault(iname);
if (def != null && (def instanceof Long))
type = 1;
}
}
}
private static final String NULL_STRING = "__NULL__";
public Set()
{
super("set", "+");
}
public String getCommandDescriptions()
{
return "set [options] [parameter] [value]\t\t+\tSet a configuration parameter. The whitespaceless notation has to be used. If value is omitted, the current setting is shown. Parameter may be a wildcard to narrow results";
}
public void printHelpExtra(PrintStream out, List args)
{
out.println("> -----");
out.println("'set' options: ");
out.println("\t-export\t\tPrints all the options with non-defaut values.");
}
public void execute(String commandName, ConsoleInput ci, List args)
{
boolean non_defaults = false;
Iterator it = args.iterator();
do
{
if (!it.hasNext())
break;
String arg = (String)it.next();
if (arg.equals("-export"))
{
non_defaults = true;
it.remove();
}
} while (true);
if (args.isEmpty())
{
displayOptions(ci.out, new StringPattern("*"), non_defaults);
return;
}
String external_name = (String)args.get(0);
String internal_name = (String)ExternalUIConst.parameterlegacy.get(external_name);
if (internal_name == null || internal_name.length() == 0)
internal_name = external_name;
switch (args.size())
{
case 1: // '\001'
StringPattern sp = new StringPattern(internal_name);
if (sp.hasWildcard())
{
displayOptions(ci.out, sp, non_defaults);
} else
{
if (!COConfigurationManager.doesParameterDefaultExist(internal_name))
{
ci.out.println((new StringBuilder()).append("> Command 'set': Parameter '").append(external_name).append("' unknown.").toString());
return;
}
Parameter param = Parameter.get(internal_name, external_name);
ci.out.println(param.getString(false));
}
break;
case 2: // '\002'
case 3: // '\003'
String setto = (String)args.get(1);
String type;
if (args.size() == 2)
{
Parameter param = Parameter.get(internal_name, external_name);
type = param.getType();
} else
{
type = (String)args.get(2);
}
boolean success = false;
if (type.equalsIgnoreCase("int") || type.equalsIgnoreCase("integer"))
{
COConfigurationManager.setParameter(internal_name, Integer.parseInt(setto));
success = true;
} else
if (type.equalsIgnoreCase("bool") || type.equalsIgnoreCase("boolean"))
{
boolean value;
if (setto.equalsIgnoreCase("true") || setto.equalsIgnoreCase("y") || setto.equals("1"))
value = true;
else
value = false;
COConfigurationManager.setParameter(internal_name, value);
success = true;
} else
if (type.equalsIgnoreCase("float"))
{
COConfigurationManager.setParameter(internal_name, Float.parseFloat(setto));
success = true;
} else
if (type.equalsIgnoreCase("string"))
{
COConfigurationManager.setParameter(internal_name, setto);
success = true;
} else
if (type.equalsIgnoreCase("password"))
{
SHA1Hasher hasher = new SHA1Hasher();
byte password[] = setto.getBytes();
byte encoded[];
if (password.length > 0)
encoded = hasher.calculateHash(password);
else
encoded = password;
COConfigurationManager.setParameter(internal_name, encoded);
success = true;
}
if (success)
{
COConfigurationManager.save();
ci.out.println((new StringBuilder()).append("> Parameter '").append(external_name).append("' set to '").append(setto).append("'. [").append(type).append("]").toString());
} else
{
ci.out.println("ERROR: invalid type given");
}
break;
default:
ci.out.println("Usage: 'set \"parameter\" value type', where type = int, bool, float, string, password");
break;
}
}
private void displayOptions(PrintStream out, StringPattern sp, boolean non_defaults)
{
sp.setIgnoreCase(true);
Iterator I = non_defaults ? COConfigurationManager.getDefinedParameters().iterator() : COConfigurationManager.getAllowedParameters().iterator();
Map backmap = new HashMap();
java.util.Map.Entry entry;
for (Iterator iter = ExternalUIConst.parameterlegacy.entrySet().iterator(); iter.hasNext(); backmap.put(entry.getValue(), entry.getKey()))
entry = (java.util.Map.Entry)iter.next();
TreeSet srt = new TreeSet();
do
{
if (!I.hasNext())
break;
String internal_name = (String)I.next();
String external_name = (String)backmap.get(internal_name);
if (external_name == null)
external_name = internal_name;
if (sp.matches(external_name))
{
Parameter param = Parameter.get(internal_name, external_name);
if (non_defaults)
{
if (!param.isDefault())
srt.add(param.getString(true));
} else
{
srt.add(param.getString(false));
}
}
} while (true);
for (I = srt.iterator(); I.hasNext(); out.println((String)I.next()));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -