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

📄 searchmanager.java

📁 用jxse开发的一个p2p通讯软件 有聊天 文件共享 视频3大功能
💻 JAVA
字号:
/* *  Copyright (c) 2001 Sun Microsystems, Inc.  All rights *  reserved. * *  Redistribution and use in source and binary forms, with or withouta *  modification, are permitted provided that the following conditions *  are met: * *  1. Redistributions of sourcec code must retain the above copyright *  notice, this list of conditions and the following disclaimer. * *  2. Redistributions in binary form must reproduce the above copyright *  notice, this list of conditions and the following discalimer in *  the documentation and/or other materials provided with the *  distribution. * *  3. The end-user documentation included with the redistribution, *  if any, must include the following acknowledgment: *  "This product includes software developed by the *  Sun Microsystems, Inc. for Project JXTA." *  Alternately, this acknowledgment may appear in the software itself, *  if and wherever such third-party acknowledgments normally appear. * *  4. The names "Sun", "Sun Microsystems, Inc.", "JXTA" and "Project JXTA" *  must not be used to endorse or promote products derived from this *  software without prior written permission. For written *  permission, please contact Project JXTA at http://www.jxta.org. * *  5. Products derived from this software may not be called "JXTA", *  nor may "JXTA" appear in their name, without prior written *  permission of Sun. * *  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED *  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES *  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *  DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR *  ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF *  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND *  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, *  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT *  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *  SUCH DAMAGE. *  ===================================================tre================= * *  This software consists of voluntary contributions made by many *  individuals on behalf of Project JXTA.  For more *  information on Project JXTA, please see *  <http://www.jxta.org/>. * * *  $Id: SearchManager.java,v 1.3 2006/06/06 18:46:23 nano Exp $ */package net.jxta.myjxta.search;import net.jxta.myjxta.MyJXTA;import net.jxta.myjxta.util.Group;import net.jxta.myjxta.util.objectmodel.JxtaNode;import java.util.ArrayList;import java.util.List;import java.util.Timer;import java.util.TimerTask;/* * $Id: SearchManager.java,v 1.3 2006/06/06 18:46:23 nano Exp $ * * Created on October 31, 2004, 1:23 AM * @author james todd [gonzo at jxta dot org] */public class SearchManager {    private static final int MAX_SEARCH_TIME = 3 * 60 * 1000;    private static final String EMPTY_STRING = "";    private static SearchManager instance = null;    private List<Context> searches = null;    public static synchronized SearchManager getInstance() {        if (instance == null) {            instance = new SearchManager();        }        return (instance != null ?                instance : (instance = new SearchManager()));    }    public boolean search(int context, Group group, final MyJXTA myjxta) {        return search(context, group, myjxta, "");    }    public boolean search(int context, Group group, final MyJXTA myjxta,                          String term) {        boolean isValid = false;        final Context c = new Context(context, group, term);        if (! isWorking(c)) {            final Searcher searcher = new Searcher(context, group, myjxta);            SearchModifier modifier = new SearchModifier(SearchModifier.DEFAULT,                    EMPTY_STRING, SearchModifier.WILDCARD);            searcher.addListener(new AbstractSearchListener() {                public void add(JxtaNode node) {                    myjxta.addJxtaNode(node);                }            });            searcher.start(modifier.createTerm(term));            new Timer(true).schedule(new TimerTask() {                public void run() {                    searcher.stop();                    remove(c);                }            }, MAX_SEARCH_TIME);            add(c);            isValid = true;        }        return isValid;    }    private boolean isWorking(Context c) {        return this.searches != null ?                this.searches.contains(c) : false;    }    private void add(Context c) {        if (c != null) {            if (this.searches == null) {                this.searches = new ArrayList<Context>();            }            this.searches.add(c);        }    }    private void remove(Context c) {        if (this.searches != null) {            this.searches.remove(c);            if (this.searches.isEmpty()) {                this.searches.clear();                this.searches = null;            }        }    }    public void destoy() {//        for (Iterator iterator = searches.iterator(); iterator.hasNext();) {//            Context context = (Context) iterator.next();//            context.//        }    }}class Context {    private int context = -1;    private Group group = null;    private String term = null;    public Context(int context, Group group, String term) {        this.context = context;        this.group = group;        this.term = term;    }    public int getContext() {        return this.context;    }    public Group getGroup() {        return this.group;    }    public String getTerm() {        return this.term;    }    public boolean equals(Object o) {        return o instanceof Context &&                ((Context) o).getContext() == getContext() &&                ((Context) o).getGroup() == getGroup() &&                ((Context) o).getTerm() != null &&                ((Context) o).getTerm().equals(getTerm());    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -