EMMA Coverage Report (generated Sun Feb 05 10:43:15 CET 2012)
[all classes][desmoj.core.simulator]

COVERAGE SUMMARY FOR SOURCE FILE [Reportable.java]

nameclass, %method, %block, %line, %
Reportable.java0%   (0/1)0%   (0/12)0%   (0/106)0%   (0/41)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class Reportable0%   (0/1)0%   (0/12)0%   (0/106)0%   (0/41)
Reportable (Model, String, boolean, boolean): void 0%   (0/1)0%   (0/31)0%   (0/9)
createReporter (): Reporter 0%   (0/1)0%   (0/5)0%   (0/1)
getCorrespondingSchedulable (): Schedulable 0%   (0/1)0%   (0/3)0%   (0/1)
getObservations (): long 0%   (0/1)0%   (0/3)0%   (0/1)
incrementObservations (): void 0%   (0/1)0%   (0/7)0%   (0/2)
incrementObservations (long): void 0%   (0/1)0%   (0/7)0%   (0/2)
reportIsOn (): boolean 0%   (0/1)0%   (0/3)0%   (0/1)
reportOff (): void 0%   (0/1)0%   (0/4)0%   (0/2)
reportOn (): void 0%   (0/1)0%   (0/4)0%   (0/2)
reset (): void 0%   (0/1)0%   (0/8)0%   (0/3)
resetAt (): TimeInstant 0%   (0/1)0%   (0/3)0%   (0/1)
setCorrespondingSchedulable (Schedulable): void 0%   (0/1)0%   (0/28)0%   (0/16)

1package desmoj.core.simulator;
2 
3import desmoj.core.report.Reporter;
4import desmoj.core.report.StandardReporter;
5 
6/**
7 * All classes that want to publish their information have to extend this class
8 * in order to provide the necessary functions to represent their information in
9 * reports.
10 * 
11 * @version DESMO-J, Ver. 2.3.3 copyright (c) 2011
12 * @author Tim Lechler
13 * 
14 * Licensed under the Apache License, Version 2.0 (the "License");
15 * you may not use this file except in compliance with the License. You
16 * may obtain a copy of the License at
17 * http://www.apache.org/licenses/LICENSE-2.0
18 *
19 * Unless required by applicable law or agreed to in writing, software
20 * distributed under the License is distributed on an "AS IS"
21 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
22 * or implied. See the License for the specific language governing
23 * permissions and limitations under the License.
24 *
25 */
26public abstract class Reportable extends ModelComponent {
27 
28    /**
29     * Flag indicating if this reportable should produce a report.
30     */
31    private boolean _reportMode;
32 
33    /**
34     * The number of observations that this reportable can report about
35     */
36    private long _observations;
37 
38    /**
39     * stores the last time that this reportable object was reset.
40     */
41    private TimeInstant _lastReset;
42 
43    /**
44     * schedulable (e.g. entity) corresponding to this reportable
45     * maybe null if no schedulable corresponds to this reportable  
46     */
47    private Schedulable _correspondingSchedulable = null;
48    
49    /**
50     * Creates a reportable object with all parameters required. The reportable
51     * registers itself at the given model
52     * 
53     * @param name
54     *            java.lang.String : The name of this reportable
55     * @param owner
56     *            Model : The model this reportable is associated to
57     * @param showInReport
58     *            boolean : Flag for showing the report Set it to
59     *            <code>true</code> if reportable should show up in report.
60     *            Set it to <code>false</code> if reportable should not be
61     *            shown in report.
62     * @param showInTrace
63     *            boolean : Flag for showing this reportable in trace files. Set
64     *            it to <code>true</code> if reportable should show up in
65     *            trace. Set it to <code>false</code> if reportable should not
66     *            be shown in trace.
67     */
68    public Reportable(Model owner, String name, boolean showInReport,
69            boolean showInTrace) {
70 
71        super(owner, name, showInTrace); // create the ModelComponent
72        _reportMode = showInReport; // set report flag
73        _observations = 0; // reset observations counter
74 
75        // check for non-null before registering. 
76        // Registration even if showInReport=false! 
77        // Otherwise such reportables are not reseted at the start of the experiment run! //TODO
78        if ((owner != null)) {
79            owner.register(this);
80        }
81        
82        // reset in case experiment running
83        // (for not yet running experiments, this happens automatically
84        // when the experiment is started)
85        if (owner != null && owner.getExperiment() != null && owner.getExperiment().isRunning()) { 
86            this.reset();
87        }   
88    }
89 
90    /**
91     * Override this method to return the appropriate reporter to the reportable
92     * object. To ensure that always the appropriate reporter is used, it has to
93     * be obtained from the reportable object that is of interest. All
94     * reportable objects in desmoj that want to deliver special repoters have
95     * to implement this method to hand back the correct reporter. The default
96     * implementation returns an object of type <code>StandardReporter</code>
97     * If you want to extend the framework by new concepts, you have to make
98     * sure, that classes inheriting direct or indirect from reportable have to
99     * implement this method correctly, especially by implementing an
100     * appropriate reporter first and give a reference to it back through this
101     * method.
102     * 
103     * @return desmoj.report.Reporter : A specific reporter for this reportable
104     */
105    public Reporter createReporter() {
106 
107        return new StandardReporter(this);
108 
109    }
110 
111    /**
112     * Returns the number of observations made by the reportable object.
113     * 
114     * @return long : The number of observations made by the reportable object.
115     */
116        public long getObservations() {
117 
118        return _observations;
119 
120    }
121 
122    /**
123     * Increments the number of observations made by this reportable by one (1).
124     */
125    public void incrementObservations() {
126 
127        _observations++;
128 
129    }
130 
131    /**
132     * Increments the number of observations by the amount given as parameter.
133     * 
134     * @param multiObservations
135     *            long : The number to increase the number of observations by
136     */
137    public void incrementObservations(long multiObservations) {
138 
139        _observations += multiObservations;
140 
141    }
142 
143    /**
144     * Checks if this reportable produces a report.
145     * 
146     * @return boolean : true if report will be produced, false otherwise
147     */
148    public boolean reportIsOn() {
149 
150        return _reportMode;
151 
152    }
153 
154    /**
155     * Switches report mode to prevent this reportable to produce reports.
156     */
157    public void reportOff() {
158 
159        _reportMode = false;
160 
161    }
162 
163    /**
164     * Switches report mode of this reportable on to produce a report.
165     */
166    public void reportOn() {
167 
168        _reportMode = true;
169 
170    }
171 
172    /**
173     * Resets the counter for observations made by this reportable. The point of
174     * simulation time this method was called will be stored and can be
175     * retrieved using method <code>resetAt()</code>.
176     */
177    public void reset() {
178 
179        _observations = 0; // reset observations
180        _lastReset = presentTime(); // register the reset time
181    }
182 
183    /**
184     * Shows the point in simulation time when the last reset of this reportable
185     * was made.
186     * 
187     * @return TimeInstant : The point of simulation time of the last reset.
188     */
189    public TimeInstant resetAt() {
190 
191        return _lastReset;
192    }
193 
194    /**
195     * Gets the schedulable (e.g. entity) corresponding to this reportable
196     * maybe null if no schedulable corresponds to this reportable  
197     * 
198     * @return Schedulable : schedulable (e.g. entity) corresponding to this reportable (maybe null if no schedulable corresponds to this reportable!)
199     */
200        public Schedulable getCorrespondingSchedulable() {
201                return _correspondingSchedulable;
202        }
203 
204    /**
205     * Sets the schedulable (e.g. entity) corresponding to this Reportable.
206     * Maybe null if no schedulable corresponds to this reportable.  
207     * If set, schedulable must have the same model as this reportable!
208     * A model may not have a corresponding schedulable.
209     *
210     * @param correspondingSchedulable
211     *            Schedulable : The Schedulable corresponding to this Reportable.
212     */
213        public void setCorrespondingSchedulable(Schedulable correspondingSchedulable) {
214 
215           if (this instanceof Model){
216            this.sendWarning(
217               "Model may not have a corresponding schedulable. Method call ignored.", 
218               "Reportable.setCorrespondingSchedulable(Schedulable)", 
219               "Model may not have a corresponding schedulable, because Model contains many corresponding schedulables.", 
220               "Do not set corresponding schedulable to a model!"
221            );
222            return;
223        };         
224        
225                if(correspondingSchedulable!=null && this.getModel()!=correspondingSchedulable.getModel()) {                        
226                    this.sendWarning(
227                       "Schedulable to correspond to this Reportable must belong to the same model!", 
228                       "Reportable.setCorrespondingSchedulable(Schedulable)", 
229                       "Model of Reportable and corresponding schedulable must be identical.", 
230                       "Do not set a corresponding schedulable to another model's Schedulable.");                        
231                    return;
232                }
233        this._correspondingSchedulable = correspondingSchedulable;
234        }    
235}

[all classes][desmoj.core.simulator]
EMMA 2.0.9414 (unsupported private build) (C) Vladimir Roubtsov