Package madkit.simulation.probe

# Class SingleAgentProbe<A extends AbstractAgent,T>

java.lang.Object
madkit.kernel.Probe<A>
madkit.simulation.probe.SingleAgentProbe<A,T>

Type Parameters:
  `A` - the most common class type expected in this group (e.g. AbstractAgent)
  `T` - the type of the property, i.e. Integer (this works if the field is an int, i.e. a primitive type)

public class SingleAgentProbe<A extends AbstractAgent,T> extends Probe<A>
This probe inspects fields of type T on only one agent of type A and its subclasses. This is designed for probing one single agent, i.e. methods are designed and optimized in this respect.

Since:
  MaDKit 5.0.0.18
Version:
  1.0
Author:
  Fabien Michel

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SingleAgentProbe(String community, String group, String role, String fieldName)`
  Builds a new SingleAgentProbe considering a CGR location and the name of the class's field.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `adding(A agent)`
  This method is automatically called when an agent joins the corresponding group and role.
  `protected void`
  `adding(List<A> agents)`
  Called when a list of agents joins the corresponding group and role.
  `void`
  `allAgentsLeaveRole()`
  Makes all the agents leave the corresponding role at once.
  `String`
  `getCommunity()`
  Gets the community to which this activator/probe is binded to.
  `List<A>`
  `getCurrentAgentsList()`
  Returns a snapshot at moment t of the agents handling the group/role couple
  `String`
  `getGroup()`
  Gets the group to which this activator/probe is binded to.
  `A`
  `getProbedAgent()`
  Get the current probed agent.
  `T`
  `getPropertyValue()`
  Returns the current value of the agent's field
  `String`
  `getRole()`
  Gets the role to which this activator/probe is binded to.
  `List<A>`
  `getShuffledList()`
  Returns a ListIterator over the agents which is shuffled
  `void`
  `initialize()`
  Called by the MaDKit kernel when the Activator or Probe is first added.
  `void`
  `killAgents()`
  Kills all the agents which are monitored.
  `protected void`
  `removing(A agent)`
  This method is automatically called when an agent leaves the corresponding group and role.
  `protected void`
  `removing(List<A> agents)`
  This method is automatically called when a list of agents has leaved the corresponding group and role.
  `void`
  `setPropertyValue(T value)`
  Should be used to work with primitive types or fields which are initially `null`
  `int`
  `size()`
  Returns the number of the agents handling the group/role couple
  `String`
  `toString()`
  returns a string containing the CGR location and the number of monitored agents.

  ### Methods inherited from class madkit.kernel.Probe

  `findFieldOn`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### SingleAgentProbe

    public SingleAgentProbe(String community, String group, String role, String fieldName)
    Builds a new SingleAgentProbe considering a CGR location and the name of the class's field.
    Parameters:
      `community` -
      `group` -
      `role` -
      `fieldName` - the name of a field which is encapsulated in the type

- ## Method Details

  - ### adding

    protected void adding(A agent)
    This method is automatically called when an agent joins the corresponding group and role. This method is empty by default. Override this method when you want to do some initialization when an agent enters the group/role.
    Parameters:
      `agent` - which has been added to this group/role

  - ### removing

    protected void removing(A agent)
    This method is automatically called when an agent leaves the corresponding group and role. This method is empty by default. Override this method when you want to do some work when an agent leaves the group/role. Note that the role is still handled by the agent when invoked.
    Parameters:
      `agent` - the agent which is being removed from this group/role

  - ### getProbedAgent

    public A getProbedAgent()
    Get the current probed agent.
    Returns:
      the agent which is currently probed

  - ### getPropertyValue

    public T getPropertyValue()
    Returns the current value of the agent's field
    Returns:
      the value of the agent's field

  - ### toString

    public String toString()
    returns a string containing the CGR location and the number of monitored agents.
    Returns:
      a string representation of this tool.

  - ### setPropertyValue

    public void setPropertyValue(T value)
    Should be used to work with primitive types or fields which are initially `null`
    Parameters:
      `value` -

  - ### getCommunity

    public String getCommunity()
    Gets the community to which this activator/probe is binded to.
    Returns:
      a string representing the community's name

  - ### getGroup

    public String getGroup()
    Gets the group to which this activator/probe is binded to.
    Returns:
      a string representing the group's name

  - ### getRole

    public String getRole()
    Gets the role to which this activator/probe is binded to.
    Returns:
      a string representing the role's name

  - ### initialize

    public void initialize()
    Called by the MaDKit kernel when the Activator or Probe is first added. Default behavior is: `adding(getCurrentAgentsList());`

  - ### adding

    protected void adding(List<A> agents)
    Called when a list of agents joins the corresponding group and role. This method is automatically called by the MaDKit kernel when agents enter a role due to the use of `AbstractAgent.launchAgentBucket(String, int, String...)`. Override this method when you want to do some initialization on the agents that enter the group/role. Default implementation is:

         protected void adding(final List<A> agents) {
                for (A agent : agents) {
                        adding(agent);
                }
         }

    Parameters:
      `agents` - the list of agents which have been added to this group/role at once.

  - ### removing

    protected void removing(List<A> agents)
    This method is automatically called when a list of agents has leaved the corresponding group and role. This method is empty by default. Override this method when you want to do some initialization on the agents that enter the group/role. Default implementation is:

         protected void removing(final List<A> agents) {
                for (A agent : agents) {
                        removing(agent);
                }
         }

    Parameters:
      `agents` - the list of agents which have been removed from this group/role

  - ### size

    public int size()
    Returns the number of the agents handling the group/role couple
    Returns:
      the number of the agents that handle the group/role couple

  - ### getCurrentAgentsList

    public List<A> getCurrentAgentsList()
    Returns a snapshot at moment t of the agents handling the group/role couple
    Returns:
      a list view (a snapshot at moment t) of the agents that handle the group/role couple (in proper sequence)
    Since:
      MaDKit 3.0

  - ### getShuffledList

    public List<A> getShuffledList()
    Returns a ListIterator over the agents which is shuffled
    Returns:
      a ListIterator which has been previously shuffled
    Since:
      MaDKit 3.0

  - ### killAgents

    public void killAgents()
    Kills all the agents which are monitored.

  - ### allAgentsLeaveRole

    public void allAgentsLeaveRole()
    Makes all the agents leave the corresponding role at once.