package pikater.gui.java;
import jade.content.lang.Codec.CodecException;
import jade.content.onto.OntologyException;
import jade.content.onto.UngroundedException;
import jade.content.onto.basic.Result;
import jade.domain.FIPAAgentManagement.FailureException;
import jade.gui.GuiEvent;
import jade.lang.acl.ACLMessage;
import jade.util.leap.ArrayList;
import jade.util.leap.Iterator;
import jade.util.leap.List;
import java.util.Vector;
import java.util.regex.Pattern;
import pikater.Agent_GUI;
import pikater.DataManagerService;
import pikater.ontology.messages.Metadata;
import pikater.ontology.messages.Problem;
import pikater.ontology.messages.Results;
import pikater.ontology.messages.Task;
public class Agent_GUI_Java extends Agent_GUI {
/**
*
*/
private static final long serialVersionUID = -3678714827126048550L;
transient protected MainWindow myGUI;
public Agent_GUI_Java() {
myGUI = new MainWindow(this);
myGUI.setVisible(true);
}
@Override
protected void DisplayWrongOption(int problemGuiId, String agentName,
String optionName, String errorMessage) {
// TODO Auto-generated method stub
}
@Override
protected void allOptionsReceived(int problemId) {
sendProblem(problemId);
}
@Override
protected void displayOptions(Problem problem, int performative) {
// TODO Auto-generated method stub
}
@Override
protected void displayPartialResult(ACLMessage inform) {
if (inform.getPerformative() != ACLMessage.INFORM) {
System.err.println("Received FAILURE");
myGUI.displayError(inform.getContent());
return;
}
try {
Result r = (Result) getContentManager().extractContent(inform);
Results res = (Results) r.getValue();
List tasks = res.getResults();
Iterator it = tasks.iterator();
while (it.hasNext()) {
Task t = (Task) it.next();
String testInternalFilename = t.getData().getTest_file_name();
String trainInternalFilename = t.getData().getTrain_file_name();
String[] path = testInternalFilename.split(Pattern.quote(
System.getProperty("file.separator")));
testInternalFilename = path[path.length - 1];
path = trainInternalFilename.split(Pattern.quote(
System.getProperty("file.separator")));
trainInternalFilename = path[path.length - 1];
t.getData().setTest_file_name(
DataManagerService.translateFilename(this, 1, null,
testInternalFilename));
t.getData().setTrain_file_name(
DataManagerService.translateFilename(this, 1, null,
trainInternalFilename));
myGUI.addResult(t);
}
} catch (UngroundedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (CodecException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OntologyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
protected void displayResult(ACLMessage inform) {
displayPartialResult(inform);
}
@Override
protected String getAgentType() {
return "Java GUI Agent";
}
@Override
protected void mySetup() {
// TODO Auto-generated method stub
}
@Override
protected void onGuiEvent(GuiEvent ev) {
switch (ev.getType()) {
case MainWindow.GET_FILES_INFO:
FileManagerPanel fm = (FileManagerPanel) ev.getSource();
fm.setFiles(DataManagerService.getFilesInfo(this, 1));
break;
case MainWindow.UPDATE_METADATA:
Metadata update = (Metadata) ev.getParameter(0);
DataManagerService.updateMetadata(this, update);
break;
case MainWindow.ON_LOAD:
NewExperimentPanel nep = (NewExperimentPanel) ev.getSource();
Vector<String> types = offerAgentTypes();
types.add(0, "?");
String[] agentTypes = new String[types.size()];
for (int i = 0; i < types.size(); i++) {
agentTypes[i] = types.get(i);
}
ArrayList files = DataManagerService.getFiles(this, 1);
String[] filesList = new String[files.size()];
for (int i = 0; i < files.size(); i++) {
filesList[i] = (String) files.get(i);
}
nep.setFilesList(filesList);
nep.setAgentTypes(agentTypes);
break;
case MainWindow.START_EXPERIMENT:
Vector<String> agents = (Vector<String>) ev.getParameter(0);
Vector<String> agentOptions = (Vector<String>) ev.getParameter(1);
Vector<String> trainFiles = (Vector<String>) ev.getParameter(2);
Vector<String> testFiles = (Vector<String>) ev.getParameter(3);
Vector<String> optionsManager = (Vector<String>) ev.getParameter(4);
int problemID = createNewProblem("10000");
for (int i = 0; i < trainFiles.size(); i++) {
addDatasetToProblem(problemID, trainFiles.get(i), testFiles
.get(i), "predictions", null);
}
try {
for (int i = 0; i < agents.size(); i++) {
if (agents.get(i).contains("?")) {
System.err.println("? agent");
addAgentToProblem(problemID, null, agents.get(i), null);
} else {
addAgentToProblem(problemID, null, agents.get(i),
agentOptions.get(i));
}
}
}
catch (FailureException e) {
e.printStackTrace();
}
if (optionsManager.get(0).equals("Random")) {
addMethodToProblem(problemID, optionsManager.get(0),
optionsManager.get(1), optionsManager.get(2));
} else {
setDefault_number_of_values_to_try(Integer
.parseInt(optionsManager.get(1)));
addMethodToProblem(problemID, "ChooseXValues", null, null);
}
break;
case MainWindow.IMPORT_FILE:
String fileName = (String) ev.getParameter(0);
String fileContent = (String) ev.getParameter(1);
DataManagerService.importFile(this, 1, fileName, fileContent);
FileManagerPanel fmp = (FileManagerPanel) ev.getSource();
fmp.reloadFileInfo();
myGUI.addFile(fileName);
break;
}
}
}