package eis.examples.platform;
import java.io.File;
import java.io.IOException;
import java.util.LinkedList;
import eis.EILoader;
import eis.EnvironmentListener;
import eis.EnvironmentInterfaceStandard;
import eis.exceptions.AgentException;
import eis.exceptions.RelationException;
import eis.iilang.Percept;
import eis.iilang.EnvironmentEvent;
public class Platform implements EnvironmentListener {
private EnvironmentInterfaceStandard ei = null;
public Platform() {}
private void loadMAS(String jarFileName, LinkedList<String> params) {
System.out.println("Loading MAS");
System.out.println(" Jar-file: " + jarFileName);
// 1. loading environment interface
try {
ei = EILoader.fromJarFile(new File(jarFileName));
System.out.println("Environment interface loaded.");
} catch (IOException e) {
System.out.println("Jar-file could not be loaded.");
System.exit(0);
}
// 2. registering listener
ei.attachEnvironmentListener(this);
System.out.println("Attached to environment interface.");
// 3. registering agents and associating
while( params.isEmpty() == false ) {
String agent = params.removeFirst();
String entity = params.removeFirst();
// register agent
try {
ei.registerAgent(agent);
System.out.println("Added agent " + agent);
} catch (AgentException e) {
System.out.println("Agent " + agent + " could not be added.");
}
// associate with entity
try {
ei.associateEntity(agent, entity);
System.out.println("Associated " + agent + " with " + entity);
} catch (RelationException e) {
System.out.println("Failed to associate " + agent + " with " + entity);
}
// TODO add listener
}
// 5. showing entities
System.out.println("Free entities: " + ei.getFreeEntities());
}
public void handlePercept(String agent, Percept percept) {
System.out.println(agent + " received this percept " + "\n" + percept);
}
public void handleDeletedEntity(String entity) {
}
public void handleEnvironmentEvent(EnvironmentEvent event) {
}
public void handleFreeEntity(String entity) {
System.out.println(entity + " is free");
}
public void handleNewEntity(String entity) {
}
public static void main(String[] args) {
if(args.length == 0) {
System.out.println("Parameters: jarfile (agentname entityname)");
System.out.println("Example: java eis.examples.platform.Platform carriageexample.jar agent1 carriage1 agent2 carriage2");
System.exit(0);
}
Platform platform = new Platform();
String jarFileName = args[0];
LinkedList<String> params = new LinkedList<String>();
for( int a = 1 ; a < args.length ; a++ ) {
params.add(args[a]);
}
if( params.size() % 2 != 0 ) {
System.out.println("Wrong number of parameters.");
System.exit(0);
}
platform.loadMAS(jarFileName, params);
}
}