⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 torrentfilter.java

📁 java 文件下载器。可自定义
💻 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 + -