ingenias.jade.smachines.Role0Interaction0DefaultCommControl Maven / Gradle / Ivy
/*
Copyright (C) 2005 Jorge Gomez Sanz
This file is part of INGENIAS Agent Framework, an agent infrastructure linked
to the INGENIAS Development Kit, and availabe at http://grasia.fdi.ucm.es/ingenias or
http://ingenias.sourceforge.net.
INGENIAS Agent Framework is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
INGENIAS Agent Framework is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with INGENIAS Agent Framework; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package ingenias.jade.smachines;
import ingenias.jade.*;
import jade.lang.acl.ACLMessage;
import java.util.*;
import ingenias.jade.mental.*;
import ingenias.editor.entities.*;
import jade.lang.acl.UnreadableException;
import ingenias.jade.comm.DefaultCommControl;
import ingenias.jade.comm.StateBehavior;
import ingenias.jade.comm.LocksWriter;
import ingenias.jade.graphics.MainInteractionManager;
import ingenias.exception.NotFound;
public class Role0Interaction0DefaultCommControl extends DefaultCommControl{
private Vector previous=new Vector();
private com.thoughtworks.xstream.XStream xstream=new com.thoughtworks.xstream.XStream(new com.thoughtworks.xstream.io.xml.DomDriver());
public Role0Interaction0DefaultCommControl(String cid, MentalStateReader msr, ingenias.jade.comm.LocksRemover lr){
super(msr, lr);
};
public static void addDefaultLocks(LocksWriter lw){
// Facts that cannot be removed because they are part of guards
// Facts that cannot be removed because they must be sent
lw.addDeletionLockExpectedType("FrameFact1");
}
public Vector getDefaultLocks(){
Vector locks=new Vector();
// Facts that cannot be removed because they are part of guards
// Facts that cannot be removed because they must be sent
locks.add("FrameFact1");
return locks;
}
/**
* This method is executed on receiving a new message.
*
*/
public boolean notifyNewMessage(Vector multipleMessages,String[] options,
StateBehavior sb){
boolean processed = false;
ACLMessage mes=multipleMessages.firstElement();
if (options.length>0){
String sequence=mes.getUserDefinedParameter("sequence");
if (sequence.equals("enable")){
try {
String content=mes.getContent();
Vector actorlist = (Vector) xstream.fromXML(content);
sb.updateActorList(actorlist);
} catch (Exception e){
e.printStackTrace();
}
sb.addState(options[0]);
sb.removeState("waiting for enable");
processed=true;
}
if (!processed)
processed=continueProcess( multipleMessages, options,sb);
}
return processed;
}
public boolean continueProcessSend(String stateToEvaluate,String[] options,
StateBehavior sb){
boolean processed = false;
Vector futureStates=new Vector();
if (stateToEvaluate.equals("InteractionUnit0") &&
sb.isState("InteractionUnit0")&& options.length>0) {
boolean allexist=true;
Vector mfcontent=null;
allexist=allexist && !getMSR().obtainConversationalMentalEntityByType(sb.getConversation(),"FrameFact1").isEmpty();
if (allexist && true){
sb.clearContentNextMessage();
sb.removeState("InteractionUnit0");
mfcontent=getMSR().obtainConversationalMentalEntityByType(sb.getConversation(),"FrameFact1");
for (MentalEntity me:mfcontent)
sb.addContentForNextMessage(me);
getLR().removeDeletionLockType("FrameFact1");
lockProcessed("FrameFact1");
//MainInteractionManager.log("Removing lock FrameFact1",this.getAgent().getLocalName()+"-"+sb.getConversationID());
//sb.clearState();
futureStates.add("endInteractionUnit0");
processed = true;
}
}
if (futureStates.size()>1){
previous.addAll(futureStates);
} else {
if (futureStates.size()==1){
for (int k=0;k multipleMessages,String[] options,
StateBehavior sb){
boolean processed = false;
ACLMessage mes=multipleMessages.firstElement();
// String sequence= sb.getState();
Vector futureStates=new Vector();
if (futureStates.size()>1){
previous.addAll(futureStates);
} else {
if (futureStates.size()==1){
for (int k=0;k0){
if (sequence.equals("disabled")){
sb.removeState("disabled");
sb.addState(options[0]);
processed = true;
}
if (!processed)
processed=continueProcessSend(sequence, options,sb);
}
return processed;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy