madkit.simulation.probe

## Class PropertyProbe<A extends AbstractAgent,T>

- java.lang.Object
- - madkit.kernel.Probe<A>
  - - madkit.simulation.probe.PropertyProbe<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 PropertyProbe<A extends AbstractAgent,T>
      extends Probe<A>

  This probe inspects fields of type T on agents of type A and its subclasses.
  Since:
    MaDKit 5.0.0.13
  Version:
    5.1
  Author:
    Fabien Michel

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `PropertyProbe(String community, String group, String role, String fieldName)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and 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()`
    `String` | `getCommunity()`
    `List<A>` | `getCurrentAgentsList()` Returns a snapshot at moment t of the agents handling the group/role couple
    `String` | `getGroup()`
    `T` | `getMaxValue()` Returns the maximum for the property over all the agents.
    `T` | `getMinValue()` Returns the minimum for the property over all the agents.
    `T` | `getPropertyValue(A agent)` Returns the current value of the agent's field
    `String` | `getRole()`
    `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()`
    `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(A agent, 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()`

    - ### 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 Detail

    - #### PropertyProbe

          public PropertyProbe(String community,
                       String group,
                       String role,
                       String fieldName)

  - ### Method Detail

    - #### getPropertyValue

          public T getPropertyValue(A agent)

      Returns the current value of the agent's field
      Parameters:
        `agent` - the agent to probe
      Returns:
        the actual value of the agent's field

    - #### setPropertyValue

          public void setPropertyValue(A agent,
                              T value)

      Should be used to work with primitive types or fields which are initially `null`
      Parameters:
        `agent` -
        `value` -

    - #### getMaxValue

          public T getMaxValue()

      Returns the maximum for the property over all the agents. The property must implement the `Comparable` interface for this to work.
      Returns:
        the maximum value for this property

    - #### getMinValue

          public T getMinValue()

      Returns the minimum for the property over all the agents. The property must implement the `Comparable` interface for this to work.
      Returns:
        the minimum value for this property

    - #### getCommunity

          public String getCommunity()

    - #### getGroup

          public String getGroup()

    - #### getRole

          public String getRole()

    - #### 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.

    - #### 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(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

    - #### 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.
      Parameters:
        `agent` - which has 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

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### killAgents

          public void killAgents()

    - #### allAgentsLeaveRole

          public void allAgentsLeaveRole()

Fabien Michel, Olivier Gutknecht, Jacques Ferber