📄 torrentfilter.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: TorrentFilter.java
package org.gudy.azureus2.ui.console.commands;
import com.aelitis.azureus.core.AzureusCoreException;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.gudy.azureus2.core3.download.DownloadManager;
public class TorrentFilter
{
private static final Pattern rangePattern = Pattern.compile("([0-9]+)\\s*((-)|(-\\s*([0-9]+)))?");
public TorrentFilter()
{
}
private List matchRange(List torrents, String filter)
{
Matcher matcher = rangePattern.matcher(filter);
List list = new ArrayList();
if (matcher.matches())
{
int minId = Integer.parseInt(matcher.group(1));
if (minId == 0)
throw new AzureusCoreException("lower range must be greater than 0");
if (minId > torrents.size())
throw new AzureusCoreException((new StringBuilder()).append("lower range specified (").append(minId).append(") is outside number of torrents (").append(torrents.size()).append(")").toString());
if (matcher.group(2) == null)
{
list.add(torrents.get(minId - 1));
return list;
}
int maxId;
if (matcher.group(3) == null)
maxId = Integer.parseInt(matcher.group(5));
else
maxId = torrents.size();
if (minId > maxId)
throw new AzureusCoreException("when specifying a range, the max value must be greater than or equal to the min value");
for (int i = minId - 1; i < maxId && i < torrents.size(); i++)
list.add(torrents.get(i));
}
return list;
}
private List matchWildcard(List torrents, String filter)
{
Pattern pattern = Pattern.compile(wildcardToPattern(filter), 2);
List list = new ArrayList();
Iterator iter = torrents.iterator();
do
{
if (!iter.hasNext())
break;
DownloadManager dm = (DownloadManager)iter.next();
if (pattern.matcher(dm.getDisplayName()).matches())
list.add(dm);
} while (true);
return list;
}
private String wildcardToPattern(String wild)
{
if (wild == null)
return null;
StringBuffer buffer = new StringBuffer();
char chars[] = wild.toCharArray();
for (int i = 0; i < chars.length; i++)
{
if (chars[i] == '*')
{
buffer.append(".*");
continue;
}
if (chars[i] == '?')
{
buffer.append(".");
continue;
}
if ("+()^$.{}[]|\\".indexOf(chars[i]) != -1)
buffer.append('\\').append(chars[i]);
else
buffer.append(chars[i]);
}
return buffer.toString().toLowerCase();
}
public List getTorrents(List torrentsToMatch, String filter)
{
List torrents = new ArrayList();
torrents.addAll(matchRange(torrentsToMatch, filter));
torrents.addAll(matchWildcard(torrentsToMatch, filter));
return torrents;
}
public List getTorrents(List torrentsToMatch, List args)
{
StringBuffer allArgs = new StringBuffer();
boolean first = true;
for (Iterator iter = args.iterator(); iter.hasNext(); allArgs.append(iter.next()))
if (!first)
allArgs.append(",");
else
first = false;
List torrents = matchWildcard(torrentsToMatch, allArgs.toString());
if (torrents.size() > 0)
return torrents;
torrents = matchRange(torrentsToMatch, allArgs.toString());
if (torrents.size() > 0)
return torrents;
for (Iterator iter = args.iterator(); iter.hasNext(); torrents.addAll(getTorrents(torrentsToMatch, (String)iter.next())));
return torrents;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -