/**
 * ***************************************************************
 * JADE - Java Agent DEvelopment Framework is a framework to develop
 * multi-agent systems in compliance with the FIPA specifications.
 * Copyright (C) 2000 CSELT S.p.A.
 * 
 * GNU Lesser General Public License
 * 
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation,
 * version 2.1 of the License.
 * 
 * This library 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
 * Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA  02111-1307, USA.
 * **************************************************************
 */
package examples.behaviours;

import jade.core.Agent;
import jade.core.behaviours.OneShotBehaviour;
import jade.core.behaviours.SequentialBehaviour;
import jade.core.behaviours.Behaviour;

/**
 * This is an example of recursive aggregation of composite agent behaviours.
 * A composite behaviour is created, composed of some Sequential Behaviours,
 * and OneShot behaviours.
 * @author Giovanni Rimassa - Universit di Parma
 * @version  $Date: 2003-12-03 17:46:36 +0100 (mer, 03 dic 2003) $ $Revision: 4630 $
 */
public class ComplexBehaviourAgent extends Agent {
  class SingleStepBehaviour extends OneShotBehaviour {
    private String myStep;

    public SingleStepBehaviour(Agent a, String step) {
      super(a);
      myStep = step;
    }

    public void action() {
      System.out.println("Agent "+getName()+": Step "+myStep);
    } 

  }

  protected void setup() {
    SequentialBehaviour myBehaviour1 = new SequentialBehaviour(this) {
      public int onEnd() {
        reset();
        return super.onEnd();
      } 

    };
    SequentialBehaviour myBehaviour2 = new SequentialBehaviour(this);
    SequentialBehaviour myBehaviour2_1 = new SequentialBehaviour(this);
    SequentialBehaviour myBehaviour2_2 = new SequentialBehaviour(this);

    myBehaviour2_1.addSubBehaviour(new SingleStepBehaviour(this, "2.1.1"));
    myBehaviour2_1.addSubBehaviour(new SingleStepBehaviour(this, "2.1.2"));
    myBehaviour2_1.addSubBehaviour(new SingleStepBehaviour(this, "2.1.3"));
    myBehaviour2_2.addSubBehaviour(new SingleStepBehaviour(this, "2.2.1"));
    myBehaviour2_2.addSubBehaviour(new SingleStepBehaviour(this, "2.2.2"));

    Behaviour b = new SingleStepBehaviour(this, "2.2.3");

    myBehaviour2_2.addSubBehaviour(b);
    myBehaviour1.addSubBehaviour(new SingleStepBehaviour(this, "1.1"));
    myBehaviour1.addSubBehaviour(new SingleStepBehaviour(this, "1.2"));
    myBehaviour1.addSubBehaviour(new SingleStepBehaviour(this, "1.3"));
    myBehaviour2.addSubBehaviour(myBehaviour2_1);
    myBehaviour2.addSubBehaviour(myBehaviour2_2);
    myBehaviour2.addSubBehaviour(new SingleStepBehaviour(this, "2.3"));
    myBehaviour2.addSubBehaviour(new SingleStepBehaviour(this, "2.4"));
    myBehaviour2.addSubBehaviour(new SingleStepBehaviour(this, "2.5"));
    addBehaviour(myBehaviour1);
    addBehaviour(myBehaviour2);
  } 
}


@@ -1496,16 +1496,17 @@
 niversit
+a
  di Parm

Make examples buildable.