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

📄 cfutil.java

📁 CoolFace是基于jxta的P2P系统
💻 JAVA
字号:
package com.cn.darkblue.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;

import javax.security.cert.CertificateException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.swt.widgets.Shell;

import com.cn.darkblue.entity.CFGroupView;
import com.cn.darkblue.entity.ICFView;
import com.cn.darkblue.helper.GroupHelper;
import com.cn.darkblue.job.DiscoverPeerJob;
import com.cn.darkblue.listener.CFRDVListener;
import com.cn.darkblue.listener.GroupBaseCommListener;

import net.jxta.discovery.DiscoveryService;
import net.jxta.document.Advertisement;
import net.jxta.document.AdvertisementFactory;
import net.jxta.document.MimeMediaType;
import net.jxta.endpoint.Message;
import net.jxta.id.IDFactory;
import net.jxta.impl.id.UUID.PipeID;
import net.jxta.peergroup.PeerGroup;
import net.jxta.peergroup.PeerGroupID;
import net.jxta.pipe.OutputPipe;
import net.jxta.pipe.PipeService;
import net.jxta.platform.NetworkConfigurator;
import net.jxta.platform.NetworkManager;
import net.jxta.protocol.PeerAdvertisement;
import net.jxta.protocol.PipeAdvertisement;
import net.jxta.rendezvous.RendezVousService;


public class CFUtil {
	private static final Log log = LogFactory.getLog(CFUtil.class);

	public static NetworkManager startJxta(String fcName,String user,String psw){
		NetworkManager TheNetworkManager = null;
		NetworkConfigurator TheConfig = null;
		try {
            TheNetworkManager = new NetworkManager(
                    NetworkManager.ConfigMode.SUPER, fcName,new File(fcName+"/").toURI());
        } catch (IOException ex) {
            ex.printStackTrace();
            return null;
        }
        TheNetworkManager.setConfigPersistent(true);
        //TheNetworkManager.setUseDefaultSeeds(true);//动态使用

        //TheNetworkManager.
        
        try {
            TheConfig = TheNetworkManager.getConfigurator();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        if (TheConfig.exists()) {

            // We load it
            File LocalConfig = new File(TheConfig.getHome(), "PlatformConfig");
            try {
                TheConfig.load(LocalConfig.toURI());
                
                if(user!=null&&!"".equals(user))
                	TheConfig.setPrincipal(user);
                
                if(psw!=null&&!"".equals(psw))
                	TheConfig.setPassword(psw);
            } catch (IOException ex) {
            	log.error(ex.getMessage());
                return null;
            } catch (CertificateException ex) {
                // An issue with the existing peer certificate has been encountered
            	log.error(ex.getMessage());
                return null;
            }
        } else {

            TheConfig.setName(fcName);
            
            if(user!=null&&!"".equals(user))
            	TheConfig.setPrincipal(user);
            
            if(psw!=null&&!"".equals(psw))
            	TheConfig.setPassword(psw);
        }
        
        try {
            TheConfig.save();
        } catch (IOException ex) {
            log.error(ex.getMessage());
            return null;
        }
        
        return TheNetworkManager;
	}
	//关闭平台 清空所使用资源
	public static void  closeCFPlatform(){
		Shell shell = null;
		int i =0;
		for(i=0;i<CFResource.getInstance().getShellCache().size();i++){
			shell = CFResource.getInstance().getShellCache().get(i);
			shell.close();
			shell.dispose();
		}
		CFResource.getInstance().getShellCache().clear();
		
		PeerGroup pg = null;
		for(i=0;i<CFResource.getInstance().getGroupCache().size();i++){
			pg = (PeerGroup)CFResource.getInstance().getGroupCache().get(i);
			if(pg==null) continue;
			pg.stopApp();
		}
		CFResource.getInstance().getGroupCache().clear();
		
		if(CFResource.getInstance().getWorldGroup()!=null)
			CFResource.getInstance().getWorldGroup().stopApp();
		
		if(CFResource.getInstance().getManager()!=null)
			CFResource.getInstance().getManager().stopNetwork();
	}
	
	public static String publishObject(DiscoveryService discoSvc,Object p2pObj){
		Advertisement adv = null;
		
		if(p2pObj instanceof Advertisement){
			adv = (Advertisement)p2pObj;
		}else{
			if(p2pObj instanceof PeerGroup){
				PeerGroup pg = (PeerGroup)p2pObj;
				adv = pg.getPeerGroupAdvertisement();
			}
		}
		
		log.info("即将发布的广告ID:"+adv.getID());
		log.info("即将发布的广告类型:"+adv.getAdvType());
		if(adv!=null){
			long lifetime = 160 * 2 * 1000L;
	        long expiration = 60 * 2 * 1000L;
			try {
				// publish this advertisement
				// (send out to other peers and rendezvous peer)
				System.out.println("local publish......");
				discoSvc.publish(adv,lifetime,expiration);
				System.out.println("remote publish......");
				discoSvc.remotePublish(adv,expiration);
				return null;
			} catch (Exception ex) {
				
				log.error(ex.getMessage());
				return ex.getMessage();
			}
		}else{
			
			log.error("广告发布广告错误,广告不能为Null");
			return "<<OBJ>>null";
		}
	}
	
	public static PipeAdvertisement crearePipeAdvertisement(String pipeIdStr,String pType,String pipName) {
        PipeID pipeID = null;

        try {
            pipeID = (PipeID) IDFactory.fromURI(new URI(pipeIdStr));
        } catch (URISyntaxException use) {
            use.printStackTrace();
            return null;
        }
        PipeAdvertisement advertisement = (PipeAdvertisement)
                AdvertisementFactory.newAdvertisement(PipeAdvertisement.getAdvertisementType());

        advertisement.setPipeID(pipeID);
        advertisement.setType(pType);
        advertisement.setName(pipName);
        
        log.info("广告已成功创建,名称:"+pipName+" 类型:"+pType+" 原始ID:"+pipeIdStr);
        
        return advertisement;
    }
	
	public static PipeAdvertisement crearePipeAdvertisement(PeerGroupID pg,String pType,String pipName) {
        PipeID pipeID = null;

        try {
            pipeID = (PipeID) IDFactory.newPipeID(pg);
        } catch (Exception use) {
            use.printStackTrace();
            return null;
        }
        PipeAdvertisement advertisement = (PipeAdvertisement)
        AdvertisementFactory.newAdvertisement(PipeAdvertisement.getAdvertisementType());
        
		advertisement.setPipeID(pipeID);
		advertisement.setType(pType);//PipeService.PropagateType
		advertisement.setName(pipName);
		
		//advertisement.getDocument(MimeMediaType.XMLUTF8).
		
		log.info("广告已成功创建,名称:"+pipName+" 类型:"+pType+" 新建ID:"+pipeID.toString());
		
		return advertisement;
    }
	
	//清空平台缓存
	public static void clearPlatform(boolean isClr,String cfName){
		if(isClr){
			File cacheFile = new File(SysUtil.getRoot()+cfName);
			try{
				if(cacheFile.exists()){
					SysUtil.delDirectory(cacheFile.getPath());
					log.info("Clear platform Seccessfully");
				}
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	}
	//获取当前存储PeerGroup的名字ID值对
	public static String[] getPGNameIDs(){
		String []items = new String[CFResource.getInstance().getGroupCache().size()];
		PeerGroup pg = null;
		int i ;
		String item = null;
		for(i=0;i<CFResource.getInstance().getGroupCache().size();i++){
			pg = (PeerGroup)CFResource.getInstance().getGroupCache().get(i);
			if(pg==null) continue;
			item = pg.getPeerGroupName()+CFDefData.COMBO_SPSTR+pg.getPeerGroupID().toString();
			items[i] = item;
		}
		return items;
	}
	
	public static ArrayList getPGViews(Object obj){
		ArrayList list = new ArrayList();
		ICFView ve = null;
		if(obj instanceof ArrayList){
			ArrayList ol = (ArrayList)obj;
			for(int i=0;i<ol.size();i++){
				ve = new CFGroupView();
				ve.setTarget(ol.get(i));
				list.add(ve);
			}
		}
		if(obj instanceof Vector){
			Vector ol = (Vector)obj;
			for(int i=0;i<ol.size();i++){
				ve = new CFGroupView();
				ve.setTarget(ol.get(i));
				list.add(ve);
			}
		}
		return list;
	}
	
	public static boolean checkConditions(Map conditions,String name,String descr,String id){
		if(conditions==null) return true;
		
		String cond;
		 Object obj = conditions.get(CFDefData.NAME_STR);
		 if(obj!=null){
			 cond = obj.toString();
			 if(!cond.equalsIgnoreCase(name))
				 return false;
		 }
		 obj = conditions.get(CFDefData.DESCRIPTION_STR);
		 if(obj!=null){
			 cond = obj.toString();
			 if(descr.toUpperCase().indexOf(cond.toUpperCase())==-1)
				 return false;
		 }
		 
		 obj = conditions.get(CFDefData.ID_STR);
		 if(obj!=null){
			 cond = obj.toString();
			 if(!cond.equalsIgnoreCase(id))
				 return false;
		 }
		return true;
	}
	//查询Peer
	public static void seatchPeer(PeerGroup pg,HashMap map){
		DiscoverPeerJob dpgj = new  DiscoverPeerJob(pg);

		dpgj.setConditions(map);
		dpgj.setSeconds(2);
		dpgj.schedule();
	}
	//组是否已经被查询出
	public static boolean PGAreadyCatched(String id){
		PeerGroup pg = null;
		for(int i=0;i<CFResource.getInstance().getGroupCache().size();i++){
			pg = (PeerGroup)CFResource.getInstance().getGroupCache().get(i);
			if(id.equals(pg.getPeerGroupID()))
				return true;
		}
		return false;
	}
	
	public static void loadLocalPG(PeerGroup wpg,HashMap map){
		GroupHelper helper = new GroupHelper();
		ArrayList<PeerGroup> gList = new ArrayList<PeerGroup>();
		ArrayList list = helper.discoverLocalPeerGroup(wpg, map,gList);
		for(int i=0;i<list.size();i++){
			if(!CFResource.getInstance().getGroupCache().contains(list.get(i)))
				CFResource.getInstance().getGroupCache().add(list.get(i));
			//CFResource.getInstance().getCurrSearchGroup().add((PeerGroup)list.get(i));
		}
	}
	
	public static Advertisement loadAdvertisement(String fileURL){
		Advertisement adv = null;
		InputStream in = null;
		try{
			in = new FileInputStream(fileURL);
			adv = AdvertisementFactory.newAdvertisement(MimeMediaType.XMLUTF8, in);
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try{
				if(in!=null)
					in.close();
			}catch(Exception e){}
		}
		return adv;
	}
	
	public static void conSpacRDV(PeerGroup peerGroup, PeerAdvertisement adv){
		RendezVousService rvs = peerGroup.getRendezVousService();
		
		try{
			rvs.addListener(new CFRDVListener());
			System.out.println(" start connet to the rdv....."+adv.getPeerID().toString()+" name = "+adv.getName());
			rvs.connectToRendezVous(adv);
			int ii = 0;
			/*
			while(!rvs.isConnectedToRendezVous()){
				rvs.connectToRendezVous(adv);
				ii++;
				System.out.println(" start connet to the rdv....."+ii);
				try{
					Thread.sleep(5*1000);
				}catch(Exception ex){
					ex.printStackTrace();
				}
			}*/
		}catch(Exception ee){
			ee.printStackTrace();
		}
	}

}



















⌨️ 快捷键说明

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