1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  package fulmine.event;
17  
18  import static fulmine.util.Utils.COMMA_SPACE;
19  import static fulmine.util.Utils.EMPTY_STRING;
20  import static fulmine.util.Utils.logException;
21  import static fulmine.util.Utils.nullCheck;
22  import static fulmine.util.Utils.safeToString;
23  import static fulmine.util.Utils.string;
24  import fulmine.IAddressable;
25  import fulmine.IDomain;
26  import fulmine.IType;
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  public abstract class AbstractEvent implements IEvent
39  {
40      
41      private IEventSource source;
42  
43      
44      private IEventFrameExecution frame;
45  
46      
47      private IEventFrameExecution drivingFrame;
48  
49      private IAddressable address;
50  
51      
52  
53  
54  
55  
56      private IEvent triggerEvent;
57  
58      
59  
60  
61      public AbstractEvent()
62      {
63          super();
64      }
65  
66      public final IEventFrameExecution getDrivingFrame()
67      {
68          return this.drivingFrame;
69      }
70  
71      public final IEventFrameExecution getFrame()
72      {
73          return this.frame;
74      }
75  
76      public final IEventSource getSource()
77      {
78          return this.source;
79      }
80  
81      public final void setSource(IEventSource source)
82      {
83          this.source = source;
84          setAddress(source);
85      }
86  
87      protected final void setAddress(IAddressable address)
88      {
89          nullCheck(address, "null address");
90          this.address = address;
91      }
92  
93      public void setFrame(IEventFrameExecution frame)
94      {
95          this.frame = frame;
96      }
97  
98      public void setDrivingFrame(IEventFrameExecution drivingFrame)
99      {
100         this.drivingFrame = drivingFrame;
101     }
102 
103     @Override
104     public Object clone() throws CloneNotSupportedException
105     {
106         return super.clone();
107     }
108 
109     public String toDetailedString()
110     {
111         return getString(true);
112     }
113 
114     public String toIdentityString()
115     {
116         return getClass().getSimpleName();
117     }
118 
119     public final IDomain getDomain()
120     {
121         return this.address.getDomain();
122     }
123 
124     public final String getIdentity()
125     {
126         return this.address.getIdentity();
127     }
128 
129     public final IType getType()
130     {
131         return this.address.getType();
132     }
133 
134     public final String getAddress()
135     {
136         return this.address.getAddress();
137     }
138 
139     public void setTriggerEvent(IEvent triggerEvent)
140     {
141         this.triggerEvent = triggerEvent;
142     }
143 
144     public IEvent getTriggerEvent()
145     {
146         return this.triggerEvent;
147     }
148 
149     
150 
151 
152 
153 
154 
155 
156     protected String getAdditionalToString()
157     {
158         return EMPTY_STRING;
159     }
160 
161     private String getString(boolean detailed)
162     {
163         try
164         {
165             final String additionalToString = getAdditionalToString();
166             StringBuilder sb = new StringBuilder();
167             boolean addSeparator = false;
168             if (getSource() != null && !hideSourceFromToString())
169             {
170                 sb.append("source=").append(
171                     (detailed ? getSource().toDetailedString()
172                         : getSource().toIdentityString()));
173                 addSeparator = true;
174             }
175             if (getFrame() != null)
176             {
177                 if (addSeparator)
178                 {
179                     sb.append(COMMA_SPACE);
180                 }
181                 sb.append("frame=").append(getFrame());
182                 addSeparator = true;
183             }
184             if (getDrivingFrame() != null)
185             {
186                 if (addSeparator)
187                 {
188                     sb.append(COMMA_SPACE);
189                 }
190                 sb.append("drivingFrame=").append(getDrivingFrame());
191                 addSeparator = true;
192             }
193             if (additionalToString != EMPTY_STRING)
194             {
195                 if (addSeparator)
196                 {
197                     sb.append(COMMA_SPACE);
198                 }
199                 sb.append(additionalToString);
200             }
201             return string(this, sb.toString());
202         }
203         catch (Exception e)
204         {
205             String address = safeToString(this.address);
206             logException(null, address, e);
207             return string(this, address);
208         }
209 
210     }
211 
212     
213 
214 
215 
216 
217 
218 
219     protected boolean hideSourceFromToString()
220     {
221         return false;
222     }
223 
224     @Override
225     public final String toString()
226     {
227         return getString(false);
228     }
229 
230     @Override
231     public final int hashCode()
232     {
233         return super.hashCode();
234     }
235 
236     @Override
237     public final boolean equals(Object obj)
238     {
239         return super.equals(obj);
240     }
241 }