EMMA Coverage Report (generated Sat Apr 14 15:01:05 EDT 2012)
[all classes][org.deduced.viewer.web.shared]

COVERAGE SUMMARY FOR SOURCE FILE [Model.java]

nameclass, %method, %block, %line, %
Model.java100% (1/1)96%  (22/23)89%  (117/132)90%  (46/51)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class Model100% (1/1)96%  (22/23)89%  (117/132)90%  (46/51)
triggerSignal (String): void 0%   (0/1)0%   (0/15)0%   (0/5)
Model (): void 100% (1/1)100% (3/3)100% (1/1)
delete (): void 100% (1/1)100% (17/17)100% (7/7)
deleteChildModel (Model): void 100% (1/1)100% (5/5)100% (3/3)
deleteChildModels (): void 100% (1/1)100% (1/1)100% (1/1)
getId (): String 100% (1/1)100% (3/3)100% (1/1)
getModelRegistry (): ModelRegistry 100% (1/1)100% (3/3)100% (1/1)
getParent (): ModelContainer 100% (1/1)100% (3/3)100% (1/1)
isEventAdd (ChangeEvent): boolean 100% (1/1)100% (5/5)100% (1/1)
isEventDelete (ChangeEvent): boolean 100% (1/1)100% (5/5)100% (1/1)
isEventNameEqual (ChangeEvent, String): boolean 100% (1/1)100% (5/5)100% (1/1)
isEventRemove (ChangeEvent): boolean 100% (1/1)100% (5/5)100% (1/1)
isEventUpdate (ChangeEvent): boolean 100% (1/1)100% (5/5)100% (1/1)
notifyParentThatModelChanged (): void 100% (1/1)100% (8/8)100% (3/3)
propertyChanged (ChangeEvent): void 100% (1/1)100% (1/1)100% (1/1)
registerChildModel (Model, ModelContainer): void 100% (1/1)100% (10/10)100% (4/4)
registerChildModels (): void 100% (1/1)100% (1/1)100% (1/1)
registerModel (ModelRegistry): void 100% (1/1)100% (11/11)100% (5/5)
registrationComplete (): void 100% (1/1)100% (1/1)100% (1/1)
setId (String): void 100% (1/1)100% (4/4)100% (2/2)
setModelRegistry (ModelRegistry): void 100% (1/1)100% (4/4)100% (2/2)
setParent (ModelContainer): void 100% (1/1)100% (4/4)100% (2/2)
updateModel (Model, Model, ModelContainer): Model 100% (1/1)100% (13/13)100% (5/5)

1/**
2 *    Copyright 2005-2011 Steve McDuff d-duff@users.sourceforge.net
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.deduced.viewer.web.shared;
17 
18import java.io.Serializable;
19 
20import com.google.gwt.user.client.rpc.AsyncCallback;
21 
22/**
23 * Model is the base class for client side objects that map to a property
24 * collection. Each model has a unique ID that matches the unique ID of the
25 * collection on the server side. A model is also registered on a model
26 * registry. This is necessary for change events on the server collection to be
27 * sent back to the Model.
28 * 
29 * @author Steve McDuff
30 * 
31 */
32public abstract class Model implements Serializable
33{
34        /**
35         * remove event type name
36         */
37        public static final String REMOVE_TYPE_NAME = "remove";
38 
39        /**
40         * delete event type name
41         */
42        public static final String DELETE_TYPE_NAME = "delete";
43 
44        /**
45         * add event type name
46         */
47        public static final String ADD_TYPE_NAME = "add";
48 
49        /**
50         * update event type name
51         */
52        public static final String UPDATE_TYPE_NAME = "update";
53 
54        /**
55         * serialVersionUID
56         */
57        private static final long serialVersionUID = 3880173030440089442L;
58 
59        /**
60         * model unique ID
61         */
62        private String id;
63 
64        /**
65         * the model registry on which this model is registered
66         */
67        private transient ModelRegistry modelRegistry;
68 
69        /**
70         * current parent component
71         */
72        private transient ModelContainer parent;
73 
74        /**
75         * get Parent
76         * 
77         * @return the parent
78         */
79        public ModelContainer getParent()
80        {
81                return parent;
82        }
83 
84        /**
85         * set Parent
86         * 
87         * @param setParent the current parent
88         */
89        public void setParent(
90                ModelContainer setParent)
91        {
92                parent = setParent;
93        }
94 
95        /**
96         * notify Parent That Model Changed
97         */
98        public void notifyParentThatModelChanged()
99        {
100                if (parent != null)
101                {
102                        parent.modelChanged(this);
103                }
104        }
105 
106        /**
107         * handle a property change event. Override this method to handle events in
108         * child objects.
109         * 
110         * @param event the change event
111         */
112        public void propertyChanged(
113                @SuppressWarnings("unused") ChangeEvent event)
114        {
115        }
116 
117        /**
118         * Delete the local object and remove it from the model registry. Override
119         * this method to also delete child objects, but calling super.delete() is
120         * mandatory.
121         */
122        public void delete()
123        {
124                ModelRegistry currentRegistry = getModelRegistry();
125                if (currentRegistry != null)
126                {
127                        currentRegistry.unRegisterModel(this);
128                        setModelRegistry(null);
129                }
130 
131                deleteChildModels();
132 
133                setParent(null);
134        }
135 
136        /**
137         * delete Child Models : Override this method to implement this behavior
138         */
139        protected void deleteChildModels()
140        {
141 
142        }
143 
144        /**
145         * register Model
146         * 
147         * @param registry the model registry to use.
148         */
149        public void registerModel(
150                ModelRegistry registry)
151        {
152                setModelRegistry(registry);
153                registry.registerModel(this);
154                registerChildModels();
155                registrationComplete();
156        }
157 
158        /**
159         * registration Complete is called when the entire object structure
160         * registration is completed. Override as necessary.
161         */
162        protected void registrationComplete()
163        {
164 
165        }
166 
167        /**
168         * register Child Models. Override this method to register child models.
169         */
170        protected void registerChildModels()
171        {
172 
173        }
174 
175        /**
176         * check if the event name is equal to a specified name
177         * 
178         * @param event the event to use
179         * @param name the name to match
180         * @return true if the event name matches the desired name
181         */
182        public static boolean isEventNameEqual(
183                ChangeEvent event, String name)
184        {
185                return Utilities.equals(event.getName(), name);
186        }
187 
188        /**
189         * is Event delete
190         * 
191         * @param event the event to analyze
192         * @return true if the event is a delete event
193         */
194        public static boolean isEventDelete(
195                ChangeEvent event)
196        {
197                return Utilities.equals(event.getType(), DELETE_TYPE_NAME);
198        }
199 
200        /**
201         * is Event Update
202         * 
203         * @param event the event to analyze
204         * @return true if the event is an update event
205         */
206        public static boolean isEventUpdate(
207                ChangeEvent event)
208        {
209                return Utilities.equals(event.getType(), UPDATE_TYPE_NAME);
210        }
211 
212        /**
213         * @param event the event to analyze
214         * @return true if the event is an addition event
215         */
216        public static boolean isEventAdd(
217                ChangeEvent event)
218        {
219                return Utilities.equals(event.getType(), ADD_TYPE_NAME);
220        }
221 
222        /**
223         * @param event event to verify
224         * @return true if the event is a remove event
225         */
226        public static boolean isEventRemove(
227                ChangeEvent event)
228        {
229                return Utilities.equals(event.getType(), REMOVE_TYPE_NAME);
230        }
231 
232        /**
233         * update a model by deleting the old model and replacing it with the new
234         * one
235         * 
236         * @param <Y> the type of model to update
237         * @param newChildModel the new model
238         * @param oldModel the old model
239         * @param setParent the model parent
240         * @return the new child item list
241         */
242        public <Y extends Model> Y updateModel(
243                Y newChildModel, Y oldModel, ModelContainer setParent)
244        {
245                if (oldModel != newChildModel)
246                {
247                        if (oldModel != null)
248                        {
249                                oldModel.delete();
250                        }
251 
252                        registerChildModel(newChildModel, setParent);
253                }
254                return newChildModel;
255        }
256 
257        /**
258         * register Child Model
259         * 
260         * @param childItem the child item to register
261         * @param setParent model parent
262         */
263        public void registerChildModel(
264                Model childItem, ModelContainer setParent)
265        {
266                if (childItem != null)
267                {
268                        childItem.setParent(setParent);
269                        childItem.registerModel(getModelRegistry());
270                }
271        }
272 
273        /**
274         * delete Child Model
275         * 
276         * @param childModel the child model to delete
277         */
278        public void deleteChildModel(
279                Model childModel)
280        {
281                if (childModel != null)
282                {
283                        childModel.delete();
284                }
285        }
286 
287        /**
288         * @param setId the id to set
289         */
290        public void setId(
291                String setId)
292        {
293                id = setId;
294        }
295 
296        /**
297         * @return the id
298         */
299        public String getId()
300        {
301                return id;
302        }
303 
304        /**
305         * @param setModelRegistry the modelRegistry to set
306         */
307        public void setModelRegistry(
308                ModelRegistry setModelRegistry)
309        {
310                modelRegistry = setModelRegistry;
311        }
312 
313        /**
314         * @return the modelRegistry
315         */
316        public ModelRegistry getModelRegistry()
317        {
318                return modelRegistry;
319        }
320 
321        /**
322         * trigger Signal
323         * 
324         * @param signalName signal name to trigger
325         */
326        public void triggerSignal(
327                String signalName)
328        {
329                ModelRegistry currentModelRegistry = getModelRegistry();
330                AsyncCallback<Void> defaultVoidCallback =
331                        currentModelRegistry.getDefaultVoidCallback();
332                String currentId = getId();
333                currentModelRegistry.signalTriggered(currentId, signalName,
334                        defaultVoidCallback);
335        }
336}

[all classes][org.deduced.viewer.web.shared]
EMMA 2.0.9525 (unsupported private build) (C) Vladimir Roubtsov