View Javadoc

1   /*
2    * @(#)Replication.java Aug 18, 2003
3    * 
4    * Copyright (c) 2003 Delft University of Technology Jaffalaan 5, 2628 BX Delft,
5    * the Netherlands All rights reserved.
6    * 
7    * This software is proprietary information of Delft University of Technology
8    * The code is published under the General Public License
9    */
10  package nl.tudelft.simulation.dsol.experiment;
11  
12  import java.io.Serializable;
13  import java.util.Collection;
14  import java.util.HashMap;
15  import java.util.Iterator;
16  import java.util.Map;
17  
18  import nl.tudelft.simulation.jstats.streams.StreamInterface;
19  
20  
21  /***
22   * The replication of a runcontrol.
23   * <p>
24   * (c) copyright 2003 <a href="http://www.simulation.tudelft.nl">Delft
25   * University of Technology </a>, the Netherlands. <br>
26   * See for project information <a
27   * href="http://www.simulation.tudelft.nl">www.simulation.tudelft.nl </a> <br>
28   * License of use: <a href="http://www.gnu.org/copyleft/gpl.html">General Public
29   * License (GPL) </a>, no warranty <br>
30   * 
31   * @author <a href="http://www.tbm.tudelft.nl/webstaf/peterja/index.htm">Peter
32   *         Jacobs </a>
33   * @version 1.7 Apr 7, 2004
34   * @since 1.4
35   */
36  public class Replication implements Serializable
37  {
38  
39  	/***
40  	 * streams used in the replication
41  	 * 
42  	 * @uml.property name="streams"
43  	 */
44  	private Map streams = new HashMap();
45  
46  	/***
47  	 * description the description of the replication
48  	 * 
49  	 * @uml.property name="description"
50  	 */
51  	private String description = "rep_no_description";
52  
53  	/***
54  	 * runControl reflects the RunControl
55  	 * 
56  	 * @uml.property name="runControl"
57  	 */
58  	private RunControl runControl;
59  
60  	/***
61  	 * the number of the replication
62  	 * 
63  	 * @uml.property name="number"
64  	 */
65  	private int number = 0;
66  
67  
68  	/***
69  	 * constructs a new Replication
70  	 * 
71  	 * @param runControl reflects the RunControl
72  	 * @param number the number
73  	 */
74  	public Replication(final RunControl runControl, final int number)
75  	{
76  		super();
77  		this.runControl = runControl;
78  		this.number = number;
79  	}
80  
81  	/***
82  	 * gets the description of this replication
83  	 * 
84  	 * @return String the description of this replication
85  	 * 
86  	 * @uml.property name="description"
87  	 */
88  	public String getDescription()
89  	{
90  		return this.description;
91  	}
92  
93  	/***
94  	 * returns the number of this replication
95  	 * 
96  	 * @return int the number
97  	 * 
98  	 * @uml.property name="number"
99  	 */
100 	public int getNumber()
101 	{
102 		return this.number;
103 	}
104 
105 	/***
106 	 * returns the parental RunControl
107 	 * 
108 	 * @return RunControl the runcontrol
109 	 * 
110 	 * @uml.property name="runControl"
111 	 */
112 	public RunControl getRunControl()
113 	{
114 		return this.runControl;
115 	}
116 
117 	/***
118 	 * returns the streams
119 	 * 
120 	 * @return Map the streams of this replication
121 	 * 
122 	 * @uml.property name="streams"
123 	 */
124 	public Map getStreams()
125 	{
126 		return this.streams;
127 	}
128 
129 
130 	/***
131 	 * returns a specific stream
132 	 * 
133 	 * @param name the name of the stream
134 	 * @return StreamInterface the stream
135 	 */
136 	public StreamInterface getStream(final String name)
137 	{
138 		return (StreamInterface) this.streams.get(name);
139 	}
140 
141 	/***
142 	 * resets the RunControl
143 	 */
144 	public synchronized void reset()
145 	{
146 		for (Iterator i = this.streams.values().iterator(); i.hasNext();)
147 		{
148 			StreamInterface stream = (StreamInterface) i.next();
149 			stream.reset();
150 		}
151 	}
152 
153 	/***
154 	 * Sets the description of this replication
155 	 * 
156 	 * @param description the description of this replication
157 	 * 
158 	 * @uml.property name="description"
159 	 */
160 	public void setDescription(final String description)
161 	{
162 		this.description = description;
163 	}
164 
165 	/***
166 	 * sets the stream for this replication
167 	 * 
168 	 * @param streams the map of stream,name tuples
169 	 * 
170 	 * @uml.property name="streams"
171 	 */
172 	public void setStreams(final Map streams)
173 	{
174 		this.streams = streams;
175 	}
176 
177 	/***
178 	 * @see java.lang.Object#toString()
179 	 */
180 	public String toString()
181 	{
182 		String result = super.toString() + " ; " + this.getDescription()
183 				+ " ; streams=[";
184 		Collection values = this.streams.values();
185 		for (Iterator i = values.iterator(); i.hasNext();)
186 		{
187 			result = result + i.next().toString() + " ; ";
188 		}
189 		result = result.substring(0, result.length() - 2) + "]";
190 		return result;
191 	}
192 }