Composite entity pattern
- 17 min read
- 3 chapters
Related on Lably
Through Java (programming language)
Structure
There are a number of strategies to implement composite entity pattern. This pattern mainly composites of composite entity, coarse-grained object, and dependent objects.
Composite entity component
Composite entity is the coarse-grained entity bean which may be the coarse-grained object, or may contain a reference to the coarse-grained object.
Coarse-grained object
A coarse-grained object is an object with its own life cycle manages its own relationships to other objects. It can be an object contained in the composite entity, or, composite entity itself can be the coarse-grained object which holds dependent objects.
Dependent objects
It is an object, which can contain other dependent objects (there may be a tree of objects within the composite entity), that depends on the coarse-grained object and has its life cycle managed by the coarse-grained object.
Sign in to keep reading
2 more chapters are free with a Lably account.
Consequences
According to Oracle description of the pattern, consequences include eliminating inter-entity relationships, improving manageability by reducing entity beans, improving network performance, reducing database schema dependency, increasing object granularity, facilitating composite transfer object creation and overhead of multi-level dependent object graphs.
Drawbacks
The fatal drawback is the requirement of bean-managed persistent (BMP) bean. This involves more work for developers, and create some problems as follows:
- materializing all the data in a coarse-grained entity whenever it is accessed, is unacceptably expensive
- In Java, implementation of the ejbStore() method needs to be smart enough to avoid issuing all the updates required to persist the entire state of the object, unless the data has changed in all the persistent objects.
Composite entity pattern can only be implemented using BMP or by adding more hand-coded persistence logic to container managed persistence (CMP) beans. These both approaches reduce the maintainability.
Sample code
Sample code for a Professional Service Automation application (PSA) in which the resource object is implemented via composite entity pattern, may look like as follows (entity implements coarse-grained object):
<span id="mwQA"></span><span class="kn" id="mwQQ">package</span><span class="w" id="mwQg"> </span><span class="nn" id="mwQw">corepatterns.apps.psa.ejb</span><span class="p" id="mwRA">;</span> <span class="kn" id="mwRQ">import</span><span class="w" id="mwRg"> </span><span class="nn" id="mwRw">corepatterns.apps.psa.core.*</span><span class="p" id="mwSA">;</span> <span class="kn" id="mwSQ">import</span><span class="w" id="mwSg"> </span><span class="nn" id="mwSw">corepatterns.apps.psa.dao.*</span><span class="p" id="mwTA">;</span> <span class="kn" id="mwTQ">import</span><span class="w" id="mwTg"> </span><span class="nn" id="mwTw">java.sql.*</span><span class="p" id="mwUA">;</span> <span class="kn" id="mwUQ">import</span><span class="w" id="mwUg"> </span><span class="nn" id="mwUw">javax.sql.*</span><span class="p" id="mwVA">;</span> <span class="kn" id="mwVQ">import</span><span class="w" id="mwVg"> </span><span class="nn" id="mwVw">java.util.*</span><span class="p" id="mwWA">;</span> <span class="kn" id="mwWQ">import</span><span class="w" id="mwWg"> </span><span class="nn" id="mwWw">javax.ejb.*</span><span class="p" id="mwXA">;</span> <span class="kn" id="mwXQ">import</span><span class="w" id="mwXg"> </span><span class="nn" id="mwXw">javax.naming.*</span><span class="p" id="mwYA">;</span> <span class="kd" id="mwYQ">public</span><span class="w" id="mwYg"> </span><span class="kd" id="mwYw">class</span> <span class="nc" id="mwZA">ResourceEntity</span><span class="w" id="mwZQ"> </span><span class="kd" id="mwZg">implements</span><span class="w" id="mwZw"> </span><span class="n" id="mwaA">EntityBean</span><span class="w" id="mwaQ"> </span><span class="p" id="mwag">{</span> <span class="w" id="mwaw"> </span><span class="kd" id="mwbA">public</span><span class="w" id="mwbQ"> </span><span class="n" id="mwbg">String</span><span class="w" id="mwbw"> </span><span class="n" id="mwcA">employeeId</span><span class="p" id="mwcQ">;</span> <span class="w" id="mwcg"> </span><span class="kd" id="mwcw">public</span><span class="w" id="mwdA"> </span><span class="n" id="mwdQ">String</span><span class="w" id="mwdg"> </span><span class="n" id="mwdw">lastName</span><span class="p" id="mweA">;</span> <span class="w" id="mweQ"> </span><span class="kd" id="mweg">public</span><span class="w" id="mwew"> </span><span class="n" id="mwfA">String</span><span class="w" id="mwfQ"> </span><span class="n" id="mwfg">firstName</span><span class="p" id="mwfw">;</span> <span class="w" id="mwgA"> </span><span class="kd" id="mwgQ">public</span><span class="w" id="mwgg"> </span><span class="n" id="mwgw">String</span><span class="w" id="mwhA"> </span><span class="n" id="mwhQ">departmentId</span><span class="p" id="mwhg">;</span> <span class="w" id="mwhw"> </span><span class="kd" id="mwiA">public</span><span class="w" id="mwiQ"> </span><span class="n" id="mwig">String</span><span class="w" id="mwiw"> </span><span class="n" id="mwjA">practiceGroup</span><span class="p" id="mwjQ">;</span> <span class="w" id="mwjg"> </span><span class="kd" id="mwjw">public</span><span class="w" id="mwkA"> </span><span class="n" id="mwkQ">String</span><span class="w" id="mwkg"> </span><span class="n" id="mwkw">title</span><span class="p" id="mwlA">;</span> <span class="w" id="mwlQ"> </span><span class="kd" id="mwlg">public</span><span class="w" id="mwlw"> </span><span class="n" id="mwmA">String</span><span class="w" id="mwmQ"> </span><span class="n" id="mwmg">grade</span><span class="p" id="mwmw">;</span> <span class="w" id="mwnA"> </span><span class="kd" id="mwnQ">public</span><span class="w" id="mwng"> </span><span class="n" id="mwnw">String</span><span class="w" id="mwoA"> </span><span class="n" id="mwoQ">email</span><span class="p" id="mwog">;</span> <span class="w" id="mwow"> </span><span class="kd" id="mwpA">public</span><span class="w" id="mwpQ"> </span><span class="n" id="mwpg">String</span><span class="w" id="mwpw"> </span><span class="n" id="mwqA">phone</span><span class="p" id="mwqQ">;</span> <span class="w" id="mwqg"> </span><span class="kd" id="mwqw">public</span><span class="w" id="mwrA"> </span><span class="n" id="mwrQ">String</span><span class="w" id="mwrg"> </span><span class="n" id="mwrw">cell</span><span class="p" id="mwsA">;</span> <span class="w" id="mwsQ"> </span><span class="kd" id="mwsg">public</span><span class="w" id="mwsw"> </span><span class="n" id="mwtA">String</span><span class="w" id="mwtQ"> </span><span class="n" id="mwtg">pager</span><span class="p" id="mwtw">;</span> <span class="w" id="mwuA"> </span><span class="kd" id="mwuQ">public</span><span class="w" id="mwug"> </span><span class="n" id="mwuw">String</span><span class="w" id="mwvA"> </span><span class="n" id="mwvQ">managerId</span><span class="p" id="mwvg">;</span> <span class="w" id="mwvw"> </span> <span class="w" id="mwwA"> </span><span class="c1" id="mwwQ">// Collection of BlockOutTime Dependent objects</span> <span class="w" id="mwwg"> </span><span class="kd" id="mwww">public</span><span class="w" id="mwxA"> </span><span class="n" id="mwxQ">Collection</span><span class="w" id="mwxg"> </span><span class="n" id="mwxw">blockoutTimes</span><span class="p" id="mwyA">;</span> <span class="w" id="mwyQ"> </span><span class="c1" id="mwyg">// Collection of SkillSet Dependent objects</span> <span class="w" id="mwyw"> </span><span class="kd" id="mwzA">public</span><span class="w" id="mwzQ"> </span><span class="n" id="mwzg">Collection</span><span class="w" id="mwzw"> </span><span class="n" id="mw0A">skillSets</span><span class="p" id="mw0Q">;</span> <span class="w" id="mw0g"> </span><span class="p" id="mw0w">...</span> <span class="w" id="mw1A"> </span><span class="kd" id="mw1Q">private</span><span class="w" id="mw1g"> </span><span class="n" id="mw1w">EntityContext</span><span class="w" id="mw2A"> </span><span class="n" id="mw2Q">context</span><span class="p" id="mw2g">;</span> <span class="c1" id="mw2w">// Entity Bean methods implementation</span> <span class="kd" id="mw3A">public</span><span class="w" id="mw3Q"> </span><span class="n" id="mw3g">String</span><span class="w" id="mw3w"> </span><span class="nf" id="mw4A">ejbCreate</span><span class="p" id="mw4Q">(</span><span class="n" id="mw4g">ResourceTO</span><span class="w" id="mw4w"> </span><span class="n" id="mw5A">resource</span><span class="p" id="mw5Q">)</span><span class="w" id="mw5g"> </span><span class="kd" id="mw5w">throws</span><span class="w" id="mw6A"> </span> <span class="w" id="mw6Q"> </span><span class="n" id="mw6g">CreateException</span><span class="w" id="mw6w"> </span><span class="p" id="mw7A">{</span> <span class="w" id="mw7Q"> </span><span class="k" id="mw7g">try</span><span class="w" id="mw7w"> </span><span class="p" id="mw8A">{</span> <span class="w" id="mw8Q"> </span><span class="k" id="mw8g">this</span><span class="p" id="mw8w">.</span><span class="na" id="mw9A">employeeId</span><span class="w" id="mw9Q"> </span><span class="o" id="mw9g">=</span><span class="w" id="mw9w"> </span><span class="n" id="mw-A">resource</span><span class="p" id="mw-Q">.</span><span class="na" id="mw-g">employeeId</span><span class="p" id="mw-w">;</span> <span class="w" id="mw_A"> </span><span class="n" id="mw_Q">setResourceData</span><span class="p" id="mw_g">(</span><span class="n" id="mw_w">resource</span><span class="p" id="mwAQA">);</span> <span class="w" id="mwAQE"> </span><span class="n" id="mwAQI">getResourceDAO</span><span class="p" id="mwAQM">().</span><span class="na" id="mwAQQ">create</span><span class="p" id="mwAQU">(</span><span class="n" id="mwAQY">resource</span><span class="p" id="mwAQc">);</span> <span class="w" id="mwAQg"> </span><span class="p" id="mwAQk">}</span><span class="w" id="mwAQo"> </span><span class="k" id="mwAQs">catch</span><span class="w" id="mwAQw"> </span><span class="p" id="mwAQ0">(</span><span class="n" id="mwAQ4">Exception</span><span class="w" id="mwAQ8"> </span><span class="n" id="mwARA">ex</span><span class="p" id="mwARE">)</span><span class="w" id="mwARI"> </span><span class="p" id="mwARM">{</span> <span class="w" id="mwARQ"> </span><span class="k" id="mwARU">throw</span><span class="w" id="mwARY"> </span><span class="k" id="mwARc">new</span><span class="w" id="mwARg"> </span><span class="n" id="mwARk">EJBException</span><span class="p" id="mwARo">(</span><span class="s" id="mwARs">"Reason:"</span><span class="w" id="mwARw"> </span><span class="o" id="mwAR0">+</span><span class="w" id="mwAR4"> </span><span class="p" id="mwAR8">...);</span> <span class="w" id="mwASA"> </span><span class="p" id="mwASE">}</span> <span class="w" id="mwASI"> </span><span class="k" id="mwASM">return</span><span class="w" id="mwASQ"> </span><span class="k" id="mwASU">this</span><span class="p" id="mwASY">.</span><span class="na" id="mwASc">employeeId</span><span class="p" id="mwASg">;</span> <span class="p" id="mwASk">}</span> <span class="w" id="mwASo"> </span> <span class="kd" id="mwASs">public</span><span class="w" id="mwASw"> </span><span class="n" id="mwAS0">String</span><span class="w" id="mwAS4"> </span><span class="nf" id="mwAS8">ejbFindByPrimaryKey</span><span class="p" id="mwATA">(</span><span class="n" id="mwATE">String</span><span class="w" id="mwATI"> </span><span class="n" id="mwATM">primaryKey</span><span class="p" id="mwATQ">)</span><span class="w" id="mwATU"> </span> <span class="w" id="mwATY"> </span><span class="kd" id="mwATc">throws</span><span class="w" id="mwATg"> </span><span class="n" id="mwATk">FinderException</span><span class="w" id="mwATo"> </span><span class="p" id="mwATs">{</span> <span class="w" id="mwATw"> </span><span class="kt" id="mwAT0">boolean</span><span class="w" id="mwAT4"> </span><span class="n" id="mwAT8">result</span><span class="p" id="mwAUA">;</span> <span class="w" id="mwAUE"> </span><span class="k" id="mwAUI">try</span><span class="w" id="mwAUM"> </span><span class="p" id="mwAUQ">{</span> <span class="w" id="mwAUU"> </span><span class="n" id="mwAUY">ResourceDAO</span><span class="w" id="mwAUc"> </span><span class="n" id="mwAUg">resourceDAO</span><span class="w" id="mwAUk"> </span><span class="o" id="mwAUo">=</span><span class="w" id="mwAUs"> </span><span class="n" id="mwAUw">getResourceDAO</span><span class="p" id="mwAU0">();</span> <span class="w" id="mwAU4"> </span><span class="n" id="mwAU8">result</span><span class="w" id="mwAVA"> </span><span class="o" id="mwAVE">=</span><span class="w" id="mwAVI"> </span> <span class="w" id="mwAVM"> </span><span class="n" id="mwAVQ">resourceDAO</span><span class="p" id="mwAVU">.</span><span class="na" id="mwAVY">selectByPrimaryKey</span><span class="p" id="mwAVc">(</span><span class="n" id="mwAVg">primaryKey</span><span class="p" id="mwAVk">);</span> <span class="w" id="mwAVo"> </span><span class="p" id="mwAVs">}</span><span class="w" id="mwAVw"> </span><span class="k" id="mwAV0">catch</span><span class="w" id="mwAV4"> </span><span class="p" id="mwAV8">(</span><span class="n" id="mwAWA">Exception</span><span class="w" id="mwAWE"> </span><span class="n" id="mwAWI">ex</span><span class="p" id="mwAWM">)</span><span class="w" id="mwAWQ"> </span><span class="p" id="mwAWU">{</span> <span class="w" id="mwAWY"> </span><span class="k" id="mwAWc">throw</span><span class="w" id="mwAWg"> </span><span class="k" id="mwAWk">new</span><span class="w" id="mwAWo"> </span><span class="n" id="mwAWs">EJBException</span><span class="p" id="mwAWw">(</span><span class="s" id="mwAW0">"Reason:"</span><span class="w" id="mwAW4"> </span><span class="o" id="mwAW8">+</span><span class="w" id="mwAXA"> </span><span class="p" id="mwAXE">...);</span> <span class="w" id="mwAXI"> </span><span class="p" id="mwAXM">}</span> <span class="w" id="mwAXQ"> </span><span class="k" id="mwAXU">if</span><span class="w" id="mwAXY"> </span><span class="p" id="mwAXc">(</span><span class="n" id="mwAXg">result</span><span class="p" id="mwAXk">)</span><span class="w" id="mwAXo"> </span><span class="p" id="mwAXs">{</span> <span class="w" id="mwAXw"> </span><span class="k" id="mwAX0">return</span><span class="w" id="mwAX4"> </span><span class="n" id="mwAX8">primaryKey</span><span class="p" id="mwAYA">;</span> <span class="w" id="mwAYE"> </span><span class="p" id="mwAYI">}</span> <span class="w" id="mwAYM"> </span><span class="k" id="mwAYQ">else</span><span class="w" id="mwAYU"> </span><span class="p" id="mwAYY">{</span> <span class="w" id="mwAYc"> </span><span class="k" id="mwAYg">throw</span><span class="w" id="mwAYk"> </span><span class="k" id="mwAYo">new</span><span class="w" id="mwAYs"> </span><span class="n" id="mwAYw">ObjectNotFoundException</span><span class="p" id="mwAY0">(...);</span> <span class="w" id="mwAY4"> </span><span class="p" id="mwAY8">}</span> <span class="w" id="mwAZA"> </span><span class="p" id="mwAZE">}</span> <span class="w" id="mwAZI"> </span> <span class="w" id="mwAZM"> </span><span class="kd" id="mwAZQ">public</span><span class="w" id="mwAZU"> </span><span class="kt" id="mwAZY">void</span><span class="w" id="mwAZc"> </span><span class="nf" id="mwAZg">ejbRemove</span><span class="p" id="mwAZk">()</span><span class="w" id="mwAZo"> </span><span class="p" id="mwAZs">{</span> <span class="w" id="mwAZw"> </span><span class="k" id="mwAZ0">try</span><span class="w" id="mwAZ4"> </span><span class="p" id="mwAZ8">{</span> <span class="w" id="mwAaA"> </span><span class="c1" id="mwAaE">// Remove dependent objects</span> <span class="w" id="mwAaI"> </span><span class="k" id="mwAaM">if</span><span class="w" id="mwAaQ"> </span><span class="p" id="mwAaU">(</span><span class="k" id="mwAaY">this</span><span class="p" id="mwAac">.</span><span class="na" id="mwAag">skillSets</span><span class="w" id="mwAak"> </span><span class="o" id="mwAao">!=</span><span class="w" id="mwAas"> </span><span class="kc" id="mwAaw">null</span><span class="p" id="mwAa0">)</span><span class="w" id="mwAa4"> </span><span class="p" id="mwAa8">{</span> <span class="w" id="mwAbA"> </span><span class="n" id="mwAbE">SkillSetDAO</span><span class="w" id="mwAbI"> </span><span class="n" id="mwAbM">skillSetDAO</span><span class="w" id="mwAbQ"> </span><span class="o" id="mwAbU">=</span><span class="w" id="mwAbY"> </span><span class="n" id="mwAbc">getSkillSetDAO</span><span class="p" id="mwAbg">();</span> <span class="w" id="mwAbk"> </span><span class="n" id="mwAbo">skillSetDAO</span><span class="p" id="mwAbs">.</span><span class="na" id="mwAbw">setResourceID</span><span class="p" id="mwAb0">(</span><span class="n" id="mwAb4">employeeId</span><span class="p" id="mwAb8">);</span> <span class="w" id="mwAcA"> </span><span class="n" id="mwAcE">skillSetDAO</span><span class="p" id="mwAcI">.</span><span class="na" id="mwAcM">deleteAll</span><span class="p" id="mwAcQ">();</span> <span class="w" id="mwAcU"> </span><span class="n" id="mwAcY">skillSets</span><span class="w" id="mwAcc"> </span><span class="o" id="mwAcg">=</span><span class="w" id="mwAck"> </span><span class="kc" id="mwAco">null</span><span class="p" id="mwAcs">;</span> <span class="w" id="mwAcw"> </span><span class="p" id="mwAc0">}</span> <span class="w" id="mwAc4"> </span><span class="k" id="mwAc8">if</span><span class="w" id="mwAdA"> </span><span class="p" id="mwAdE">(</span><span class="k" id="mwAdI">this</span><span class="p" id="mwAdM">.</span><span class="na" id="mwAdQ">blockoutTime</span><span class="w" id="mwAdU"> </span><span class="o" id="mwAdY">!=</span><span class="w" id="mwAdc"> </span><span class="kc" id="mwAdg">null</span><span class="p" id="mwAdk">)</span><span class="w" id="mwAdo"> </span><span class="p" id="mwAds">{</span> <span class="w" id="mwAdw"> </span><span class="n" id="mwAd0">BlockOutTimeDAO</span><span class="w" id="mwAd4"> </span><span class="n" id="mwAd8">blockouttimeDAO</span><span class="w" id="mwAeA"> </span><span class="o" id="mwAeE">=</span><span class="w" id="mwAeI"> </span> <span class="w" id="mwAeM"> </span><span class="n" id="mwAeQ">getBlockOutTimeDAO</span><span class="p" id="mwAeU">();</span> <span class="w" id="mwAeY"> </span><span class="n" id="mwAec">blockouttimeDAO</span><span class="p" id="mwAeg">.</span><span class="na" id="mwAek">setResourceID</span><span class="p" id="mwAeo">(</span><span class="n" id="mwAes">employeeId</span><span class="p" id="mwAew">);</span> <span class="w" id="mwAe0"> </span><span class="n" id="mwAe4">blockouttimeDAO</span><span class="p" id="mwAe8">.</span><span class="na" id="mwAfA">deleteAll</span><span class="p" id="mwAfE">();</span> <span class="w" id="mwAfI"> </span><span class="n" id="mwAfM">blockOutTimes</span><span class="w" id="mwAfQ"> </span><span class="o" id="mwAfU">=</span><span class="w" id="mwAfY"> </span><span class="kc" id="mwAfc">null</span><span class="p" id="mwAfg">;</span> <span class="w" id="mwAfk"> </span><span class="p" id="mwAfo">}</span> <span class="w" id="mwAfs"> </span><span class="c1" id="mwAfw">// Remove the resource from the persistent store</span> <span class="w" id="mwAf0"> </span><span class="n" id="mwAf4">ResourceDAO</span><span class="w" id="mwAf8"> </span><span class="n" id="mwAgA">resourceDAO</span><span class="w" id="mwAgE"> </span><span class="o" id="mwAgI">=</span><span class="w" id="mwAgM"> </span><span class="k" id="mwAgQ">new</span><span class="w" id="mwAgU"> </span> <span class="w" id="mwAgY"> </span><span class="n" id="mwAgc">ResourceDAO</span><span class="p" id="mwAgg">(</span><span class="n" id="mwAgk">employeeId</span><span class="p" id="mwAgo">);</span> <span class="w" id="mwAgs"> </span><span class="n" id="mwAgw">resourceDAO</span><span class="p" id="mwAg0">.</span><span class="na" id="mwAg4">delete</span><span class="p" id="mwAg8">();</span> <span class="w" id="mwAhA"> </span><span class="p" id="mwAhE">}</span><span class="w" id="mwAhI"> </span><span class="k" id="mwAhM">catch</span><span class="w" id="mwAhQ"> </span><span class="p" id="mwAhU">(</span><span class="n" id="mwAhY">ResourceException</span><span class="w" id="mwAhc"> </span><span class="n" id="mwAhg">ex</span><span class="p" id="mwAhk">)</span><span class="w" id="mwAho"> </span><span class="p" id="mwAhs">{</span> <span class="w" id="mwAhw"> </span><span class="k" id="mwAh0">throw</span><span class="w" id="mwAh4"> </span><span class="k" id="mwAh8">new</span><span class="w" id="mwAiA"> </span><span class="n" id="mwAiE">EJBException</span><span class="p" id="mwAiI">(</span><span class="s" id="mwAiM">"Reason:"</span><span class="o" id="mwAiQ">+</span><span class="p" id="mwAiU">...);</span> <span class="w" id="mwAiY"> </span><span class="p" id="mwAic">}</span><span class="w" id="mwAig"> </span><span class="k" id="mwAik">catch</span><span class="w" id="mwAio"> </span><span class="p" id="mwAis">(</span><span class="n" id="mwAiw">BlockOutTimeException</span><span class="w" id="mwAi0"> </span><span class="n" id="mwAi4">ex</span><span class="p" id="mwAi8">)</span><span class="w" id="mwAjA"> </span><span class="p" id="mwAjE">{</span> <span class="w" id="mwAjI"> </span><span class="k" id="mwAjM">throw</span><span class="w" id="mwAjQ"> </span><span class="k" id="mwAjU">new</span><span class="w" id="mwAjY"> </span><span class="n" id="mwAjc">EJBException</span><span class="p" id="mwAjg">(</span><span class="s" id="mwAjk">"Reason:"</span><span class="o" id="mwAjo">+</span><span class="p" id="mwAjs">...);</span> <span class="w" id="mwAjw"> </span><span class="p" id="mwAj0">}</span><span class="w" id="mwAj4"> </span><span class="k" id="mwAj8">catch</span><span class="w" id="mwAkA"> </span><span class="p" id="mwAkE">(</span><span class="n" id="mwAkI">Exception</span><span class="w" id="mwAkM"> </span><span class="n" id="mwAkQ">exception</span><span class="p" id="mwAkU">)</span><span class="w" id="mwAkY"> </span><span class="p" id="mwAkc">{</span> <span class="w" id="mwAkg"> </span><span class="p" id="mwAkk">...</span> <span class="w" id="mwAko"> </span><span class="p" id="mwAks">}</span> <span class="w" id="mwAkw"> </span><span class="p" id="mwAk0">}</span> <span class="w" id="mwAk4"> </span><span class="kd" id="mwAk8">public</span><span class="w" id="mwAlA"> </span><span class="kt" id="mwAlE">void</span><span class="w" id="mwAlI"> </span><span class="nf" id="mwAlM">setEntityContext</span><span class="p" id="mwAlQ">(</span><span class="n" id="mwAlU">EntityContext</span><span class="w" id="mwAlY"> </span><span class="n" id="mwAlc">context</span><span class="p" id="mwAlg">)</span><span class="w" id="mwAlk"> </span> <span class="w" id="mwAlo"> </span><span class="p" id="mwAls">{</span> <span class="w" id="mwAlw"> </span><span class="k" id="mwAl0">this</span><span class="p" id="mwAl4">.</span><span class="na" id="mwAl8">context</span><span class="w" id="mwAmA"> </span><span class="o" id="mwAmE">=</span><span class="w" id="mwAmI"> </span><span class="n" id="mwAmM">context</span><span class="p" id="mwAmQ">;</span> <span class="w" id="mwAmU"> </span><span class="p" id="mwAmY">}</span> <span class="w" id="mwAmc"> </span> <span class="w" id="mwAmg"> </span><span class="kd" id="mwAmk">public</span><span class="w" id="mwAmo"> </span><span class="kt" id="mwAms">void</span><span class="w" id="mwAmw"> </span><span class="nf" id="mwAm0">unsetEntityContext</span><span class="p" id="mwAm4">()</span><span class="w" id="mwAm8"> </span><span class="p" id="mwAnA">{</span> <span class="w" id="mwAnE"> </span><span class="n" id="mwAnI">context</span><span class="w" id="mwAnM"> </span><span class="o" id="mwAnQ">=</span><span class="w" id="mwAnU"> </span><span class="kc" id="mwAnY">null</span><span class="p" id="mwAnc">;</span> <span class="w" id="mwAng"> </span><span class="p" id="mwAnk">}</span> <span class="w" id="mwAno"> </span> <span class="w" id="mwAns"> </span><span class="kd" id="mwAnw">public</span><span class="w" id="mwAn0"> </span><span class="kt" id="mwAn4">void</span><span class="w" id="mwAn8"> </span><span class="nf" id="mwAoA">ejbActivate</span><span class="p" id="mwAoE">()</span><span class="w" id="mwAoI"> </span><span class="p" id="mwAoM">{</span> <span class="w" id="mwAoQ"> </span><span class="n" id="mwAoU">employeeId</span><span class="w" id="mwAoY"> </span><span class="o" id="mwAoc">=</span><span class="w" id="mwAog"> </span><span class="p" id="mwAok">(</span><span class="n" id="mwAoo">String</span><span class="p" id="mwAos">)</span><span class="n" id="mwAow">context</span><span class="p" id="mwAo0">.</span><span class="na" id="mwAo4">getPrimaryKey</span><span class="p" id="mwAo8">();</span> <span class="w" id="mwApA"> </span><span class="p" id="mwApE">}</span> <span class="w" id="mwApI"> </span> <span class="w" id="mwApM"> </span><span class="kd" id="mwApQ">public</span><span class="w" id="mwApU"> </span><span class="kt" id="mwApY">void</span><span class="w" id="mwApc"> </span><span class="nf" id="mwApg">ejbPassivate</span><span class="p" id="mwApk">()</span><span class="w" id="mwApo"> </span><span class="p" id="mwAps">{</span> <span class="w" id="mwApw"> </span><span class="n" id="mwAp0">employeeId</span><span class="w" id="mwAp4"> </span><span class="o" id="mwAp8">=</span><span class="w" id="mwAqA"> </span><span class="kc" id="mwAqE">null</span><span class="p" id="mwAqI">;</span> <span class="w" id="mwAqM"> </span><span class="p" id="mwAqQ">}</span> <span class="w" id="mwAqU"> </span> <span class="w" id="mwAqY"> </span><span class="kd" id="mwAqc">public</span><span class="w" id="mwAqg"> </span><span class="kt" id="mwAqk">void</span><span class="w" id="mwAqo"> </span><span class="nf" id="mwAqs">ejbLoad</span><span class="p" id="mwAqw">()</span><span class="w" id="mwAq0"> </span><span class="p" id="mwAq4">{</span> <span class="w" id="mwAq8"> </span><span class="k" id="mwArA">try</span><span class="w" id="mwArE"> </span><span class="p" id="mwArI">{</span> <span class="w" id="mwArM"> </span><span class="c1" id="mwArQ">// load the resource info from</span> <span class="w" id="mwArU"> </span><span class="n" id="mwArY">ResourceDAO</span><span class="w" id="mwArc"> </span><span class="n" id="mwArg">resourceDAO</span><span class="w" id="mwArk"> </span><span class="o" id="mwAro">=</span><span class="w" id="mwArs"> </span><span class="n" id="mwArw">getResourceDAO</span><span class="p" id="mwAr0">();</span> <span class="w" id="mwAr4"> </span><span class="n" id="mwAr8">setResourceData</span><span class="p" id="mwAsA">((</span><span class="n" id="mwAsE">ResourceTO</span><span class="p" id="mwAsI">)</span><span class="w" id="mwAsM"> </span> <span class="w" id="mwAsQ"> </span><span class="n" id="mwAsU">resourceDAO</span><span class="p" id="mwAsY">.</span><span class="na" id="mwAsc">load</span><span class="p" id="mwAsg">(</span><span class="n" id="mwAsk">employeeId</span><span class="p" id="mwAso">));</span> <span class="w" id="mwAss"> </span> <span class="w" id="mwAsw"> </span><span class="c1" id="mwAs0">// Load other dependent objects, if necessary</span> <span class="w" id="mwAs4"> </span><span class="p" id="mwAs8">...</span> <span class="w" id="mwAtA"> </span><span class="p" id="mwAtE">}</span><span class="w" id="mwAtI"> </span><span class="k" id="mwAtM">catch</span><span class="w" id="mwAtQ"> </span><span class="p" id="mwAtU">(</span><span class="n" id="mwAtY">Exception</span><span class="w" id="mwAtc"> </span><span class="n" id="mwAtg">ex</span><span class="p" id="mwAtk">)</span><span class="w" id="mwAto"> </span><span class="p" id="mwAts">{</span> <span class="w" id="mwAtw"> </span><span class="k" id="mwAt0">throw</span><span class="w" id="mwAt4"> </span><span class="k" id="mwAt8">new</span><span class="w" id="mwAuA"> </span><span class="n" id="mwAuE">EJBException</span><span class="p" id="mwAuI">(</span><span class="s" id="mwAuM">"Reason:"</span><span class="w" id="mwAuQ"> </span><span class="o" id="mwAuU">+</span><span class="w" id="mwAuY"> </span><span class="p" id="mwAuc">...);</span> <span class="w" id="mwAug"> </span><span class="p" id="mwAuk">}</span> <span class="w" id="mwAuo"> </span><span class="p" id="mwAus">}</span> <span class="w" id="mwAuw"> </span> <span class="w" id="mwAu0"> </span><span class="kd" id="mwAu4">public</span><span class="w" id="mwAu8"> </span><span class="kt" id="mwAvA">void</span><span class="w" id="mwAvE"> </span><span class="nf" id="mwAvI">ejbStore</span><span class="p" id="mwAvM">()</span><span class="w" id="mwAvQ"> </span><span class="p" id="mwAvU">{</span> <span class="w" id="mwAvY"> </span><span class="k" id="mwAvc">try</span><span class="w" id="mwAvg"> </span><span class="p" id="mwAvk">{</span> <span class="w" id="mwAvo"> </span><span class="c1" id="mwAvs">// Store resource information</span> <span class="w" id="mwAvw"> </span><span class="n" id="mwAv0">getResourceDAO</span><span class="p" id="mwAv4">().</span><span class="na" id="mwAv8">update</span><span class="p" id="mwAwA">(</span><span class="n" id="mwAwE">getResourceData</span><span class="p" id="mwAwI">());</span> <span class="w" id="mwAwM"> </span><span class="c1" id="mwAwQ">// Store dependent objects as needed</span> <span class="w" id="mwAwU"> </span><span class="p" id="mwAwY">...</span> <span class="w" id="mwAwc"> </span><span class="p" id="mwAwg">}</span><span class="w" id="mwAwk"> </span><span class="k" id="mwAwo">catch</span><span class="w" id="mwAws"> </span><span class="p" id="mwAww">(</span><span class="n" id="mwAw0">SkillSetException</span><span class="w" id="mwAw4"> </span><span class="n" id="mwAw8">ex</span><span class="p" id="mwAxA">)</span><span class="w" id="mwAxE"> </span><span class="p" id="mwAxI">{</span> <span class="w" id="mwAxM"> </span><span class="k" id="mwAxQ">throw</span><span class="w" id="mwAxU"> </span><span class="k" id="mwAxY">new</span><span class="w" id="mwAxc"> </span><span class="n" id="mwAxg">EJBException</span><span class="p" id="mwAxk">(</span><span class="s" id="mwAxo">"Reason:"</span><span class="w" id="mwAxs"> </span><span class="o" id="mwAxw">+</span><span class="w" id="mwAx0"> </span><span class="p" id="mwAx4">...);</span> <span class="w" id="mwAx8"> </span><span class="p" id="mwAyA">}</span><span class="w" id="mwAyE"> </span><span class="k" id="mwAyI">catch</span><span class="w" id="mwAyM"> </span><span class="p" id="mwAyQ">(</span><span class="n" id="mwAyU">BlockOutTimeException</span><span class="w" id="mwAyY"> </span><span class="n" id="mwAyc">ex</span><span class="p" id="mwAyg">)</span><span class="w" id="mwAyk"> </span><span class="p" id="mwAyo">{</span> <span class="w" id="mwAys"> </span><span class="k" id="mwAyw">throw</span><span class="w" id="mwAy0"> </span><span class="k" id="mwAy4">new</span><span class="w" id="mwAy8"> </span><span class="n" id="mwAzA">EJBException</span><span class="p" id="mwAzE">(</span><span class="s" id="mwAzI">"Reason:"</span><span class="w" id="mwAzM"> </span><span class="o" id="mwAzQ">+</span><span class="w" id="mwAzU"> </span><span class="p" id="mwAzY">...);</span> <span class="w" id="mwAzc"> </span><span class="p" id="mwAzg">}</span> <span class="w" id="mwAzk"> </span><span class="p" id="mwAzo">...</span> <span class="w" id="mwAzs"> </span><span class="p" id="mwAzw">}</span> <span class="w" id="mwAz0"> </span><span class="kd" id="mwAz4">public</span><span class="w" id="mwAz8"> </span><span class="kt" id="mwA0A">void</span><span class="w" id="mwA0E"> </span><span class="nf" id="mwA0I">ejbPostCreate</span><span class="p" id="mwA0M">(</span><span class="n" id="mwA0Q">ResourceTO</span><span class="w" id="mwA0U"> </span><span class="n" id="mwA0Y">resource</span><span class="p" id="mwA0c">)</span><span class="w" id="mwA0g"> </span><span class="p" id="mwA0k">{</span> <span class="w" id="mwA0o"> </span><span class="p" id="mwA0s">}</span> <span class="w" id="mwA0w"> </span><span class="c1" id="mwA00">// Method to Get Resource Transfer Object</span> <span class="w" id="mwA04"> </span><span class="kd" id="mwA08">public</span><span class="w" id="mwA1A"> </span><span class="n" id="mwA1E">ResourceTO</span><span class="w" id="mwA1I"> </span><span class="nf" id="mwA1M">getResourceTO</span><span class="p" id="mwA1Q">()</span><span class="w" id="mwA1U"> </span><span class="p" id="mwA1Y">{</span> <span class="w" id="mwA1c"> </span><span class="c1" id="mwA1g">// create a new Resource Transfer Object</span> <span class="w" id="mwA1k"> </span><span class="n" id="mwA1o">ResourceTO</span><span class="w" id="mwA1s"> </span><span class="n" id="mwA1w">resourceTO</span><span class="w" id="mwA10"> </span><span class="o" id="mwA14">=</span><span class="w" id="mwA18"> </span><span class="k" id="mwA2A">new</span><span class="w" id="mwA2E"> </span> <span class="w" id="mwA2I"> </span><span class="n" id="mwA2M">ResourceTO</span><span class="p" id="mwA2Q">(</span><span class="n" id="mwA2U">employeeId</span><span class="p" id="mwA2Y">);</span> <span class="w" id="mwA2c"> </span><span class="c1" id="mwA2g">// copy all values </span> <span class="w" id="mwA2k"> </span><span class="n" id="mwA2o">resourceTO</span><span class="p" id="mwA2s">.</span><span class="na" id="mwA2w">lastName</span><span class="w" id="mwA20"> </span><span class="o" id="mwA24">=</span><span class="w" id="mwA28"> </span><span class="n" id="mwA3A">lastName</span><span class="p" id="mwA3E">;</span> <span class="w" id="mwA3I"> </span><span class="n" id="mwA3M">resourceTO</span><span class="p" id="mwA3Q">.</span><span class="na" id="mwA3U">firstName</span><span class="w" id="mwA3Y"> </span><span class="o" id="mwA3c">=</span><span class="w" id="mwA3g"> </span><span class="n" id="mwA3k">firstName</span><span class="p" id="mwA3o">;</span> <span class="w" id="mwA3s"> </span><span class="n" id="mwA3w">resourceTO</span><span class="p" id="mwA30">.</span><span class="na" id="mwA34">departmentId</span><span class="w" id="mwA38"> </span><span class="o" id="mwA4A">=</span><span class="w" id="mwA4E"> </span><span class="n" id="mwA4I">departmentId</span><span class="p" id="mwA4M">;</span> <span class="w" id="mwA4Q"> </span><span class="p" id="mwA4U">...</span> <span class="w" id="mwA4Y"> </span><span class="k" id="mwA4c">return</span><span class="w" id="mwA4g"> </span><span class="n" id="mwA4k">resourceTO</span><span class="p" id="mwA4o">;</span> <span class="w" id="mwA4s"> </span><span class="p" id="mwA4w">}</span> <span class="w" id="mwA40"> </span><span class="kd" id="mwA44">public</span><span class="w" id="mwA48"> </span><span class="kt" id="mwA5A">void</span><span class="w" id="mwA5E"> </span><span class="nf" id="mwA5I">setResourceData</span><span class="p" id="mwA5M">(</span><span class="n" id="mwA5Q">ResourceTO</span><span class="w" id="mwA5U"> </span><span class="n" id="mwA5Y">resourceTO</span><span class="p" id="mwA5c">)</span><span class="w" id="mwA5g"> </span><span class="p" id="mwA5k">{</span> <span class="w" id="mwA5o"> </span><span class="c1" id="mwA5s">// copy values from Transfer Object into entity bean</span> <span class="w" id="mwA5w"> </span><span class="n" id="mwA50">employeeId</span><span class="w" id="mwA54"> </span><span class="o" id="mwA58">=</span><span class="w" id="mwA6A"> </span><span class="n" id="mwA6E">resourceTO</span><span class="p" id="mwA6I">.</span><span class="na" id="mwA6M">employeeId</span><span class="p" id="mwA6Q">;</span> <span class="w" id="mwA6U"> </span><span class="n" id="mwA6Y">lastName</span><span class="w" id="mwA6c"> </span><span class="o" id="mwA6g">=</span><span class="w" id="mwA6k"> </span><span class="n" id="mwA6o">resourceTO</span><span class="p" id="mwA6s">.</span><span class="na" id="mwA6w">lastName</span><span class="p" id="mwA60">;</span> <span class="w" id="mwA64"> </span><span class="p" id="mwA68">...</span> <span class="w" id="mwA7A"> </span><span class="p" id="mwA7E">}</span> <span class="w" id="mwA7I"> </span><span class="c1" id="mwA7M">// Method to get dependent Transfer Objects</span> <span class="w" id="mwA7Q"> </span><span class="kd" id="mwA7U">public</span><span class="w" id="mwA7Y"> </span><span class="n" id="mwA7c">Collection</span><span class="w" id="mwA7g"> </span><span class="nf" id="mwA7k">getSkillSetsData</span><span class="p" id="mwA7o">()</span><span class="w" id="mwA7s"> </span><span class="p" id="mwA7w">{</span> <span class="w" id="mwA70"> </span><span class="c1" id="mwA74">// If skillSets is not loaded, load it first.</span> <span class="w" id="mwA78"> </span><span class="c1" id="mwA8A">// See Lazy Load strategy implementation.</span> <span class="w" id="mwA8E"> </span><span class="k" id="mwA8I">return</span><span class="w" id="mwA8M"> </span><span class="n" id="mwA8Q">skillSets</span><span class="p" id="mwA8U">;</span><span class="w" id="mwA8Y"> </span> <span class="w" id="mwA8c"> </span><span class="p" id="mwA8g">}</span> <span class="w" id="mwA8k"> </span><span class="p" id="mwA8o">...</span> <span class="w" id="mwA8s"> </span><span class="c1" id="mwA8w">// other get and set methods as needed</span> <span class="w" id="mwA80"> </span><span class="p" id="mwA84">...</span> <span class="w" id="mwA88"> </span><span class="c1" id="mwA9A">// Entity bean business methods</span> <span class="w" id="mwA9E"> </span><span class="kd" id="mwA9I">public</span><span class="w" id="mwA9M"> </span><span class="kt" id="mwA9Q">void</span><span class="w" id="mwA9U"> </span><span class="nf" id="mwA9Y">addBlockOutTimes</span><span class="p" id="mwA9c">(</span><span class="n" id="mwA9g">Collection</span><span class="w" id="mwA9k"> </span><span class="n" id="mwA9o">moreBOTs</span><span class="p" id="mwA9s">)</span><span class="w" id="mwA9w"> </span> <span class="w" id="mwA90"> </span><span class="kd" id="mwA94">throws</span><span class="w" id="mwA98"> </span><span class="n" id="mwA-A">BlockOutTimeException</span><span class="w" id="mwA-E"> </span><span class="p" id="mwA-I">{</span> <span class="w" id="mwA-M"> </span><span class="c1" id="mwA-Q">// Note: moreBOTs is a collection of </span> <span class="w" id="mwA-U"> </span><span class="c1" id="mwA-Y">// BlockOutTimeTO objects</span> <span class="w" id="mwA-c"> </span><span class="k" id="mwA-g">try</span><span class="w" id="mwA-k"> </span><span class="p" id="mwA-o">{</span> <span class="w" id="mwA-s"> </span><span class="n" id="mwA-w">Iterator</span><span class="w" id="mwA-0"> </span><span class="n" id="mwA-4">moreIter</span><span class="w" id="mwA-8"> </span><span class="o" id="mwA_A">=</span><span class="w" id="mwA_E"> </span><span class="n" id="mwA_I">moreBOTs</span><span class="p" id="mwA_M">.</span><span class="na" id="mwA_Q">iterator</span><span class="p" id="mwA_U">();</span> <span class="w" id="mwA_Y"> </span><span class="k" id="mwA_c">while</span><span class="w" id="mwA_g"> </span><span class="p" id="mwA_k">(</span><span class="n" id="mwA_o">moreIter</span><span class="p" id="mwA_s">.</span><span class="na" id="mwA_w">hasNext</span><span class="p" id="mwA_0">())</span><span class="w" id="mwA_4"> </span><span class="p" id="mwA_8">{</span> <span class="w" id="mwBAA"> </span><span class="n" id="mwBAE">BlockOutTimeTO</span><span class="w" id="mwBAI"> </span><span class="n" id="mwBAM">botTO</span><span class="w" id="mwBAQ"> </span><span class="o" id="mwBAU">=</span><span class="w" id="mwBAY"> </span><span class="p" id="mwBAc">(</span><span class="n" id="mwBAg">BlockOutTimeTO</span><span class="p" id="mwBAk">)</span><span class="w" id="mwBAo"> </span> <span class="w" id="mwBAs"> </span><span class="n" id="mwBAw">moreIter</span><span class="p" id="mwBA0">.</span><span class="na" id="mwBA4">next</span><span class="p" id="mwBA8">();</span> <span class="w" id="mwBBA"> </span><span class="k" id="mwBBE">if</span><span class="w" id="mwBBI"> </span><span class="p" id="mwBBM">(</span><span class="o" id="mwBBQ">!</span><span class="w" id="mwBBU"> </span><span class="p" id="mwBBY">(</span><span class="n" id="mwBBc">blockOutTimeExists</span><span class="p" id="mwBBg">(</span><span class="n" id="mwBBk">botTO</span><span class="p" id="mwBBo">)))</span><span class="w" id="mwBBs"> </span><span class="p" id="mwBBw">{</span> <span class="w" id="mwBB0"> </span><span class="c1" id="mwBB4">// add BlockOutTimeTO to collection</span> <span class="w" id="mwBB8"> </span><span class="n" id="mwBCA">botTO</span><span class="p" id="mwBCE">.</span><span class="na" id="mwBCI">setNew</span><span class="p" id="mwBCM">();</span> <span class="w" id="mwBCQ"> </span><span class="n" id="mwBCU">blockOutTime</span><span class="p" id="mwBCY">.</span><span class="na" id="mwBCc">add</span><span class="p" id="mwBCg">(</span><span class="n" id="mwBCk">botTO</span><span class="p" id="mwBCo">);</span> <span class="w" id="mwBCs"> </span><span class="p" id="mwBCw">}</span><span class="w" id="mwBC0"> </span><span class="k" id="mwBC4">else</span><span class="w" id="mwBC8"> </span><span class="p" id="mwBDA">{</span> <span class="w" id="mwBDE"> </span><span class="c1" id="mwBDI">// BlockOutTimeTO already exists, cannot add</span> <span class="w" id="mwBDM"> </span><span class="k" id="mwBDQ">throw</span><span class="w" id="mwBDU"> </span><span class="k" id="mwBDY">new</span><span class="w" id="mwBDc"> </span><span class="n" id="mwBDg">BlockOutTimeException</span><span class="p" id="mwBDk">(...);</span> <span class="w" id="mwBDo"> </span><span class="p" id="mwBDs">}</span> <span class="w" id="mwBDw"> </span><span class="p" id="mwBD0">}</span> <span class="w" id="mwBD4"> </span><span class="p" id="mwBD8">}</span><span class="w" id="mwBEA"> </span><span class="k" id="mwBEE">catch</span><span class="w" id="mwBEI"> </span><span class="p" id="mwBEM">(</span><span class="n" id="mwBEQ">Exception</span><span class="w" id="mwBEU"> </span><span class="n" id="mwBEY">exception</span><span class="p" id="mwBEc">)</span><span class="w" id="mwBEg"> </span><span class="p" id="mwBEk">{</span> <span class="w" id="mwBEo"> </span><span class="k" id="mwBEs">throw</span><span class="w" id="mwBEw"> </span><span class="k" id="mwBE0">new</span><span class="w" id="mwBE4"> </span><span class="n" id="mwBE8">EJBException</span><span class="p" id="mwBFA">(...);</span> <span class="w" id="mwBFE"> </span><span class="p" id="mwBFI">}</span> <span class="w" id="mwBFM"> </span><span class="p" id="mwBFQ">}</span> <span class="w" id="mwBFU"> </span><span class="kd" id="mwBFY">public</span><span class="w" id="mwBFc"> </span><span class="kt" id="mwBFg">void</span><span class="w" id="mwBFk"> </span><span class="nf" id="mwBFo">addSkillSet</span><span class="p" id="mwBFs">(</span><span class="n" id="mwBFw">Collection</span><span class="w" id="mwBF0"> </span><span class="n" id="mwBF4">moreSkills</span><span class="p" id="mwBF8">)</span><span class="w" id="mwBGA"> </span> <span class="w" id="mwBGE"> </span><span class="kd" id="mwBGI">throws</span><span class="w" id="mwBGM"> </span><span class="n" id="mwBGQ">SkillSetException</span><span class="w" id="mwBGU"> </span><span class="p" id="mwBGY">{</span> <span class="w" id="mwBGc"> </span><span class="c1" id="mwBGg">// similar to addBlockOutTime() implementation</span> <span class="w" id="mwBGk"> </span><span class="p" id="mwBGo">...</span> <span class="w" id="mwBGs"> </span><span class="p" id="mwBGw">}</span> <span class="w" id="mwBG0"> </span><span class="p" id="mwBG4">...</span> <span class="w" id="mwBG8"> </span><span class="kd" id="mwBHA">public</span><span class="w" id="mwBHE"> </span><span class="kt" id="mwBHI">void</span><span class="w" id="mwBHM"> </span><span class="nf" id="mwBHQ">updateBlockOutTime</span><span class="p" id="mwBHU">(</span><span class="n" id="mwBHY">Collection</span><span class="w" id="mwBHc"> </span><span class="n" id="mwBHg">updBOTs</span><span class="p" id="mwBHk">)</span><span class="w" id="mwBHo"> </span> <span class="w" id="mwBHs"> </span><span class="kd" id="mwBHw">throws</span><span class="w" id="mwBH0"> </span><span class="n" id="mwBH4">BlockOutTimeException</span><span class="w" id="mwBH8"> </span><span class="p" id="mwBIA">{</span> <span class="w" id="mwBIE"> </span><span class="k" id="mwBII">try</span><span class="w" id="mwBIM"> </span><span class="p" id="mwBIQ">{</span> <span class="w" id="mwBIU"> </span><span class="n" id="mwBIY">Iterator</span><span class="w" id="mwBIc"> </span><span class="n" id="mwBIg">botIter</span><span class="w" id="mwBIk"> </span><span class="o" id="mwBIo">=</span><span class="w" id="mwBIs"> </span><span class="n" id="mwBIw">blockOutTimes</span><span class="p" id="mwBI0">.</span><span class="na" id="mwBI4">iterator</span><span class="p" id="mwBI8">();</span> <span class="w" id="mwBJA"> </span><span class="n" id="mwBJE">Iterator</span><span class="w" id="mwBJI"> </span><span class="n" id="mwBJM">updIter</span><span class="w" id="mwBJQ"> </span><span class="o" id="mwBJU">=</span><span class="w" id="mwBJY"> </span><span class="n" id="mwBJc">updBOTs</span><span class="p" id="mwBJg">.</span><span class="na" id="mwBJk">iterator</span><span class="p" id="mwBJo">();</span> <span class="w" id="mwBJs"> </span><span class="k" id="mwBJw">while</span><span class="w" id="mwBJ0"> </span><span class="p" id="mwBJ4">(</span><span class="n" id="mwBJ8">updIter</span><span class="p" id="mwBKA">.</span><span class="na" id="mwBKE">hasNext</span><span class="p" id="mwBKI">())</span><span class="w" id="mwBKM"> </span><span class="p" id="mwBKQ">{</span> <span class="w" id="mwBKU"> </span><span class="n" id="mwBKY">BlockOutTimeTO</span><span class="w" id="mwBKc"> </span><span class="n" id="mwBKg">botTO</span><span class="w" id="mwBKk"> </span><span class="o" id="mwBKo">=</span><span class="w" id="mwBKs"> </span><span class="p" id="mwBKw">(</span><span class="n" id="mwBK0">BlockOutTimeTO</span><span class="p" id="mwBK4">)</span> <span class="w" id="mwBK8"> </span><span class="n" id="mwBLA">updIter</span><span class="p" id="mwBLE">.</span><span class="na" id="mwBLI">next</span><span class="p" id="mwBLM">();</span> <span class="w" id="mwBLQ"> </span><span class="k" id="mwBLU">while</span><span class="w" id="mwBLY"> </span><span class="p" id="mwBLc">(</span><span class="n" id="mwBLg">botIter</span><span class="p" id="mwBLk">.</span><span class="na" id="mwBLo">hasNext</span><span class="p" id="mwBLs">())</span><span class="w" id="mwBLw"> </span><span class="p" id="mwBL0">{</span> <span class="w" id="mwBL4"> </span><span class="n" id="mwBL8">BlockOutTimeTO</span><span class="w" id="mwBMA"> </span><span class="n" id="mwBME">existingBOT</span><span class="w" id="mwBMI"> </span><span class="o" id="mwBMM">=</span><span class="w" id="mwBMQ"> </span> <span class="w" id="mwBMU"> </span><span class="p" id="mwBMY">(</span><span class="n" id="mwBMc">BlockOutTimeTO</span><span class="p" id="mwBMg">)</span><span class="w" id="mwBMk"> </span><span class="n" id="mwBMo">botIter</span><span class="p" id="mwBMs">.</span><span class="na" id="mwBMw">next</span><span class="p" id="mwBM0">();</span> <span class="w" id="mwBM4"> </span><span class="c1" id="mwBM8">// compare key values to locate BlockOutTime</span> <span class="w" id="mwBNA"> </span><span class="k" id="mwBNE">if</span><span class="w" id="mwBNI"> </span><span class="p" id="mwBNM">(</span><span class="n" id="mwBNQ">existingBOT</span><span class="p" id="mwBNU">.</span><span class="na" id="mwBNY">equals</span><span class="p" id="mwBNc">(</span><span class="n" id="mwBNg">botTO</span><span class="p" id="mwBNk">))</span><span class="w" id="mwBNo"> </span><span class="p" id="mwBNs">{</span> <span class="w" id="mwBNw"> </span><span class="c1" id="mwBN0">// Found BlockOutTime in collection</span> <span class="w" id="mwBN4"> </span><span class="c1" id="mwBN8">// replace old BlockOutTimeTO with new one</span> <span class="w" id="mwBOA"> </span><span class="n" id="mwBOE">botTO</span><span class="p" id="mwBOI">.</span><span class="na" id="mwBOM">setDirty</span><span class="p" id="mwBOQ">();</span><span class="w" id="mwBOU"> </span><span class="c1" id="mwBOY">//modified old dependent</span> <span class="w" id="mwBOc"> </span><span class="n" id="mwBOg">botTO</span><span class="p" id="mwBOk">.</span><span class="na" id="mwBOo">resetNew</span><span class="p" id="mwBOs">();</span><span class="w" id="mwBOw"> </span><span class="c1" id="mwBO0">//not a new dependent</span> <span class="w" id="mwBO4"> </span><span class="n" id="mwBO8">existingBOT</span><span class="w" id="mwBPA"> </span><span class="o" id="mwBPE">=</span><span class="w" id="mwBPI"> </span><span class="n" id="mwBPM">botTO</span><span class="p" id="mwBPQ">;</span> <span class="w" id="mwBPU"> </span><span class="p" id="mwBPY">}</span> <span class="w" id="mwBPc"> </span><span class="p" id="mwBPg">}</span> <span class="w" id="mwBPk"> </span><span class="p" id="mwBPo">}</span> <span class="w" id="mwBPs"> </span><span class="p" id="mwBPw">}</span><span class="w" id="mwBP0"> </span><span class="k" id="mwBP4">catch</span><span class="w" id="mwBP8"> </span><span class="p" id="mwBQA">(</span><span class="n" id="mwBQE">Exception</span><span class="w" id="mwBQI"> </span><span class="n" id="mwBQM">exc</span><span class="p" id="mwBQQ">)</span><span class="w" id="mwBQU"> </span><span class="p" id="mwBQY">{</span> <span class="w" id="mwBQc"> </span><span class="k" id="mwBQg">throw</span><span class="w" id="mwBQk"> </span><span class="k" id="mwBQo">new</span><span class="w" id="mwBQs"> </span><span class="n" id="mwBQw">EJBException</span><span class="p" id="mwBQ0">(...);</span> <span class="w" id="mwBQ4"> </span><span class="p" id="mwBQ8">}</span> <span class="w" id="mwBRA"> </span><span class="p" id="mwBRE">}</span> <span class="w" id="mwBRI"> </span><span class="kd" id="mwBRM">public</span><span class="w" id="mwBRQ"> </span><span class="kt" id="mwBRU">void</span><span class="w" id="mwBRY"> </span><span class="nf" id="mwBRc">updateSkillSet</span><span class="p" id="mwBRg">(</span><span class="n" id="mwBRk">Collection</span><span class="w" id="mwBRo"> </span><span class="n" id="mwBRs">updSkills</span><span class="p" id="mwBRw">)</span><span class="w" id="mwBR0"> </span> <span class="w" id="mwBR4"> </span><span class="kd" id="mwBR8">throws</span><span class="w" id="mwBSA"> </span><span class="n" id="mwBSE">CommitmentException</span><span class="w" id="mwBSI"> </span><span class="p" id="mwBSM">{</span> <span class="w" id="mwBSQ"> </span><span class="c1" id="mwBSU">// similar to updateBlockOutTime...</span> <span class="w" id="mwBSY"> </span><span class="p" id="mwBSc">...</span> <span class="w" id="mwBSg"> </span><span class="p" id="mwBSk">}</span> <span class="w" id="mwBSo"> </span><span class="p" id="mwBSs">...</span> <span class="p" id="mwBSw">}</span>
