Magentix2  2.1.1
jason.stdlib.ia_JAuc_Initiator Class Reference
Inheritance diagram for jason.stdlib.ia_JAuc_Initiator:
Collaboration diagram for jason.stdlib.ia_JAuc_Initiator:

List of all members.

Public Member Functions

int getMinArgs ()
int getMaxArgs ()
void checkArguments (Term[] args) throws JasonException
Object execute (TransitionSystem ts, Unifier un, Term[] args) throws Exception

Package Attributes

Jason_JAuc_Initiator jauci

Detailed Description

This class represents the internal action to be used when adding a conversation to a Jason agent under the Japanese Auction Protocol as initiator

Author:
Bexy Alfonso Espinosa

Definition at line 29 of file ia_JAuc_Initiator.java.


Member Function Documentation

void jason.stdlib.ia_JAuc_Initiator.checkArguments ( Term[]  args) throws JasonException

Definition at line 42 of file ia_JAuc_Initiator.java.

        {
                super.checkArguments(args);
                boolean result = false;

                if (  (((Term)args[args.length-1]).isAtom())||
                                (((Term)args[args.length-1]).isString())||
                                (((Term)args[args.length-1]).isLiteral())||
                                (((Term)args[args.length-1]).isNumeric())){result=true;}
                result = (result && (((Term)args[0]).isString()) );

                if  (protocolSteep.compareTo(Protocol_Template.START_STEP)==0)
                {
                        int cont = 0; 
                        for (Term t:args){
                                switch (cont){
                                case 1:result = (result&&t.isNumeric());//join timeout
                                break;
                                case 2:result = (result&&t.isNumeric());//timeout
                                break;
                                case 3:result = (result&&t.isNumeric());//initial bid
                                break;
                                case 4:result = (result&&t.isNumeric());//increment
                                break;
                                case 5:result = (result&&t.isNumeric());//max iterations
                                break;
                                case 6:result = (result&&t.isString());//initial msg
                                break;
                                case 7:result = (result&&t.isList());//participants
                                break;
                                //case 7:result = (result&&t.isLiteral());//request
                                //break;
                                }
                                cont++;

                        }
                }

                if (!result)
                {
                        throw JasonException.createWrongArgument(this,"Parameters must be in correct format.");
                }
        }
Object jason.stdlib.ia_JAuc_Initiator.execute ( TransitionSystem  ts,
Unifier  un,
Term[]  args 
) throws Exception

Definition at line 88 of file ia_JAuc_Initiator.java.

                                                                                             {

                protocolSteep = getTermAsString(args[0]);

                checkArguments(args);
                
                agentConversationID = getTermAsString(args[args.length-1]);
                if (((Term)args[args.length-1]).isString()){
                        agentConversationID = "\""+agentConversationID+"\"";
                }
                
                ConvJasonAgent myag = ((ConvMagentixAgArch)ts.getUserAgArch()).getJasonAgent();

                agName  = ts.getUserAgArch().getAgName();
                ts.getAg().getLogger().fine("CALLING INTERNAL ACTION WITH STEEP: '"+protocolSteep+"'"+" CID: "+agentConversationID);

                
                //the first state in the conversation
                if (protocolSteep.compareTo(Protocol_Template.START_STEP)==0){
                        
                        joinTimeOut = getTermAsInt(args[1]); 
                        
                        timeOut = getTermAsInt(args[2]);        
                        
                        double initialBid = getTermAsdouble(args[3]);
                        
                        double increment = getTermAsdouble(args[4]);
                        
                        int maxIterations = getTermAsInt(args[5]);
                        
                        String initialMsg = getTermAsString(args[6]);
                        
                        List<String> participants = getTermAsStringList(args[7]);
                        List<AgentID> AIDparticipants =  new ArrayList<AgentID>();
                        Iterator<String> it = participants.iterator();
                        while (it.hasNext())
                                AIDparticipants.add(new AgentID(it.next()));
                        
                        String request = getTermAsString(args[8]);
                        
                        int particnumber = participants.size();
                        
                        //building message template
                        ACLMessage msg = new ACLMessage();
                        msg.setProtocol("japanese-auction");

                        //int participantsNumber = participants.size();
                        
                        msg.setContent(initialMsg);
                        String factName = getFactoryName(agentConversationID,"JAUC",true);
                        //if (jauci == null){
                                /* The agent creates the CFactory that creates processors that initiate
                         the protocol conversations. */
                        jauci = new Jason_JAuc_Initiator( ts);
                        
                        String prevFactory = "";
                        if (Protocol_Factory!=null)
                                prevFactory = Protocol_Factory.getName();
                        if (prevFactory.compareTo(factName)!=0) // if it is a new conversation a create a new one. This verification is not strictly 
                                //necessary because it supposed that this condition will be always truth. This must be improved but, 
                                //as the participants can not distinguish between conversation of the same factory also one factory per conversation 
                                //is created with the initiator factory name as a filter. This implies one factory per conversation in the initiator too
                        {       Protocol_Factory = jauci.newFactory(factName, null, 
                                                msg, 1, ((ConvMagentixAgArch)ts.getUserAgArch()).getJasonAgent(),particnumber,timeOut, joinTimeOut );
                                ((ConvMagentixAgArch)ts.getUserAgArch()).getJasonAgent().addFactoryAsInitiator(Protocol_Factory);
                        }
                        //}
                        
                        /* finally the new conversation starts an asynchronous conversation.*/
                        myag.lock();
                        String ConvID = myag.newConvID();
                        JAucIniConversation conv = new JAucIniConversation(agentConversationID,ConvID,
                                        ((ConvMagentixAgArch)ts.getUserAgArch()).getJasonAgent().getAid(),
                                        AIDparticipants,initialMsg,initialBid, increment,maxIterations,factName); //the internal id is unknown yet
                        ConvCProcessor processorTemplate = ((ConvCFactory)Protocol_Factory).cProcessorTemplate();
                        processorTemplate.setConversation(conv);
                        msg.setConversationId(ConvID);
                        if (myag.getName().compareTo("aut_agent20")==0)
                                System.out.println("20");
                        ConvCProcessor convPprocessor =  myag.newConversation(msg, processorTemplate, false, Protocol_Factory);
                        convPprocessor.setConversation(conv);
                        myag.unlock();
                        conv.request =  request;
                        conversationsList.put(agentConversationID, conv); //TODO: Hay que gestionar el elimar de aquĆ­ cdo se termine la conversacion

                }

                return true;

        }

Definition at line 39 of file ia_JAuc_Initiator.java.

{ return 10; };

Definition at line 38 of file ia_JAuc_Initiator.java.

{ return 10; };

Member Data Documentation


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables