📄 cfutil.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 + -