whisker/apache-whisker-xml/cobertura/org.apache.creadur.whisker.fromxml.JDomBuilder.html (913 lines of code) (raw):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Coverage Report</title>
<link title="Style" type="text/css" rel="stylesheet" href="css/main.css"/>
<script type="text/javascript" src="js/popup.js"></script>
</head>
<body>
<h5>Coverage Report - org.apache.creadur.whisker.fromxml.JDomBuilder</h5>
<div class="separator"> </div>
<table class="report">
<thead><tr> <td class="heading">Classes in this File</td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Line Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Branch Coverage</a></td> <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Complexity</a></td></tr></thead>
<tr><td><a href="org.apache.creadur.whisker.fromxml.JDomBuilder.html">JDomBuilder</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">99%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:99px"><span class="text">116/117</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">100%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">54/54</span></div></div></td></tr></table></td><td class="value"><span class="hidden">2.310344827586207;</span>2.31</td></tr>
</table>
<div class="separator"> </div>
<table cellspacing="0" cellpadding="0" class="src">
<tr> <td class="numLine"> 1</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 2</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></pre></td></tr>
<tr> <td class="numLine"> 3</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * or more contributor license agreements. See the NOTICE file</span></pre></td></tr>
<tr> <td class="numLine"> 4</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * distributed with this work for additional information</span></pre></td></tr>
<tr> <td class="numLine"> 5</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * regarding copyright ownership. The ASF licenses this file</span></pre></td></tr>
<tr> <td class="numLine"> 6</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * to you under the Apache License, Version 2.0 (the</span></pre></td></tr>
<tr> <td class="numLine"> 7</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * "License"); you may not use this file except in compliance</span></pre></td></tr>
<tr> <td class="numLine"> 8</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * with the License. You may obtain a copy of the License at</span></pre></td></tr>
<tr> <td class="numLine"> 9</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine"> 10</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></pre></td></tr>
<tr> <td class="numLine"> 11</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr>
<tr> <td class="numLine"> 12</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Unless required by applicable law or agreed to in writing,</span></pre></td></tr>
<tr> <td class="numLine"> 13</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * software distributed under the License is distributed on an</span></pre></td></tr>
<tr> <td class="numLine"> 14</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></pre></td></tr>
<tr> <td class="numLine"> 15</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * KIND, either express or implied. See the License for the</span></pre></td></tr>
<tr> <td class="numLine"> 16</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * specific language governing permissions and limitations</span></pre></td></tr>
<tr> <td class="numLine"> 17</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * under the License. </span></pre></td></tr>
<tr> <td class="numLine"> 18</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 19</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">package</span> org.apache.creadur.whisker.fromxml;</pre></td></tr>
<tr> <td class="numLine"> 20</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 21</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> java.io.IOException;</pre></td></tr>
<tr> <td class="numLine"> 22</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> java.io.InputStream;</pre></td></tr>
<tr> <td class="numLine"> 23</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> java.util.ArrayList;</pre></td></tr>
<tr> <td class="numLine"> 24</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> java.util.Calendar;</pre></td></tr>
<tr> <td class="numLine"> 25</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> java.util.Collection;</pre></td></tr>
<tr> <td class="numLine"> 26</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> java.util.Collections;</pre></td></tr>
<tr> <td class="numLine"> 27</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> java.util.HashMap;</pre></td></tr>
<tr> <td class="numLine"> 28</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> java.util.HashSet;</pre></td></tr>
<tr> <td class="numLine"> 29</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> java.util.List;</pre></td></tr>
<tr> <td class="numLine"> 30</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> java.util.Map;</pre></td></tr>
<tr> <td class="numLine"> 31</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> java.util.SortedSet;</pre></td></tr>
<tr> <td class="numLine"> 32</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> java.util.TreeSet;</pre></td></tr>
<tr> <td class="numLine"> 33</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 34</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.commons.lang3.StringUtils;</pre></td></tr>
<tr> <td class="numLine"> 35</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.creadur.whisker.model.ByOrganisation;</pre></td></tr>
<tr> <td class="numLine"> 36</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.creadur.whisker.model.License;</pre></td></tr>
<tr> <td class="numLine"> 37</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.creadur.whisker.model.Organisation;</pre></td></tr>
<tr> <td class="numLine"> 38</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.creadur.whisker.model.Resource;</pre></td></tr>
<tr> <td class="numLine"> 39</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.creadur.whisker.model.WithLicense;</pre></td></tr>
<tr> <td class="numLine"> 40</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.creadur.whisker.model.WithinDirectory;</pre></td></tr>
<tr> <td class="numLine"> 41</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.creadur.whisker.model.Descriptor;</pre></td></tr>
<tr> <td class="numLine"> 42</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> org.jdom.Document;</pre></td></tr>
<tr> <td class="numLine"> 43</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> org.jdom.Element;</pre></td></tr>
<tr> <td class="numLine"> 44</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> org.jdom.JDOMException;</pre></td></tr>
<tr> <td class="numLine"> 45</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">import</span> org.jdom.input.SAXBuilder;</pre></td></tr>
<tr> <td class="numLine"> 46</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 47</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 48</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Builds a model from xml using JDOM.</span></pre></td></tr>
<tr> <td class="numLine"> 49</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLineCover"> 50</td> <td class="nbHitsCovered"> 338044</td> <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">class</span> JDomBuilder {</pre></td></tr>
<tr> <td class="numLine"> 51</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 52</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> String COPYRIGHT_NOTICE_NAME = <span class="string">"copyright-notice"</span>;</pre></td></tr>
<tr> <td class="numLine"> 53</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 54</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr>
<tr> <td class="numLine"> 55</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 56</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> String LICENSE_ELEMENT_NAME = <span class="string">"license"</span>;</pre></td></tr>
<tr> <td class="numLine"> 57</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 58</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr>
<tr> <td class="numLine"> 59</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 60</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> String PRIMARY_LICENSE_NAME = <span class="string">"primary-license"</span>;</pre></td></tr>
<tr> <td class="numLine"> 61</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/** Names the element representing an organisation */</span></pre></td></tr>
<tr> <td class="numLine"> 62</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> String ORGANISATION_ELEMENT_NAME = <span class="string">"organisation"</span>;</pre></td></tr>
<tr> <td class="numLine"> 63</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/** Names the element representing a resource */</span></pre></td></tr>
<tr> <td class="numLine"> 64</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> String RESOURCE_ELEMENT_NAME = <span class="string">"resource"</span>;</pre></td></tr>
<tr> <td class="numLine"> 65</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 66</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 67</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Builds a resource.</span></pre></td></tr>
<tr> <td class="numLine"> 68</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param element not null</span></pre></td></tr>
<tr> <td class="numLine"> 69</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return built resource, not null</span></pre></td></tr>
<tr> <td class="numLine"> 70</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @throws UnexpectedElementException when element is not named 'resource'</span></pre></td></tr>
<tr> <td class="numLine"> 71</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 72</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> Resource resource(Element element) <span class="keyword">throws</span> UnexpectedElementException {</pre></td></tr>
<tr> <td class="numLineCover"> 73</td> <td class="nbHitsCovered"><a title="Line 73: Conditional coverage 100% (2/2)."> 464</a></td> <td class="src"><pre class="src"> <a title="Line 73: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (RESOURCE_ELEMENT_NAME.equals(element.getName())) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 74</td> <td class="nbHitsCovered"> 462</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> Resource(StringUtils.trim(element.getAttributeValue(<span class="string">"name"</span>)), </pre></td></tr>
<tr> <td class="numLine"> 75</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> StringUtils.trim(element.getAttributeValue(<span class="string">"notice"</span>)),</pre></td></tr>
<tr> <td class="numLine"> 76</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> StringUtils.trim(element.getAttributeValue(<span class="string">"source"</span>)));</pre></td></tr>
<tr> <td class="numLine"> 77</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover"> 78</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> unexpectedElementException(element, RESOURCE_ELEMENT_NAME);</pre></td></tr>
<tr> <td class="numLine"> 79</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 80</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 81</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 82</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 83</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Builds a suitable exception when the element name is unexpected.</span></pre></td></tr>
<tr> <td class="numLine"> 84</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param element, not null</span></pre></td></tr>
<tr> <td class="numLine"> 85</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param expectedElement, not null</span></pre></td></tr>
<tr> <td class="numLine"> 86</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return a suitable exception, not null</span></pre></td></tr>
<tr> <td class="numLine"> 87</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 88</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> UnexpectedElementException unexpectedElementException(Element element,</pre></td></tr>
<tr> <td class="numLine"> 89</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">final</span> String expectedElement) {</pre></td></tr>
<tr> <td class="numLineCover"> 90</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> UnexpectedElementException(expectedElement, element.getName());</pre></td></tr>
<tr> <td class="numLine"> 91</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 92</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 93</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 94</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Builds an organisation model from xml.</span></pre></td></tr>
<tr> <td class="numLine"> 95</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param element, not null</span></pre></td></tr>
<tr> <td class="numLine"> 96</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return {@link Organisation} not null</span></pre></td></tr>
<tr> <td class="numLine"> 97</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @throws UnexpectedElementException when element is not named 'organisation'</span></pre></td></tr>
<tr> <td class="numLine"> 98</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 99</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> Organisation organisation(Element element) <span class="keyword">throws</span> UnexpectedElementException {</pre></td></tr>
<tr> <td class="numLineCover"> 100</td> <td class="nbHitsCovered"><a title="Line 100: Conditional coverage 100% (2/2)."> 65284</a></td> <td class="src"><pre class="src"> <a title="Line 100: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (ORGANISATION_ELEMENT_NAME.equals(element.getName())) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 101</td> <td class="nbHitsCovered"> 65282</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> Organisation(</pre></td></tr>
<tr> <td class="numLine"> 102</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> element.getAttributeValue(<span class="string">"id"</span>), </pre></td></tr>
<tr> <td class="numLine"> 103</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> element.getAttributeValue(<span class="string">"name"</span>), </pre></td></tr>
<tr> <td class="numLine"> 104</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> element.getAttributeValue(<span class="string">"url"</span>));</pre></td></tr>
<tr> <td class="numLine"> 105</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover"> 106</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> unexpectedElementException(element, ORGANISATION_ELEMENT_NAME);</pre></td></tr>
<tr> <td class="numLine"> 107</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 108</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 109</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 110</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 111</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param element</span></pre></td></tr>
<tr> <td class="numLine"> 112</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return</span></pre></td></tr>
<tr> <td class="numLine"> 113</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 114</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td></tr>
<tr> <td class="numLine"> 115</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> Collection<Resource> collectResources(Element element) {</pre></td></tr>
<tr> <td class="numLineCover"> 116</td> <td class="nbHitsCovered"> 75438</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Collection<Resource> resources = <span class="keyword">new</span> TreeSet<Resource>();</pre></td></tr>
<tr> <td class="numLineCover"> 117</td> <td class="nbHitsCovered"><a title="Line 117: Conditional coverage 100% (2/2)."> 75438</a></td> <td class="src"><pre class="src"> <a title="Line 117: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Element resourceElement: (List<Element>) element.getChildren(<span class="string">"resource"</span>)) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 118</td> <td class="nbHitsCovered"> 448</td> <td class="src"><pre class="src"> resources.add(<span class="keyword">new</span> JDomBuilder().resource(resourceElement));</pre></td></tr>
<tr> <td class="numLine"> 119</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLineCover"> 120</td> <td class="nbHitsCovered"> 75438</td> <td class="src"><pre class="src"> <span class="keyword">return</span> Collections.unmodifiableCollection(resources);</pre></td></tr>
<tr> <td class="numLine"> 121</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 122</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 123</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 124</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Finds the organisation linked by ID from the given element.</span></pre></td></tr>
<tr> <td class="numLine"> 125</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param element modelled ByOrganisation, not null</span></pre></td></tr>
<tr> <td class="numLine"> 126</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param organisationsById organisations identified, not null</span></pre></td></tr>
<tr> <td class="numLine"> 127</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @throws MissingIDException when the linked organisation is not found in the given map</span></pre></td></tr>
<tr> <td class="numLine"> 128</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 129</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> Organisation organisation(<span class="keyword">final</span> Element element,</pre></td></tr>
<tr> <td class="numLine"> 130</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">final</span> Map<String, Organisation> organisationsById) <span class="keyword">throws</span> MissingIDException {</pre></td></tr>
<tr> <td class="numLineCover"> 131</td> <td class="nbHitsCovered"> 75428</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String id = element.getAttributeValue(<span class="string">"id"</span>);</pre></td></tr>
<tr> <td class="numLineCover"> 132</td> <td class="nbHitsCovered"><a title="Line 132: Conditional coverage 100% (2/2)."> 75428</a></td> <td class="src"><pre class="src"> <a title="Line 132: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (organisationsById.containsKey(id)) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 133</td> <td class="nbHitsCovered"> 75424</td> <td class="src"><pre class="src"> <span class="keyword">return</span> organisationsById.get(id);</pre></td></tr>
<tr> <td class="numLine"> 134</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover"> 135</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> MissingIDException(ORGANISATION_ELEMENT_NAME, element.getName(), id);</pre></td></tr>
<tr> <td class="numLine"> 136</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 137</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 138</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 139</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 140</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Builds a by-organisation model from xml.</span></pre></td></tr>
<tr> <td class="numLine"> 141</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param element not null</span></pre></td></tr>
<tr> <td class="numLine"> 142</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param organisation not null</span></pre></td></tr>
<tr> <td class="numLine"> 143</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return not null</span></pre></td></tr>
<tr> <td class="numLine"> 144</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 145</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> ByOrganisation byOrganisation(<span class="keyword">final</span> Element element, <span class="keyword">final</span> Organisation organisation) {</pre></td></tr>
<tr> <td class="numLineCover"> 146</td> <td class="nbHitsCovered"> 75428</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> ByOrganisation(organisation, collectResources(element));</pre></td></tr>
<tr> <td class="numLine"> 147</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 148</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 149</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 150</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Builds a by-organisation model from xml.</span></pre></td></tr>
<tr> <td class="numLine"> 151</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param byOrganisation not null</span></pre></td></tr>
<tr> <td class="numLine"> 152</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param organisationsById not null </span></pre></td></tr>
<tr> <td class="numLine"> 153</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return not null</span></pre></td></tr>
<tr> <td class="numLine"> 154</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @throws MissingIDException when the linked organisation is not found in the given map</span></pre></td></tr>
<tr> <td class="numLine"> 155</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 156</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> ByOrganisation byOrganisation(<span class="keyword">final</span> Element byOrganisation, </pre></td></tr>
<tr> <td class="numLine"> 157</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">final</span> Map<String, Organisation> organisationsById) <span class="keyword">throws</span> MissingIDException {</pre></td></tr>
<tr> <td class="numLineCover"> 158</td> <td class="nbHitsCovered"> 75422</td> <td class="src"><pre class="src"> <span class="keyword">return</span> byOrganisation(byOrganisation, organisation(byOrganisation, organisationsById));</pre></td></tr>
<tr> <td class="numLine"> 159</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 160</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 161</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 162</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Collects by-organisation children.</span></pre></td></tr>
<tr> <td class="numLine"> 163</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param parent not null</span></pre></td></tr>
<tr> <td class="numLine"> 164</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param map not null</span></pre></td></tr>
<tr> <td class="numLine"> 165</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return unmodifiable set sort by natural order, not null</span></pre></td></tr>
<tr> <td class="numLine"> 166</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 167</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td></tr>
<tr> <td class="numLine"> 168</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> SortedSet<ByOrganisation> collectByOrganisations(<span class="keyword">final</span> Element parent, </pre></td></tr>
<tr> <td class="numLine"> 169</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">final</span> Map<String, Organisation> map) {</pre></td></tr>
<tr> <td class="numLineCover"> 170</td> <td class="nbHitsCovered"> 141864</td> <td class="src"><pre class="src"> <span class="keyword">final</span> SortedSet<ByOrganisation> results = <span class="keyword">new</span> TreeSet<ByOrganisation>();</pre></td></tr>
<tr> <td class="numLineCover"> 171</td> <td class="nbHitsCovered"><a title="Line 171: Conditional coverage 100% (2/2)."> 141864</a></td> <td class="src"><pre class="src"> <a title="Line 171: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (parent != <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 172</td> <td class="nbHitsCovered"><a title="Line 172: Conditional coverage 100% (2/2)."> 76376</a></td> <td class="src"><pre class="src"> <a title="Line 172: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">final</span> Element byOrgElement: (List<Element>) parent.getChildren(<span class="string">"by-organisation"</span>)) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 173</td> <td class="nbHitsCovered"> 75416</td> <td class="src"><pre class="src"> results.add(byOrganisation(byOrgElement, map));</pre></td></tr>
<tr> <td class="numLine"> 174</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 175</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLineCover"> 176</td> <td class="nbHitsCovered"> 141864</td> <td class="src"><pre class="src"> <span class="keyword">return</span> Collections.unmodifiableSortedSet(results);</pre></td></tr>
<tr> <td class="numLine"> 177</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 178</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 179</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 180</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Builds a license model from xml.</span></pre></td></tr>
<tr> <td class="numLine"> 181</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param element not null</span></pre></td></tr>
<tr> <td class="numLine"> 182</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return not null</span></pre></td></tr>
<tr> <td class="numLine"> 183</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 184</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> License license(Element element) {</pre></td></tr>
<tr> <td class="numLineCover"> 185</td> <td class="nbHitsCovered"> 65308</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Element text = element.getChild(<span class="string">"text"</span>);</pre></td></tr>
<tr> <td class="numLineCover"> 186</td> <td class="nbHitsCovered"><a title="Line 186: Conditional coverage 100% (2/2)."> 65308</a></td> <td class="src"><pre class="src"> <a title="Line 186: Conditional coverage 100% (2/2)."> <span class="keyword">return</span> <span class="keyword">new</span> License(<span class="string">"yes"</span>.equalsIgnoreCase(element.getAttributeValue(<span class="string">"requires-source"</span>)), </a></pre></td></tr>
<tr> <td class="numLine"> 187</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> text == <span class="keyword">null</span> ? <span class="string">""</span> : text.getText(), </pre></td></tr>
<tr> <td class="numLine"> 188</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> expectedParameters(element), </pre></td></tr>
<tr> <td class="numLine"> 189</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> element.getAttributeValue(<span class="string">"id"</span>), </pre></td></tr>
<tr> <td class="numLine"> 190</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> element.getAttributeValue(<span class="string">"url"</span>),</pre></td></tr>
<tr> <td class="numLine"> 191</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> element.getAttributeValue(<span class="string">"name"</span>));</pre></td></tr>
<tr> <td class="numLine"> 192</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 193</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 194</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td></tr>
<tr> <td class="numLine"> 195</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> Collection<String> expectedParameters(<span class="keyword">final</span> Element element) {</pre></td></tr>
<tr> <td class="numLineCover"> 196</td> <td class="nbHitsCovered"> 65308</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Collection<String> results = <span class="keyword">new</span> HashSet<String>();</pre></td></tr>
<tr> <td class="numLineCover"> 197</td> <td class="nbHitsCovered"> 65308</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Element templateElement = element.getChild(<span class="string">"template"</span>);</pre></td></tr>
<tr> <td class="numLineCover"> 198</td> <td class="nbHitsCovered"><a title="Line 198: Conditional coverage 100% (2/2)."> 65308</a></td> <td class="src"><pre class="src"> <a title="Line 198: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (templateElement != <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 199</td> <td class="nbHitsCovered"><a title="Line 199: Conditional coverage 100% (2/2)."> 6</a></td> <td class="src"><pre class="src"> <a title="Line 199: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Element parameterNameElement: (List<Element>) templateElement.getChildren(<span class="string">"parameter-name"</span>)) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 200</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> results.add(parameterNameElement.getTextTrim());</pre></td></tr>
<tr> <td class="numLine"> 201</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 202</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLineCover"> 203</td> <td class="nbHitsCovered"> 65308</td> <td class="src"><pre class="src"> <span class="keyword">return</span> results;</pre></td></tr>
<tr> <td class="numLine"> 204</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 205</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 206</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 207</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Finds the license with an id matching that referenced by the element.</span></pre></td></tr>
<tr> <td class="numLine"> 208</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param element not null</span></pre></td></tr>
<tr> <td class="numLine"> 209</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param licenses not null</span></pre></td></tr>
<tr> <td class="numLine"> 210</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return not null</span></pre></td></tr>
<tr> <td class="numLine"> 211</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @throws MissingIDException when referenced license isn't found in the collection</span></pre></td></tr>
<tr> <td class="numLine"> 212</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 213</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> License license(<span class="keyword">final</span> Element element, <span class="keyword">final</span> Map<String, License> licenses) <span class="keyword">throws</span> MissingIDException {</pre></td></tr>
<tr> <td class="numLineCover"> 214</td> <td class="nbHitsCovered"> 75654</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String id = element.getAttributeValue(<span class="string">"id"</span>);</pre></td></tr>
<tr> <td class="numLineCover"> 215</td> <td class="nbHitsCovered"><a title="Line 215: Conditional coverage 100% (2/2)."> 75654</a></td> <td class="src"><pre class="src"> <a title="Line 215: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (licenses.containsKey(id)) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 216</td> <td class="nbHitsCovered"> 75650</td> <td class="src"><pre class="src"> <span class="keyword">return</span> licenses.get(id);</pre></td></tr>
<tr> <td class="numLine"> 217</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover"> 218</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> MissingIDException(LICENSE_ELEMENT_NAME, element.getName(), id);</pre></td></tr>
<tr> <td class="numLine"> 219</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 220</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 221</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 222</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 223</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Builds a with-license model from xml.</span></pre></td></tr>
<tr> <td class="numLine"> 224</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param element not null</span></pre></td></tr>
<tr> <td class="numLine"> 225</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param licenses not null</span></pre></td></tr>
<tr> <td class="numLine"> 226</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param organisations not null</span></pre></td></tr>
<tr> <td class="numLine"> 227</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return</span></pre></td></tr>
<tr> <td class="numLine"> 228</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @throws MissingIDException when referenced license isn't found in the collection</span></pre></td></tr>
<tr> <td class="numLine"> 229</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 230</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> WithLicense withLicense(Element element,</pre></td></tr>
<tr> <td class="numLine"> 231</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> Map<String, License> licenses,</pre></td></tr>
<tr> <td class="numLine"> 232</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> Map<String, Organisation> organisations) <span class="keyword">throws</span> MissingIDException {</pre></td></tr>
<tr> <td class="numLineCover"> 233</td> <td class="nbHitsCovered"> 75648</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> WithLicense(license(element, licenses), copyrightNotice(element), </pre></td></tr>
<tr> <td class="numLine"> 234</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> parameters(element), collectByOrganisations(element, organisations));</pre></td></tr>
<tr> <td class="numLine"> 235</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 236</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 237</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 238</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Extracts copyright notice content from with-license.</span></pre></td></tr>
<tr> <td class="numLine"> 239</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param element not null</span></pre></td></tr>
<tr> <td class="numLine"> 240</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return not null</span></pre></td></tr>
<tr> <td class="numLine"> 241</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 242</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> String copyrightNotice(<span class="keyword">final</span> Element element) {</pre></td></tr>
<tr> <td class="numLine"> 243</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">final</span> String result;</pre></td></tr>
<tr> <td class="numLineCover"> 244</td> <td class="nbHitsCovered"> 75648</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Element copyrightNoticeElement = element.getChild(COPYRIGHT_NOTICE_NAME);</pre></td></tr>
<tr> <td class="numLineCover"> 245</td> <td class="nbHitsCovered"><a title="Line 245: Conditional coverage 100% (2/2)."> 75648</a></td> <td class="src"><pre class="src"> <a title="Line 245: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (copyrightNoticeElement == <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 246</td> <td class="nbHitsCovered"> 75644</td> <td class="src"><pre class="src"> result = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine"> 247</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover"> 248</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> result = copyrightNoticeElement.getTextTrim();</pre></td></tr>
<tr> <td class="numLine"> 249</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLineCover"> 250</td> <td class="nbHitsCovered"> 75648</td> <td class="src"><pre class="src"> <span class="keyword">return</span> result;</pre></td></tr>
<tr> <td class="numLine"> 251</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 252</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 253</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 254</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Builds a list of parameter values by name.</span></pre></td></tr>
<tr> <td class="numLine"> 255</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param element not null</span></pre></td></tr>
<tr> <td class="numLine"> 256</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return parameter values indexed by value, not null</span></pre></td></tr>
<tr> <td class="numLine"> 257</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @throws DuplicateElementException when two parameters shared the same name</span></pre></td></tr>
<tr> <td class="numLine"> 258</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 259</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td></tr>
<tr> <td class="numLine"> 260</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> Map<String, String> parameters(Element element) <span class="keyword">throws</span> DuplicateElementException {</pre></td></tr>
<tr> <td class="numLineCover"> 261</td> <td class="nbHitsCovered"> 75666</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Map<String, String> results = <span class="keyword">new</span> HashMap<String, String>();</pre></td></tr>
<tr> <td class="numLineCover"> 262</td> <td class="nbHitsCovered"> 75666</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Element licenseParametersElement = element.getChild(<span class="string">"license-parameters"</span>);</pre></td></tr>
<tr> <td class="numLineCover"> 263</td> <td class="nbHitsCovered"><a title="Line 263: Conditional coverage 100% (2/2)."> 75666</a></td> <td class="src"><pre class="src"> <a title="Line 263: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (licenseParametersElement != <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 264</td> <td class="nbHitsCovered"><a title="Line 264: Conditional coverage 100% (2/2)."> 274</a></td> <td class="src"><pre class="src"> <a title="Line 264: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Element parameterElement: (List<Element>) licenseParametersElement.getChildren(<span class="string">"parameter"</span>)) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 265</td> <td class="nbHitsCovered"> 16518</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String name = parameterElement.getChild(<span class="string">"name"</span>).getTextTrim();</pre></td></tr>
<tr> <td class="numLineCover"> 266</td> <td class="nbHitsCovered"><a title="Line 266: Conditional coverage 100% (2/2)."> 16518</a></td> <td class="src"><pre class="src"> <a title="Line 266: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (results.containsKey(name)) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 267</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> DuplicateElementException(<span class="string">"Duplicate parameter '"</span> + name + <span class="string">"'"</span>);</pre></td></tr>
<tr> <td class="numLine"> 268</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLineCover"> 269</td> <td class="nbHitsCovered"> 16516</td> <td class="src"><pre class="src"> results.put(name, </pre></td></tr>
<tr> <td class="numLine"> 270</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> parameterElement.getChild(<span class="string">"value"</span>).getTextTrim());</pre></td></tr>
<tr> <td class="numLineCover"> 271</td> <td class="nbHitsCovered"> 16516</td> <td class="src"><pre class="src"> } </pre></td></tr>
<tr> <td class="numLine"> 272</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLineCover"> 273</td> <td class="nbHitsCovered"> 75664</td> <td class="src"><pre class="src"> <span class="keyword">return</span> results;</pre></td></tr>
<tr> <td class="numLine"> 274</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 275</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 276</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 277</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Collects child with-licenses.</span></pre></td></tr>
<tr> <td class="numLine"> 278</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param licenses not null</span></pre></td></tr>
<tr> <td class="numLine"> 279</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param organisations not null</span></pre></td></tr>
<tr> <td class="numLine"> 280</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param parent not null</span></pre></td></tr>
<tr> <td class="numLine"> 281</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return not null, possibly empty</span></pre></td></tr>
<tr> <td class="numLine"> 282</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 283</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td></tr>
<tr> <td class="numLine"> 284</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> Collection<WithLicense> withLicenses(Map<String, License> licenses,</pre></td></tr>
<tr> <td class="numLine"> 285</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> Map<String, Organisation> organisations, Element parent) {</pre></td></tr>
<tr> <td class="numLineCover"> 286</td> <td class="nbHitsCovered"> 66202</td> <td class="src"><pre class="src"> <span class="keyword">final</span> List<WithLicense> results = <span class="keyword">new</span> ArrayList<WithLicense>();</pre></td></tr>
<tr> <td class="numLineCover"> 287</td> <td class="nbHitsCovered"><a title="Line 287: Conditional coverage 100% (2/2)."> 66202</a></td> <td class="src"><pre class="src"> <a title="Line 287: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Element withLicenseElement: (List<Element>) parent.getChildren(<span class="string">"with-license"</span>)) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 288</td> <td class="nbHitsCovered"> 75380</td> <td class="src"><pre class="src"> results.add(<span class="keyword">new</span> JDomBuilder().withLicense(withLicenseElement, licenses, organisations));</pre></td></tr>
<tr> <td class="numLine"> 289</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLineCover"> 290</td> <td class="nbHitsCovered"> 66202</td> <td class="src"><pre class="src"> Collections.sort(results);</pre></td></tr>
<tr> <td class="numLineCover"> 291</td> <td class="nbHitsCovered"> 66202</td> <td class="src"><pre class="src"> <span class="keyword">return</span> results;</pre></td></tr>
<tr> <td class="numLine"> 292</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 293</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 294</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 295</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Collects child organisations of public domain.</span></pre></td></tr>
<tr> <td class="numLine"> 296</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param organisations not null</span></pre></td></tr>
<tr> <td class="numLine"> 297</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param parent not null</span></pre></td></tr>
<tr> <td class="numLine"> 298</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return not null, possibly null</span></pre></td></tr>
<tr> <td class="numLine"> 299</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 300</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> Collection<ByOrganisation> publicDomain(</pre></td></tr>
<tr> <td class="numLine"> 301</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">final</span> Map<String, Organisation> organisations, <span class="keyword">final</span> Element parent) {</pre></td></tr>
<tr> <td class="numLineCover"> 302</td> <td class="nbHitsCovered"> 66202</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> JDomBuilder().collectByOrganisations(parent.getChild(<span class="string">"public-domain"</span>), organisations);</pre></td></tr>
<tr> <td class="numLine"> 303</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 304</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 305</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 306</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Builds a within directory model from XML.</span></pre></td></tr>
<tr> <td class="numLine"> 307</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param element not null</span></pre></td></tr>
<tr> <td class="numLine"> 308</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param licenses not null</span></pre></td></tr>
<tr> <td class="numLine"> 309</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param organisations not null</span></pre></td></tr>
<tr> <td class="numLine"> 310</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return not null</span></pre></td></tr>
<tr> <td class="numLine"> 311</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 312</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> WithinDirectory withinDirectory(Element element,</pre></td></tr>
<tr> <td class="numLine"> 313</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> Map<String, License> licenses,</pre></td></tr>
<tr> <td class="numLine"> 314</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> Map<String, Organisation> organisations) {</pre></td></tr>
<tr> <td class="numLineCover"> 315</td> <td class="nbHitsCovered"> 65690</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> WithinDirectory(element.getAttributeValue(<span class="string">"dir"</span>), </pre></td></tr>
<tr> <td class="numLine"> 316</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> withLicenses(licenses, organisations, element), publicDomain(organisations, element));</pre></td></tr>
<tr> <td class="numLine"> 317</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 318</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 319</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 320</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Collects organisation definitions within document.</span></pre></td></tr>
<tr> <td class="numLine"> 321</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param document, not null</span></pre></td></tr>
<tr> <td class="numLine"> 322</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return organisations indexed by id, not null possibly empty</span></pre></td></tr>
<tr> <td class="numLine"> 323</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 324</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> Map<String, Organisation> mapOrganisations(Document document) {</pre></td></tr>
<tr> <td class="numLineCover"> 325</td> <td class="nbHitsCovered"> 516</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Map<String, Organisation> organisationsById = <span class="keyword">new</span> HashMap<String, Organisation>();</pre></td></tr>
<tr> <td class="numLine"> 326</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLineCover"> 327</td> <td class="nbHitsCovered"> 516</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Element childOrganisations = document.getRootElement().getChild(<span class="string">"organisations"</span>);</pre></td></tr>
<tr> <td class="numLineCover"> 328</td> <td class="nbHitsCovered"><a title="Line 328: Conditional coverage 100% (2/2)."> 516</a></td> <td class="src"><pre class="src"> <a title="Line 328: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (childOrganisations != <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLine"> 329</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td></tr>
<tr> <td class="numLineCover"> 330</td> <td class="nbHitsCovered"> 510</td> <td class="src"><pre class="src"> <span class="keyword">final</span> List<Element> organisations = (List<Element>) childOrganisations.getChildren(<span class="string">"organisation"</span>);</pre></td></tr>
<tr> <td class="numLineCover"> 331</td> <td class="nbHitsCovered"><a title="Line 331: Conditional coverage 100% (2/2)."> 510</a></td> <td class="src"><pre class="src"> <a title="Line 331: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">final</span> Element element: organisations) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 332</td> <td class="nbHitsCovered"> 65280</td> <td class="src"><pre class="src"> <span class="keyword">new</span> JDomBuilder().organisation(element).storeIn(organisationsById);</pre></td></tr>
<tr> <td class="numLine"> 333</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 334</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLineCover"> 335</td> <td class="nbHitsCovered"> 516</td> <td class="src"><pre class="src"> <span class="keyword">return</span> Collections.unmodifiableMap(organisationsById);</pre></td></tr>
<tr> <td class="numLine"> 336</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 337</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 338</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 339</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Collects license definitions within document.</span></pre></td></tr>
<tr> <td class="numLine"> 340</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param document, not null</span></pre></td></tr>
<tr> <td class="numLine"> 341</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return licenses, indexed by id, not null, possibly empty</span></pre></td></tr>
<tr> <td class="numLine"> 342</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 343</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> Map<String, License> mapLicenses(Document document) {</pre></td></tr>
<tr> <td class="numLineCover"> 344</td> <td class="nbHitsCovered"> 518</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Map<String, License> results = <span class="keyword">new</span> HashMap<String, License>();</pre></td></tr>
<tr> <td class="numLineCover"> 345</td> <td class="nbHitsCovered"> 518</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Element licensesChild = document.getRootElement().getChild(<span class="string">"licenses"</span>);</pre></td></tr>
<tr> <td class="numLineCover"> 346</td> <td class="nbHitsCovered"><a title="Line 346: Conditional coverage 100% (2/2)."> 518</a></td> <td class="src"><pre class="src"> <a title="Line 346: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (licensesChild != <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLine"> 347</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td></tr>
<tr> <td class="numLineCover"> 348</td> <td class="nbHitsCovered"> 514</td> <td class="src"><pre class="src"> <span class="keyword">final</span> List<Element> children = (List<Element>) licensesChild.getChildren();</pre></td></tr>
<tr> <td class="numLineCover"> 349</td> <td class="nbHitsCovered"><a title="Line 349: Conditional coverage 100% (2/2)."> 514</a></td> <td class="src"><pre class="src"> <a title="Line 349: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">final</span> Element element: children) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 350</td> <td class="nbHitsCovered"> 65282</td> <td class="src"><pre class="src"> <span class="keyword">new</span> JDomBuilder().license(element).storeIn(results);</pre></td></tr>
<tr> <td class="numLine"> 351</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 352</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLineCover"> 353</td> <td class="nbHitsCovered"> 518</td> <td class="src"><pre class="src"> <span class="keyword">return</span> Collections.unmodifiableMap(results);</pre></td></tr>
<tr> <td class="numLine"> 354</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 355</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 356</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 357</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 358</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Finds the primary license for the given document from the given licenses.</span></pre></td></tr>
<tr> <td class="numLine"> 359</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param document not null</span></pre></td></tr>
<tr> <td class="numLine"> 360</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param licenses not null</span></pre></td></tr>
<tr> <td class="numLine"> 361</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return not null</span></pre></td></tr>
<tr> <td class="numLine"> 362</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 363</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> License primaryLicense(Document document,</pre></td></tr>
<tr> <td class="numLine"> 364</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> Map<String, License> licenses) {</pre></td></tr>
<tr> <td class="numLineCover"> 365</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String idAttributeValue = getPrimaryLicenseElement(document).getAttributeValue(<span class="string">"id"</span>);</pre></td></tr>
<tr> <td class="numLineCover"> 366</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">final</span> License results = licenses.get(idAttributeValue);</pre></td></tr>
<tr> <td class="numLineCover"> 367</td> <td class="nbHitsCovered"><a title="Line 367: Conditional coverage 100% (2/2)."> 6</a></td> <td class="src"><pre class="src"> <a title="Line 367: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (results == <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 368</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> MissingIDException(LICENSE_ELEMENT_NAME, PRIMARY_LICENSE_NAME, idAttributeValue);</pre></td></tr>
<tr> <td class="numLine"> 369</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLineCover"> 370</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">return</span> results;</pre></td></tr>
<tr> <td class="numLine"> 371</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 372</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 373</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 374</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Gets the element representing the primary license.</span></pre></td></tr>
<tr> <td class="numLine"> 375</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param document not null</span></pre></td></tr>
<tr> <td class="numLine"> 376</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return not null</span></pre></td></tr>
<tr> <td class="numLine"> 377</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 378</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> Element getPrimaryLicenseElement(<span class="keyword">final</span> Document document) {</pre></td></tr>
<tr> <td class="numLineCover"> 379</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> <span class="keyword">return</span> document.getRootElement().getChild(PRIMARY_LICENSE_NAME);</pre></td></tr>
<tr> <td class="numLine"> 380</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 381</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 382</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 383</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Gets the additional primary copyright notice </span></pre></td></tr>
<tr> <td class="numLine"> 384</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * from the document.</span></pre></td></tr>
<tr> <td class="numLine"> 385</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param document not null</span></pre></td></tr>
<tr> <td class="numLine"> 386</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return optional primary copyright notice, possibly null</span></pre></td></tr>
<tr> <td class="numLine"> 387</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 388</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> String primaryCopyrightNotice(<span class="keyword">final</span> Document document) {</pre></td></tr>
<tr> <td class="numLine"> 389</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">final</span> String result;</pre></td></tr>
<tr> <td class="numLineCover"> 390</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Element copyrightElement = </pre></td></tr>
<tr> <td class="numLine"> 391</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> getPrimaryLicenseElement(document).getChild(COPYRIGHT_NOTICE_NAME);</pre></td></tr>
<tr> <td class="numLineCover"> 392</td> <td class="nbHitsCovered"><a title="Line 392: Conditional coverage 100% (2/2)."> 6</a></td> <td class="src"><pre class="src"> <a title="Line 392: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (copyrightElement == <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 393</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> result = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine"> 394</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover"> 395</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> result = copyrightElement.getTextTrim();</pre></td></tr>
<tr> <td class="numLine"> 396</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLineCover"> 397</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">return</span> result;</pre></td></tr>
<tr> <td class="numLine"> 398</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 399</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 400</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 401</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 402</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Collects notices in the given documents.</span></pre></td></tr>
<tr> <td class="numLine"> 403</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param document, not null</span></pre></td></tr>
<tr> <td class="numLine"> 404</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return notices indexed by id, immutable, not null, possibly empty</span></pre></td></tr>
<tr> <td class="numLine"> 405</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 406</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> Map<String, String> mapNotices(Document document) {</pre></td></tr>
<tr> <td class="numLineCover"> 407</td> <td class="nbHitsCovered"> 518</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Map<String, String> results = <span class="keyword">new</span> HashMap<String, String>();</pre></td></tr>
<tr> <td class="numLineCover"> 408</td> <td class="nbHitsCovered"> 518</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Element noticesElement = document.getRootElement().getChild(<span class="string">"notices"</span>);</pre></td></tr>
<tr> <td class="numLineCover"> 409</td> <td class="nbHitsCovered"><a title="Line 409: Conditional coverage 100% (2/2)."> 518</a></td> <td class="src"><pre class="src"> <a title="Line 409: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (noticesElement != <span class="keyword">null</span>){</a></pre></td></tr>
<tr> <td class="numLine"> 410</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td></tr>
<tr> <td class="numLineCover"> 411</td> <td class="nbHitsCovered"> 512</td> <td class="src"><pre class="src"> <span class="keyword">final</span> List<Element> children = (List<Element>) noticesElement.getChildren();</pre></td></tr>
<tr> <td class="numLineCover"> 412</td> <td class="nbHitsCovered"><a title="Line 412: Conditional coverage 100% (2/2)."> 512</a></td> <td class="src"><pre class="src"> <a title="Line 412: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">final</span> Element element: children) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 413</td> <td class="nbHitsCovered"> 65280</td> <td class="src"><pre class="src"> results.put(element.getAttributeValue(<span class="string">"id"</span>), element.getTextTrim());</pre></td></tr>
<tr> <td class="numLine"> 414</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 415</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLineCover"> 416</td> <td class="nbHitsCovered"> 518</td> <td class="src"><pre class="src"> <span class="keyword">return</span> Collections.unmodifiableMap(results);</pre></td></tr>
<tr> <td class="numLine"> 417</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 418</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 419</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 420</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 421</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Retrieves the text of the primary notice.</span></pre></td></tr>
<tr> <td class="numLine"> 422</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param document, not null</span></pre></td></tr>
<tr> <td class="numLine"> 423</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return the text of the primary notice, </span></pre></td></tr>
<tr> <td class="numLine"> 424</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * or null when there is no primary notice</span></pre></td></tr>
<tr> <td class="numLine"> 425</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 426</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> String primaryNotice(Document document) {</pre></td></tr>
<tr> <td class="numLine"> 427</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">final</span> String result;</pre></td></tr>
<tr> <td class="numLineCover"> 428</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Element primaryNoticeElement = document.getRootElement().getChild(<span class="string">"primary-notice"</span>);</pre></td></tr>
<tr> <td class="numLineCover"> 429</td> <td class="nbHitsCovered"><a title="Line 429: Conditional coverage 100% (2/2)."> 8</a></td> <td class="src"><pre class="src"> <a title="Line 429: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (primaryNoticeElement == <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 430</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> result = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine"> 431</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover"> 432</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> result = primaryNoticeElement.getText()</pre></td></tr>
<tr> <td class="numLine"> 433</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> .replace(<span class="string">"${year}"</span>, Integer.toString(Calendar.getInstance().get(Calendar.YEAR)));</pre></td></tr>
<tr> <td class="numLine"> 434</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLineCover"> 435</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> <span class="keyword">return</span> result;</pre></td></tr>
<tr> <td class="numLine"> 436</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 437</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 438</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 439</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Retrieves the ID of the primary organisation.</span></pre></td></tr>
<tr> <td class="numLine"> 440</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param document, not null</span></pre></td></tr>
<tr> <td class="numLine"> 441</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return the id of the primary organisation when set,</span></pre></td></tr>
<tr> <td class="numLine"> 442</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * otherwise null</span></pre></td></tr>
<tr> <td class="numLine"> 443</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 444</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> String primaryOrganisationId(<span class="keyword">final</span> Document document) {</pre></td></tr>
<tr> <td class="numLine"> 445</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">final</span> String result;</pre></td></tr>
<tr> <td class="numLineCover"> 446</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Element primaryOrganisationElement = document.getRootElement().getChild(<span class="string">"primary-organisation"</span>);</pre></td></tr>
<tr> <td class="numLineCover"> 447</td> <td class="nbHitsCovered"><a title="Line 447: Conditional coverage 100% (2/2)."> 6</a></td> <td class="src"><pre class="src"> <a title="Line 447: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (primaryOrganisationElement == <span class="keyword">null</span>) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 448</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> result = <span class="keyword">null</span>;</pre></td></tr>
<tr> <td class="numLine"> 449</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover"> 450</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> result = primaryOrganisationElement.getAttributeValue(<span class="string">"id"</span>);</pre></td></tr>
<tr> <td class="numLine"> 451</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLineCover"> 452</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> <span class="keyword">return</span> result;</pre></td></tr>
<tr> <td class="numLine"> 453</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } </pre></td></tr>
<tr> <td class="numLine"> 454</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 455</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">private</span> WithinDirectory directory(<span class="keyword">final</span> Element element, <span class="keyword">final</span> Map<String, License> licenses,</pre></td></tr>
<tr> <td class="numLine"> 456</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">final</span> Map<String, Organisation> organisations) {</pre></td></tr>
<tr> <td class="numLineCover"> 457</td> <td class="nbHitsCovered"> 65284</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> JDomBuilder().withinDirectory(element, licenses, organisations);</pre></td></tr>
<tr> <td class="numLine"> 458</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 459</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 460</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 461</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Collects contents of the document.</span></pre></td></tr>
<tr> <td class="numLine"> 462</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param document not null</span></pre></td></tr>
<tr> <td class="numLine"> 463</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return not null, possibly empty</span></pre></td></tr>
<tr> <td class="numLine"> 464</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @throws DuplicateElementException when dir names are not unique</span></pre></td></tr>
<tr> <td class="numLine"> 465</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 466</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> @SuppressWarnings(<span class="string">"PMD.EmptyIfStmt"</span>)</pre></td></tr>
<tr> <td class="numLine"> 467</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> Collection<WithinDirectory> collectContents(<span class="keyword">final</span> Document document, <span class="keyword">final</span> Map<String, License> licenses,</pre></td></tr>
<tr> <td class="numLine"> 468</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">final</span> Map<String, Organisation> organisations) <span class="keyword">throws</span> DuplicateElementException {</pre></td></tr>
<tr> <td class="numLineCover"> 469</td> <td class="nbHitsCovered"> 516</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Collection<WithinDirectory> results = <span class="keyword">new</span> TreeSet<WithinDirectory>();</pre></td></tr>
<tr> <td class="numLine"> 470</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> @SuppressWarnings(<span class="string">"unchecked"</span>)</pre></td></tr>
<tr> <td class="numLineCover"> 471</td> <td class="nbHitsCovered"> 516</td> <td class="src"><pre class="src"> <span class="keyword">final</span> List<Element> children = document.getRootElement().getChildren(<span class="string">"within"</span>);</pre></td></tr>
<tr> <td class="numLineCover"> 472</td> <td class="nbHitsCovered"><a title="Line 472: Conditional coverage 100% (2/2)."> 516</a></td> <td class="src"><pre class="src"> <a title="Line 472: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Element element: children) {</a></pre></td></tr>
<tr> <td class="numLineCover"> 473</td> <td class="nbHitsCovered"><a title="Line 473: Conditional coverage 100% (2/2)."> 65284</a></td> <td class="src"><pre class="src"> <a title="Line 473: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (results.add(directory(element, licenses, organisations))) {</a></pre></td></tr>
<tr> <td class="numLine"> 474</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">// fine</span></pre></td></tr>
<tr> <td class="numLine"> 475</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr>
<tr> <td class="numLineCover"> 476</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> DuplicateElementException(<span class="string">"Duplicate parameter '"</span> + element.getAttribute(<span class="string">"dir"</span>).getValue() + <span class="string">"'"</span>);</pre></td></tr>
<tr> <td class="numLine"> 477</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 478</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLineCover"> 479</td> <td class="nbHitsCovered"> 514</td> <td class="src"><pre class="src"> <span class="keyword">return</span> results;</pre></td></tr>
<tr> <td class="numLine"> 480</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 481</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 482</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr>
<tr> <td class="numLine"> 483</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * Builds work from the given document.</span></pre></td></tr>
<tr> <td class="numLine"> 484</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @param document not null</span></pre></td></tr>
<tr> <td class="numLine"> 485</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> * @return not null</span></pre></td></tr>
<tr> <td class="numLine"> 486</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr>
<tr> <td class="numLine"> 487</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> Descriptor build(<span class="keyword">final</span> Document document) {</pre></td></tr>
<tr> <td class="numLineCover"> 488</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Map<String, Organisation> organisations = mapOrganisations(document);</pre></td></tr>
<tr> <td class="numLineCover"> 489</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Map<String, License> licenses = mapLicenses(document);</pre></td></tr>
<tr> <td class="numLineCover"> 490</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Map<String, String> notices = mapNotices(document);</pre></td></tr>
<tr> <td class="numLineCover"> 491</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> License primaryLicense = primaryLicense(document, licenses);</pre></td></tr>
<tr> <td class="numLineCover"> 492</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String primaryCopyrightNotice = primaryCopyrightNotice(document);</pre></td></tr>
<tr> <td class="numLineCover"> 493</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String primaryNotice = primaryNotice(document);</pre></td></tr>
<tr> <td class="numLineCover"> 494</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> String primaryOrganisationId = primaryOrganisationId(document);</pre></td></tr>
<tr> <td class="numLineCover"> 495</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">final</span> Collection<WithinDirectory> contents = collectContents(document, licenses, organisations); </pre></td></tr>
<tr> <td class="numLineCover"> 496</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> Descriptor(primaryLicense, primaryCopyrightNotice,</pre></td></tr>
<tr> <td class="numLine"> 497</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> primaryOrganisationId, primaryNotice, </pre></td></tr>
<tr> <td class="numLine"> 498</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> licenses, notices, organisations, contents);</pre></td></tr>
<tr> <td class="numLine"> 499</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 500</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> </pre></td></tr>
<tr> <td class="numLine"> 501</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> <span class="keyword">public</span> Descriptor build(<span class="keyword">final</span> InputStream xmlStream) <span class="keyword">throws</span> JDOMException, IOException {</pre></td></tr>
<tr> <td class="numLineCover"> 502</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> build(<span class="keyword">new</span> SAXBuilder().build(xmlStream));</span></pre></td></tr>
<tr> <td class="numLine"> 503</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
<tr> <td class="numLine"> 504</td> <td class="nbHits"> </td>
<td class="src"><pre class="src"> }</pre></td></tr>
</table>
<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.9.4.1 on 7/31/13 9:18 PM.</div>
</body>
</html>