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

📄 agentlibrary.java

📁 P2P模拟器P2Psim的程序源码
💻 JAVA
字号:
package graph;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

import org.jgraph.graph.DefaultGraphCell;

public class AgentLibrary {

	public AgentLibrary()
	{
		allAgents = new Hashtable();
	}
	
	public void addAgent(String name, String className)
	{
		allAgents.put(name, className);
	}

	public LinkedList getAgentTypes()
	{
		Iterator iterator = allAgents.keySet().iterator();
		
		if (iterator != null)
		{
			//String result[] = new String[allAgents.size()];
			LinkedList result = new LinkedList();
			
			while(iterator.hasNext())
			{
				result.add((String)iterator.next());
				
			}
			
			return result;
			
		}
		else
		{
			return null;
		}
		
	}

	public String getAgentAction(String name)
	{
		try
		{
			//System.out.println ("name of new agent: " + name);
			String className = (String)allAgents.get(name);
			//System.out.println ("className = " + className);
			Class agentClass = Class.forName(className);
			//System.out.println(className + " OK");
	
			Method getAgentActionMethod = agentClass.getMethod("getAction", null);
			
			return (String) getAgentActionMethod.invoke(null, null);
	
			
		} 
		catch (Exception e)
		{
			System.out.println("New agent not started");
			return ("-");
		}
	}

	public void startNewAgent(DefaultGraphCell origin)
	{
		String name = GraphEventManager.getReference().eventgetAgentType();
		try
		{
			//System.out.println ("name of new agent: " + name);
			String className = (String)allAgents.get(name);
			//System.out.println ("className = " + className);
			Class agentClass = Class.forName(className);
			//System.out.println(className + " OK");
			
			Class formalArgs[] = new Class[1];
			formalArgs[0] = Class.forName("org.jgraph.graph.DefaultGraphCell");

			Method startMethod = agentClass.getMethod("startAction", formalArgs);
			//System.out.println("Method OK");

			Object actualArgs[] = new Object[1];
			actualArgs[0] = origin;
	
			startMethod.invoke(null, actualArgs);
		} 
		catch (Exception e)
		{
			System.out.println("New agent not started");
		}
	}

	public Agent constructNewAgent(String name, DefaultGraphCell origin, ResourceQuery searchFor)
	{
		try
		{
			//System.out.println ("name of new agent: " + name);
			String className = (String)allAgents.get(name);
			//System.out.println ("className = " + className);
			Class agentClass = Class.forName(className);
			//System.out.println(className + " OK");
			
			Class formalArgs[] = new Class[2];
			formalArgs[0] = Class.forName("org.jgraph.graph.DefaultGraphCell");
			formalArgs[1] = Class.forName("graph.ResourceQuery");
			//System.out.println("All classes found");
			
			Constructor agentConstructor = agentClass.getConstructor(formalArgs);
			//System.out.println("Constructor OK");
			
			Object actualArgs[] = new Object[2];
			actualArgs[0] = origin;
			actualArgs[1] = searchFor;
			//System.out.println("ActualArgs OK");
			
			return (Agent)agentConstructor.newInstance(actualArgs);
		} 
		catch (Exception e)
		{
			return new SimpleAgent(origin, searchFor);	
		}
		
	}
	
	private Hashtable allAgents;
	
}

⌨️ 快捷键说明

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