View Javadoc

1   package cz.cuni.amis.pogamut.base.agent.params.impl;
2   
3   import cz.cuni.amis.pogamut.base.agent.IAgentId;
4   import cz.cuni.amis.pogamut.base.agent.impl.AgentId;
5   import cz.cuni.amis.pogamut.base.agent.params.IAgentParameters;
6   import cz.cuni.amis.pogamut.base.agent.utils.runner.IAgentRunner;
7   import cz.cuni.amis.pogamut.base.agent.utils.runner.IMultipleAgentRunner;
8   import cz.cuni.amis.pogamut.base.communication.connection.IWorldConnectionAddress;
9   
10  /**
11   * Agent parameters are meant to provide run-time parameters needed by various agents.
12   * <p><p>
13   * If you need to populate the parameters after instantiation, use setter available in this
14   * class: {@link AgentParameters#setAgentId(IAgentId)}
15   * <p><p>
16   * NOTE: all {@link IAgentParameters} implementors are usually used together with {@link IAgentRunner} or {@link IMultipleAgentRunner}
17   * which usually contains sensible default params, therefore there is no need to set all parameters
18   * into newly created ones as runners will supply them via {@link IAgentParameters#assignDefaults(IAgentParameters)}.
19   * 
20   * @author Jimmy
21   */
22  public class AgentParameters implements IAgentParameters {
23  
24  	private IAgentId agentId;
25  
26  	public AgentParameters() {
27  		this.agentId = null;
28  	}
29  		
30  	@Override
31  	public IAgentId getAgentId() {
32  		return agentId;
33  	}
34  	
35  	/**
36  	 * Sets agent id into the parameters.
37  	 * <p><p>
38  	 * WARNING: Note that you should not mess with 'setters' in different threads as they
39  	 * are non-thread-safe and may interrupt horrible agent instantiations with such behavior.
40  	 * @param agentId
41  	 * @return this instance
42  	 */
43  	public AgentParameters setAgentId(IAgentId agentId) {
44  		this.agentId = agentId;
45  		return this;
46  	}
47  
48  	@Override
49  	public void assignDefaults(IAgentParameters defaults) {
50  		if (agentId == null) agentId = defaults.getAgentId();
51  	}
52  
53  }