| <!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.odftoolkit.odfdom.pkg.OdfPackage</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.odftoolkit.odfdom.pkg.OdfPackage.html">OdfPackage</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">86%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:86px"><span class="text">758/879</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">77%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:77px"><span class="text">315/406</span></div></div></td></tr></table></td><td class="value"><span class="hidden">3.65625;</span>3,656</td></tr> |
| <tr><td><a href="org.odftoolkit.odfdom.pkg.OdfPackage.html">OdfPackage$1</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">0%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:0px"><span class="text">0/5</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"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">3.65625;</span>3,656</td></tr> |
| <tr><td><a href="org.odftoolkit.odfdom.pkg.OdfPackage.html">OdfPackage$2</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">0%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:0px"><span class="text">0/9</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"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">3.65625;</span>3,656</td></tr> |
| <tr><td><a href="org.odftoolkit.odfdom.pkg.OdfPackage.html">OdfPackage$3</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">0%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:0px"><span class="text">0/10</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">0%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:0px"><span class="text">0/6</span></div></div></td></tr></table></td><td class="value"><span class="hidden">3.65625;</span>3,656</td></tr> |
| <tr><td><a href="org.odftoolkit.odfdom.pkg.OdfPackage.html">OdfPackage$OdfFile</a></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">8/8</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"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">3.65625;</span>3,656</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"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 3</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER</span></pre></td></tr> |
| <tr> <td class="numLine"> 4</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 5</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved.</span></pre></td></tr> |
| <tr> <td class="numLine"> 6</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 7</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Use is subject to license terms.</span></pre></td></tr> |
| <tr> <td class="numLine"> 8</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 9</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License"); you may not</span></pre></td></tr> |
| <tr> <td class="numLine"> 10</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * use this file except in compliance with the License. You may obtain a copy</span></pre></td></tr> |
| <tr> <td class="numLine"> 11</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * of the License at http://www.apache.org/licenses/LICENSE-2.0. You can also</span></pre></td></tr> |
| <tr> <td class="numLine"> 12</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * obtain a copy of the License at http://odftoolkit.org/docs/license.txt</span></pre></td></tr> |
| <tr> <td class="numLine"> 13</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 14</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></pre></td></tr> |
| <tr> <td class="numLine"> 15</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT</span></pre></td></tr> |
| <tr> <td class="numLine"> 16</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></pre></td></tr> |
| <tr> <td class="numLine"> 17</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 18</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * See the License for the specific language governing permissions and</span></pre></td></tr> |
| <tr> <td class="numLine"> 19</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * limitations under the License.</span></pre></td></tr> |
| <tr> <td class="numLine"> 20</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> *</span></pre></td></tr> |
| <tr> <td class="numLine"> 21</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> ************************************************************************/</span></pre></td></tr> |
| <tr> <td class="numLine"> 22</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">package</span> org.odftoolkit.odfdom.pkg;</pre></td></tr> |
| <tr> <td class="numLine"> 23</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </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.io.BufferedInputStream;</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.io.BufferedOutputStream;</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.io.ByteArrayInputStream;</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.io.ByteArrayOutputStream;</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.io.Closeable;</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.io.File;</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.io.FileInputStream;</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.io.FileOutputStream;</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.io.IOException;</pre></td></tr> |
| <tr> <td class="numLine"> 33</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"> 34</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.io.OutputStream;</pre></td></tr> |
| <tr> <td class="numLine"> 35</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.io.PipedInputStream;</pre></td></tr> |
| <tr> <td class="numLine"> 36</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.io.PipedOutputStream;</pre></td></tr> |
| <tr> <td class="numLine"> 37</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.io.UnsupportedEncodingException;</pre></td></tr> |
| <tr> <td class="numLine"> 38</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.lang.reflect.Constructor;</pre></td></tr> |
| <tr> <td class="numLine"> 39</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.net.URI;</pre></td></tr> |
| <tr> <td class="numLine"> 40</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.security.InvalidKeyException;</pre></td></tr> |
| <tr> <td class="numLine"> 41</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.security.MessageDigest;</pre></td></tr> |
| <tr> <td class="numLine"> 42</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.security.NoSuchAlgorithmException;</pre></td></tr> |
| <tr> <td class="numLine"> 43</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.security.SecureRandom;</pre></td></tr> |
| <tr> <td class="numLine"> 44</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"> 45</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.Arrays;</pre></td></tr> |
| <tr> <td class="numLine"> 46</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"> 47</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"> 48</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.Iterator;</pre></td></tr> |
| <tr> <td class="numLine"> 49</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"> 50</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"> 51</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.Map.Entry;</pre></td></tr> |
| <tr> <td class="numLine"> 52</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.Set;</pre></td></tr> |
| <tr> <td class="numLine"> 53</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.StringTokenizer;</pre></td></tr> |
| <tr> <td class="numLine"> 54</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"> 55</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.logging.Level;</pre></td></tr> |
| <tr> <td class="numLine"> 56</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.logging.Logger;</pre></td></tr> |
| <tr> <td class="numLine"> 57</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.regex.Pattern;</pre></td></tr> |
| <tr> <td class="numLine"> 58</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.zip.CRC32;</pre></td></tr> |
| <tr> <td class="numLine"> 59</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.zip.Deflater;</pre></td></tr> |
| <tr> <td class="numLine"> 60</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.zip.Inflater;</pre></td></tr> |
| <tr> <td class="numLine"> 61</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.zip.ZipEntry;</pre></td></tr> |
| <tr> <td class="numLine"> 62</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.zip.ZipException;</pre></td></tr> |
| <tr> <td class="numLine"> 63</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.zip.ZipFile;</pre></td></tr> |
| <tr> <td class="numLine"> 64</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> java.util.zip.ZipOutputStream;</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="keyword">import</span> javax.crypto.Cipher;</pre></td></tr> |
| <tr> <td class="numLine"> 67</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> javax.crypto.Mac;</pre></td></tr> |
| <tr> <td class="numLine"> 68</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> javax.crypto.spec.IvParameterSpec;</pre></td></tr> |
| <tr> <td class="numLine"> 69</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> javax.crypto.spec.SecretKeySpec;</pre></td></tr> |
| <tr> <td class="numLine"> 70</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> javax.xml.parsers.DocumentBuilder;</pre></td></tr> |
| <tr> <td class="numLine"> 71</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> javax.xml.parsers.DocumentBuilderFactory;</pre></td></tr> |
| <tr> <td class="numLine"> 72</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> javax.xml.parsers.ParserConfigurationException;</pre></td></tr> |
| <tr> <td class="numLine"> 73</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> javax.xml.parsers.SAXParser;</pre></td></tr> |
| <tr> <td class="numLine"> 74</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> javax.xml.parsers.SAXParserFactory;</pre></td></tr> |
| <tr> <td class="numLine"> 75</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> javax.xml.transform.TransformerConfigurationException;</pre></td></tr> |
| <tr> <td class="numLine"> 76</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> javax.xml.transform.TransformerException;</pre></td></tr> |
| <tr> <td class="numLine"> 77</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> javax.xml.transform.URIResolver;</pre></td></tr> |
| <tr> <td class="numLine"> 78</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 79</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.apache.xerces.dom.DOMXSImplementationSourceImpl;</pre></td></tr> |
| <tr> <td class="numLine"> 80</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.odftoolkit.odfdom.doc.OdfDocument;</pre></td></tr> |
| <tr> <td class="numLine"> 81</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.odftoolkit.odfdom.doc.OdfDocument.OdfMediaType;</pre></td></tr> |
| <tr> <td class="numLine"> 82</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.odftoolkit.odfdom.pkg.manifest.AlgorithmElement;</pre></td></tr> |
| <tr> <td class="numLine"> 83</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.odftoolkit.odfdom.pkg.manifest.EncryptionDataElement;</pre></td></tr> |
| <tr> <td class="numLine"> 84</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.odftoolkit.odfdom.pkg.manifest.FileEntryElement;</pre></td></tr> |
| <tr> <td class="numLine"> 85</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.odftoolkit.odfdom.pkg.manifest.KeyDerivationElement;</pre></td></tr> |
| <tr> <td class="numLine"> 86</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.odftoolkit.odfdom.pkg.manifest.ManifestElement;</pre></td></tr> |
| <tr> <td class="numLine"> 87</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.odftoolkit.odfdom.pkg.manifest.OdfFileEntry;</pre></td></tr> |
| <tr> <td class="numLine"> 88</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.odftoolkit.odfdom.pkg.manifest.OdfManifestDom;</pre></td></tr> |
| <tr> <td class="numLine"> 89</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.odftoolkit.odfdom.pkg.manifest.StartKeyGenerationElement;</pre></td></tr> |
| <tr> <td class="numLine"> 90</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.odftoolkit.odfdom.pkg.rdfa.Util;</pre></td></tr> |
| <tr> <td class="numLine"> 91</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.odftoolkit.odfdom.type.Base64Binary;</pre></td></tr> |
| <tr> <td class="numLine"> 92</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.w3c.dom.Document;</pre></td></tr> |
| <tr> <td class="numLine"> 93</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.w3c.dom.ls.DOMImplementationLS;</pre></td></tr> |
| <tr> <td class="numLine"> 94</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.w3c.dom.ls.LSOutput;</pre></td></tr> |
| <tr> <td class="numLine"> 95</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.w3c.dom.ls.LSSerializer;</pre></td></tr> |
| <tr> <td class="numLine"> 96</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.xml.sax.EntityResolver;</pre></td></tr> |
| <tr> <td class="numLine"> 97</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.xml.sax.ErrorHandler;</pre></td></tr> |
| <tr> <td class="numLine"> 98</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.xml.sax.InputSource;</pre></td></tr> |
| <tr> <td class="numLine"> 99</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.xml.sax.SAXException;</pre></td></tr> |
| <tr> <td class="numLine"> 100</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.xml.sax.SAXParseException;</pre></td></tr> |
| <tr> <td class="numLine"> 101</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">import</span> org.xml.sax.XMLReader;</pre></td></tr> |
| <tr> <td class="numLine"> 102</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 103</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 104</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * OdfPackage represents the package view to an OpenDocument document. The</span></pre></td></tr> |
| <tr> <td class="numLine"> 105</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * OdfPackage will be created from an ODF document and represents a copy of the</span></pre></td></tr> |
| <tr> <td class="numLine"> 106</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * loaded document, where files can be inserted and deleted. The changes take</span></pre></td></tr> |
| <tr> <td class="numLine"> 107</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * effect, when the OdfPackage is being made persisted by save().</span></pre></td></tr> |
| <tr> <td class="numLine"> 108</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 109</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">public</span> <span class="keyword">class</span> OdfPackage <span class="keyword">implements</span> Closeable {</span></pre></td></tr> |
| <tr> <td class="numLine"> 110</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 111</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Static parts of file references</span></pre></td></tr> |
| <tr> <td class="numLine"> 112</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 DOUBLE_DOT = <span class="string">".."</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 113</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 DOT = <span class="string">"."</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 114</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 SLASH = <span class="string">"/"</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 115</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 COLON = <span class="string">":"</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 116</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 ENCODED_APOSTROPHE = <span class="string">"&apos;"</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 117</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 ENCODED_QUOTATION = <span class="string">"&quot;"</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 118</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 EMPTY_STRING = <span class="string">""</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 119</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 XML_MEDIA_TYPE = <span class="string">"text/xml"</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 120</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Search patterns to be used in RegEx expressions</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 121</td> <td class="nbHitsCovered"> 55</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> Pattern BACK_SLASH_PATTERN = Pattern.compile(<span class="string">"\\\\"</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 122</td> <td class="nbHitsCovered"> 55</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> Pattern DOUBLE_SLASH_PATTERN = Pattern.compile(<span class="string">"//"</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 123</td> <td class="nbHitsCovered"> 55</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> Pattern QUOTATION_PATTERN = Pattern.compile(<span class="string">"\""</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 124</td> <td class="nbHitsCovered"> 55</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> Pattern APOSTROPHE_PATTERN = Pattern.compile(<span class="string">"'"</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 125</td> <td class="nbHitsCovered"> 55</td> <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> Pattern CONTROL_CHAR_PATTERN = Pattern.compile(<span class="string">"\\p{Cntrl}"</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 126</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> Set<String> mCompressedFileTypes;</pre></td></tr> |
| <tr> <td class="numLine"> 127</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// some well known streams inside ODF packages</span></pre></td></tr> |
| <tr> <td class="numLine"> 128</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> String mMediaType;</pre></td></tr> |
| <tr> <td class="numLine"> 129</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> String mBaseURI;</pre></td></tr> |
| <tr> <td class="numLine"> 130</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> ZipHelper mZipFile;</pre></td></tr> |
| <tr> <td class="numLine"> 131</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> Resolver mResolver;</pre></td></tr> |
| <tr> <td class="numLine"> 132</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> Map<String, ZipEntry> mZipEntries;</pre></td></tr> |
| <tr> <td class="numLine"> 133</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> HashMap<String, ZipEntry> mOriginalZipEntries;</pre></td></tr> |
| <tr> <td class="numLine"> 134</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> Map<String, OdfFileEntry> mManifestEntries;</pre></td></tr> |
| <tr> <td class="numLine"> 135</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// All opened documents from the same package are cached (including the root</span></pre></td></tr> |
| <tr> <td class="numLine"> 136</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// document)</span></pre></td></tr> |
| <tr> <td class="numLine"> 137</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> Map<String, OdfPackageDocument> mPkgDocuments;</pre></td></tr> |
| <tr> <td class="numLine"> 138</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Three different incarnations of a package file/data</span></pre></td></tr> |
| <tr> <td class="numLine"> 139</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// save() will check 1) mPkgDoms, 2) if not check mMemoryFileCache</span></pre></td></tr> |
| <tr> <td class="numLine"> 140</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> HashMap<String, Document> mPkgDoms;</pre></td></tr> |
| <tr> <td class="numLine"> 141</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> HashMap<String, <span class="keyword">byte</span>[]> mMemoryFileCache;</pre></td></tr> |
| <tr> <td class="numLine"> 142</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 143</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> ErrorHandler mErrorHandler;</pre></td></tr> |
| <tr> <td class="numLine"> 144</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> String mManifestVersion;</pre></td></tr> |
| <tr> <td class="numLine"> 145</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> OdfManifestDom mManifestDom;</pre></td></tr> |
| <tr> <td class="numLine"> 146</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> String oldPwd;</pre></td></tr> |
| <tr> <td class="numLine"> 147</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> String newPwd;</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">/* Commonly used files within the ODF Package */</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 150</td> <td class="nbHitsCovered"> 7549</td> <td class="src"><pre class="src"> <span class="keyword">public</span> enum OdfFile {</pre></td></tr> |
| <tr> <td class="numLine"> 151</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 152</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 153</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The image directory is not defined by the OpenDocument standard,</span></pre></td></tr> |
| <tr> <td class="numLine"> 154</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * nevertheless the most spread ODF application OpenOffice.org is using</span></pre></td></tr> |
| <tr> <td class="numLine"> 155</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the directory named "Pictures".</span></pre></td></tr> |
| <tr> <td class="numLine"> 156</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 157</td> <td class="nbHitsCovered"> 54</td> <td class="src"><pre class="src"> IMAGE_DIRECTORY(<span class="string">"Pictures"</span>),</pre></td></tr> |
| <tr> <td class="numLine"> 158</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 159</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The "META-INF/manifest.xml" file is defined by the ODF 1.2 part 3</span></pre></td></tr> |
| <tr> <td class="numLine"> 160</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Package specification. This manifest is the 'content table' of the</span></pre></td></tr> |
| <tr> <td class="numLine"> 161</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * ODF package and describes the file entries of the ZIP including</span></pre></td></tr> |
| <tr> <td class="numLine"> 162</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * directories, but should not contain empty directories.</span></pre></td></tr> |
| <tr> <td class="numLine"> 163</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 164</td> <td class="nbHitsCovered"> 54</td> <td class="src"><pre class="src"> MANIFEST(<span class="string">"META-INF/manifest.xml"</span>),</pre></td></tr> |
| <tr> <td class="numLine"> 165</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 166</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The "mimetype" file is defined by the ODF 1.2 part 3 Package</span></pre></td></tr> |
| <tr> <td class="numLine"> 167</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * specification. It contains the mediatype string of the root document</span></pre></td></tr> |
| <tr> <td class="numLine"> 168</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * and must be the first file in the ZIP and must not be compressed.</span></pre></td></tr> |
| <tr> <td class="numLine"> 169</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 170</td> <td class="nbHitsCovered"> 54</td> <td class="src"><pre class="src"> MEDIA_TYPE(<span class="string">"mimetype"</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 171</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">final</span> String internalPath;</pre></td></tr> |
| <tr> <td class="numLine"> 172</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 173</td> <td class="nbHitsCovered"> 162</td> <td class="src"><pre class="src"> OdfFile(String internalPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 174</td> <td class="nbHitsCovered"> 162</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.internalPath = internalPath;</pre></td></tr> |
| <tr> <td class="numLineCover"> 175</td> <td class="nbHitsCovered"> 162</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 176</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 177</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> String getPath() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 178</td> <td class="nbHitsCovered"> 29733</td> <td class="src"><pre class="src"> <span class="keyword">return</span> internalPath;</pre></td></tr> |
| <tr> <td class="numLine"> 179</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 180</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 181</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 182</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">static</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 183</td> <td class="nbHitsCovered"> 55</td> <td class="src"><pre class="src"> mCompressedFileTypes = <span class="keyword">new</span> HashSet<String>();</pre></td></tr> |
| <tr> <td class="numLineCover"> 184</td> <td class="nbHitsCovered"> 55</td> <td class="src"><pre class="src"> String[] typelist = <span class="keyword">new</span> String[] { <span class="string">"jpg"</span>, <span class="string">"gif"</span>, <span class="string">"png"</span>, <span class="string">"zip"</span>, <span class="string">"rar"</span>, <span class="string">"jpeg"</span>, <span class="string">"mpe"</span>, <span class="string">"mpg"</span>, <span class="string">"mpeg"</span>, <span class="string">"mpeg4"</span>, <span class="string">"mp4"</span>, <span class="string">"7z"</span>, <span class="string">"ari"</span>, <span class="string">"arj"</span>, <span class="string">"jar"</span>, <span class="string">"gz"</span>, <span class="string">"tar"</span>, <span class="string">"war"</span>, <span class="string">"mov"</span>, <span class="string">"avi"</span> };</pre></td></tr> |
| <tr> <td class="numLineCover"> 185</td> <td class="nbHitsCovered"> 55</td> <td class="src"><pre class="src"> mCompressedFileTypes.addAll(Arrays.asList(typelist));</pre></td></tr> |
| <tr> <td class="numLineCover"> 186</td> <td class="nbHitsCovered"> 55</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 187</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 188</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 189</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Creates the ODFPackage as an empty Package.</span></pre></td></tr> |
| <tr> <td class="numLine"> 190</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 191</td> <td class="nbHitsCovered"> 564</td> <td class="src"><pre class="src"> <span class="keyword">private</span> OdfPackage() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 192</td> <td class="nbHitsCovered"> 564</td> <td class="src"><pre class="src"> mMediaType = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 193</td> <td class="nbHitsCovered"> 564</td> <td class="src"><pre class="src"> mResolver = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 194</td> <td class="nbHitsCovered"> 564</td> <td class="src"><pre class="src"> mPkgDocuments = <span class="keyword">new</span> HashMap<String, OdfPackageDocument>();</pre></td></tr> |
| <tr> <td class="numLineCover"> 195</td> <td class="nbHitsCovered"> 564</td> <td class="src"><pre class="src"> mPkgDoms = <span class="keyword">new</span> HashMap<String, Document>();</pre></td></tr> |
| <tr> <td class="numLineCover"> 196</td> <td class="nbHitsCovered"> 564</td> <td class="src"><pre class="src"> mMemoryFileCache = <span class="keyword">new</span> HashMap<String, <span class="keyword">byte</span>[]>();</pre></td></tr> |
| <tr> <td class="numLineCover"> 197</td> <td class="nbHitsCovered"> 564</td> <td class="src"><pre class="src"> mManifestEntries = <span class="keyword">new</span> HashMap<String, OdfFileEntry>();</pre></td></tr> |
| <tr> <td class="numLine"> 198</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// specify whether validation should be enabled and what SAX</span></pre></td></tr> |
| <tr> <td class="numLine"> 199</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// ErrorHandler should be used.</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 200</td> <td class="nbHitsUncovered"><a title="Line 200: Conditional coverage 50% (1/2)."> 564</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 200: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (mErrorHandler == <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 201</td> <td class="nbHitsCovered"> 564</td> <td class="src"><pre class="src"> String errorHandlerProperty = System.getProperty(<span class="string">"org.odftoolkit.odfdom.validation"</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 202</td> <td class="nbHitsUncovered"><a title="Line 202: Conditional coverage 50% (1/2)."> 564</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 202: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (errorHandlerProperty != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 203</td> <td class="nbHitsUncovered"><a title="Line 203: Conditional coverage 50% (1/2)."> 564</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 203: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (errorHandlerProperty.equalsIgnoreCase(<span class="string">"true"</span>)) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 204</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> mErrorHandler = <span class="keyword">new</span> DefaultErrorHandler();</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 205</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(OdfPackage.<span class="keyword">class</span>.getName()).info(<span class="string">"Activated validation with default ErrorHandler!"</span>);</span></pre></td></tr> |
| <tr> <td class="numLine"> 206</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLine"> 207</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 208</td> <td class="nbHitsCovered"> 564</td> <td class="src"><pre class="src"> Class cl = Class.forName(errorHandlerProperty);</pre></td></tr> |
| <tr> <td class="numLineCover"> 209</td> <td class="nbHitsCovered"> 564</td> <td class="src"><pre class="src"> Constructor ctor = cl.getDeclaredConstructor(<span class="keyword">new</span> Class[] {});</pre></td></tr> |
| <tr> <td class="numLineCover"> 210</td> <td class="nbHitsCovered"> 564</td> <td class="src"><pre class="src"> mErrorHandler = (ErrorHandler) ctor.newInstance();</pre></td></tr> |
| <tr> <td class="numLineCover"> 211</td> <td class="nbHitsCovered"> 564</td> <td class="src"><pre class="src"> Logger.getLogger(OdfPackage.<span class="keyword">class</span>.getName()).log(Level.CONFIG, <span class="string">"Activated validation with ErrorHandler:''{0}''!"</span>, errorHandlerProperty);</pre></td></tr> |
| <tr> <td class="numLineCover"> 212</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (Exception ex) {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 213</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(OdfPackage.<span class="keyword">class</span>.getName()).log(Level.SEVERE, <span class="string">"Could not initiate validation with the given ErrorHandler: '"</span> + errorHandlerProperty + <span class="string">"'"</span>, ex);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 214</td> <td class="nbHitsCovered"> 564</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 215</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 216</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 217</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 218</td> <td class="nbHitsCovered"> 564</td> <td class="src"><pre class="src"> }</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"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 221</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Creates an OdfPackage from the OpenDocument provided by a File.</span></pre></td></tr> |
| <tr> <td class="numLine"> 222</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p></span></pre></td></tr> |
| <tr> <td class="numLine"> 223</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * OdfPackage relies on the file being available for read access over the</span></pre></td></tr> |
| <tr> <td class="numLine"> 224</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * whole lifecycle of OdfPackage.</span></pre></td></tr> |
| <tr> <td class="numLine"> 225</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </p></span></pre></td></tr> |
| <tr> <td class="numLine"> 226</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 227</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param pkgFile</span></pre></td></tr> |
| <tr> <td class="numLine"> 228</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - a file representing the ODF document</span></pre></td></tr> |
| <tr> <td class="numLine"> 229</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param baseURI</span></pre></td></tr> |
| <tr> <td class="numLine"> 230</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * defining the base URI of ODF package.</span></pre></td></tr> |
| <tr> <td class="numLine"> 231</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param password</span></pre></td></tr> |
| <tr> <td class="numLine"> 232</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * defining the password of ODF package.</span></pre></td></tr> |
| <tr> <td class="numLine"> 233</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param errorHandler</span></pre></td></tr> |
| <tr> <td class="numLine"> 234</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - SAX ErrorHandler used for ODF validation</span></pre></td></tr> |
| <tr> <td class="numLine"> 235</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #getErrorHandler</span></pre></td></tr> |
| <tr> <td class="numLine"> 236</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws java.lang.Exception</span></pre></td></tr> |
| <tr> <td class="numLine"> 237</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - if the package could not be created</span></pre></td></tr> |
| <tr> <td class="numLine"> 238</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #getErrorHandler*</span></pre></td></tr> |
| <tr> <td class="numLine"> 239</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 240</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> OdfPackage(File pkgFile, String baseURI, String password, ErrorHandler errorHandler) <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLineCover"> 241</td> <td class="nbHitsCovered"> 360</td> <td class="src"><pre class="src"> <span class="keyword">this</span>();</pre></td></tr> |
| <tr> <td class="numLineCover"> 242</td> <td class="nbHitsCovered"> 360</td> <td class="src"><pre class="src"> mBaseURI = getBaseURLFromFile(pkgFile);</pre></td></tr> |
| <tr> <td class="numLineCover"> 243</td> <td class="nbHitsCovered"> 360</td> <td class="src"><pre class="src"> mErrorHandler = errorHandler;</pre></td></tr> |
| <tr> <td class="numLineCover"> 244</td> <td class="nbHitsCovered"> 360</td> <td class="src"><pre class="src"> oldPwd = password;</pre></td></tr> |
| <tr> <td class="numLineCover"> 245</td> <td class="nbHitsCovered"> 360</td> <td class="src"><pre class="src"> newPwd = oldPwd;</pre></td></tr> |
| <tr> <td class="numLineCover"> 246</td> <td class="nbHitsCovered"> 360</td> <td class="src"><pre class="src"> mBaseURI = baseURI;</pre></td></tr> |
| <tr> <td class="numLine"> 247</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 248</td> <td class="nbHitsCovered"> 360</td> <td class="src"><pre class="src"> InputStream packageStream = <span class="keyword">new</span> FileInputStream(pkgFile);</pre></td></tr> |
| <tr> <td class="numLine"> 249</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 250</td> <td class="nbHitsCovered"> 360</td> <td class="src"><pre class="src"> initializeZip(packageStream);</pre></td></tr> |
| <tr> <td class="numLine"> 251</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 252</td> <td class="nbHitsCovered"> 360</td> <td class="src"><pre class="src"> close(packageStream);</pre></td></tr> |
| <tr> <td class="numLineCover"> 253</td> <td class="nbHitsCovered"> 354</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 254</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 255</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// initializeZip(pkgFile);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 256</td> <td class="nbHitsCovered"> 354</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 257</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </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"> <span class="comment"> * Creates an OdfPackage from the OpenDocument provided by a InputStream.</span></pre></td></tr> |
| <tr> <td class="numLine"> 260</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p></span></pre></td></tr> |
| <tr> <td class="numLine"> 261</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Since an InputStream does not provide the arbitrary (non sequentiell)</span></pre></td></tr> |
| <tr> <td class="numLine"> 262</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * read access needed by OdfPackage, the InputStream is cached. This usually</span></pre></td></tr> |
| <tr> <td class="numLine"> 263</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * takes more time compared to the other constructors.</span></pre></td></tr> |
| <tr> <td class="numLine"> 264</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </p></span></pre></td></tr> |
| <tr> <td class="numLine"> 265</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 266</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param packageStream</span></pre></td></tr> |
| <tr> <td class="numLine"> 267</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - an inputStream representing the ODF package</span></pre></td></tr> |
| <tr> <td class="numLine"> 268</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param baseURI</span></pre></td></tr> |
| <tr> <td class="numLine"> 269</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * defining the base URI of ODF package.</span></pre></td></tr> |
| <tr> <td class="numLine"> 270</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param password</span></pre></td></tr> |
| <tr> <td class="numLine"> 271</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * defining the password of ODF package.</span></pre></td></tr> |
| <tr> <td class="numLine"> 272</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param errorHandler</span></pre></td></tr> |
| <tr> <td class="numLine"> 273</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - SAX ErrorHandler used for ODF validation</span></pre></td></tr> |
| <tr> <td class="numLine"> 274</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #getErrorHandler</span></pre></td></tr> |
| <tr> <td class="numLine"> 275</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws java.lang.Exception</span></pre></td></tr> |
| <tr> <td class="numLine"> 276</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - if the package could not be created</span></pre></td></tr> |
| <tr> <td class="numLine"> 277</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #getErrorHandler*</span></pre></td></tr> |
| <tr> <td class="numLine"> 278</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 279</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> OdfPackage(InputStream packageStream, String baseURI, String password, ErrorHandler errorHandler) <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLineCover"> 280</td> <td class="nbHitsCovered"> 204</td> <td class="src"><pre class="src"> <span class="keyword">this</span>(); <span class="comment">// calling private constructor</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 281</td> <td class="nbHitsCovered"> 204</td> <td class="src"><pre class="src"> mErrorHandler = errorHandler;</pre></td></tr> |
| <tr> <td class="numLineCover"> 282</td> <td class="nbHitsCovered"> 204</td> <td class="src"><pre class="src"> mBaseURI = baseURI;</pre></td></tr> |
| <tr> <td class="numLineCover"> 283</td> <td class="nbHitsCovered"> 204</td> <td class="src"><pre class="src"> oldPwd = password;</pre></td></tr> |
| <tr> <td class="numLineCover"> 284</td> <td class="nbHitsCovered"> 204</td> <td class="src"><pre class="src"> newPwd = oldPwd;</pre></td></tr> |
| <tr> <td class="numLineCover"> 285</td> <td class="nbHitsCovered"> 204</td> <td class="src"><pre class="src"> initializeZip(packageStream);</pre></td></tr> |
| <tr> <td class="numLineCover"> 286</td> <td class="nbHitsCovered"> 202</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 287</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 288</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 289</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Loads an OdfPackage from the given documentURL.</span></pre></td></tr> |
| <tr> <td class="numLine"> 290</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p></span></pre></td></tr> |
| <tr> <td class="numLine"> 291</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * OdfPackage relies on the file being available for read access over the</span></pre></td></tr> |
| <tr> <td class="numLine"> 292</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * whole lifecycle of OdfPackage.</span></pre></td></tr> |
| <tr> <td class="numLine"> 293</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </p></span></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"> * @param path</span></pre></td></tr> |
| <tr> <td class="numLine"> 296</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - the documentURL to the ODF package</span></pre></td></tr> |
| <tr> <td class="numLine"> 297</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the OpenDocument document represented as an OdfPackage</span></pre></td></tr> |
| <tr> <td class="numLine"> 298</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws java.lang.Exception</span></pre></td></tr> |
| <tr> <td class="numLine"> 299</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - if the package could not be loaded</span></pre></td></tr> |
| <tr> <td class="numLine"> 300</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 301</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> OdfPackage loadPackage(String path) <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLineCover"> 302</td> <td class="nbHitsCovered"> 337</td> <td class="src"><pre class="src"> File pkgFile = <span class="keyword">new</span> File(path);</pre></td></tr> |
| <tr> <td class="numLineCover"> 303</td> <td class="nbHitsCovered"> 337</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> OdfPackage(pkgFile, getBaseURLFromFile(pkgFile), <span class="keyword">null</span>, <span class="keyword">null</span>);</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"> </pre></td></tr> |
| <tr> <td class="numLine"> 306</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 307</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Loads an OdfPackage from the OpenDocument provided by a File.</span></pre></td></tr> |
| <tr> <td class="numLine"> 308</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p></span></pre></td></tr> |
| <tr> <td class="numLine"> 309</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * OdfPackage relies on the file being available for read access over the</span></pre></td></tr> |
| <tr> <td class="numLine"> 310</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * whole lifecycle of OdfPackage.</span></pre></td></tr> |
| <tr> <td class="numLine"> 311</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </p></span></pre></td></tr> |
| <tr> <td class="numLine"> 312</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 313</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param pkgFile</span></pre></td></tr> |
| <tr> <td class="numLine"> 314</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - the ODF Package</span></pre></td></tr> |
| <tr> <td class="numLine"> 315</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the OpenDocument document represented as an OdfPackage</span></pre></td></tr> |
| <tr> <td class="numLine"> 316</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws java.lang.Exception</span></pre></td></tr> |
| <tr> <td class="numLine"> 317</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - if the package could not be loaded</span></pre></td></tr> |
| <tr> <td class="numLine"> 318</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 319</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> OdfPackage loadPackage(File pkgFile) <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLineCover"> 320</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> OdfPackage(pkgFile, getBaseURLFromFile(pkgFile), <span class="keyword">null</span>, <span class="keyword">null</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 321</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 322</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </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="comment"> * Creates an OdfPackage from the given InputStream.</span></pre></td></tr> |
| <tr> <td class="numLine"> 325</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p></span></pre></td></tr> |
| <tr> <td class="numLine"> 326</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Since an InputStream does not provide the arbitrary (non sequentiell)</span></pre></td></tr> |
| <tr> <td class="numLine"> 327</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * read access needed by OdfPackage, the InputStream is cached. This usually</span></pre></td></tr> |
| <tr> <td class="numLine"> 328</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * takes more time compared to the other loadPackage methods.</span></pre></td></tr> |
| <tr> <td class="numLine"> 329</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </p></span></pre></td></tr> |
| <tr> <td class="numLine"> 330</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 331</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param packageStream</span></pre></td></tr> |
| <tr> <td class="numLine"> 332</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - an inputStream representing the ODF package</span></pre></td></tr> |
| <tr> <td class="numLine"> 333</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the OpenDocument document represented as an OdfPackage</span></pre></td></tr> |
| <tr> <td class="numLine"> 334</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws java.lang.Exception</span></pre></td></tr> |
| <tr> <td class="numLine"> 335</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - if the package could not be loaded</span></pre></td></tr> |
| <tr> <td class="numLine"> 336</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 337</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> OdfPackage loadPackage(InputStream packageStream) <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLineCover"> 338</td> <td class="nbHitsCovered"> 203</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> OdfPackage(packageStream, <span class="keyword">null</span>, <span class="keyword">null</span>, <span class="keyword">null</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 339</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 340</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 341</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 342</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Creates an OdfPackage from the given InputStream.</span></pre></td></tr> |
| <tr> <td class="numLine"> 343</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p></span></pre></td></tr> |
| <tr> <td class="numLine"> 344</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * OdfPackage relies on the file being available for read access over the</span></pre></td></tr> |
| <tr> <td class="numLine"> 345</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * whole lifecycle of OdfPackage.</span></pre></td></tr> |
| <tr> <td class="numLine"> 346</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </p></span></pre></td></tr> |
| <tr> <td class="numLine"> 347</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 348</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param packageStream</span></pre></td></tr> |
| <tr> <td class="numLine"> 349</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - an inputStream representing the ODF package</span></pre></td></tr> |
| <tr> <td class="numLine"> 350</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param baseURI</span></pre></td></tr> |
| <tr> <td class="numLine"> 351</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * allows to explicitly set the base URI from the document, As</span></pre></td></tr> |
| <tr> <td class="numLine"> 352</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the URL can not be derived from a stream. In addition it is</span></pre></td></tr> |
| <tr> <td class="numLine"> 353</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * possible to set the baseURI to any arbitrary URI, e.g. an URN.</span></pre></td></tr> |
| <tr> <td class="numLine"> 354</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * One usage of the baseURI to describe the source of validation</span></pre></td></tr> |
| <tr> <td class="numLine"> 355</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * exception thrown by the ErrorHandler.</span></pre></td></tr> |
| <tr> <td class="numLine"> 356</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param errorHandler</span></pre></td></tr> |
| <tr> <td class="numLine"> 357</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - SAX ErrorHandler used for ODF validation</span></pre></td></tr> |
| <tr> <td class="numLine"> 358</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws java.lang.Exception</span></pre></td></tr> |
| <tr> <td class="numLine"> 359</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - if the package could not be created</span></pre></td></tr> |
| <tr> <td class="numLine"> 360</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #getErrorHandler</span></pre></td></tr> |
| <tr> <td class="numLine"> 361</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 362</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> OdfPackage loadPackage(InputStream packageStream, String baseURI, ErrorHandler errorHandler) <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLineCover"> 363</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> OdfPackage(packageStream, baseURI, <span class="keyword">null</span>, errorHandler);</pre></td></tr> |
| <tr> <td class="numLine"> 364</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 365</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 366</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 367</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Loads an OdfPackage from the given File.</span></pre></td></tr> |
| <tr> <td class="numLine"> 368</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p></span></pre></td></tr> |
| <tr> <td class="numLine"> 369</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * OdfPackage relies on the file being available for read access over the</span></pre></td></tr> |
| <tr> <td class="numLine"> 370</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * whole lifecycle of OdfPackage.</span></pre></td></tr> |
| <tr> <td class="numLine"> 371</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </p></span></pre></td></tr> |
| <tr> <td class="numLine"> 372</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 373</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param pkgFile</span></pre></td></tr> |
| <tr> <td class="numLine"> 374</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - the ODF Package. A baseURL is being generated based on its</span></pre></td></tr> |
| <tr> <td class="numLine"> 375</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * location.</span></pre></td></tr> |
| <tr> <td class="numLine"> 376</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param errorHandler</span></pre></td></tr> |
| <tr> <td class="numLine"> 377</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - SAX ErrorHandler used for ODF validation.</span></pre></td></tr> |
| <tr> <td class="numLine"> 378</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws java.lang.Exception</span></pre></td></tr> |
| <tr> <td class="numLine"> 379</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - if the package could not be created</span></pre></td></tr> |
| <tr> <td class="numLine"> 380</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #getErrorHandler</span></pre></td></tr> |
| <tr> <td class="numLine"> 381</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 382</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> OdfPackage loadPackage(File pkgFile, ErrorHandler errorHandler) <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLineCover"> 383</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">new</span> OdfPackage(pkgFile, getBaseURLFromFile(pkgFile), <span class="keyword">null</span>, errorHandler);</span></pre></td></tr> |
| <tr> <td class="numLine"> 384</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 385</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 386</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 387</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Loads an OdfPackage from the given File.</span></pre></td></tr> |
| <tr> <td class="numLine"> 388</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p></span></pre></td></tr> |
| <tr> <td class="numLine"> 389</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * OdfPackage relies on the file being available for read access over the</span></pre></td></tr> |
| <tr> <td class="numLine"> 390</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * whole lifecycle of OdfPackage.</span></pre></td></tr> |
| <tr> <td class="numLine"> 391</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </p></span></pre></td></tr> |
| <tr> <td class="numLine"> 392</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 393</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param pkgFile</span></pre></td></tr> |
| <tr> <td class="numLine"> 394</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - the ODF Package. A baseURL is being generated based on its</span></pre></td></tr> |
| <tr> <td class="numLine"> 395</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * location.</span></pre></td></tr> |
| <tr> <td class="numLine"> 396</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param password</span></pre></td></tr> |
| <tr> <td class="numLine"> 397</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - the ODF Package password.</span></pre></td></tr> |
| <tr> <td class="numLine"> 398</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param errorHandler</span></pre></td></tr> |
| <tr> <td class="numLine"> 399</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - SAX ErrorHandler used for ODF validation.</span></pre></td></tr> |
| <tr> <td class="numLine"> 400</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws java.lang.Exception</span></pre></td></tr> |
| <tr> <td class="numLine"> 401</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - if the package could not be created</span></pre></td></tr> |
| <tr> <td class="numLine"> 402</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #getErrorHandler</span></pre></td></tr> |
| <tr> <td class="numLine"> 403</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 404</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> OdfPackage loadPackage(File pkgFile, String password, ErrorHandler errorHandler) <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLineCover"> 405</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">new</span> OdfPackage(pkgFile, getBaseURLFromFile(pkgFile), password, errorHandler);</pre></td></tr> |
| <tr> <td class="numLine"> 406</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 407</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 408</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Initialize using memory</span></pre></td></tr> |
| <tr> <td class="numLine"> 409</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> initializeZip(InputStream odfStream) <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLineCover"> 410</td> <td class="nbHitsCovered"> 564</td> <td class="src"><pre class="src"> ByteArrayOutputStream tempBuf = <span class="keyword">new</span> ByteArrayOutputStream();</pre></td></tr> |
| <tr> <td class="numLineCover"> 411</td> <td class="nbHitsCovered"> 564</td> <td class="src"><pre class="src"> StreamHelper.transformStream(odfStream, tempBuf);</pre></td></tr> |
| <tr> <td class="numLineCover"> 412</td> <td class="nbHitsCovered"> 563</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] mTempByteBuf = tempBuf.toByteArray();</pre></td></tr> |
| <tr> <td class="numLineCover"> 413</td> <td class="nbHitsCovered"> 563</td> <td class="src"><pre class="src"> tempBuf.close();</pre></td></tr> |
| <tr> <td class="numLineCover"> 414</td> <td class="nbHitsCovered"><a title="Line 414: Conditional coverage 100% (2/2)."> 563</a></td> <td class="src"><pre class="src"> <a title="Line 414: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (mTempByteBuf.length < 3) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 415</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> OdfValidationException ve = <span class="keyword">new</span> OdfValidationException(OdfPackageConstraint.PACKAGE_IS_NO_ZIP, getBaseURI());</pre></td></tr> |
| <tr> <td class="numLineCover"> 416</td> <td class="nbHitsUncovered"><a title="Line 416: Conditional coverage 50% (1/2)."> 1</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 416: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (mErrorHandler != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 417</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> mErrorHandler.fatalError(ve);</span></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="numLineCover"> 419</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(ve);</pre></td></tr> |
| <tr> <td class="numLine"> 420</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 421</td> <td class="nbHitsCovered"> 562</td> <td class="src"><pre class="src"> mZipFile = <span class="keyword">new</span> ZipHelper(<span class="keyword">this</span>, mTempByteBuf);</pre></td></tr> |
| <tr> <td class="numLineCover"> 422</td> <td class="nbHitsCovered"> 562</td> <td class="src"><pre class="src"> readZip();</pre></td></tr> |
| <tr> <td class="numLineCover"> 423</td> <td class="nbHitsCovered"> 556</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 424</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 425</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// // Initialize using ZipFile</span></pre></td></tr> |
| <tr> <td class="numLine"> 426</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// private void initializeZip(File pkgFile) throws Exception {</span></pre></td></tr> |
| <tr> <td class="numLine"> 427</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// try {</span></pre></td></tr> |
| <tr> <td class="numLine"> 428</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// mZipFile = new ZipHelper(this, new ZipFile(pkgFile));</span></pre></td></tr> |
| <tr> <td class="numLine"> 429</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// } catch (ZipException ze) {</span></pre></td></tr> |
| <tr> <td class="numLine"> 430</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// OdfValidationException ve = new</span></pre></td></tr> |
| <tr> <td class="numLine"> 431</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// OdfValidationException(OdfPackageConstraint.PACKAGE_IS_NO_ZIP,</span></pre></td></tr> |
| <tr> <td class="numLine"> 432</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// getBaseURI());</span></pre></td></tr> |
| <tr> <td class="numLine"> 433</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if (mErrorHandler != null) {</span></pre></td></tr> |
| <tr> <td class="numLine"> 434</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// mErrorHandler.fatalError(ve);</span></pre></td></tr> |
| <tr> <td class="numLine"> 435</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// }</span></pre></td></tr> |
| <tr> <td class="numLine"> 436</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// throw new IllegalArgumentException(ve);</span></pre></td></tr> |
| <tr> <td class="numLine"> 437</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// }</span></pre></td></tr> |
| <tr> <td class="numLine"> 438</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// readZip();</span></pre></td></tr> |
| <tr> <td class="numLine"> 439</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// }</span></pre></td></tr> |
| <tr> <td class="numLine"> 440</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 441</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> readZip() <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLineCover"> 442</td> <td class="nbHitsCovered"> 562</td> <td class="src"><pre class="src"> mZipEntries = <span class="keyword">new</span> HashMap<String, ZipEntry>();</pre></td></tr> |
| <tr> <td class="numLineCover"> 443</td> <td class="nbHitsCovered"> 562</td> <td class="src"><pre class="src"> String firstEntryName = mZipFile.entriesToMap(mZipEntries);</pre></td></tr> |
| <tr> <td class="numLineCover"> 444</td> <td class="nbHitsCovered"><a title="Line 444: Conditional coverage 100% (2/2)."> 562</a></td> <td class="src"><pre class="src"> <a title="Line 444: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (mZipEntries.isEmpty()) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 445</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> OdfValidationException ve = <span class="keyword">new</span> OdfValidationException(OdfPackageConstraint.PACKAGE_IS_NO_ZIP, getBaseURI());</pre></td></tr> |
| <tr> <td class="numLineCover"> 446</td> <td class="nbHitsCovered"><a title="Line 446: Conditional coverage 100% (2/2)."> 5</a></td> <td class="src"><pre class="src"> <a title="Line 446: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (mErrorHandler != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 447</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> mErrorHandler.fatalError(ve);</pre></td></tr> |
| <tr> <td class="numLine"> 448</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 449</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(ve);</pre></td></tr> |
| <tr> <td class="numLine"> 450</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLine"> 451</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// initialize the files of the package (fileEnties of Manifest)</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 452</td> <td class="nbHitsCovered"> 557</td> <td class="src"><pre class="src"> parseManifest();</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"> <span class="comment">// initialize the package media type</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 455</td> <td class="nbHitsCovered"> 556</td> <td class="src"><pre class="src"> initializeMediaType(firstEntryName);</pre></td></tr> |
| <tr> <td class="numLine"> 456</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 457</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// ToDo: Remove all META-INF/* files from the fileEntries of</span></pre></td></tr> |
| <tr> <td class="numLine"> 458</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Manifest</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 459</td> <td class="nbHitsCovered"> 556</td> <td class="src"><pre class="src"> mOriginalZipEntries = <span class="keyword">new</span> HashMap<String, ZipEntry>();</pre></td></tr> |
| <tr> <td class="numLineCover"> 460</td> <td class="nbHitsCovered"> 556</td> <td class="src"><pre class="src"> mOriginalZipEntries.putAll(mZipEntries);</pre></td></tr> |
| <tr> <td class="numLineCover"> 461</td> <td class="nbHitsCovered"> 556</td> <td class="src"><pre class="src"> mZipEntries.remove(OdfPackage.OdfFile.MEDIA_TYPE.getPath());</pre></td></tr> |
| <tr> <td class="numLineCover"> 462</td> <td class="nbHitsCovered"> 556</td> <td class="src"><pre class="src"> mZipEntries.remove(OdfPackage.OdfFile.MANIFEST.getPath());</pre></td></tr> |
| <tr> <td class="numLineCover"> 463</td> <td class="nbHitsCovered"> 556</td> <td class="src"><pre class="src"> mZipEntries.remove(<span class="string">"META-INF/"</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 464</td> <td class="nbHitsCovered"><a title="Line 464: Conditional coverage 100% (2/2)."> 556</a></td> <td class="src"><pre class="src"> <a title="Line 464: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (mErrorHandler != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 465</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> validateManifest();</pre></td></tr> |
| <tr> <td class="numLine"> 466</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 467</td> <td class="nbHitsCovered"> 556</td> <td class="src"><pre class="src"> Iterator<String> zipPaths = mZipEntries.keySet().iterator();</pre></td></tr> |
| <tr> <td class="numLineCover"> 468</td> <td class="nbHitsCovered"><a title="Line 468: Conditional coverage 100% (2/2)."> 4784</a></td> <td class="src"><pre class="src"> <a title="Line 468: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (zipPaths.hasNext()) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 469</td> <td class="nbHitsCovered"> 4228</td> <td class="src"><pre class="src"> String internalPath = zipPaths.next();</pre></td></tr> |
| <tr> <td class="numLine"> 470</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// every resource aside the /META-INF/manifest.xml (and</span></pre></td></tr> |
| <tr> <td class="numLine"> 471</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// META-INF/ directory)</span></pre></td></tr> |
| <tr> <td class="numLine"> 472</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// and "mimetype" will be added as fileEntry</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 473</td> <td class="nbHitsUncovered"><a title="Line 473: Conditional coverage 50% (3/6) [each condition: 50%, 50%, 50%]."> 4228</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 473: Conditional coverage 50% (3/6) [each condition: 50%, 50%, 50%]."> <span class="keyword">if</span> (!internalPath.equals(OdfPackage.OdfFile.MANIFEST.getPath()) && !internalPath.equals(<span class="string">"META-INF/"</span>) && !internalPath.equals(OdfPackage.OdfFile.MEDIA_TYPE.getPath())) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 474</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// aside "mediatype" and "META-INF/manifest"</span></pre></td></tr> |
| <tr> <td class="numLine"> 475</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// add manifest entry as to be described by a</span></pre></td></tr> |
| <tr> <td class="numLine"> 476</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// <manifest:file-entry></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 477</td> <td class="nbHitsCovered"> 4228</td> <td class="src"><pre class="src"> ensureFileEntryExistence(internalPath);</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"> 4228</td> <td class="src"><pre class="src"> }</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="numLineCover"> 481</td> <td class="nbHitsCovered"> 556</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"> </pre></td></tr> |
| <tr> <td class="numLine"> 483</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 484</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Validates if all file entries exist in the ZIP and vice versa</span></pre></td></tr> |
| <tr> <td class="numLine"> 485</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 486</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws SAXException</span></pre></td></tr> |
| <tr> <td class="numLine"> 487</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 488</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> validateManifest() <span class="keyword">throws</span> SAXException {</pre></td></tr> |
| <tr> <td class="numLineCover"> 489</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> Set zipPaths = mZipEntries.keySet();</pre></td></tr> |
| <tr> <td class="numLineCover"> 490</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> Set manifestPaths = mManifestEntries.keySet();</pre></td></tr> |
| <tr> <td class="numLineCover"> 491</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> Set<String> sharedPaths = <span class="keyword">new</span> HashSet<String>(zipPaths);</pre></td></tr> |
| <tr> <td class="numLineCover"> 492</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> sharedPaths.retainAll(manifestPaths);</pre></td></tr> |
| <tr> <td class="numLine"> 493</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 494</td> <td class="nbHitsCovered"><a title="Line 494: Conditional coverage 100% (2/2)."> 6</a></td> <td class="src"><pre class="src"> <a title="Line 494: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (sharedPaths.size() < zipPaths.size()) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 495</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> Set<String> zipPathSuperset = <span class="keyword">new</span> HashSet<String>(mZipEntries.keySet());</pre></td></tr> |
| <tr> <td class="numLineCover"> 496</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> zipPathSuperset.removeAll(sharedPaths);</pre></td></tr> |
| <tr> <td class="numLineCover"> 497</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> Set sortedSet = <span class="keyword">new</span> TreeSet<String>(zipPathSuperset);</pre></td></tr> |
| <tr> <td class="numLineCover"> 498</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> Iterator iter = sortedSet.iterator();</pre></td></tr> |
| <tr> <td class="numLineCover"> 499</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> String documentURL = getBaseURI();</pre></td></tr> |
| <tr> <td class="numLine"> 500</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> String internalPath;</pre></td></tr> |
| <tr> <td class="numLineCover"> 501</td> <td class="nbHitsCovered"><a title="Line 501: Conditional coverage 100% (2/2)."> 4</a></td> <td class="src"><pre class="src"> <a title="Line 501: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (iter.hasNext()) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 502</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> internalPath = (String) iter.next();</pre></td></tr> |
| <tr> <td class="numLineCover"> 503</td> <td class="nbHitsUncovered"><a title="Line 503: Conditional coverage 50% (1/2)."> 2</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 503: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (!internalPath.endsWith(SLASH)) { <span class="comment">// not for directories!</span></a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 504</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> logValidationError(OdfPackageConstraint.MANIFEST_DOES_NOT_LIST_FILE, documentURL, internalPath);</pre></td></tr> |
| <tr> <td class="numLine"> 505</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 506</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 507</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 508</td> <td class="nbHitsCovered"><a title="Line 508: Conditional coverage 100% (2/2)."> 6</a></td> <td class="src"><pre class="src"> <a title="Line 508: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (sharedPaths.size() < manifestPaths.size()) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 509</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> Set<String> zipPathSubset = <span class="keyword">new</span> HashSet<String>(mManifestEntries.keySet());</pre></td></tr> |
| <tr> <td class="numLineCover"> 510</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> zipPathSubset.removeAll(sharedPaths);</pre></td></tr> |
| <tr> <td class="numLine"> 511</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// removing root directory</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 512</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> zipPathSubset.remove(SLASH);</pre></td></tr> |
| <tr> <td class="numLine"> 513</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 514</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// No directory are listed in a ZIP removing all directory with</span></pre></td></tr> |
| <tr> <td class="numLine"> 515</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// content</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 516</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> Iterator<String> manifestOnlyPaths = zipPathSubset.iterator();</pre></td></tr> |
| <tr> <td class="numLineCover"> 517</td> <td class="nbHitsCovered"><a title="Line 517: Conditional coverage 100% (2/2)."> 84</a></td> <td class="src"><pre class="src"> <a title="Line 517: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (manifestOnlyPaths.hasNext()) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 518</td> <td class="nbHitsCovered"> 79</td> <td class="src"><pre class="src"> String manifestOnlyPath = manifestOnlyPaths.next();</pre></td></tr> |
| <tr> <td class="numLine"> 519</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// assumption: all directories end with slash</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 520</td> <td class="nbHitsCovered"><a title="Line 520: Conditional coverage 100% (2/2)."> 79</a></td> <td class="src"><pre class="src"> <a title="Line 520: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (manifestOnlyPath.endsWith(SLASH)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 521</td> <td class="nbHitsCovered"> 69</td> <td class="src"><pre class="src"> removeDirectory(manifestOnlyPath);</pre></td></tr> |
| <tr> <td class="numLine"> 522</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLine"> 523</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if it is a nonexistent file</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 524</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> logValidationError(OdfPackageConstraint.MANIFEST_LISTS_NONEXISTENT_FILE, getBaseURI(), manifestOnlyPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 525</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> mManifestEntries.remove(manifestOnlyPath);</pre></td></tr> |
| <tr> <td class="numLine"> 526</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 527</td> <td class="nbHitsCovered"> 79</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 528</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 529</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// remove none document directories</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 530</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> Iterator<String> sharedPathsIter = sharedPaths.iterator();</pre></td></tr> |
| <tr> <td class="numLineCover"> 531</td> <td class="nbHitsCovered"><a title="Line 531: Conditional coverage 100% (2/2)."> 99</a></td> <td class="src"><pre class="src"> <a title="Line 531: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (sharedPathsIter.hasNext()) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 532</td> <td class="nbHitsCovered"> 93</td> <td class="src"><pre class="src"> String sharedPath = sharedPathsIter.next();</pre></td></tr> |
| <tr> <td class="numLine"> 533</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// assumption: all directories end with slash</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 534</td> <td class="nbHitsCovered"><a title="Line 534: Conditional coverage 100% (2/2)."> 93</a></td> <td class="src"><pre class="src"> <a title="Line 534: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (sharedPath.endsWith(SLASH)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 535</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> removeDirectory(sharedPath);</pre></td></tr> |
| <tr> <td class="numLine"> 536</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 537</td> <td class="nbHitsCovered"> 93</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 538</td> <td class="nbHitsCovered"> 6</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 539</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 540</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 541</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Removes directories without a mimetype (all none documents)</span></pre></td></tr> |
| <tr> <td class="numLine"> 542</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 543</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws SAXException</span></pre></td></tr> |
| <tr> <td class="numLine"> 544</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 545</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> removeDirectory(String path) <span class="keyword">throws</span> SAXException {</pre></td></tr> |
| <tr> <td class="numLineCover"> 546</td> <td class="nbHitsUncovered"><a title="Line 546: Conditional coverage 50% (1/2)."> 77</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 546: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (path.endsWith(SLASH)) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 547</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Check if it is a sub-document?</span></pre></td></tr> |
| <tr> <td class="numLine"> 548</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Our assumption: it is a document if it has a mimetype...</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 549</td> <td class="nbHitsCovered"> 77</td> <td class="src"><pre class="src"> String dirMimeType = mManifestEntries.get(path).getMediaTypeString();</pre></td></tr> |
| <tr> <td class="numLineCover"> 550</td> <td class="nbHitsUncovered"><a title="Line 550: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> 77</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 550: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> <span class="keyword">if</span> (dirMimeType == <span class="keyword">null</span> || EMPTY_STRING.equals(dirMimeType)) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 551</td> <td class="nbHitsCovered"> 61</td> <td class="src"><pre class="src"> logValidationWarning(OdfPackageConstraint.MANIFEST_LISTS_DIRECTORY, getBaseURI(), path);</pre></td></tr> |
| <tr> <td class="numLineCover"> 552</td> <td class="nbHitsCovered"> 61</td> <td class="src"><pre class="src"> OdfFileEntry manifestEntry = mManifestEntries.remove(path);</pre></td></tr> |
| <tr> <td class="numLineCover"> 553</td> <td class="nbHitsCovered"> 61</td> <td class="src"><pre class="src"> FileEntryElement manifestEle = manifestEntry.getOdfElement();</pre></td></tr> |
| <tr> <td class="numLineCover"> 554</td> <td class="nbHitsCovered"> 61</td> <td class="src"><pre class="src"> manifestEle.getParentNode().removeChild(manifestEle);</pre></td></tr> |
| <tr> <td class="numLine"> 555</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 556</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 557</td> <td class="nbHitsCovered"> 77</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 558</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 559</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 560</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Reads the uncompressed "mimetype" file, which contains the package</span></pre></td></tr> |
| <tr> <td class="numLine"> 561</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * media/mimte type</span></pre></td></tr> |
| <tr> <td class="numLine"> 562</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 563</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws SAXException</span></pre></td></tr> |
| <tr> <td class="numLine"> 564</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 565</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> initializeMediaType(String firstEntryName) <span class="keyword">throws</span> SAXException {</pre></td></tr> |
| <tr> <td class="numLineCover"> 566</td> <td class="nbHitsCovered"> 556</td> <td class="src"><pre class="src"> ZipEntry mimetypeEntry = mZipEntries.get(OdfPackage.OdfFile.MEDIA_TYPE.getPath());</pre></td></tr> |
| <tr> <td class="numLineCover"> 567</td> <td class="nbHitsCovered"><a title="Line 567: Conditional coverage 100% (2/2)."> 556</a></td> <td class="src"><pre class="src"> <a title="Line 567: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (mimetypeEntry != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 568</td> <td class="nbHitsCovered"><a title="Line 568: Conditional coverage 100% (2/2)."> 552</a></td> <td class="src"><pre class="src"> <a title="Line 568: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (mErrorHandler != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 569</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> validateMimeTypeEntry(mimetypeEntry, firstEntryName);</pre></td></tr> |
| <tr> <td class="numLine"> 570</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 571</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// get mediatype value of the root document/package from the</span></pre></td></tr> |
| <tr> <td class="numLine"> 572</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// mediatype file stream</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 573</td> <td class="nbHitsCovered"> 552</td> <td class="src"><pre class="src"> String entryMediaType = getMediaTypeFromEntry(mimetypeEntry);</pre></td></tr> |
| <tr> <td class="numLine"> 574</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// get mediatype value of the root document/package from the</span></pre></td></tr> |
| <tr> <td class="numLine"> 575</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// manifest.xml</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 576</td> <td class="nbHitsCovered"> 552</td> <td class="src"><pre class="src"> String manifestMediaType = getMediaTypeFromManifest();</pre></td></tr> |
| <tr> <td class="numLine"> 577</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if a valid mediatype was set by the "mimetype" file</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 578</td> <td class="nbHitsUncovered"><a title="Line 578: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> 552</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 578: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (entryMediaType != <span class="keyword">null</span> && !entryMediaType.equals(EMPTY_STRING)) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 579</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// the root document's mediatype is taken from the "mimetype"</span></pre></td></tr> |
| <tr> <td class="numLine"> 580</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// file</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 581</td> <td class="nbHitsCovered"> 552</td> <td class="src"><pre class="src"> mMediaType = entryMediaType;</pre></td></tr> |
| <tr> <td class="numLineCover"> 582</td> <td class="nbHitsCovered"><a title="Line 582: Conditional coverage 100% (2/2)."> 552</a></td> <td class="src"><pre class="src"> <a title="Line 582: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (mErrorHandler != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLine"> 583</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if the "mediatype" does exist, the</span></pre></td></tr> |
| <tr> <td class="numLine"> 584</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// "/META-INF/manifest.xml" have to contain a MIMETYPE for</span></pre></td></tr> |
| <tr> <td class="numLine"> 585</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// the root document);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 586</td> <td class="nbHitsUncovered"><a title="Line 586: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 586: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">if</span> (manifestMediaType != <span class="keyword">null</span> && !manifestMediaType.equals(EMPTY_STRING)) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 587</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if the two media-types are inconsistent</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 588</td> <td class="nbHitsCovered"><a title="Line 588: Conditional coverage 100% (2/2)."> 3</a></td> <td class="src"><pre class="src"> <a title="Line 588: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!entryMediaType.equals(manifestMediaType)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 589</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> logValidationError(OdfPackageConstraint.MIMETYPE_DIFFERS_FROM_PACKAGE, getBaseURI(), CONTROL_CHAR_PATTERN.matcher(mMediaType).replaceAll(EMPTY_STRING), manifestMediaType);</pre></td></tr> |
| <tr> <td class="numLine"> 590</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 591</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> { <span class="comment">// if "mimetype" file exists, there have to be a</span></pre></td></tr> |
| <tr> <td class="numLine"> 592</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// mimetype in the manifest.xml for the root</span></pre></td></tr> |
| <tr> <td class="numLine"> 593</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// document (see ODF 1.2 part 3)</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 594</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> logValidationError(OdfPackageConstraint.MIMETYPE_WITHOUT_MANIFEST_MEDIATYPE, getBaseURI(), CONTROL_CHAR_PATTERN.matcher(mMediaType).replaceAll(EMPTY_STRING), manifestMediaType);</pre></td></tr> |
| <tr> <td class="numLine"> 595</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 596</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 597</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> { <span class="comment">// if there is no media-type was set by the "mimetype" file</span></pre></td></tr> |
| <tr> <td class="numLine"> 598</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// try as fall-back the mediatype of the root document from the</span></pre></td></tr> |
| <tr> <td class="numLine"> 599</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// manifest.xml</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 600</td> <td class="nbHitsUncovered"><a title="Line 600: Conditional coverage 0% (0/4) [each condition: 0%, 0%]."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 600: Conditional coverage 0% (0/4) [each condition: 0%, 0%]."> <span class="keyword">if</span> (manifestMediaType != <span class="keyword">null</span> && !manifestMediaType.equals(EMPTY_STRING)) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 601</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// and used as fall-back for the mediatype of the package</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 602</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> mMediaType = manifestMediaType;</span></pre></td></tr> |
| <tr> <td class="numLine"> 603</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 604</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 605</td> <td class="nbHitsCovered"> 552</td> <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 606</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> String manifestMediaType = getMediaTypeFromManifest();</pre></td></tr> |
| <tr> <td class="numLineCover"> 607</td> <td class="nbHitsUncovered"><a title="Line 607: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 607: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">if</span> (manifestMediaType != <span class="keyword">null</span> && !manifestMediaType.equals(EMPTY_STRING)) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 608</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if not mimetype file exists, the root document mediaType from</span></pre></td></tr> |
| <tr> <td class="numLine"> 609</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// the manifest.xml is taken</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 610</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> mMediaType = manifestMediaType;</pre></td></tr> |
| <tr> <td class="numLine"> 611</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 612</td> <td class="nbHitsCovered"><a title="Line 612: Conditional coverage 100% (2/2)."> 4</a></td> <td class="src"><pre class="src"> <a title="Line 612: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (mErrorHandler != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 613</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> logValidationWarning(OdfPackageConstraint.MIMETYPE_NOT_IN_PACKAGE, getBaseURI());</pre></td></tr> |
| <tr> <td class="numLine"> 614</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 615</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 616</td> <td class="nbHitsCovered"> 556</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 617</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 618</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> validateMimeTypeEntry(ZipEntry mimetypeEntry, String firstEntryName) <span class="keyword">throws</span> SAXException {</pre></td></tr> |
| <tr> <td class="numLine"> 619</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 620</td> <td class="nbHitsCovered"><a title="Line 620: Conditional coverage 100% (2/2)."> 4</a></td> <td class="src"><pre class="src"> <a title="Line 620: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (mimetypeEntry.getMethod() != ZipEntry.STORED) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 621</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> logValidationError(OdfPackageConstraint.MIMETYPE_IS_COMPRESSED, getBaseURI());</pre></td></tr> |
| <tr> <td class="numLine"> 622</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 623</td> <td class="nbHitsCovered"><a title="Line 623: Conditional coverage 100% (2/2)."> 4</a></td> <td class="src"><pre class="src"> <a title="Line 623: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (mimetypeEntry.getExtra() != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 624</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> logValidationError(OdfPackageConstraint.MIMETYPE_HAS_EXTRA_FIELD, getBaseURI());</pre></td></tr> |
| <tr> <td class="numLine"> 625</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 626</td> <td class="nbHitsCovered"><a title="Line 626: Conditional coverage 100% (2/2)."> 4</a></td> <td class="src"><pre class="src"> <a title="Line 626: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!OdfFile.MEDIA_TYPE.getPath().equals(firstEntryName)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 627</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> logValidationError(OdfPackageConstraint.MIMETYPE_NOT_FIRST_IN_PACKAGE, getBaseURI());</pre></td></tr> |
| <tr> <td class="numLine"> 628</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 629</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 630</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 631</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/** @returns the media type of the root document from the manifest.xml */</span></pre></td></tr> |
| <tr> <td class="numLine"> 632</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> String getMediaTypeFromManifest() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 633</td> <td class="nbHitsCovered"> 556</td> <td class="src"><pre class="src"> OdfFileEntry rootDocumentEntry = mManifestEntries.get(SLASH);</pre></td></tr> |
| <tr> <td class="numLineCover"> 634</td> <td class="nbHitsCovered"><a title="Line 634: Conditional coverage 100% (2/2)."> 556</a></td> <td class="src"><pre class="src"> <a title="Line 634: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (rootDocumentEntry != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 635</td> <td class="nbHitsCovered"> 554</td> <td class="src"><pre class="src"> <span class="keyword">return</span> rootDocumentEntry.getMediaTypeString();</pre></td></tr> |
| <tr> <td class="numLine"> 636</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 637</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 638</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 639</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 640</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 641</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/** @returns the media type of the root document from the manifest.xml */</span></pre></td></tr> |
| <tr> <td class="numLine"> 642</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> String getMediaTypeFromEntry(ZipEntry mimetypeEntry) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 643</td> <td class="nbHitsCovered"> 552</td> <td class="src"><pre class="src"> String entryMediaType = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 644</td> <td class="nbHitsCovered"> 552</td> <td class="src"><pre class="src"> ByteArrayOutputStream out = <span class="keyword">new</span> ByteArrayOutputStream();</pre></td></tr> |
| <tr> <td class="numLine"> 645</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 646</td> <td class="nbHitsCovered"> 552</td> <td class="src"><pre class="src"> StreamHelper.transformStream(mZipFile.getInputStream(mimetypeEntry), out);</pre></td></tr> |
| <tr> <td class="numLineCover"> 647</td> <td class="nbHitsCovered"> 552</td> <td class="src"><pre class="src"> entryMediaType = <span class="keyword">new</span> String(out.toByteArray(), 0, out.size(), <span class="string">"UTF-8"</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 648</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (Exception ex) {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 649</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(OdfPackage.<span class="keyword">class</span>.getName()).log(Level.SEVERE, <span class="keyword">null</span>, ex);</span></pre></td></tr> |
| <tr> <td class="numLine"> 650</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 651</td> <td class="nbHitsUncovered"><a title="Line 651: Conditional coverage 50% (1/2)."> 552</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 651: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (out != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 652</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 653</td> <td class="nbHitsCovered"> 552</td> <td class="src"><pre class="src"> out.close();</pre></td></tr> |
| <tr> <td class="numLineCover"> 654</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 655</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(OdfPackage.<span class="keyword">class</span>.getName()).log(Level.SEVERE, <span class="keyword">null</span>, ex);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 656</td> <td class="nbHitsCovered"> 552</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 657</td> <td class="nbHitsCovered"> 552</td> <td class="src"><pre class="src"> out = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 658</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 659</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 660</td> <td class="nbHitsCovered"> 552</td> <td class="src"><pre class="src"> <span class="keyword">return</span> entryMediaType;</pre></td></tr> |
| <tr> <td class="numLine"> 661</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 662</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 663</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 664</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Insert an Odf document into the package at the given path. The path has</span></pre></td></tr> |
| <tr> <td class="numLine"> 665</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * to be a directory and will receive the MIME type of the</span></pre></td></tr> |
| <tr> <td class="numLine"> 666</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * OdfPackageDocument.</span></pre></td></tr> |
| <tr> <td class="numLine"> 667</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 668</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param doc</span></pre></td></tr> |
| <tr> <td class="numLine"> 669</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the OdfPackageDocument to be inserted.</span></pre></td></tr> |
| <tr> <td class="numLine"> 670</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 671</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * path relative to the package root, where the document should</span></pre></td></tr> |
| <tr> <td class="numLine"> 672</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * be inserted.</span></pre></td></tr> |
| <tr> <td class="numLine"> 673</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 674</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">void</span> cacheDocument(OdfPackageDocument doc, String internalPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 675</td> <td class="nbHitsCovered"> 751</td> <td class="src"><pre class="src"> internalPath = normalizeDirectoryPath(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 676</td> <td class="nbHitsCovered"> 751</td> <td class="src"><pre class="src"> updateFileEntry(ensureFileEntryExistence(internalPath), doc.getMediaTypeString());</pre></td></tr> |
| <tr> <td class="numLineCover"> 677</td> <td class="nbHitsCovered"> 751</td> <td class="src"><pre class="src"> mPkgDocuments.put(internalPath, doc);</pre></td></tr> |
| <tr> <td class="numLineCover"> 678</td> <td class="nbHitsCovered"> 751</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 679</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 680</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 681</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Set the baseURI for this ODF package. NOTE: Should only be set during</span></pre></td></tr> |
| <tr> <td class="numLine"> 682</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * saving the package.</span></pre></td></tr> |
| <tr> <td class="numLine"> 683</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 684</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param baseURI</span></pre></td></tr> |
| <tr> <td class="numLine"> 685</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * defining the location of the package</span></pre></td></tr> |
| <tr> <td class="numLine"> 686</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 687</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">void</span> setBaseURI(String baseURI) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 688</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> mBaseURI = baseURI;</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 689</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr> |
| <tr> <td class="numLine"> 690</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 691</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 692</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return The URI to the ODF package, usually the URL, where this ODF</span></pre></td></tr> |
| <tr> <td class="numLine"> 693</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * package is located. If the package has not URI NULL is returned.</span></pre></td></tr> |
| <tr> <td class="numLine"> 694</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * This is the case if the package was new created without an URI</span></pre></td></tr> |
| <tr> <td class="numLine"> 695</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * and not saved before.</span></pre></td></tr> |
| <tr> <td class="numLine"> 696</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 697</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> String getBaseURI() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 698</td> <td class="nbHitsCovered"> 31142</td> <td class="src"><pre class="src"> <span class="keyword">return</span> mBaseURI;</pre></td></tr> |
| <tr> <td class="numLine"> 699</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 700</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 701</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 702</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Returns on ODF documents based a given mediatype.</span></pre></td></tr> |
| <tr> <td class="numLine"> 703</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 704</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 705</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * path relative to the package root, where the document should</span></pre></td></tr> |
| <tr> <td class="numLine"> 706</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * be inserted.</span></pre></td></tr> |
| <tr> <td class="numLine"> 707</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return The ODF document, which mediatype dependends on the parameter or</span></pre></td></tr> |
| <tr> <td class="numLine"> 708</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * NULL if media type were not supported.</span></pre></td></tr> |
| <tr> <td class="numLine"> 709</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 710</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> OdfPackageDocument loadDocument(String internalPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 711</td> <td class="nbHitsCovered"> 193</td> <td class="src"><pre class="src"> OdfPackageDocument doc = getCachedDocument(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 712</td> <td class="nbHitsCovered"><a title="Line 712: Conditional coverage 100% (2/2)."> 193</a></td> <td class="src"><pre class="src"> <a title="Line 712: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (doc == <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 713</td> <td class="nbHitsCovered"> 137</td> <td class="src"><pre class="src"> String mediaTypeString = getMediaTypeString();</pre></td></tr> |
| <tr> <td class="numLine"> 714</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// ToDo: Issue 265 - Remove dependency to higher layer by factory</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 715</td> <td class="nbHitsCovered"> 137</td> <td class="src"><pre class="src"> OdfMediaType odfMediaType = OdfMediaType.getOdfMediaType(mediaTypeString);</pre></td></tr> |
| <tr> <td class="numLineCover"> 716</td> <td class="nbHitsUncovered"><a title="Line 716: Conditional coverage 50% (1/2)."> 137</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 716: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (odfMediaType == <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 717</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> doc = <span class="keyword">new</span> OdfPackageDocument(<span class="keyword">this</span>, internalPath, mediaTypeString);</span></pre></td></tr> |
| <tr> <td class="numLine"> 718</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLine"> 719</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 720</td> <td class="nbHitsCovered"> 137</td> <td class="src"><pre class="src"> String documentMediaType = getMediaTypeString(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 721</td> <td class="nbHitsCovered"> 137</td> <td class="src"><pre class="src"> odfMediaType = OdfMediaType.getOdfMediaType(documentMediaType);</pre></td></tr> |
| <tr> <td class="numLineCover"> 722</td> <td class="nbHitsCovered"><a title="Line 722: Conditional coverage 100% (2/2)."> 137</a></td> <td class="src"><pre class="src"> <a title="Line 722: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (odfMediaType == <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 723</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 724</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 725</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// ToDo: Issue 265 - Remove dependency to higher layer by</span></pre></td></tr> |
| <tr> <td class="numLine"> 726</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// facotory</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 727</td> <td class="nbHitsCovered"> 133</td> <td class="src"><pre class="src"> doc = OdfDocument.loadDocument(<span class="keyword">this</span>, internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 728</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (Exception ex) {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 729</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(OdfPackageDocument.<span class="keyword">class</span>.getName()).log(Level.SEVERE, <span class="keyword">null</span>, ex);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 730</td> <td class="nbHitsCovered"> 133</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 731</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 732</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 733</td> <td class="nbHitsCovered"> 189</td> <td class="src"><pre class="src"> <span class="keyword">return</span> doc;</pre></td></tr> |
| <tr> <td class="numLine"> 734</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 735</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 736</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 737</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @deprecated This method is only added temporary as workaround for the IBM</span></pre></td></tr> |
| <tr> <td class="numLine"> 738</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * fork using different DOC classes. Until the registering of</span></pre></td></tr> |
| <tr> <td class="numLine"> 739</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * DOC documents to the PKG layer has been finished.</span></pre></td></tr> |
| <tr> <td class="numLine"> 740</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 741</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * path relative to the package root, where the document should</span></pre></td></tr> |
| <tr> <td class="numLine"> 742</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * be inserted.</span></pre></td></tr> |
| <tr> <td class="numLine"> 743</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return an already open OdfPackageDocument via its path, otherwise NULL.</span></pre></td></tr> |
| <tr> <td class="numLine"> 744</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 745</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> @Deprecated</pre></td></tr> |
| <tr> <td class="numLine"> 746</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> OdfPackageDocument getCachedDocument(String internalPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 747</td> <td class="nbHitsCovered"> 193</td> <td class="src"><pre class="src"> internalPath = normalizeDirectoryPath(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 748</td> <td class="nbHitsCovered"> 193</td> <td class="src"><pre class="src"> <span class="keyword">return</span> mPkgDocuments.get(internalPath);</pre></td></tr> |
| <tr> <td class="numLine"> 749</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 750</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 751</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 752</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param dom</span></pre></td></tr> |
| <tr> <td class="numLine"> 753</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the DOM tree that has been parsed and should be added to the</span></pre></td></tr> |
| <tr> <td class="numLine"> 754</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * cache.</span></pre></td></tr> |
| <tr> <td class="numLine"> 755</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 756</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * path relative to the package root, where the XML of the DOM is</span></pre></td></tr> |
| <tr> <td class="numLine"> 757</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * located.</span></pre></td></tr> |
| <tr> <td class="numLine"> 758</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return an already open OdfPackageDocument via its path, otherwise NULL.</span></pre></td></tr> |
| <tr> <td class="numLine"> 759</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 760</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">void</span> cacheDom(Document dom, String internalPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 761</td> <td class="nbHitsCovered"> 1198</td> <td class="src"><pre class="src"> internalPath = normalizeFilePath(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 762</td> <td class="nbHitsCovered"> 1198</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.insert(dom, internalPath, <span class="keyword">null</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 763</td> <td class="nbHitsCovered"> 1198</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 764</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 765</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 766</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 767</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * path relative to the package root, where the document should</span></pre></td></tr> |
| <tr> <td class="numLine"> 768</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * be inserted.</span></pre></td></tr> |
| <tr> <td class="numLine"> 769</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return an already open W3C XML Documenet via its path, otherwise NULL.</span></pre></td></tr> |
| <tr> <td class="numLine"> 770</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 771</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> Document getCachedDom(String internalPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 772</td> <td class="nbHitsCovered"> 1379</td> <td class="src"><pre class="src"> internalPath = normalizeFilePath(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 773</td> <td class="nbHitsCovered"> 1379</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">this</span>.mPkgDoms.get(internalPath);</pre></td></tr> |
| <tr> <td class="numLine"> 774</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 775</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 776</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 777</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return a map with all open W3C XML documents with their internal package</span></pre></td></tr> |
| <tr> <td class="numLine"> 778</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * path as key.</span></pre></td></tr> |
| <tr> <td class="numLine"> 779</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 780</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> Map<String, Document> getCachedDoms() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 781</td> <td class="nbHitsCovered"> 158</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">this</span>.mPkgDoms;</pre></td></tr> |
| <tr> <td class="numLine"> 782</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 783</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 784</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 785</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Removes a document from the package via its path. Independent if it was</span></pre></td></tr> |
| <tr> <td class="numLine"> 786</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * already opened or not.</span></pre></td></tr> |
| <tr> <td class="numLine"> 787</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 788</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 789</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * path relative to the package root, where the document should</span></pre></td></tr> |
| <tr> <td class="numLine"> 790</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * be removed.</span></pre></td></tr> |
| <tr> <td class="numLine"> 791</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 792</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> removeDocument(String internalPath) {</pre></td></tr> |
| <tr> <td class="numLine"> 793</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Note: the EMPTY String for rrot path will be exchanged to a SLASH</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 794</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src"> internalPath = normalizeDirectoryPath(internalPath);</pre></td></tr> |
| <tr> <td class="numLine"> 795</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLine"> 796</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// get all files of the package</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 797</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src"> Set<String> allPackageFileNames = getFilePaths();</pre></td></tr> |
| <tr> <td class="numLine"> 798</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 799</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// If the document is the root document</span></pre></td></tr> |
| <tr> <td class="numLine"> 800</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// the "/" representing the root document is outside the</span></pre></td></tr> |
| <tr> <td class="numLine"> 801</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// manifest.xml in the API an empty path</span></pre></td></tr> |
| <tr> <td class="numLine"> 802</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// still normalizeDirectoryPath() already exchanged the EMPTY_STRING</span></pre></td></tr> |
| <tr> <td class="numLine"> 803</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// to SLASH</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 804</td> <td class="nbHitsUncovered"><a title="Line 804: Conditional coverage 50% (1/2)."> 15</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 804: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (internalPath.equals(SLASH)) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 805</td> <td class="nbHitsUncovered"><a title="Line 805: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 805: Conditional coverage 0% (0/2)."> <span class="keyword">for</span> (String entryName : allPackageFileNames) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 806</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> remove(entryName);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 807</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 808</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> remove(SLASH);</span></pre></td></tr> |
| <tr> <td class="numLine"> 809</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLine"> 810</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// remove all the stream of the directory, such as pictures</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 811</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src"> List<String> directoryEntryNames = <span class="keyword">new</span> ArrayList<String>();</pre></td></tr> |
| <tr> <td class="numLineCover"> 812</td> <td class="nbHitsCovered"><a title="Line 812: Conditional coverage 100% (2/2)."> 15</a></td> <td class="src"><pre class="src"> <a title="Line 812: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String entryName : allPackageFileNames) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 813</td> <td class="nbHitsCovered"><a title="Line 813: Conditional coverage 100% (2/2)."> 1067</a></td> <td class="src"><pre class="src"> <a title="Line 813: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (entryName.startsWith(internalPath)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 814</td> <td class="nbHitsCovered"> 85</td> <td class="src"><pre class="src"> directoryEntryNames.add(entryName);</pre></td></tr> |
| <tr> <td class="numLine"> 815</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 816</td> <td class="nbHitsCovered"> 1067</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 817</td> <td class="nbHitsCovered"><a title="Line 817: Conditional coverage 100% (2/2)."> 15</a></td> <td class="src"><pre class="src"> <a title="Line 817: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String entryName : directoryEntryNames) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 818</td> <td class="nbHitsCovered"> 85</td> <td class="src"><pre class="src"> remove(entryName);</pre></td></tr> |
| <tr> <td class="numLineCover"> 819</td> <td class="nbHitsCovered"> 85</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 820</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src"> remove(internalPath);</pre></td></tr> |
| <tr> <td class="numLine"> 821</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 822</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (Exception ex) {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 823</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(OdfPackageDocument.<span class="keyword">class</span>.getName()).log(Level.SEVERE, <span class="keyword">null</span>, ex);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 824</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 825</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 826</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 827</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 828</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/** @return all currently opened OdfPackageDocument of this OdfPackage */</span></pre></td></tr> |
| <tr> <td class="numLine"> 829</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> Set<String> getCachedPackageDocuments() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 830</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> mPkgDocuments.keySet();</span></pre></td></tr> |
| <tr> <td class="numLine"> 831</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 832</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 833</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> OdfPackageDocument getRootDocument() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 834</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> mPkgDocuments.get(OdfPackageDocument.ROOT_DOCUMENT_PATH);</span></pre></td></tr> |
| <tr> <td class="numLine"> 835</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 836</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 837</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> OdfManifestDom getManifestDom() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 838</td> <td class="nbHitsCovered"> 775</td> <td class="src"><pre class="src"> <span class="keyword">return</span> mManifestDom;</pre></td></tr> |
| <tr> <td class="numLine"> 839</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 840</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 841</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 842</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Get the media type of the ODF file or document (ie. a directory). A</span></pre></td></tr> |
| <tr> <td class="numLine"> 843</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * directory with a mediatype can be loaded as</span></pre></td></tr> |
| <tr> <td class="numLine"> 844</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <code>OdfPackageDocument</code>. Note: A directoy is represented by in</span></pre></td></tr> |
| <tr> <td class="numLine"> 845</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the package as directory with media type</span></pre></td></tr> |
| <tr> <td class="numLine"> 846</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 847</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 848</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * within the package of the file or document.</span></pre></td></tr> |
| <tr> <td class="numLine"> 849</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the mediaType for the resource of the given path</span></pre></td></tr> |
| <tr> <td class="numLine"> 850</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 851</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> String getMediaTypeString(String internalPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 852</td> <td class="nbHitsCovered"> 692</td> <td class="src"><pre class="src"> String mediaType = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 853</td> <td class="nbHitsUncovered"><a title="Line 853: Conditional coverage 50% (1/2)."> 692</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 853: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (internalPath != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 854</td> <td class="nbHitsCovered"><a title="Line 854: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 692</a></td> <td class="src"><pre class="src"> <a title="Line 854: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (internalPath.equals(EMPTY_STRING) || internalPath.equals(SLASH)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 855</td> <td class="nbHitsCovered"> 392</td> <td class="src"><pre class="src"> <span class="keyword">return</span> mMediaType;</pre></td></tr> |
| <tr> <td class="numLine"> 856</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 857</td> <td class="nbHitsCovered"> 300</td> <td class="src"><pre class="src"> mediaType = getMediaTypeFromEntry(normalizePath(internalPath));</pre></td></tr> |
| <tr> <td class="numLine"> 858</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if no file was found, look for a normalized directory name</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 859</td> <td class="nbHitsCovered"><a title="Line 859: Conditional coverage 100% (2/2)."> 300</a></td> <td class="src"><pre class="src"> <a title="Line 859: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (mediaType == <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 860</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> mediaType = getMediaTypeFromEntry(normalizeDirectoryPath(internalPath));</pre></td></tr> |
| <tr> <td class="numLine"> 861</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 862</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 863</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 864</td> <td class="nbHitsCovered"> 300</td> <td class="src"><pre class="src"> <span class="keyword">return</span> mediaType;</pre></td></tr> |
| <tr> <td class="numLine"> 865</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 866</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 867</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> String getMediaTypeFromEntry(String internalPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 868</td> <td class="nbHitsCovered"> 304</td> <td class="src"><pre class="src"> OdfFileEntry entry = getFileEntry(internalPath);</pre></td></tr> |
| <tr> <td class="numLine"> 869</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if the document is not in the package, the return is NULL</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 870</td> <td class="nbHitsCovered"><a title="Line 870: Conditional coverage 100% (2/2)."> 304</a></td> <td class="src"><pre class="src"> <a title="Line 870: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (entry != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 871</td> <td class="nbHitsCovered"> 296</td> <td class="src"><pre class="src"> <span class="keyword">return</span> entry.getMediaTypeString();</pre></td></tr> |
| <tr> <td class="numLine"> 872</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 873</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 874</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 875</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 876</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 877</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 878</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Get the media type of the ODF package (equal to media type of ODF root</span></pre></td></tr> |
| <tr> <td class="numLine"> 879</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * document)</span></pre></td></tr> |
| <tr> <td class="numLine"> 880</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 881</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the mediaType string of this ODF package</span></pre></td></tr> |
| <tr> <td class="numLine"> 882</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 883</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> String getMediaTypeString() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 884</td> <td class="nbHitsCovered"> 166</td> <td class="src"><pre class="src"> <span class="keyword">return</span> mMediaType;</pre></td></tr> |
| <tr> <td class="numLine"> 885</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 886</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 887</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 888</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Set the media type of the ODF package (equal to media type of ODF root</span></pre></td></tr> |
| <tr> <td class="numLine"> 889</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * document)</span></pre></td></tr> |
| <tr> <td class="numLine"> 890</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 891</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param mediaType</span></pre></td></tr> |
| <tr> <td class="numLine"> 892</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * string of this ODF package</span></pre></td></tr> |
| <tr> <td class="numLine"> 893</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 894</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">void</span> setMediaTypeString(String mediaType) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 895</td> <td class="nbHitsCovered"> 577</td> <td class="src"><pre class="src"> mMediaType = mediaType;</pre></td></tr> |
| <tr> <td class="numLineCover"> 896</td> <td class="nbHitsCovered"> 577</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 897</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 898</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 899</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Get an OdfFileEntry for the internalPath NOTE: This method should be</span></pre></td></tr> |
| <tr> <td class="numLine"> 900</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * better moved to a DOM inherited Manifest class</span></pre></td></tr> |
| <tr> <td class="numLine"> 901</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 902</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 903</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The relative package path within the ODF package</span></pre></td></tr> |
| <tr> <td class="numLine"> 904</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return The manifest file entry will be returned.</span></pre></td></tr> |
| <tr> <td class="numLine"> 905</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 906</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> OdfFileEntry getFileEntry(String internalPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 907</td> <td class="nbHitsCovered"> 880</td> <td class="src"><pre class="src"> internalPath = normalizeFilePath(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 908</td> <td class="nbHitsCovered"> 880</td> <td class="src"><pre class="src"> <span class="keyword">return</span> mManifestEntries.get(internalPath);</pre></td></tr> |
| <tr> <td class="numLine"> 909</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 910</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 911</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 912</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Get a OdfFileEntries from the manifest file (i.e. /META/manifest.xml")</span></pre></td></tr> |
| <tr> <td class="numLine"> 913</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 914</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return The paths of the manifest file entries will be returned.</span></pre></td></tr> |
| <tr> <td class="numLine"> 915</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 916</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> Set<String> getFilePaths() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 917</td> <td class="nbHitsCovered"> 111</td> <td class="src"><pre class="src"> <span class="keyword">return</span> mManifestEntries.keySet();</pre></td></tr> |
| <tr> <td class="numLine"> 918</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 919</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 920</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 921</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Check existence of a file in the package.</span></pre></td></tr> |
| <tr> <td class="numLine"> 922</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 923</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 924</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The relative package documentURL within the ODF package</span></pre></td></tr> |
| <tr> <td class="numLine"> 925</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return True if there is an entry and a file for the given documentURL</span></pre></td></tr> |
| <tr> <td class="numLine"> 926</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 927</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">boolean</span> contains(String internalPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 928</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> internalPath = normalizeFilePath(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 929</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">return</span> mManifestEntries.containsKey(internalPath);</pre></td></tr> |
| <tr> <td class="numLine"> 930</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 931</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 932</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 933</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Save the package to given documentURL.</span></pre></td></tr> |
| <tr> <td class="numLine"> 934</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 935</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param odfPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 936</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - the path to the ODF package destination</span></pre></td></tr> |
| <tr> <td class="numLine"> 937</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws java.lang.Exception</span></pre></td></tr> |
| <tr> <td class="numLine"> 938</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - if the package could not be saved</span></pre></td></tr> |
| <tr> <td class="numLine"> 939</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 940</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> save(String odfPath) <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLineCover"> 941</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> File f = <span class="keyword">new</span> File(odfPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 942</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> save(f);</pre></td></tr> |
| <tr> <td class="numLineCover"> 943</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 944</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 945</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 946</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Save package to a given File. After saving it is still necessary to close</span></pre></td></tr> |
| <tr> <td class="numLine"> 947</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the package to have again full access about the file.</span></pre></td></tr> |
| <tr> <td class="numLine"> 948</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 949</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param pkgFile</span></pre></td></tr> |
| <tr> <td class="numLine"> 950</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - the File to save the ODF package to</span></pre></td></tr> |
| <tr> <td class="numLine"> 951</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws java.lang.Exception</span></pre></td></tr> |
| <tr> <td class="numLine"> 952</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - if the package could not be saved</span></pre></td></tr> |
| <tr> <td class="numLine"> 953</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 954</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> save(File pkgFile) <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLineCover"> 955</td> <td class="nbHitsCovered"> 240</td> <td class="src"><pre class="src"> String baseURL = getBaseURLFromFile(pkgFile);</pre></td></tr> |
| <tr> <td class="numLine"> 956</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if (baseURL.equals(mBaseURI)) {</span></pre></td></tr> |
| <tr> <td class="numLine"> 957</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// // save to the same file: cache everything first</span></pre></td></tr> |
| <tr> <td class="numLine"> 958</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// // ToDo: (Issue 219 - PackageRefactoring) --maybe it's better to</span></pre></td></tr> |
| <tr> <td class="numLine"> 959</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// write to a new file and copy that</span></pre></td></tr> |
| <tr> <td class="numLine"> 960</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// // to the original one - would be less memory footprint</span></pre></td></tr> |
| <tr> <td class="numLine"> 961</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// cacheContent();</span></pre></td></tr> |
| <tr> <td class="numLine"> 962</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// }</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 963</td> <td class="nbHitsCovered"> 240</td> <td class="src"><pre class="src"> FileOutputStream fos = <span class="keyword">new</span> FileOutputStream(pkgFile);</pre></td></tr> |
| <tr> <td class="numLineCover"> 964</td> <td class="nbHitsCovered"> 240</td> <td class="src"><pre class="src"> save(fos, baseURL);</pre></td></tr> |
| <tr> <td class="numLineCover"> 965</td> <td class="nbHitsCovered"> 240</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 966</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 967</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> save(OutputStream odfStream) <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLineCover"> 968</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> save(odfStream, <span class="keyword">null</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 969</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr> |
| <tr> <td class="numLine"> 970</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 971</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 972</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Sets the password of this package. if password is not null, package will</span></pre></td></tr> |
| <tr> <td class="numLine"> 973</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * be encrypted when save.</span></pre></td></tr> |
| <tr> <td class="numLine"> 974</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 975</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param password</span></pre></td></tr> |
| <tr> <td class="numLine"> 976</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * password</span></pre></td></tr> |
| <tr> <td class="numLine"> 977</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @since 0.8.9</span></pre></td></tr> |
| <tr> <td class="numLine"> 978</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 979</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setPassword(String password) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 980</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> newPwd = password;</pre></td></tr> |
| <tr> <td class="numLineCover"> 981</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 982</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 983</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 984</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Save an ODF document to the OutputStream.</span></pre></td></tr> |
| <tr> <td class="numLine"> 985</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 986</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param odfStream</span></pre></td></tr> |
| <tr> <td class="numLine"> 987</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - the OutputStream to insert content to</span></pre></td></tr> |
| <tr> <td class="numLine"> 988</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param baseURL</span></pre></td></tr> |
| <tr> <td class="numLine"> 989</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * defining the location of the package</span></pre></td></tr> |
| <tr> <td class="numLine"> 990</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws java.lang.Exception</span></pre></td></tr> |
| <tr> <td class="numLine"> 991</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - if the package could not be saved</span></pre></td></tr> |
| <tr> <td class="numLine"> 992</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 993</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> save(OutputStream odfStream, String baseURL) <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLine"> 994</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// try {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 995</td> <td class="nbHitsCovered"> 241</td> <td class="src"><pre class="src"> mBaseURI = baseURL;</pre></td></tr> |
| <tr> <td class="numLineCover"> 996</td> <td class="nbHitsCovered"> 241</td> <td class="src"><pre class="src"> OdfFileEntry rootEntry = mManifestEntries.get(SLASH);</pre></td></tr> |
| <tr> <td class="numLineCover"> 997</td> <td class="nbHitsUncovered"><a title="Line 997: Conditional coverage 50% (1/2)."> 241</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 997: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (rootEntry == <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 998</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> rootEntry = <span class="keyword">new</span> OdfFileEntry(getManifestDom().getRootElement().newFileEntryElement(SLASH, mMediaType));</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 999</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> mManifestEntries.put(SLASH, rootEntry);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1000</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1001</td> <td class="nbHitsCovered"> 241</td> <td class="src"><pre class="src"> rootEntry.setMediaTypeString(mMediaType);</pre></td></tr> |
| <tr> <td class="numLine"> 1002</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1003</td> <td class="nbHitsCovered"> 241</td> <td class="src"><pre class="src"> ZipOutputStream zos = <span class="keyword">new</span> ZipOutputStream(odfStream);</pre></td></tr> |
| <tr> <td class="numLine"> 1004</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLine"> 1005</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// remove mediatype path and use it as first</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1006</td> <td class="nbHitsCovered"> 241</td> <td class="src"><pre class="src"> <span class="keyword">this</span>.mManifestEntries.remove(OdfFile.MEDIA_TYPE.getPath());</pre></td></tr> |
| <tr> <td class="numLineCover"> 1007</td> <td class="nbHitsCovered"> 241</td> <td class="src"><pre class="src"> Iterator<String> it = mManifestEntries.keySet().iterator();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1008</td> <td class="nbHitsCovered"> 241</td> <td class="src"><pre class="src"> String path = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1009</td> <td class="nbHitsCovered"> 241</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> isFirstFile = <span class="keyword">true</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1010</td> <td class="nbHitsCovered"> 241</td> <td class="src"><pre class="src"> CRC32 crc = <span class="keyword">new</span> CRC32();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1011</td> <td class="nbHitsCovered"> 241</td> <td class="src"><pre class="src"> <span class="keyword">long</span> modTime = (<span class="keyword">new</span> java.util.Date()).getTime();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1012</td> <td class="nbHitsCovered"> 241</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] data = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1013</td> <td class="nbHitsUncovered"><a title="Line 1013: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 3131</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1013: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">while</span> (it.hasNext() || isFirstFile) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 1014</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// try {</span></pre></td></tr> |
| <tr> <td class="numLine"> 1015</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// ODF requires the "mimetype" file to be at first in the</span></pre></td></tr> |
| <tr> <td class="numLine"> 1016</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// package</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1017</td> <td class="nbHitsCovered"><a title="Line 1017: Conditional coverage 100% (2/2)."> 2891</a></td> <td class="src"><pre class="src"> <a title="Line 1017: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (isFirstFile) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1018</td> <td class="nbHitsCovered"> 241</td> <td class="src"><pre class="src"> isFirstFile = <span class="keyword">false</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 1019</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// create "mimetype" from current attribute value</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1020</td> <td class="nbHitsCovered"> 241</td> <td class="src"><pre class="src"> data = mMediaType.getBytes(<span class="string">"UTF-8"</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1021</td> <td class="nbHitsCovered"> 241</td> <td class="src"><pre class="src"> createZipEntry(OdfFile.MEDIA_TYPE.getPath(), data, zos, modTime, crc);</pre></td></tr> |
| <tr> <td class="numLine"> 1022</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1023</td> <td class="nbHitsCovered"> 2650</td> <td class="src"><pre class="src"> path = it.next();</pre></td></tr> |
| <tr> <td class="numLine"> 1024</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// not interested to reuse previous mediaType nor</span></pre></td></tr> |
| <tr> <td class="numLine"> 1025</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// manifest from ZIP</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1026</td> <td class="nbHitsUncovered"><a title="Line 1026: Conditional coverage 66% (4/6) [each condition: 100%, 50%, 50%]."> 2650</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1026: Conditional coverage 66% (4/6) [each condition: 100%, 50%, 50%]."> <span class="keyword">if</span> (!path.endsWith(SLASH) && !path.equals(OdfPackage.OdfFile.MANIFEST.getPath()) && !path.equals(OdfPackage.OdfFile.MEDIA_TYPE.getPath())) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1027</td> <td class="nbHitsCovered"> 2040</td> <td class="src"><pre class="src"> data = getBytes(path);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1028</td> <td class="nbHitsCovered"> 2040</td> <td class="src"><pre class="src"> createZipEntry(path, data, zos, modTime, crc);</pre></td></tr> |
| <tr> <td class="numLine"> 1029</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1030</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1031</td> <td class="nbHitsCovered"> 2890</td> <td class="src"><pre class="src"> data = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 1032</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// } catch (IOException ex) {</span></pre></td></tr> |
| <tr> <td class="numLine"> 1033</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Logger.getLogger(OdfPackage.class.getName()).log(Level.SEVERE,</span></pre></td></tr> |
| <tr> <td class="numLine"> 1034</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// null, ex);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1035</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// }</span></pre></td></tr> |
| <tr> <td class="numLine"> 1036</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1037</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Create "META-INF/" directory</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1038</td> <td class="nbHitsCovered"> 240</td> <td class="src"><pre class="src"> createZipEntry(<span class="string">"META-INF/"</span>, <span class="keyword">null</span>, zos, modTime, crc);</pre></td></tr> |
| <tr> <td class="numLine"> 1039</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Create "META-INF/manifest.xml" file</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1040</td> <td class="nbHitsCovered"> 240</td> <td class="src"><pre class="src"> data = getBytes(OdfFile.MANIFEST.getPath());</pre></td></tr> |
| <tr> <td class="numLineCover"> 1041</td> <td class="nbHitsCovered"> 240</td> <td class="src"><pre class="src"> createZipEntry(OdfFile.MANIFEST.getPath(), data, zos, modTime, crc);</pre></td></tr> |
| <tr> <td class="numLine"> 1042</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1043</td> <td class="nbHitsCovered"> 241</td> <td class="src"><pre class="src"> zos.close();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1044</td> <td class="nbHitsCovered"> 240</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1045</td> <td class="nbHitsCovered"> 240</td> <td class="src"><pre class="src"> odfStream.flush();</pre></td></tr> |
| <tr> <td class="numLine"> 1046</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// } catch (IOException ex) {</span></pre></td></tr> |
| <tr> <td class="numLine"> 1047</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Logger.getLogger(OdfPackage.class.getName()).log(Level.SEVERE, null,</span></pre></td></tr> |
| <tr> <td class="numLine"> 1048</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// ex);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1049</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// }</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1050</td> <td class="nbHitsCovered"> 240</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1051</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1052</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> createZipEntry(String path, <span class="keyword">byte</span>[] data, ZipOutputStream zos, <span class="keyword">long</span> modTime, CRC32 crc) <span class="keyword">throws</span> IOException {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1053</td> <td class="nbHitsCovered"> 2761</td> <td class="src"><pre class="src"> ZipEntry ze = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 1054</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// try {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1055</td> <td class="nbHitsCovered"> 2761</td> <td class="src"><pre class="src"> ze = mZipEntries.get(path);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1056</td> <td class="nbHitsCovered"><a title="Line 1056: Conditional coverage 100% (2/2)."> 2761</a></td> <td class="src"><pre class="src"> <a title="Line 1056: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (ze == <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1057</td> <td class="nbHitsCovered"> 983</td> <td class="src"><pre class="src"> ze = <span class="keyword">new</span> ZipEntry(path);</pre></td></tr> |
| <tr> <td class="numLine"> 1058</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1059</td> <td class="nbHitsCovered"> 2761</td> <td class="src"><pre class="src"> ze.setTime(modTime);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1060</td> <td class="nbHitsCovered"><a title="Line 1060: Conditional coverage 100% (2/2)."> 2761</a></td> <td class="src"><pre class="src"> <a title="Line 1060: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (fileNeedsCompression(path)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1061</td> <td class="nbHitsCovered"> 2249</td> <td class="src"><pre class="src"> ze.setMethod(ZipEntry.DEFLATED);</pre></td></tr> |
| <tr> <td class="numLine"> 1062</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1063</td> <td class="nbHitsCovered"> 512</td> <td class="src"><pre class="src"> ze.setMethod(ZipEntry.STORED);</pre></td></tr> |
| <tr> <td class="numLine"> 1064</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1065</td> <td class="nbHitsCovered"> 2761</td> <td class="src"><pre class="src"> crc.reset();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1066</td> <td class="nbHitsCovered"><a title="Line 1066: Conditional coverage 100% (2/2)."> 2761</a></td> <td class="src"><pre class="src"> <a title="Line 1066: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (data != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1067</td> <td class="nbHitsCovered"> 2518</td> <td class="src"><pre class="src"> OdfFileEntry fileEntry = mManifestEntries.get(path);</pre></td></tr> |
| <tr> <td class="numLine"> 1068</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// encrypt file</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1069</td> <td class="nbHitsCovered"><a title="Line 1069: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 2518</a></td> <td class="src"><pre class="src"> <a title="Line 1069: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (data.length > 0 && fileNeedsEncryption(path)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1070</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> data = encryptData(data, fileEntry);</pre></td></tr> |
| <tr> <td class="numLine"> 1071</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// encrypted file entries shall be flagged as 'STORED'.</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1072</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> ze.setMethod(ZipEntry.STORED);</pre></td></tr> |
| <tr> <td class="numLine"> 1073</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// the size of the encrypted file should replace the real</span></pre></td></tr> |
| <tr> <td class="numLine"> 1074</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// size value.</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1075</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> ze.setCompressedSize(data.length);</pre></td></tr> |
| <tr> <td class="numLine"> 1076</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1077</td> <td class="nbHitsCovered"><a title="Line 1077: Conditional coverage 100% (2/2)."> 2514</a></td> <td class="src"><pre class="src"> <a title="Line 1077: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (fileEntry != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1078</td> <td class="nbHitsCovered"> 2033</td> <td class="src"><pre class="src"> fileEntry.setSize(<span class="keyword">null</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1079</td> <td class="nbHitsCovered"> 2033</td> <td class="src"><pre class="src"> FileEntryElement fileEntryEle = fileEntry.getOdfElement();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1080</td> <td class="nbHitsCovered"> 2033</td> <td class="src"><pre class="src"> EncryptionDataElement encryptionDataElement = OdfElement.findFirstChildNode(EncryptionDataElement.<span class="keyword">class</span>, fileEntryEle);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1081</td> <td class="nbHitsUncovered"><a title="Line 1081: Conditional coverage 50% (1/2)."> 2033</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1081: Conditional coverage 50% (1/2)."> <span class="keyword">while</span> (encryptionDataElement != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1082</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> fileEntryEle.removeChild(encryptionDataElement);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1083</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> encryptionDataElement = OdfElement.findFirstChildNode(EncryptionDataElement.<span class="keyword">class</span>, fileEntryEle);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1084</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1085</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1086</td> <td class="nbHitsCovered"> 2514</td> <td class="src"><pre class="src"> ze.setCompressedSize(-1);</pre></td></tr> |
| <tr> <td class="numLine"> 1087</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1088</td> <td class="nbHitsCovered"> 2518</td> <td class="src"><pre class="src"> ze.setSize(data.length);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1089</td> <td class="nbHitsCovered"> 2518</td> <td class="src"><pre class="src"> crc.update(data);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1090</td> <td class="nbHitsCovered"> 2518</td> <td class="src"><pre class="src"> ze.setCrc(crc.getValue());</pre></td></tr> |
| <tr> <td class="numLineCover"> 1091</td> <td class="nbHitsCovered"> 2518</td> <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1092</td> <td class="nbHitsCovered"> 243</td> <td class="src"><pre class="src"> ze.setSize(0);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1093</td> <td class="nbHitsCovered"> 243</td> <td class="src"><pre class="src"> ze.setCrc(0);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1094</td> <td class="nbHitsCovered"> 243</td> <td class="src"><pre class="src"> ze.setCompressedSize(-1);</pre></td></tr> |
| <tr> <td class="numLine"> 1095</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1096</td> <td class="nbHitsCovered"> 2761</td> <td class="src"><pre class="src"> zos.putNextEntry(ze);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1097</td> <td class="nbHitsCovered"><a title="Line 1097: Conditional coverage 100% (2/2)."> 2761</a></td> <td class="src"><pre class="src"> <a title="Line 1097: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (data != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1098</td> <td class="nbHitsCovered"> 2518</td> <td class="src"><pre class="src"> zos.write(data, 0, data.length);</pre></td></tr> |
| <tr> <td class="numLine"> 1099</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1100</td> <td class="nbHitsCovered"> 2761</td> <td class="src"><pre class="src"> zos.closeEntry();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1101</td> <td class="nbHitsCovered"> 2760</td> <td class="src"><pre class="src"> mZipEntries.put(path, ze);</pre></td></tr> |
| <tr> <td class="numLine"> 1102</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// } catch (IOException ex) {</span></pre></td></tr> |
| <tr> <td class="numLine"> 1103</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Logger.getLogger(OdfPackage.class.getName()).log(Level.SEVERE, null,</span></pre></td></tr> |
| <tr> <td class="numLine"> 1104</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// ex);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1105</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// }</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1106</td> <td class="nbHitsCovered"> 2760</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1107</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1108</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 1109</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Determines if a file have to be encrypted.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1110</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 1111</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 1112</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the file location</span></pre></td></tr> |
| <tr> <td class="numLine"> 1113</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return true if the file needs encrypted, false, otherwise</span></pre></td></tr> |
| <tr> <td class="numLine"> 1114</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 1115</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">boolean</span> fileNeedsEncryption(String internalPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1116</td> <td class="nbHitsCovered"><a title="Line 1116: Conditional coverage 100% (2/2)."> 2381</a></td> <td class="src"><pre class="src"> <a title="Line 1116: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (newPwd != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLine"> 1117</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// ODF spec does not allow encrytion of "./mimetype" file</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1118</td> <td class="nbHitsUncovered"><a title="Line 1118: Conditional coverage 83% (5/6) [each condition: 50%, 100%, 100%]."> 6</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1118: Conditional coverage 83% (5/6) [each condition: 50%, 100%, 100%]."> <span class="keyword">if</span> (internalPath.endsWith(SLASH) || OdfFile.MANIFEST.getPath().equals(internalPath) || OdfPackage.OdfFile.MEDIA_TYPE.getPath().equals(internalPath)) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1119</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">false</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 1120</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1121</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">return</span> fileNeedsCompression(internalPath);</pre></td></tr> |
| <tr> <td class="numLine"> 1122</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1123</td> <td class="nbHitsCovered"> 2375</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">false</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 1124</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1125</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1126</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1127</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 1128</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Determines if a file have to be compressed.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1129</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 1130</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 1131</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the file location</span></pre></td></tr> |
| <tr> <td class="numLine"> 1132</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return true if the file needs compression, false, otherwise</span></pre></td></tr> |
| <tr> <td class="numLine"> 1133</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 1134</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">boolean</span> fileNeedsCompression(String internalPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1135</td> <td class="nbHitsCovered"> 2765</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> result = <span class="keyword">true</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 1136</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1137</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// ODF spec does not allow compression of "./mimetype" file</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1138</td> <td class="nbHitsCovered"><a title="Line 1138: Conditional coverage 100% (2/2)."> 2765</a></td> <td class="src"><pre class="src"> <a title="Line 1138: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (internalPath.equals(OdfPackage.OdfFile.MEDIA_TYPE.getPath())) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1139</td> <td class="nbHitsCovered"> 241</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">false</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 1140</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1141</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// see if the file was already compressed</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1142</td> <td class="nbHitsCovered"><a title="Line 1142: Conditional coverage 100% (2/2)."> 2524</a></td> <td class="src"><pre class="src"> <a title="Line 1142: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (internalPath.lastIndexOf(<span class="string">"."</span>) > 0) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1143</td> <td class="nbHitsCovered"> 2105</td> <td class="src"><pre class="src"> String suffix = internalPath.substring(internalPath.lastIndexOf(<span class="string">"."</span>) + 1, internalPath.length());</pre></td></tr> |
| <tr> <td class="numLineCover"> 1144</td> <td class="nbHitsCovered"><a title="Line 1144: Conditional coverage 100% (2/2)."> 2105</a></td> <td class="src"><pre class="src"> <a title="Line 1144: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (mCompressedFileTypes.contains(suffix.toLowerCase())) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1145</td> <td class="nbHitsCovered"> 271</td> <td class="src"><pre class="src"> result = <span class="keyword">false</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 1146</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1147</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1148</td> <td class="nbHitsCovered"> 2524</td> <td class="src"><pre class="src"> <span class="keyword">return</span> result;</pre></td></tr> |
| <tr> <td class="numLine"> 1149</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1150</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1151</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> close(Closeable closeable) <span class="keyword">throws</span> SAXException, IOException {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1152</td> <td class="nbHitsUncovered"><a title="Line 1152: Conditional coverage 50% (1/2)."> 360</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1152: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (closeable != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 1153</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1154</td> <td class="nbHitsCovered"> 360</td> <td class="src"><pre class="src"> closeable.close();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1155</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (IOException ioe) {</span></pre></td></tr> |
| <tr> <td class="numLine"> 1156</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Warning only. This is usually just logged.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1157</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Allow user to throw an exception all the same</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1158</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> handleIOException(ioe, <span class="keyword">true</span>);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1159</td> <td class="nbHitsCovered"> 360</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1160</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1161</td> <td class="nbHitsCovered"> 360</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1162</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1163</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> handleIOException(IOException ex, <span class="keyword">boolean</span> warningOnly) <span class="keyword">throws</span> SAXException, IOException {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1164</td> <td class="nbHitsUncovered"><a title="Line 1164: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1164: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (mErrorHandler != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1165</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> SAXParseException se = <span class="keyword">new</span> SAXParseException(ex.getMessage(), <span class="keyword">null</span>, ex);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1166</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1167</td> <td class="nbHitsUncovered"><a title="Line 1167: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1167: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (warningOnly) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1168</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> mErrorHandler.warning(se);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1169</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1170</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> mErrorHandler.error(se);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1171</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1172</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (SAXException e1) {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1173</td> <td class="nbHitsUncovered"><a title="Line 1173: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1173: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (e1 == se) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1174</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> ex;</span></pre></td></tr> |
| <tr> <td class="numLine"> 1175</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// We re-throw the original exception if the error handler</span></pre></td></tr> |
| <tr> <td class="numLine"> 1176</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// just threw the SAXException we gave it.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1177</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1178</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> e1; <span class="comment">// Throw what the error handler threw.</span></span></pre></td></tr> |
| <tr> <td class="numLine"> 1179</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1180</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr> |
| <tr> <td class="numLine"> 1181</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1182</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> ex; <span class="comment">// No error handler? Just throw the original IOException</span></span></pre></td></tr> |
| <tr> <td class="numLine"> 1183</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1184</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1185</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 1186</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Close the OdfPackage after it is no longer needed. Even after saving it</span></pre></td></tr> |
| <tr> <td class="numLine"> 1187</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * is still necessary to close the package to have again full access about</span></pre></td></tr> |
| <tr> <td class="numLine"> 1188</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the file. Closing the OdfPackage will release all temporary created data.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1189</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Do this as the last action to free resources. Closing an already closed</span></pre></td></tr> |
| <tr> <td class="numLine"> 1190</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * document has no effect.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1191</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 1192</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> close() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1193</td> <td class="nbHitsUncovered"><a title="Line 1193: Conditional coverage 50% (1/2)."> 53</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1193: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (mZipFile != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 1194</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1195</td> <td class="nbHitsCovered"> 53</td> <td class="src"><pre class="src"> mZipFile.close();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1196</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr> |
| <tr> <td class="numLine"> 1197</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// log exception and continue</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1198</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(OdfPackage.<span class="keyword">class</span>.getName()).log(Level.INFO, <span class="keyword">null</span>, ex);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1199</td> <td class="nbHitsCovered"> 53</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1200</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1201</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// release all stuff - this class is impossible to use afterwards</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1202</td> <td class="nbHitsCovered"> 53</td> <td class="src"><pre class="src"> mZipFile = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1203</td> <td class="nbHitsCovered"> 53</td> <td class="src"><pre class="src"> mMediaType = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1204</td> <td class="nbHitsCovered"> 53</td> <td class="src"><pre class="src"> mZipEntries = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1205</td> <td class="nbHitsCovered"> 53</td> <td class="src"><pre class="src"> mPkgDoms = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1206</td> <td class="nbHitsCovered"> 53</td> <td class="src"><pre class="src"> mMemoryFileCache = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1207</td> <td class="nbHitsCovered"> 53</td> <td class="src"><pre class="src"> mManifestEntries = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1208</td> <td class="nbHitsCovered"> 53</td> <td class="src"><pre class="src"> mBaseURI = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1209</td> <td class="nbHitsCovered"> 53</td> <td class="src"><pre class="src"> mResolver = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1210</td> <td class="nbHitsCovered"> 53</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1211</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1212</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 1213</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Parse the Manifest file</span></pre></td></tr> |
| <tr> <td class="numLine"> 1214</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 1215</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> parseManifest() <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLine"> 1216</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// ToDo: manifest.xml will be held in the future as DOM, now its</span></pre></td></tr> |
| <tr> <td class="numLine"> 1217</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// being generated for each save()</span></pre></td></tr> |
| <tr> <td class="numLine"> 1218</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// try {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1219</td> <td class="nbHitsCovered"> 557</td> <td class="src"><pre class="src"> mManifestDom = (OdfManifestDom) OdfFileDom.newFileDom(<span class="keyword">this</span>, OdfFile.MANIFEST.getPath());</pre></td></tr> |
| <tr> <td class="numLineCover"> 1220</td> <td class="nbHitsCovered"> 557</td> <td class="src"><pre class="src"> ManifestElement manifestEle = mManifestDom.getRootElement();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1221</td> <td class="nbHitsCovered"><a title="Line 1221: Conditional coverage 100% (2/2)."> 557</a></td> <td class="src"><pre class="src"> <a title="Line 1221: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (manifestEle != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1222</td> <td class="nbHitsCovered"> 554</td> <td class="src"><pre class="src"> setManifestVersion(manifestEle.getVersionAttribute());</pre></td></tr> |
| <tr> <td class="numLine"> 1223</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1224</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> logValidationError(OdfPackageConstraint.MANIFEST_NOT_IN_PACKAGE, getBaseURI());</pre></td></tr> |
| <tr> <td class="numLine"> 1225</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1226</td> <td class="nbHitsCovered"> 556</td> <td class="src"><pre class="src"> Map<String, OdfFileEntry> entries = getManifestEntries();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1227</td> <td class="nbHitsCovered"> 556</td> <td class="src"><pre class="src"> FileEntryElement fileEntryEle = OdfElement.findFirstChildNode(FileEntryElement.<span class="keyword">class</span>, manifestEle);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1228</td> <td class="nbHitsCovered"><a title="Line 1228: Conditional coverage 100% (2/2)."> 6349</a></td> <td class="src"><pre class="src"> <a title="Line 1228: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (fileEntryEle != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1229</td> <td class="nbHitsCovered"> 5793</td> <td class="src"><pre class="src"> String path = fileEntryEle.getFullPathAttribute();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1230</td> <td class="nbHitsCovered"><a title="Line 1230: Conditional coverage 100% (2/2)."> 5793</a></td> <td class="src"><pre class="src"> <a title="Line 1230: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (path.equals(EMPTY_STRING)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1231</td> <td class="nbHitsCovered"><a title="Line 1231: Conditional coverage 100% (2/2)."> 6</a></td> <td class="src"><pre class="src"> <a title="Line 1231: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (getErrorHandler() != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1232</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> logValidationError(OdfPackageConstraint.MANIFEST_WITH_EMPTY_PATH, getBaseURI());</pre></td></tr> |
| <tr> <td class="numLine"> 1233</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1234</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1235</td> <td class="nbHitsCovered"> 5793</td> <td class="src"><pre class="src"> path = normalizePath(path);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1236</td> <td class="nbHitsCovered"> 5793</td> <td class="src"><pre class="src"> OdfFileEntry currentFileEntry = entries.get(path);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1237</td> <td class="nbHitsCovered"><a title="Line 1237: Conditional coverage 100% (2/2)."> 5793</a></td> <td class="src"><pre class="src"> <a title="Line 1237: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (currentFileEntry == <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1238</td> <td class="nbHitsCovered"> 5555</td> <td class="src"><pre class="src"> currentFileEntry = <span class="keyword">new</span> OdfFileEntry(fileEntryEle);</pre></td></tr> |
| <tr> <td class="numLine"> 1239</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1240</td> <td class="nbHitsUncovered"><a title="Line 1240: Conditional coverage 50% (1/2)."> 5793</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1240: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (path != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1241</td> <td class="nbHitsCovered"> 5793</td> <td class="src"><pre class="src"> entries.put(path, currentFileEntry);</pre></td></tr> |
| <tr> <td class="numLine"> 1242</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1243</td> <td class="nbHitsCovered"> 5793</td> <td class="src"><pre class="src"> fileEntryEle = OdfElement.findNextChildNode(FileEntryElement.<span class="keyword">class</span>, fileEntryEle);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1244</td> <td class="nbHitsCovered"> 5793</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1245</td> <td class="nbHitsCovered"> 556</td> <td class="src"><pre class="src"> mMemoryFileCache.remove(OdfFile.MANIFEST.getPath());</pre></td></tr> |
| <tr> <td class="numLineCover"> 1246</td> <td class="nbHitsCovered"> 556</td> <td class="src"><pre class="src"> mPkgDoms.put(OdfFile.MANIFEST.getPath(), mManifestDom);</pre></td></tr> |
| <tr> <td class="numLine"> 1247</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// } catch (Exception ex) {</span></pre></td></tr> |
| <tr> <td class="numLine"> 1248</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Logger.getLogger(OdfPackage.class.getName()).log(Level.SEVERE, null,</span></pre></td></tr> |
| <tr> <td class="numLine"> 1249</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// ex);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1250</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// }</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1251</td> <td class="nbHitsCovered"> 556</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1252</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1253</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> XMLReader getXMLReader() <span class="keyword">throws</span> ParserConfigurationException, SAXException {</pre></td></tr> |
| <tr> <td class="numLine"> 1254</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// create sax parser</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1255</td> <td class="nbHitsCovered"> 1180</td> <td class="src"><pre class="src"> SAXParserFactory saxFactory = <span class="keyword">new</span> org.apache.xerces.jaxp.SAXParserFactoryImpl();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1256</td> <td class="nbHitsCovered"> 1180</td> <td class="src"><pre class="src"> saxFactory.setNamespaceAware(<span class="keyword">true</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1257</td> <td class="nbHitsCovered"> 1180</td> <td class="src"><pre class="src"> saxFactory.setValidating(<span class="keyword">false</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 1258</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1259</td> <td class="nbHitsCovered"> 1180</td> <td class="src"><pre class="src"> saxFactory.setFeature(<span class="string">"http://apache.org/xml/features/nonvalidating/load-external-dtd"</span>, <span class="keyword">false</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1260</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (Exception ex) {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1261</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(OdfPackage.<span class="keyword">class</span>.getName()).log(Level.SEVERE, <span class="keyword">null</span>, ex);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1262</td> <td class="nbHitsCovered"> 1180</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1263</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 1264</td> <td class="nbHitsCovered"> 1180</td> <td class="src"><pre class="src"> SAXParser parser = saxFactory.newSAXParser();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1265</td> <td class="nbHitsCovered"> 1180</td> <td class="src"><pre class="src"> XMLReader xmlReader = parser.getXMLReader();</pre></td></tr> |
| <tr> <td class="numLine"> 1266</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// More details at</span></pre></td></tr> |
| <tr> <td class="numLine"> 1267</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// http://xerces.apache.org/xerces2-j/features.html#namespaces</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1268</td> <td class="nbHitsCovered"> 1180</td> <td class="src"><pre class="src"> xmlReader.setFeature(<span class="string">"http://xml.org/sax/features/namespaces"</span>, <span class="keyword">true</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 1269</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// More details at</span></pre></td></tr> |
| <tr> <td class="numLine"> 1270</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// http://xerces.apache.org/xerces2-j/features.html#namespace-prefixes</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1271</td> <td class="nbHitsCovered"> 1180</td> <td class="src"><pre class="src"> xmlReader.setFeature(<span class="string">"http://xml.org/sax/features/namespace-prefixes"</span>, <span class="keyword">true</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 1272</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// More details at</span></pre></td></tr> |
| <tr> <td class="numLine"> 1273</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// http://xerces.apache.org/xerces2-j/features.html#xmlns-uris</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1274</td> <td class="nbHitsCovered"> 1180</td> <td class="src"><pre class="src"> xmlReader.setFeature(<span class="string">"http://xml.org/sax/features/xmlns-uris"</span>, <span class="keyword">true</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1275</td> <td class="nbHitsCovered"> 1180</td> <td class="src"><pre class="src"> <span class="keyword">return</span> xmlReader;</pre></td></tr> |
| <tr> <td class="numLine"> 1276</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1277</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1278</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Add the given path and all its subdirectories to the internalPath list</span></pre></td></tr> |
| <tr> <td class="numLine"> 1279</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// to be written later to the manifest</span></pre></td></tr> |
| <tr> <td class="numLine"> 1280</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> createSubEntries(String internalPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1281</td> <td class="nbHitsCovered"> 355</td> <td class="src"><pre class="src"> ManifestElement manifestEle = getManifestDom().getRootElement();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1282</td> <td class="nbHitsCovered"> 355</td> <td class="src"><pre class="src"> StringTokenizer tok = <span class="keyword">new</span> StringTokenizer(internalPath, SLASH);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1283</td> <td class="nbHitsCovered"><a title="Line 1283: Conditional coverage 100% (2/2)."> 355</a></td> <td class="src"><pre class="src"> <a title="Line 1283: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (tok.countTokens() > 1) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1284</td> <td class="nbHitsCovered"> 340</td> <td class="src"><pre class="src"> String path = EMPTY_STRING;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1285</td> <td class="nbHitsCovered"><a title="Line 1285: Conditional coverage 100% (2/2)."> 1084</a></td> <td class="src"><pre class="src"> <a title="Line 1285: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (tok.hasMoreTokens()) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1286</td> <td class="nbHitsCovered"> 744</td> <td class="src"><pre class="src"> String directory = tok.nextToken();</pre></td></tr> |
| <tr> <td class="numLine"> 1287</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// it is a directory, if there are more token</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1288</td> <td class="nbHitsCovered"><a title="Line 1288: Conditional coverage 100% (2/2)."> 744</a></td> <td class="src"><pre class="src"> <a title="Line 1288: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (tok.hasMoreTokens()) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1289</td> <td class="nbHitsCovered"> 404</td> <td class="src"><pre class="src"> path = path + directory + SLASH;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1290</td> <td class="nbHitsCovered"> 404</td> <td class="src"><pre class="src"> OdfFileEntry fileEntry = mManifestEntries.get(path);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1291</td> <td class="nbHitsCovered"><a title="Line 1291: Conditional coverage 100% (2/2)."> 404</a></td> <td class="src"><pre class="src"> <a title="Line 1291: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (fileEntry == <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1292</td> <td class="nbHitsCovered"> 114</td> <td class="src"><pre class="src"> mManifestEntries.put(path, <span class="keyword">new</span> OdfFileEntry(manifestEle.newFileEntryElement(path, <span class="keyword">null</span>)));</pre></td></tr> |
| <tr> <td class="numLine"> 1293</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1294</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1295</td> <td class="nbHitsCovered"> 744</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1296</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1297</td> <td class="nbHitsCovered"> 355</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1298</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1299</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 1300</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Insert DOM tree into OdfPackage. An existing file will be replaced.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1301</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 1302</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param fileDOM</span></pre></td></tr> |
| <tr> <td class="numLine"> 1303</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - XML DOM tree to be inserted as file.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1304</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 1305</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - relative documentURL where the DOM tree should be inserted</span></pre></td></tr> |
| <tr> <td class="numLine"> 1306</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * as XML file</span></pre></td></tr> |
| <tr> <td class="numLine"> 1307</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param mediaType</span></pre></td></tr> |
| <tr> <td class="numLine"> 1308</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - media type of stream. Set to null if unknown</span></pre></td></tr> |
| <tr> <td class="numLine"> 1309</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws java.lang.Exception</span></pre></td></tr> |
| <tr> <td class="numLine"> 1310</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * when the DOM tree could not be inserted</span></pre></td></tr> |
| <tr> <td class="numLine"> 1311</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 1312</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> insert(Document fileDOM, String internalPath, String mediaType) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1313</td> <td class="nbHitsCovered"> 1288</td> <td class="src"><pre class="src"> internalPath = normalizeFilePath(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1314</td> <td class="nbHitsCovered"><a title="Line 1314: Conditional coverage 100% (2/2)."> 1288</a></td> <td class="src"><pre class="src"> <a title="Line 1314: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (mediaType == <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1315</td> <td class="nbHitsCovered"> 1198</td> <td class="src"><pre class="src"> mediaType = XML_MEDIA_TYPE;</pre></td></tr> |
| <tr> <td class="numLine"> 1316</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1317</td> <td class="nbHitsUncovered"><a title="Line 1317: Conditional coverage 50% (1/2)."> 1288</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1317: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (fileDOM == <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1318</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> mPkgDoms.remove(internalPath);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1319</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1320</td> <td class="nbHitsCovered"> 1288</td> <td class="src"><pre class="src"> mPkgDoms.put(internalPath, fileDOM);</pre></td></tr> |
| <tr> <td class="numLine"> 1321</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1322</td> <td class="nbHitsCovered"><a title="Line 1322: Conditional coverage 100% (2/2)."> 1288</a></td> <td class="src"><pre class="src"> <a title="Line 1322: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!internalPath.endsWith(OdfFile.MANIFEST.internalPath)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1323</td> <td class="nbHitsCovered"> 701</td> <td class="src"><pre class="src"> updateFileEntry(ensureFileEntryExistence(internalPath), mediaType);</pre></td></tr> |
| <tr> <td class="numLine"> 1324</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1325</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// remove byte array version of new DOM</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1326</td> <td class="nbHitsCovered"> 1288</td> <td class="src"><pre class="src"> mMemoryFileCache.remove(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1327</td> <td class="nbHitsCovered"> 1288</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1328</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1329</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 1330</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Embed an OdfPackageDocument to the current OdfPackage. All the file</span></pre></td></tr> |
| <tr> <td class="numLine"> 1331</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * entries of child document will be inserted.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1332</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 1333</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param sourceDocument</span></pre></td></tr> |
| <tr> <td class="numLine"> 1334</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the OdfPackageDocument to be embedded.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1335</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 1336</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * path to the directory the ODF document should be inserted</span></pre></td></tr> |
| <tr> <td class="numLine"> 1337</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * (relative to ODF package root).</span></pre></td></tr> |
| <tr> <td class="numLine"> 1338</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 1339</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> insertDocument(OdfPackageDocument sourceDocument, String internalPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1340</td> <td class="nbHitsCovered"> 79</td> <td class="src"><pre class="src"> internalPath = normalizeDirectoryPath(internalPath);</pre></td></tr> |
| <tr> <td class="numLine"> 1341</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// opened DOM of descendant Documents will be flashed to the their pkg</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1342</td> <td class="nbHitsCovered"> 79</td> <td class="src"><pre class="src"> flushDoms(sourceDocument);</pre></td></tr> |
| <tr> <td class="numLine"> 1343</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1344</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Gets the OdfDocument's manifest entry info, no matter it is a</span></pre></td></tr> |
| <tr> <td class="numLine"> 1345</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// independent document or an embeddedDocument.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1346</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> Map<String, OdfFileEntry> entryMapToCopy;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1347</td> <td class="nbHitsCovered"><a title="Line 1347: Conditional coverage 100% (2/2)."> 79</a></td> <td class="src"><pre class="src"> <a title="Line 1347: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (sourceDocument.isRootDocument()) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1348</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src"> entryMapToCopy = sourceDocument.getPackage().getManifestEntries();</pre></td></tr> |
| <tr> <td class="numLine"> 1349</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1350</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> entryMapToCopy = sourceDocument.getPackage().getSubDirectoryEntries(<span class="keyword">this</span>, sourceDocument.getDocumentPath());</pre></td></tr> |
| <tr> <td class="numLine"> 1351</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1352</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// insert to package and add it to the Manifest</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1353</td> <td class="nbHitsCovered"> 79</td> <td class="src"><pre class="src"> internalPath = sourceDocument.setDocumentPath(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1354</td> <td class="nbHitsCovered"> 79</td> <td class="src"><pre class="src"> String documentDirectory = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1355</td> <td class="nbHitsCovered"><a title="Line 1355: Conditional coverage 100% (2/2)."> 79</a></td> <td class="src"><pre class="src"> <a title="Line 1355: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (internalPath.equals(SLASH)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1356</td> <td class="nbHitsCovered"> 18</td> <td class="src"><pre class="src"> documentDirectory = EMPTY_STRING;</pre></td></tr> |
| <tr> <td class="numLine"> 1357</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1358</td> <td class="nbHitsCovered"> 61</td> <td class="src"><pre class="src"> documentDirectory = internalPath;</pre></td></tr> |
| <tr> <td class="numLine"> 1359</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1360</td> <td class="nbHitsCovered"> 79</td> <td class="src"><pre class="src"> Set<String> entryNameList = entryMapToCopy.keySet();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1361</td> <td class="nbHitsCovered"><a title="Line 1361: Conditional coverage 100% (2/2)."> 79</a></td> <td class="src"><pre class="src"> <a title="Line 1361: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String entryName : entryNameList) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1362</td> <td class="nbHitsCovered"> 441</td> <td class="src"><pre class="src"> OdfFileEntry entry = entryMapToCopy.get(entryName);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1363</td> <td class="nbHitsUncovered"><a title="Line 1363: Conditional coverage 50% (1/2)."> 441</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1363: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (entry != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 1364</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLine"> 1365</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if entry is a directory (e.g. an ODF document root)</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1366</td> <td class="nbHitsCovered"><a title="Line 1366: Conditional coverage 100% (2/2)."> 441</a></td> <td class="src"><pre class="src"> <a title="Line 1366: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (entryName.endsWith(SLASH)) {</a></pre></td></tr> |
| <tr> <td class="numLine"> 1367</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// insert directory</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1368</td> <td class="nbHitsCovered"><a title="Line 1368: Conditional coverage 100% (2/2)."> 118</a></td> <td class="src"><pre class="src"> <a title="Line 1368: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (entryName.equals(SLASH)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1369</td> <td class="nbHitsCovered"> 15</td> <td class="src"><pre class="src"> insert((<span class="keyword">byte</span>[]) <span class="keyword">null</span>, documentDirectory, sourceDocument.getMediaTypeString());</pre></td></tr> |
| <tr> <td class="numLine"> 1370</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1371</td> <td class="nbHitsCovered"> 103</td> <td class="src"><pre class="src"> insert((<span class="keyword">byte</span>[]) <span class="keyword">null</span>, documentDirectory + entry.getPath(), entry.getMediaTypeString());</pre></td></tr> |
| <tr> <td class="numLine"> 1372</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1373</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1374</td> <td class="nbHitsCovered"> 323</td> <td class="src"><pre class="src"> String packagePath = documentDirectory + entry.getPath();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1375</td> <td class="nbHitsCovered"> 323</td> <td class="src"><pre class="src"> insert(sourceDocument.getPackage().getInputStream(entryName), packagePath, entry.getMediaTypeString());</pre></td></tr> |
| <tr> <td class="numLine"> 1376</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1377</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (Exception ex) {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1378</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(OdfPackage.<span class="keyword">class</span>.getName()).log(Level.SEVERE, <span class="keyword">null</span>, ex);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1379</td> <td class="nbHitsCovered"> 441</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1380</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1381</td> <td class="nbHitsCovered"> 441</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1382</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// make sure the media type of embedded Document is right set.</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1383</td> <td class="nbHitsCovered"> 79</td> <td class="src"><pre class="src"> ManifestElement manifestEle = mManifestDom.getRootElement();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1384</td> <td class="nbHitsCovered"> 79</td> <td class="src"><pre class="src"> OdfFileEntry embedDocumentRootEntry = <span class="keyword">new</span> OdfFileEntry(manifestEle.newFileEntryElement(internalPath, sourceDocument.getMediaTypeString()));</pre></td></tr> |
| <tr> <td class="numLineCover"> 1385</td> <td class="nbHitsCovered"> 79</td> <td class="src"><pre class="src"> mManifestEntries.put(internalPath, embedDocumentRootEntry);</pre></td></tr> |
| <tr> <td class="numLine"> 1386</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// the new document will be attached to its new package (it has been</span></pre></td></tr> |
| <tr> <td class="numLine"> 1387</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// inserted to)</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1388</td> <td class="nbHitsCovered"> 79</td> <td class="src"><pre class="src"> sourceDocument.setPackage(<span class="keyword">this</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1389</td> <td class="nbHitsCovered"> 79</td> <td class="src"><pre class="src"> cacheDocument(sourceDocument, internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1390</td> <td class="nbHitsCovered"> 79</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1391</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1392</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 1393</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Insert all open DOMs of XML files beyond parent document to the package.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1394</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The XML files will be updated in the package after calling save.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1395</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 1396</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param parentDocument</span></pre></td></tr> |
| <tr> <td class="numLine"> 1397</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the document, which XML files shall be serialized</span></pre></td></tr> |
| <tr> <td class="numLine"> 1398</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 1399</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">void</span> flushDoms(OdfPackageDocument parentDocument) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1400</td> <td class="nbHitsCovered"> 158</td> <td class="src"><pre class="src"> OdfPackage pkg = parentDocument.getPackage();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1401</td> <td class="nbHitsCovered"><a title="Line 1401: Conditional coverage 100% (2/2)."> 158</a></td> <td class="src"><pre class="src"> <a title="Line 1401: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (parentDocument.isRootDocument()) {</a></pre></td></tr> |
| <tr> <td class="numLine"> 1402</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// for every parsed XML file (DOM)</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1403</td> <td class="nbHitsCovered"><a title="Line 1403: Conditional coverage 100% (2/2)."> 30</a></td> <td class="src"><pre class="src"> <a title="Line 1403: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String xmlFilePath : pkg.getCachedDoms().keySet()) {</a></pre></td></tr> |
| <tr> <td class="numLine"> 1404</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// insert it to the package (serializing and caching it till</span></pre></td></tr> |
| <tr> <td class="numLine"> 1405</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// final save)</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1406</td> <td class="nbHitsCovered"> 30</td> <td class="src"><pre class="src"> pkg.insert(pkg.getCachedDom(xmlFilePath), xmlFilePath, <span class="string">"text/xml"</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1407</td> <td class="nbHitsCovered"> 30</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1408</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLine"> 1409</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if not root document, check ..</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1410</td> <td class="nbHitsCovered"> 128</td> <td class="src"><pre class="src"> String parentDocumentPath = parentDocument.getDocumentPath();</pre></td></tr> |
| <tr> <td class="numLine"> 1411</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// for every parsed XML file (DOM)</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1412</td> <td class="nbHitsCovered"><a title="Line 1412: Conditional coverage 100% (2/2)."> 128</a></td> <td class="src"><pre class="src"> <a title="Line 1412: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String xmlFilePath : pkg.getCachedDoms().keySet()) {</a></pre></td></tr> |
| <tr> <td class="numLine"> 1413</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if the file is within the given document</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1414</td> <td class="nbHitsCovered"><a title="Line 1414: Conditional coverage 100% (2/2)."> 376</a></td> <td class="src"><pre class="src"> <a title="Line 1414: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (xmlFilePath.startsWith(parentDocumentPath)) {</a></pre></td></tr> |
| <tr> <td class="numLine"> 1415</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// insert it to the package (serializing and caching it till</span></pre></td></tr> |
| <tr> <td class="numLine"> 1416</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// final save)</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1417</td> <td class="nbHitsCovered"> 60</td> <td class="src"><pre class="src"> pkg.insert(pkg.getCachedDom(xmlFilePath), xmlFilePath, <span class="string">"text/xml"</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 1418</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1419</td> <td class="nbHitsCovered"> 376</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1420</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1421</td> <td class="nbHitsCovered"> 158</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1422</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1423</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/** Get all the file entries from a sub directory */</span></pre></td></tr> |
| <tr> <td class="numLine"> 1424</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> Map<String, OdfFileEntry> getSubDirectoryEntries(OdfPackage destinationPackage, String directory) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1425</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> directory = normalizeDirectoryPath(directory);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1426</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> Map<String, OdfFileEntry> subEntries = <span class="keyword">new</span> HashMap<String, OdfFileEntry>();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1427</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> Map<String, OdfFileEntry> allEntries = getManifestEntries();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1428</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> Set<String> rootEntryNameSet = getFilePaths();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1429</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> ManifestElement manifestEle = destinationPackage.getManifestDom().getRootElement();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1430</td> <td class="nbHitsCovered"><a title="Line 1430: Conditional coverage 100% (2/2)."> 64</a></td> <td class="src"><pre class="src"> <a title="Line 1430: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String entryName : rootEntryNameSet) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1431</td> <td class="nbHitsCovered"><a title="Line 1431: Conditional coverage 100% (2/2)."> 5146</a></td> <td class="src"><pre class="src"> <a title="Line 1431: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (entryName.startsWith(directory)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1432</td> <td class="nbHitsCovered"> 368</td> <td class="src"><pre class="src"> String newEntryName = entryName.substring(directory.length());</pre></td></tr> |
| <tr> <td class="numLineCover"> 1433</td> <td class="nbHitsCovered"><a title="Line 1433: Conditional coverage 100% (2/2)."> 368</a></td> <td class="src"><pre class="src"> <a title="Line 1433: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (newEntryName.length() == 0) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1434</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> newEntryName = SLASH;</pre></td></tr> |
| <tr> <td class="numLine"> 1435</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1436</td> <td class="nbHitsCovered"> 368</td> <td class="src"><pre class="src"> OdfFileEntry srcFileEntry = allEntries.get(entryName);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1437</td> <td class="nbHitsCovered"> 368</td> <td class="src"><pre class="src"> OdfFileEntry newFileEntry = <span class="keyword">new</span> OdfFileEntry(manifestEle.newFileEntryElement(newEntryName, srcFileEntry.getMediaTypeString()));</pre></td></tr> |
| <tr> <td class="numLineCover"> 1438</td> <td class="nbHitsCovered"> 368</td> <td class="src"><pre class="src"> newFileEntry.setEncryptionData(srcFileEntry.getEncryptionData());</pre></td></tr> |
| <tr> <td class="numLineCover"> 1439</td> <td class="nbHitsCovered"> 368</td> <td class="src"><pre class="src"> newFileEntry.setSize(srcFileEntry.getSize());</pre></td></tr> |
| <tr> <td class="numLineCover"> 1440</td> <td class="nbHitsCovered"> 368</td> <td class="src"><pre class="src"> subEntries.put(entryName, newFileEntry);</pre></td></tr> |
| <tr> <td class="numLine"> 1441</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1442</td> <td class="nbHitsCovered"> 5146</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1443</td> <td class="nbHitsCovered"> 64</td> <td class="src"><pre class="src"> <span class="keyword">return</span> subEntries;</pre></td></tr> |
| <tr> <td class="numLine"> 1444</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1445</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1446</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 1447</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Method returns the paths of all document within the package.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1448</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 1449</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return A set of paths of all documents of the package, including the</span></pre></td></tr> |
| <tr> <td class="numLine"> 1450</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * root document.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1451</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 1452</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> Set<String> getDocumentPaths() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1453</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">return</span> getDocumentPaths(<span class="keyword">null</span>, <span class="keyword">null</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 1454</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1455</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1456</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 1457</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Method returns the paths of all document within the package matching the</span></pre></td></tr> |
| <tr> <td class="numLine"> 1458</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * given criteria.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1459</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 1460</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param mediaTypeString</span></pre></td></tr> |
| <tr> <td class="numLine"> 1461</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * limits the desired set of document paths to documents of the</span></pre></td></tr> |
| <tr> <td class="numLine"> 1462</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * given mediaType</span></pre></td></tr> |
| <tr> <td class="numLine"> 1463</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return A set of paths of all documents of the package, including the</span></pre></td></tr> |
| <tr> <td class="numLine"> 1464</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * root document, that match the given parameter.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1465</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 1466</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> Set<String> getDocumentPaths(String mediaTypeString) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1467</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">return</span> getDocumentPaths(mediaTypeString, <span class="keyword">null</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 1468</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1469</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1470</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 1471</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Method returns the paths of all document within the package matching the</span></pre></td></tr> |
| <tr> <td class="numLine"> 1472</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * given criteria.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1473</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 1474</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param mediaTypeString</span></pre></td></tr> |
| <tr> <td class="numLine"> 1475</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * limits the desired set of document paths to documents of the</span></pre></td></tr> |
| <tr> <td class="numLine"> 1476</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * given mediaType</span></pre></td></tr> |
| <tr> <td class="numLine"> 1477</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param subDirectory</span></pre></td></tr> |
| <tr> <td class="numLine"> 1478</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * limits the desired set document paths to those documents below</span></pre></td></tr> |
| <tr> <td class="numLine"> 1479</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * of this subdirectory</span></pre></td></tr> |
| <tr> <td class="numLine"> 1480</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return A set of paths of all documents of the package, including the</span></pre></td></tr> |
| <tr> <td class="numLine"> 1481</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * root document, that match the given parameter.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1482</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 1483</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> Set<String> getDocumentPaths(String mediaTypeString, String subDirectory) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1484</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> Set<String> innerDocuments = <span class="keyword">new</span> HashSet<String>();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1485</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> Set<String> packageFilePaths = getFilePaths();</pre></td></tr> |
| <tr> <td class="numLine"> 1486</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// check manifest for current embedded OdfPackageDocuments</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1487</td> <td class="nbHitsCovered"><a title="Line 1487: Conditional coverage 100% (2/2)."> 2</a></td> <td class="src"><pre class="src"> <a title="Line 1487: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (String filePath : packageFilePaths) {</a></pre></td></tr> |
| <tr> <td class="numLine"> 1488</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// check if a subdirectory was the criteria and if the files are</span></pre></td></tr> |
| <tr> <td class="numLine"> 1489</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// beyond the given subdirectory</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1490</td> <td class="nbHitsUncovered"><a title="Line 1490: Conditional coverage 16% (1/6) [each condition: 50%, 0%, 0%]."> 146</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1490: Conditional coverage 16% (1/6) [each condition: 50%, 0%, 0%]."> <span class="keyword">if</span> (subDirectory == <span class="keyword">null</span> || filePath.startsWith(subDirectory) && !filePath.equals(subDirectory)) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 1491</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// with documentURL is not empty and is a directory (ie. a</span></pre></td></tr> |
| <tr> <td class="numLine"> 1492</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// potential document)</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1493</td> <td class="nbHitsCovered"><a title="Line 1493: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 146</a></td> <td class="src"><pre class="src"> <a title="Line 1493: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (filePath.length() > 1 && filePath.endsWith(SLASH)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1494</td> <td class="nbHitsCovered"> 46</td> <td class="src"><pre class="src"> String fileMediaType = getFileEntry(filePath).getMediaTypeString();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1495</td> <td class="nbHitsUncovered"><a title="Line 1495: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> 46</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1495: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> <span class="keyword">if</span> (fileMediaType != <span class="keyword">null</span> && !fileMediaType.equals(EMPTY_STRING)) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 1496</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// check if a certain mediaType was the critera and was</span></pre></td></tr> |
| <tr> <td class="numLine"> 1497</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// matched</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1498</td> <td class="nbHitsUncovered"><a title="Line 1498: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> 22</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1498: Conditional coverage 75% (3/4) [each condition: 100%, 50%]."> <span class="keyword">if</span> (mediaTypeString == <span class="keyword">null</span> || mediaTypeString.equals(fileMediaType)) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 1499</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// only relative path is allowed as path</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1500</td> <td class="nbHitsCovered"> 11</td> <td class="src"><pre class="src"> innerDocuments.add(filePath);</pre></td></tr> |
| <tr> <td class="numLine"> 1501</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1502</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1503</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1504</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1505</td> <td class="nbHitsCovered"> 146</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1506</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">return</span> innerDocuments;</pre></td></tr> |
| <tr> <td class="numLine"> 1507</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1508</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1509</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 1510</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Adding a manifest:file-entry to be saved in manifest.xml. In addition,</span></pre></td></tr> |
| <tr> <td class="numLine"> 1511</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * sub directories will be added as well to the manifest.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1512</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 1513</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> OdfFileEntry ensureFileEntryExistence(String internalPath) {</pre></td></tr> |
| <tr> <td class="numLine"> 1514</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if it is NOT the resource "/META-INF/manifest.xml"</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1515</td> <td class="nbHitsCovered"> 6207</td> <td class="src"><pre class="src"> OdfFileEntry fileEntry = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1516</td> <td class="nbHitsUncovered"><a title="Line 1516: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> 6207</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1516: Conditional coverage 25% (1/4) [each condition: 50%, 0%]."> <span class="keyword">if</span> (!OdfFile.MANIFEST.internalPath.equals(internalPath) || !internalPath.equals(EMPTY_STRING)) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1517</td> <td class="nbHitsUncovered"><a title="Line 1517: Conditional coverage 50% (1/2)."> 6207</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1517: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (mManifestEntries == <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1518</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> mManifestEntries = <span class="keyword">new</span> HashMap<String, OdfFileEntry>();</span></pre></td></tr> |
| <tr> <td class="numLine"> 1519</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1520</td> <td class="nbHitsCovered"> 6207</td> <td class="src"><pre class="src"> fileEntry = mManifestEntries.get(internalPath);</pre></td></tr> |
| <tr> <td class="numLine"> 1521</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// for every new file entry</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1522</td> <td class="nbHitsCovered"><a title="Line 1522: Conditional coverage 100% (2/2)."> 6207</a></td> <td class="src"><pre class="src"> <a title="Line 1522: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (fileEntry == <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1523</td> <td class="nbHitsCovered"> 356</td> <td class="src"><pre class="src"> ManifestElement manifestEle = getManifestDom().getRootElement();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1524</td> <td class="nbHitsCovered"><a title="Line 1524: Conditional coverage 100% (2/2)."> 356</a></td> <td class="src"><pre class="src"> <a title="Line 1524: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (manifestEle == <span class="keyword">null</span>)</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1525</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1526</td> <td class="nbHitsCovered"> 355</td> <td class="src"><pre class="src"> fileEntry = <span class="keyword">new</span> OdfFileEntry(manifestEle.newFileEntryElement(internalPath, <span class="string">""</span>));</pre></td></tr> |
| <tr> <td class="numLineCover"> 1527</td> <td class="nbHitsCovered"> 355</td> <td class="src"><pre class="src"> mManifestEntries.put(internalPath, fileEntry);</pre></td></tr> |
| <tr> <td class="numLine"> 1528</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// creates recursive file entries for all sub directories</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1529</td> <td class="nbHitsCovered"> 355</td> <td class="src"><pre class="src"> createSubEntries(internalPath);</pre></td></tr> |
| <tr> <td class="numLine"> 1530</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1531</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1532</td> <td class="nbHitsCovered"> 6206</td> <td class="src"><pre class="src"> <span class="keyword">return</span> fileEntry;</pre></td></tr> |
| <tr> <td class="numLine"> 1533</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1534</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1535</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 1536</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * update file entry setting.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1537</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 1538</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">void</span> updateFileEntry(OdfFileEntry fileEntry, String mediaType) {</pre></td></tr> |
| <tr> <td class="numLine"> 1539</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// overwrite previous settings</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1540</td> <td class="nbHitsCovered"> 1979</td> <td class="src"><pre class="src"> fileEntry.setMediaTypeString(mediaType);</pre></td></tr> |
| <tr> <td class="numLine"> 1541</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// reset encryption data (ODFDOM does not support encryption yet)</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1542</td> <td class="nbHitsCovered"> 1979</td> <td class="src"><pre class="src"> fileEntry.setEncryptionData(<span class="keyword">null</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 1543</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// reset size to be unset</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1544</td> <td class="nbHitsCovered"> 1979</td> <td class="src"><pre class="src"> fileEntry.setSize(<span class="keyword">null</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1545</td> <td class="nbHitsCovered"> 1979</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1546</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1547</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 1548</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Gets org.w3c.dom.Document for XML file contained in package.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1549</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 1550</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 1551</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * to a file within the Odf Package (eg. content.xml)</span></pre></td></tr> |
| <tr> <td class="numLine"> 1552</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return an org.w3c.dom.Document</span></pre></td></tr> |
| <tr> <td class="numLine"> 1553</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws SAXException</span></pre></td></tr> |
| <tr> <td class="numLine"> 1554</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws ParserConfigurationException</span></pre></td></tr> |
| <tr> <td class="numLine"> 1555</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws IOException</span></pre></td></tr> |
| <tr> <td class="numLine"> 1556</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws IllegalArgumentException</span></pre></td></tr> |
| <tr> <td class="numLine"> 1557</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws TransformerConfigurationException</span></pre></td></tr> |
| <tr> <td class="numLine"> 1558</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws TransformerException</span></pre></td></tr> |
| <tr> <td class="numLine"> 1559</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 1560</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> Document getDom(String internalPath) <span class="keyword">throws</span> SAXException, ParserConfigurationException, IllegalArgumentException, TransformerConfigurationException, TransformerException, IOException {</pre></td></tr> |
| <tr> <td class="numLine"> 1561</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 1562</td> <td class="nbHitsCovered"> 26</td> <td class="src"><pre class="src"> Document doc = mPkgDoms.get(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1563</td> <td class="nbHitsCovered"><a title="Line 1563: Conditional coverage 100% (2/2)."> 26</a></td> <td class="src"><pre class="src"> <a title="Line 1563: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (doc != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1564</td> <td class="nbHitsCovered"> 16</td> <td class="src"><pre class="src"> <span class="keyword">return</span> doc;</pre></td></tr> |
| <tr> <td class="numLine"> 1565</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1566</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 1567</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> InputStream is = getInputStream(internalPath);</pre></td></tr> |
| <tr> <td class="numLine"> 1568</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1569</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// We depend on Xerces. So we just go ahead and create a Xerces DBF,</span></pre></td></tr> |
| <tr> <td class="numLine"> 1570</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// without</span></pre></td></tr> |
| <tr> <td class="numLine"> 1571</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// forcing everything else to do so.</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1572</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> DocumentBuilderFactory factory = <span class="keyword">new</span> org.apache.xerces.jaxp.DocumentBuilderFactoryImpl();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1573</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> factory.setNamespaceAware(<span class="keyword">true</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1574</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> factory.setValidating(<span class="keyword">false</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 1575</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 1576</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> DocumentBuilder builder = factory.newDocumentBuilder();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1577</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> builder.setEntityResolver(getEntityResolver());</pre></td></tr> |
| <tr> <td class="numLine"> 1578</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 1579</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> String uri = getBaseURI() + internalPath;</pre></td></tr> |
| <tr> <td class="numLine"> 1580</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 1581</td> <td class="nbHitsUncovered"><a title="Line 1581: Conditional coverage 50% (1/2)."> 10</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1581: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (mErrorHandler != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1582</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> builder.setErrorHandler(mErrorHandler);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1583</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1584</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 1585</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> InputSource ins = <span class="keyword">new</span> InputSource(is);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1586</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> ins.setSystemId(uri);</pre></td></tr> |
| <tr> <td class="numLine"> 1587</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 1588</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> doc = builder.parse(ins);</pre></td></tr> |
| <tr> <td class="numLine"> 1589</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 1590</td> <td class="nbHitsUncovered"><a title="Line 1590: Conditional coverage 50% (1/2)."> 10</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1590: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (doc != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1591</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> mPkgDoms.put(internalPath, doc);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1592</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> mMemoryFileCache.remove(internalPath);</pre></td></tr> |
| <tr> <td class="numLine"> 1593</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1594</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">return</span> doc;</pre></td></tr> |
| <tr> <td class="numLine"> 1595</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1596</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1597</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 1598</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Inserts an external file into an OdfPackage. An existing file will be</span></pre></td></tr> |
| <tr> <td class="numLine"> 1599</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * replaced.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1600</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 1601</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param sourceURI</span></pre></td></tr> |
| <tr> <td class="numLine"> 1602</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - the source URI to the file to be inserted into the package.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1603</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 1604</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - relative documentURL where the tree should be inserted as</span></pre></td></tr> |
| <tr> <td class="numLine"> 1605</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * XML file</span></pre></td></tr> |
| <tr> <td class="numLine"> 1606</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param mediaType</span></pre></td></tr> |
| <tr> <td class="numLine"> 1607</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - media type of stream. Set to null if unknown</span></pre></td></tr> |
| <tr> <td class="numLine"> 1608</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws java.lang.Exception</span></pre></td></tr> |
| <tr> <td class="numLine"> 1609</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * In case the file could not be saved</span></pre></td></tr> |
| <tr> <td class="numLine"> 1610</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 1611</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> insert(URI sourceURI, String internalPath, String mediaType) <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1612</td> <td class="nbHitsCovered"> 17</td> <td class="src"><pre class="src"> InputStream is = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1613</td> <td class="nbHitsCovered"><a title="Line 1613: Conditional coverage 100% (2/2)."> 17</a></td> <td class="src"><pre class="src"> <a title="Line 1613: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (sourceURI.isAbsolute()) {</a></pre></td></tr> |
| <tr> <td class="numLine"> 1614</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if the URI is absolute it can be converted to URL</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1615</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> is = sourceURI.toURL().openStream();</pre></td></tr> |
| <tr> <td class="numLine"> 1616</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLine"> 1617</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// otherwise create a file class to open the stream</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1618</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> is = <span class="keyword">new</span> FileInputStream(sourceURI.toString());</pre></td></tr> |
| <tr> <td class="numLine"> 1619</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1620</td> <td class="nbHitsCovered"> 17</td> <td class="src"><pre class="src"> insert(is, internalPath, mediaType);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1621</td> <td class="nbHitsCovered"> 17</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1622</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1623</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 1624</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Inserts InputStream into an OdfPackage. An existing file will be</span></pre></td></tr> |
| <tr> <td class="numLine"> 1625</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * replaced.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1626</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 1627</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param fileStream</span></pre></td></tr> |
| <tr> <td class="numLine"> 1628</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - the stream of the file to be inserted into the ODF package.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1629</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 1630</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - relative documentURL where the tree should be inserted as</span></pre></td></tr> |
| <tr> <td class="numLine"> 1631</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * XML file</span></pre></td></tr> |
| <tr> <td class="numLine"> 1632</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param mediaType</span></pre></td></tr> |
| <tr> <td class="numLine"> 1633</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - media type of stream. Set to null if unknown</span></pre></td></tr> |
| <tr> <td class="numLine"> 1634</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 1635</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> insert(InputStream fileStream, String internalPath, String mediaType) <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1636</td> <td class="nbHitsCovered"> 407</td> <td class="src"><pre class="src"> internalPath = normalizeFilePath(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1637</td> <td class="nbHitsCovered"><a title="Line 1637: Conditional coverage 100% (2/2)."> 407</a></td> <td class="src"><pre class="src"> <a title="Line 1637: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (fileStream == <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLine"> 1638</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// adding a simple directory without MIMETYPE</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1639</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> insert((<span class="keyword">byte</span>[]) <span class="keyword">null</span>, internalPath, mediaType);</pre></td></tr> |
| <tr> <td class="numLine"> 1640</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1641</td> <td class="nbHitsCovered"> 402</td> <td class="src"><pre class="src"> ByteArrayOutputStream baos = <span class="keyword">new</span> ByteArrayOutputStream();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1642</td> <td class="nbHitsCovered"> 402</td> <td class="src"><pre class="src"> BufferedInputStream bis = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1643</td> <td class="nbHitsCovered"><a title="Line 1643: Conditional coverage 100% (2/2)."> 402</a></td> <td class="src"><pre class="src"> <a title="Line 1643: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (fileStream <span class="keyword">instanceof</span> BufferedInputStream) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1644</td> <td class="nbHitsCovered"> 14</td> <td class="src"><pre class="src"> bis = (BufferedInputStream) fileStream;</pre></td></tr> |
| <tr> <td class="numLine"> 1645</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1646</td> <td class="nbHitsCovered"> 388</td> <td class="src"><pre class="src"> bis = <span class="keyword">new</span> BufferedInputStream(fileStream);</pre></td></tr> |
| <tr> <td class="numLine"> 1647</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1648</td> <td class="nbHitsCovered"> 402</td> <td class="src"><pre class="src"> StreamHelper.transformStream(bis, baos);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1649</td> <td class="nbHitsCovered"> 402</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] data = baos.toByteArray();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1650</td> <td class="nbHitsCovered"> 402</td> <td class="src"><pre class="src"> insert(data, internalPath, mediaType);</pre></td></tr> |
| <tr> <td class="numLine"> 1651</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1652</td> <td class="nbHitsCovered"> 407</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1653</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1654</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 1655</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Inserts a byte array into OdfPackage. An existing file will be replaced.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1656</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * If the byte array is NULL a directory with the given mimetype will be</span></pre></td></tr> |
| <tr> <td class="numLine"> 1657</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * created.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1658</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 1659</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param fileBytes</span></pre></td></tr> |
| <tr> <td class="numLine"> 1660</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - data of the file stream to be stored in package. If NULL a</span></pre></td></tr> |
| <tr> <td class="numLine"> 1661</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * directory with the given mimetype will be created.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1662</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 1663</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - path of the file or directory relative to the package root.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1664</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param mediaTypeString</span></pre></td></tr> |
| <tr> <td class="numLine"> 1665</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - media type of stream. If unknown null can be used.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1666</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 1667</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> insert(<span class="keyword">byte</span>[] fileBytes, String internalPath, String mediaTypeString) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1668</td> <td class="nbHitsCovered"> 527</td> <td class="src"><pre class="src"> internalPath = normalizeFilePath(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1669</td> <td class="nbHitsUncovered"><a title="Line 1669: Conditional coverage 50% (1/2)."> 527</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1669: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (OdfPackage.OdfFile.MEDIA_TYPE.getPath().equals(internalPath)) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 1670</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1671</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> setMediaTypeString(<span class="keyword">new</span> String(fileBytes, <span class="string">"UTF-8"</span>));</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1672</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (UnsupportedEncodingException useEx) {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1673</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(OdfPackage.<span class="keyword">class</span>.getName()).log(Level.SEVERE, <span class="string">"ODF file could not be created as string!"</span>, useEx);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1674</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1675</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span>;</span></pre></td></tr> |
| <tr> <td class="numLine"> 1676</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1677</td> <td class="nbHitsCovered"><a title="Line 1677: Conditional coverage 100% (2/2)."> 527</a></td> <td class="src"><pre class="src"> <a title="Line 1677: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (fileBytes != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1678</td> <td class="nbHitsCovered"> 404</td> <td class="src"><pre class="src"> mMemoryFileCache.put(internalPath, fileBytes);</pre></td></tr> |
| <tr> <td class="numLine"> 1679</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// as DOM would overwrite data cache, any existing DOM cache will be</span></pre></td></tr> |
| <tr> <td class="numLine"> 1680</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// deleted</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1681</td> <td class="nbHitsUncovered"><a title="Line 1681: Conditional coverage 50% (1/2)."> 404</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1681: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (mPkgDoms.containsKey(internalPath)) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1682</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> mPkgDoms.remove(internalPath);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1683</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1684</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1685</td> <td class="nbHitsCovered"> 527</td> <td class="src"><pre class="src"> updateFileEntry(ensureFileEntryExistence(internalPath), mediaTypeString);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1686</td> <td class="nbHitsCovered"> 527</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1687</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1688</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// changed to package access as the manifest interiors are an implementation</span></pre></td></tr> |
| <tr> <td class="numLine"> 1689</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// detail</span></pre></td></tr> |
| <tr> <td class="numLine"> 1690</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> Map<String, OdfFileEntry> getManifestEntries() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1691</td> <td class="nbHitsCovered"> 2864</td> <td class="src"><pre class="src"> <span class="keyword">return</span> mManifestEntries;</pre></td></tr> |
| <tr> <td class="numLine"> 1692</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1693</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1694</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 1695</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Get package (sub-) content as byte array</span></pre></td></tr> |
| <tr> <td class="numLine"> 1696</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 1697</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 1698</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * relative documentURL to the package content</span></pre></td></tr> |
| <tr> <td class="numLine"> 1699</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the unzipped package content as byte array</span></pre></td></tr> |
| <tr> <td class="numLine"> 1700</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws java.lang.Exception</span></pre></td></tr> |
| <tr> <td class="numLine"> 1701</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 1702</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">byte</span>[] getBytes(String internalPath) {</pre></td></tr> |
| <tr> <td class="numLine"> 1703</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if path is null or empty return null</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1704</td> <td class="nbHitsUncovered"><a title="Line 1704: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> 3949</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1704: Conditional coverage 50% (2/4) [each condition: 50%, 50%]."> <span class="keyword">if</span> (internalPath == <span class="keyword">null</span> || internalPath.equals(EMPTY_STRING)) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1705</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">null</span>;</span></pre></td></tr> |
| <tr> <td class="numLine"> 1706</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1707</td> <td class="nbHitsCovered"> 3949</td> <td class="src"><pre class="src"> internalPath = normalizeFilePath(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1708</td> <td class="nbHitsCovered"> 3949</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] data = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 1709</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if the file is "mimetype"</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1710</td> <td class="nbHitsUncovered"><a title="Line 1710: Conditional coverage 50% (1/2)."> 3949</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1710: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (internalPath.equals(OdfPackage.OdfFile.MEDIA_TYPE.getPath())) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1711</td> <td class="nbHitsUncovered"><a title="Line 1711: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1711: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (mMediaType == <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1712</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">null</span>;</span></pre></td></tr> |
| <tr> <td class="numLine"> 1713</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLine"> 1714</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1715</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> data = mMediaType.getBytes(<span class="string">"UTF-8"</span>);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1716</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (UnsupportedEncodingException use) {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1717</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(OdfPackage.<span class="keyword">class</span>.getName()).log(Level.SEVERE, <span class="keyword">null</span>, use);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1718</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">null</span>;</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1719</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr> |
| <tr> <td class="numLine"> 1720</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1721</td> <td class="nbHitsCovered"><a title="Line 1721: Conditional coverage 100% (2/2)."> 3949</a></td> <td class="src"><pre class="src"> <a title="Line 1721: Conditional coverage 100% (2/2)."> } <span class="keyword">else</span> <span class="keyword">if</span> (mPkgDoms.get(internalPath) != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1722</td> <td class="nbHitsCovered"> 672</td> <td class="src"><pre class="src"> data = flushDom(mPkgDoms.get(internalPath));</pre></td></tr> |
| <tr> <td class="numLineCover"> 1723</td> <td class="nbHitsCovered"> 672</td> <td class="src"><pre class="src"> mMemoryFileCache.put(internalPath, data);</pre></td></tr> |
| <tr> <td class="numLine"> 1724</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if the path's file was cached to memory (second high priority)</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1725</td> <td class="nbHitsCovered"><a title="Line 1725: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 3277</a></td> <td class="src"><pre class="src"> <a title="Line 1725: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> } <span class="keyword">else</span> <span class="keyword">if</span> (mManifestEntries.containsKey(internalPath) && mMemoryFileCache.get(internalPath) != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1726</td> <td class="nbHitsCovered"> 430</td> <td class="src"><pre class="src"> data = mMemoryFileCache.get(internalPath);</pre></td></tr> |
| <tr> <td class="numLine"> 1727</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1728</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if the path's file was cached to disc (lowest priority)</span></pre></td></tr> |
| <tr> <td class="numLine"> 1729</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1730</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if not available, check if file exists in ZIP</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1731</td> <td class="nbHitsCovered"><a title="Line 1731: Conditional coverage 100% (2/2)."> 3949</a></td> <td class="src"><pre class="src"> <a title="Line 1731: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (data == <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1732</td> <td class="nbHitsCovered"> 2847</td> <td class="src"><pre class="src"> ZipEntry entry = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1733</td> <td class="nbHitsCovered"><a title="Line 1733: Conditional coverage 100% (2/2)."> 2847</a></td> <td class="src"><pre class="src"> <a title="Line 1733: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> ((entry = mZipEntries.get(internalPath)) != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1734</td> <td class="nbHitsCovered"> 2783</td> <td class="src"><pre class="src"> InputStream inputStream = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 1735</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1736</td> <td class="nbHitsCovered"> 2783</td> <td class="src"><pre class="src"> inputStream = mZipFile.getInputStream(entry);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1737</td> <td class="nbHitsUncovered"><a title="Line 1737: Conditional coverage 50% (1/2)."> 2783</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1737: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (inputStream != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1738</td> <td class="nbHitsCovered"> 2783</td> <td class="src"><pre class="src"> ByteArrayOutputStream out = <span class="keyword">new</span> ByteArrayOutputStream();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1739</td> <td class="nbHitsCovered"> 2783</td> <td class="src"><pre class="src"> StreamHelper.transformStream(inputStream, out);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1740</td> <td class="nbHitsCovered"> 2783</td> <td class="src"><pre class="src"> data = out.toByteArray();</pre></td></tr> |
| <tr> <td class="numLine"> 1741</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// decrypt data as needed</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1742</td> <td class="nbHitsUncovered"><a title="Line 1742: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> 2783</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1742: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> <span class="keyword">if</span> (!(internalPath.equals(OdfFile.MEDIA_TYPE.getPath()) || internalPath.equals(OdfFile.MANIFEST.getPath()))) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1743</td> <td class="nbHitsCovered"> 2229</td> <td class="src"><pre class="src"> OdfFileEntry manifestEntry = getManifestEntries().get(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1744</td> <td class="nbHitsCovered"> 2229</td> <td class="src"><pre class="src"> EncryptionDataElement encryptionDataElement = manifestEntry.getEncryptionData();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1745</td> <td class="nbHitsCovered"><a title="Line 1745: Conditional coverage 100% (2/2)."> 2229</a></td> <td class="src"><pre class="src"> <a title="Line 1745: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (encryptionDataElement != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1746</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> data = decryptData(data, manifestEntry, encryptionDataElement);</pre></td></tr> |
| <tr> <td class="numLine"> 1747</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1748</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1749</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// store for further usage; do not care about manifest:</span></pre></td></tr> |
| <tr> <td class="numLine"> 1750</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// that is handled exclusively</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1751</td> <td class="nbHitsCovered"> 2783</td> <td class="src"><pre class="src"> mMemoryFileCache.put(internalPath, data);</pre></td></tr> |
| <tr> <td class="numLine"> 1752</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1753</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1754</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(OdfPackage.<span class="keyword">class</span>.getName()).log(Level.SEVERE, <span class="keyword">null</span>, ex);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1755</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">finally</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1756</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">try</span> {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1757</td> <td class="nbHitsUncovered"><a title="Line 1757: Conditional coverage 50% (1/2)."> 2783</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1757: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (inputStream != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1758</td> <td class="nbHitsCovered"> 2783</td> <td class="src"><pre class="src"> inputStream.close();</pre></td></tr> |
| <tr> <td class="numLine"> 1759</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1760</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1761</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(OdfPackage.<span class="keyword">class</span>.getName()).log(Level.SEVERE, <span class="keyword">null</span>, ex);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1762</td> <td class="nbHitsCovered"> 2783</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1763</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr> |
| <tr> <td class="numLine"> 1764</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1765</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1766</td> <td class="nbHitsCovered"> 3949</td> <td class="src"><pre class="src"> <span class="keyword">return</span> data;</pre></td></tr> |
| <tr> <td class="numLine"> 1767</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1768</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1769</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// encrypt data and update manifest.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1770</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">byte</span>[] encryptData(<span class="keyword">byte</span>[] data, OdfFileEntry fileEntry) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1771</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] encryptedData = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 1772</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLine"> 1773</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// 1.The original uncompressed, unencrypted size is</span></pre></td></tr> |
| <tr> <td class="numLine"> 1774</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// contained in the manifest:size.</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1775</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> fileEntry.setSize(data.length);</pre></td></tr> |
| <tr> <td class="numLine"> 1776</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1777</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// 2.Compress with the "deflate" algorithm</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1778</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> Deflater compresser = <span class="keyword">new</span> Deflater(Deflater.DEFLATED, <span class="keyword">true</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1779</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> compresser.setInput(data);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1780</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> compresser.finish();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1781</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] compressedData = <span class="keyword">new</span> <span class="keyword">byte</span>[data.length];</pre></td></tr> |
| <tr> <td class="numLineCover"> 1782</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">int</span> compressedDataLength = compresser.deflate(compressedData);</pre></td></tr> |
| <tr> <td class="numLine"> 1783</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1784</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// 3. The start key is generated: the byte sequence</span></pre></td></tr> |
| <tr> <td class="numLine"> 1785</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// representing the password in UTF-8 is used to</span></pre></td></tr> |
| <tr> <td class="numLine"> 1786</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// generate a 20-byte SHA1 digest.</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1787</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] passBytes = newPwd.getBytes(<span class="string">"UTF-8"</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1788</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> MessageDigest md = MessageDigest.getInstance(<span class="string">"SHA1"</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1789</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> passBytes = md.digest(passBytes);</pre></td></tr> |
| <tr> <td class="numLine"> 1790</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// 4. Checksum specifies a digest in BASE64 encoding</span></pre></td></tr> |
| <tr> <td class="numLine"> 1791</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// that can be used to detect password correctness. The</span></pre></td></tr> |
| <tr> <td class="numLine"> 1792</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// digest is build from the compressed unencrypted file.</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1793</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> md.reset();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1794</td> <td class="nbHitsCovered"><a title="Line 1794: Conditional coverage 100% (2/2)."> 4</a></td> <td class="src"><pre class="src"> <a title="Line 1794: Conditional coverage 100% (2/2)."> md.update(compressedData, 0, (compressedDataLength > 1024 ? 1024 : compressedDataLength));</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1795</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] checksumBytes = <span class="keyword">new</span> <span class="keyword">byte</span>[20];</pre></td></tr> |
| <tr> <td class="numLineCover"> 1796</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> md.digest(checksumBytes, 0, 20);</pre></td></tr> |
| <tr> <td class="numLine"> 1797</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1798</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// 5. For each file, a 16-byte salt is generated by a random</span></pre></td></tr> |
| <tr> <td class="numLine"> 1799</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// generator.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1800</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// The salt is a BASE64 encoded binary sequence.</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1801</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> SecureRandom secureRandom = SecureRandom.getInstance(<span class="string">"SHA1PRNG"</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1802</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] salt = <span class="keyword">new</span> <span class="keyword">byte</span>[16];</pre></td></tr> |
| <tr> <td class="numLineCover"> 1803</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> secureRandom.nextBytes(salt);</pre></td></tr> |
| <tr> <td class="numLine"> 1804</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1805</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// char passChars[] = new String(passBytes, "UTF-8").toCharArray();</span></pre></td></tr> |
| <tr> <td class="numLine"> 1806</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/*</span></pre></td></tr> |
| <tr> <td class="numLine"> 1807</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * char passChars[] = new char[20]; for (int i = 0; i <</span></pre></td></tr> |
| <tr> <td class="numLine"> 1808</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * passBytes.length; i++) { passChars[i] = (char)</span></pre></td></tr> |
| <tr> <td class="numLine"> 1809</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * ((passBytes[i]+256)%256);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1810</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * //System.out.println("passChars[i]:"+passChars</span></pre></td></tr> |
| <tr> <td class="numLine"> 1811</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * [i]+", passBytes[i]"+passBytes[i]); } //char passChars[] =</span></pre></td></tr> |
| <tr> <td class="numLine"> 1812</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * getChars(passBytes); // 6. The PBKDF2 algorithm based on the</span></pre></td></tr> |
| <tr> <td class="numLine"> 1813</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * HMAC-SHA-1 function is used for the key derivation.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1814</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * SecretKeyFactory factory =</span></pre></td></tr> |
| <tr> <td class="numLine"> 1815</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); // 7. The</span></pre></td></tr> |
| <tr> <td class="numLine"> 1816</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * salt is used together with the start key to derive a unique</span></pre></td></tr> |
| <tr> <td class="numLine"> 1817</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * 128-bit key for each file. // The default iteration count for the</span></pre></td></tr> |
| <tr> <td class="numLine"> 1818</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * algorithm is 1024. KeySpec spec = new PBEKeySpec(passChars, salt,</span></pre></td></tr> |
| <tr> <td class="numLine"> 1819</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * 1024, 128); SecretKey skey = factory.generateSecret(spec); byte[]</span></pre></td></tr> |
| <tr> <td class="numLine"> 1820</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * raw = skey.getEncoded(); // algorithm-name="Blowfish CFB"</span></pre></td></tr> |
| <tr> <td class="numLine"> 1821</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * SecretKeySpec skeySpec = new SecretKeySpec(raw, "Blowfish");</span></pre></td></tr> |
| <tr> <td class="numLine"> 1822</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 1823</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 1824</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] dk = derivePBKDF2Key(passBytes, salt, 1024, 16);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1825</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> SecretKeySpec key = <span class="keyword">new</span> SecretKeySpec(dk, <span class="string">"Blowfish"</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 1826</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// 8.The files are encrypted: The random number</span></pre></td></tr> |
| <tr> <td class="numLine"> 1827</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// generator is used to generate the 8-byte initialization vector</span></pre></td></tr> |
| <tr> <td class="numLine"> 1828</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// for the</span></pre></td></tr> |
| <tr> <td class="numLine"> 1829</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// algorithm. The derived key is used together with the</span></pre></td></tr> |
| <tr> <td class="numLine"> 1830</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// initialization</span></pre></td></tr> |
| <tr> <td class="numLine"> 1831</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// vector to encrypt the file using the Blowfish algorithm in cipher</span></pre></td></tr> |
| <tr> <td class="numLine"> 1832</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// feedback</span></pre></td></tr> |
| <tr> <td class="numLine"> 1833</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// CFB mode.</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1834</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> Cipher cipher = Cipher.getInstance(<span class="string">"Blowfish/CFB/NoPadding"</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 1835</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// initialisation-vector specifies the byte-sequence used</span></pre></td></tr> |
| <tr> <td class="numLine"> 1836</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// as an initialization vector to a encryption algorithm. The</span></pre></td></tr> |
| <tr> <td class="numLine"> 1837</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// initialization vector is a BASE64 encoded binary sequence.</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1838</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] iv = <span class="keyword">new</span> <span class="keyword">byte</span>[8];</pre></td></tr> |
| <tr> <td class="numLineCover"> 1839</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> secureRandom.nextBytes(iv);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1840</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> IvParameterSpec ivParameterSpec = <span class="keyword">new</span> IvParameterSpec(iv);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1841</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> cipher.init(Cipher.ENCRYPT_MODE, key, ivParameterSpec);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1842</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> encryptedData = cipher.doFinal(compressedData, 0, compressedDataLength);</pre></td></tr> |
| <tr> <td class="numLine"> 1843</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1844</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// 9.update file entry encryption data.</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1845</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> String checksum = <span class="keyword">new</span> Base64Binary(checksumBytes).toString();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1846</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> FileEntryElement fileEntryElement = fileEntry.getOdfElement();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1847</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> EncryptionDataElement encryptionDataElement = OdfElement.findFirstChildNode(EncryptionDataElement.<span class="keyword">class</span>, fileEntryElement);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1848</td> <td class="nbHitsUncovered"><a title="Line 1848: Conditional coverage 50% (1/2)."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1848: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (encryptionDataElement != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1849</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> fileEntryElement.removeChild(encryptionDataElement);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1850</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1851</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> encryptionDataElement = fileEntryElement.newEncryptionDataElement(checksum, <span class="string">"SHA1/1K"</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1852</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> String initialisationVector = <span class="keyword">new</span> Base64Binary(iv).toString();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1853</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> AlgorithmElement algorithmElement = OdfElement.findFirstChildNode(AlgorithmElement.<span class="keyword">class</span>, encryptionDataElement);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1854</td> <td class="nbHitsUncovered"><a title="Line 1854: Conditional coverage 50% (1/2)."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1854: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (algorithmElement != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1855</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> encryptionDataElement.removeChild(algorithmElement);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1856</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1857</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> algorithmElement = encryptionDataElement.newAlgorithmElement(<span class="string">"Blowfish CFB"</span>, initialisationVector);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1858</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> String saltStr = <span class="keyword">new</span> Base64Binary(salt).toString();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1859</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> KeyDerivationElement keyDerivationElement = OdfElement.findFirstChildNode(KeyDerivationElement.<span class="keyword">class</span>, encryptionDataElement);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1860</td> <td class="nbHitsUncovered"><a title="Line 1860: Conditional coverage 50% (1/2)."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1860: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (keyDerivationElement != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1861</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> encryptionDataElement.removeChild(keyDerivationElement);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1862</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1863</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> keyDerivationElement = encryptionDataElement.newKeyDerivationElement(1024, <span class="string">"PBKDF2"</span>, saltStr);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1864</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> StartKeyGenerationElement startKeyGenerationElement = OdfElement.findFirstChildNode(StartKeyGenerationElement.<span class="keyword">class</span>, encryptionDataElement);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1865</td> <td class="nbHitsUncovered"><a title="Line 1865: Conditional coverage 50% (1/2)."> 4</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1865: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (startKeyGenerationElement != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1866</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> encryptionDataElement.removeChild(startKeyGenerationElement);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1867</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1868</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> encryptionDataElement.newStartKeyGenerationElement(<span class="string">"SHA1"</span>).setKeySizeAttribute(20);</pre></td></tr> |
| <tr> <td class="numLine"> 1869</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1870</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// System.out.println("full-path=\""+ path +"\"");</span></pre></td></tr> |
| <tr> <td class="numLine"> 1871</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// System.out.println("size=\""+ data.length +"\"");</span></pre></td></tr> |
| <tr> <td class="numLine"> 1872</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// System.out.println("checksum=\""+ checksum +"\"");</span></pre></td></tr> |
| <tr> <td class="numLine"> 1873</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// System.out.println("compressedData ="+compressedDataLength);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1874</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 1875</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (Exception e) {</span></pre></td></tr> |
| <tr> <td class="numLine"> 1876</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// throws NoSuchAlgorithmException,</span></pre></td></tr> |
| <tr> <td class="numLine"> 1877</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// InvalidKeySpecException, NoSuchPaddingException,</span></pre></td></tr> |
| <tr> <td class="numLine"> 1878</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// InvalidKeyException,</span></pre></td></tr> |
| <tr> <td class="numLine"> 1879</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// InvalidAlgorithmParameterException,</span></pre></td></tr> |
| <tr> <td class="numLine"> 1880</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// IllegalBlockSizeException, BadPaddingException</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1881</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(OdfPackage.<span class="keyword">class</span>.getName()).log(Level.SEVERE, <span class="keyword">null</span>, e);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1882</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1883</td> <td class="nbHitsCovered"> 4</td> <td class="src"><pre class="src"> <span class="keyword">return</span> encryptedData;</pre></td></tr> |
| <tr> <td class="numLine"> 1884</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1885</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1886</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">byte</span>[] decryptData(<span class="keyword">byte</span>[] data, OdfFileEntry manifestEntry, EncryptionDataElement encryptionDataElement) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1887</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] decompressData = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 1888</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1889</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> KeyDerivationElement keyDerivationElement = OdfElement.findFirstChildNode(KeyDerivationElement.<span class="keyword">class</span>, encryptionDataElement);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1890</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> AlgorithmElement algorithmElement = OdfElement.findFirstChildNode(AlgorithmElement.<span class="keyword">class</span>, encryptionDataElement);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1891</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> String saltStr = keyDerivationElement.getSaltAttribute();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1892</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> String ivStr = algorithmElement.getInitialisationVectorAttribute();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1893</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> String checksum = encryptionDataElement.getChecksumAttribute();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1894</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] salt = Base64Binary.valueOf(saltStr).getBytes();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1895</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] iv = Base64Binary.valueOf(ivStr).getBytes();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1896</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] passBytes = oldPwd.getBytes(<span class="string">"UTF-8"</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1897</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> MessageDigest md = MessageDigest.getInstance(<span class="string">"SHA-1"</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1898</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> passBytes = md.digest(passBytes);</pre></td></tr> |
| <tr> <td class="numLine"> 1899</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/*</span></pre></td></tr> |
| <tr> <td class="numLine"> 1900</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * char passChars[] = new char[passBytes.length]; for(int i = 0;</span></pre></td></tr> |
| <tr> <td class="numLine"> 1901</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * i<passBytes.length; i++){ passChars[i] =</span></pre></td></tr> |
| <tr> <td class="numLine"> 1902</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * (char)(passBytes[i]|0xFF); } KeySpec spec = new</span></pre></td></tr> |
| <tr> <td class="numLine"> 1903</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * PBEKeySpec(passChars, salt, 1024, 128); SecretKeyFactory factory</span></pre></td></tr> |
| <tr> <td class="numLine"> 1904</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); SecretKey</span></pre></td></tr> |
| <tr> <td class="numLine"> 1905</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * skey = factory.generateSecret(spec); byte[] raw =</span></pre></td></tr> |
| <tr> <td class="numLine"> 1906</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * skey.getEncoded(); SecretKeySpec skeySpec = new</span></pre></td></tr> |
| <tr> <td class="numLine"> 1907</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * SecretKeySpec(raw, "Blowfish");</span></pre></td></tr> |
| <tr> <td class="numLine"> 1908</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1909</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] dk = derivePBKDF2Key(passBytes, salt, 1024, 16);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1910</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> SecretKeySpec key = <span class="keyword">new</span> SecretKeySpec(dk, <span class="string">"Blowfish"</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 1911</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 1912</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> Cipher cipher = Cipher.getInstance(<span class="string">"Blowfish/CFB/NoPadding"</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1913</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> IvParameterSpec ivParameterSpec = <span class="keyword">new</span> IvParameterSpec(iv);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1914</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> cipher.init(Cipher.DECRYPT_MODE, key, ivParameterSpec);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1915</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] decryptedData = cipher.doFinal(data);</pre></td></tr> |
| <tr> <td class="numLine"> 1916</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1917</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// valid checksum</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1918</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> md.reset();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1919</td> <td class="nbHitsUncovered"><a title="Line 1919: Conditional coverage 50% (1/2)."> 1</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1919: Conditional coverage 50% (1/2)."> md.update(decryptedData, 0, (decryptedData.length > 1024 ? 1024 : decryptedData.length));</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1920</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] checksumBytes = <span class="keyword">new</span> <span class="keyword">byte</span>[20];</pre></td></tr> |
| <tr> <td class="numLineCover"> 1921</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> md.digest(checksumBytes, 0, 20);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1922</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> String newChecksum = <span class="keyword">new</span> Base64Binary(checksumBytes).toString();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1923</td> <td class="nbHitsUncovered"><a title="Line 1923: Conditional coverage 50% (1/2)."> 1</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1923: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (newChecksum.equals(checksum)) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 1924</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// decompress the bytes</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1925</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> Inflater decompresser = <span class="keyword">new</span> Inflater(<span class="keyword">true</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1926</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> decompresser.setInput(decryptedData);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1927</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> decompressData = <span class="keyword">new</span> <span class="keyword">byte</span>[manifestEntry.getSize()];</pre></td></tr> |
| <tr> <td class="numLineCover"> 1928</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> decompresser.inflate(decompressData);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1929</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> decompresser.end();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1930</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1931</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> OdfDecryptedException(<span class="string">"The given password is wrong, please check it."</span>);</span></pre></td></tr> |
| <tr> <td class="numLine"> 1932</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1933</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (Exception e) {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1934</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(OdfPackage.<span class="keyword">class</span>.getName()).log(Level.SEVERE, <span class="keyword">null</span>, e);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1935</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1936</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">return</span> decompressData;</pre></td></tr> |
| <tr> <td class="numLine"> 1937</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1938</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1939</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// derive PBKDF2Key (reference http://www.ietf.org/rfc/rfc2898.txt)</span></pre></td></tr> |
| <tr> <td class="numLine"> 1940</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">byte</span>[] derivePBKDF2Key(<span class="keyword">byte</span>[] password, <span class="keyword">byte</span>[] salt, <span class="keyword">int</span> iterationCount, <span class="keyword">int</span> keyLength) <span class="keyword">throws</span> NoSuchAlgorithmException, InvalidKeyException {</pre></td></tr> |
| <tr> <td class="numLineCover"> 1941</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> SecretKeySpec keyspec = <span class="keyword">new</span> SecretKeySpec(password, <span class="string">"HmacSHA1"</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1942</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> Mac hmac = Mac.getInstance(<span class="string">"HmacSHA1"</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1943</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> hmac.init(keyspec);</pre></td></tr> |
| <tr> <td class="numLine"> 1944</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// length in octets of HmacSHA1 function output, a positive integer</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1945</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">int</span> hmacLen = hmac.getMacLength();</pre></td></tr> |
| <tr> <td class="numLine"> 1946</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// let l be the number of hLen-octet blocks in the derived key, rounding</span></pre></td></tr> |
| <tr> <td class="numLine"> 1947</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// up,</span></pre></td></tr> |
| <tr> <td class="numLine"> 1948</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// l = CEIL (dkLen / hLen) Here, CEIL (x) is the smallest integer</span></pre></td></tr> |
| <tr> <td class="numLine"> 1949</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// greater than, or equal to, x.</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1950</td> <td class="nbHitsUncovered"><a title="Line 1950: Conditional coverage 50% (1/2)."> 5</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1950: Conditional coverage 50% (1/2)."> <span class="keyword">int</span> l = (keyLength % hmacLen > 0) ? (keyLength / hmacLen + 1) : (keyLength / hmacLen);</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 1951</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// let r be the number of octets in the last block: r = dkLen - (l - 1)</span></pre></td></tr> |
| <tr> <td class="numLine"> 1952</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// * hLen .</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1953</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">int</span> r = keyLength - (l - 1) * hmacLen;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1954</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">byte</span> T[] = <span class="keyword">new</span> <span class="keyword">byte</span>[l * hmacLen];</pre></td></tr> |
| <tr> <td class="numLineCover"> 1955</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">int</span> offset = 0;</pre></td></tr> |
| <tr> <td class="numLine"> 1956</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// For each block of the derived key apply the function F defined below</span></pre></td></tr> |
| <tr> <td class="numLine"> 1957</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// to the password P, the salt S, the iteration count c, and</span></pre></td></tr> |
| <tr> <td class="numLine"> 1958</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// the block index to compute the block:</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1959</td> <td class="nbHitsCovered"><a title="Line 1959: Conditional coverage 100% (2/2)."> 10</a></td> <td class="src"><pre class="src"> <a title="Line 1959: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = 1; i <= l; i++) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1960</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">byte</span> Ur[] = <span class="keyword">new</span> <span class="keyword">byte</span>[hmacLen];</pre></td></tr> |
| <tr> <td class="numLineCover"> 1961</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">byte</span> Ui[] = <span class="keyword">new</span> <span class="keyword">byte</span>[salt.length + 4];</pre></td></tr> |
| <tr> <td class="numLineCover"> 1962</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> System.arraycopy(salt, 0, Ui, 0, salt.length);</pre></td></tr> |
| <tr> <td class="numLine"> 1963</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Here, INT (i) is a four-octet encoding of the integer i, most</span></pre></td></tr> |
| <tr> <td class="numLine"> 1964</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// significant octet first.</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1965</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> Ui[salt.length + 0] = (<span class="keyword">byte</span>) (i >>> 24);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1966</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> Ui[salt.length + 1] = (<span class="keyword">byte</span>) (i >>> 16);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1967</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> Ui[salt.length + 2] = (<span class="keyword">byte</span>) (i >>> 8);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1968</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> Ui[salt.length + 3] = (<span class="keyword">byte</span>) (i);</pre></td></tr> |
| <tr> <td class="numLine"> 1969</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// U_1 \xor U_2 \xor ... \xor U_c</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1970</td> <td class="nbHitsCovered"><a title="Line 1970: Conditional coverage 100% (2/2)."> 5125</a></td> <td class="src"><pre class="src"> <a title="Line 1970: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> j = 0; j < iterationCount; j++) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1971</td> <td class="nbHitsCovered"> 5120</td> <td class="src"><pre class="src"> Ui = hmac.doFinal(Ui);</pre></td></tr> |
| <tr> <td class="numLine"> 1972</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// XOR</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1973</td> <td class="nbHitsCovered"><a title="Line 1973: Conditional coverage 100% (2/2)."> 107520</a></td> <td class="src"><pre class="src"> <a title="Line 1973: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> k = 0; k < T.length; k++) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 1974</td> <td class="nbHitsCovered"> 102400</td> <td class="src"><pre class="src"> Ur[k] ^= Ui[k];</pre></td></tr> |
| <tr> <td class="numLine"> 1975</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1976</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1977</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> System.arraycopy(Ur, 0, T, offset, hmacLen);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1978</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> offset += hmacLen;</pre></td></tr> |
| <tr> <td class="numLine"> 1979</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1980</td> <td class="nbHitsUncovered"><a title="Line 1980: Conditional coverage 50% (1/2)."> 5</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1980: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (r < hmacLen) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1981</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">byte</span> DK[] = <span class="keyword">new</span> <span class="keyword">byte</span>[keyLength];</pre></td></tr> |
| <tr> <td class="numLineCover"> 1982</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> System.arraycopy(T, 0, DK, 0, keyLength);</pre></td></tr> |
| <tr> <td class="numLineCover"> 1983</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> <span class="keyword">return</span> DK;</pre></td></tr> |
| <tr> <td class="numLine"> 1984</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 1985</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> T;</span></pre></td></tr> |
| <tr> <td class="numLine"> 1986</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 1987</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 1988</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Serializes a DOM tree into a byte array.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1989</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Providing the counterpart of the generic Namespace handling of</span></pre></td></tr> |
| <tr> <td class="numLine"> 1990</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// OdfFileDom.</span></pre></td></tr> |
| <tr> <td class="numLine"> 1991</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">byte</span>[] flushDom(Document dom) {</pre></td></tr> |
| <tr> <td class="numLine"> 1992</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if it is one of our DOM files we may flush all collected namespaces</span></pre></td></tr> |
| <tr> <td class="numLine"> 1993</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// to the root element</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1994</td> <td class="nbHitsUncovered"><a title="Line 1994: Conditional coverage 50% (1/2)."> 672</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1994: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (dom <span class="keyword">instanceof</span> OdfFileDom) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1995</td> <td class="nbHitsCovered"> 672</td> <td class="src"><pre class="src"> OdfFileDom odfDom = (OdfFileDom) dom;</pre></td></tr> |
| <tr> <td class="numLineCover"> 1996</td> <td class="nbHitsCovered"> 672</td> <td class="src"><pre class="src"> Map<String, String> nsByUri = odfDom.getMapNamespacePrefixByUri();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1997</td> <td class="nbHitsCovered"> 672</td> <td class="src"><pre class="src"> OdfElement root = odfDom.getRootElement();</pre></td></tr> |
| <tr> <td class="numLineCover"> 1998</td> <td class="nbHitsUncovered"><a title="Line 1998: Conditional coverage 50% (1/2)."> 672</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 1998: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (root != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 1999</td> <td class="nbHitsCovered"><a title="Line 1999: Conditional coverage 100% (2/2)."> 672</a></td> <td class="src"><pre class="src"> <a title="Line 1999: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (Entry<String, String> entry : nsByUri.entrySet()) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 2000</td> <td class="nbHitsCovered"> 12877</td> <td class="src"><pre class="src"> root.setAttributeNS(<span class="string">"http://www.w3.org/2000/xmlns/"</span>, <span class="string">"xmlns:"</span> + entry.getValue(), entry.getKey());</pre></td></tr> |
| <tr> <td class="numLineCover"> 2001</td> <td class="nbHitsCovered"> 12877</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2002</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2003</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 2004</td> <td class="nbHitsCovered"> 672</td> <td class="src"><pre class="src"> ByteArrayOutputStream baos = <span class="keyword">new</span> ByteArrayOutputStream();</pre></td></tr> |
| <tr> <td class="numLineCover"> 2005</td> <td class="nbHitsCovered"> 672</td> <td class="src"><pre class="src"> DOMXSImplementationSourceImpl dis = <span class="keyword">new</span> org.apache.xerces.dom.DOMXSImplementationSourceImpl();</pre></td></tr> |
| <tr> <td class="numLineCover"> 2006</td> <td class="nbHitsCovered"> 672</td> <td class="src"><pre class="src"> DOMImplementationLS impl = (DOMImplementationLS) dis.getDOMImplementation(<span class="string">"LS"</span>);</pre></td></tr> |
| <tr> <td class="numLineCover"> 2007</td> <td class="nbHitsCovered"> 672</td> <td class="src"><pre class="src"> LSSerializer writer = impl.createLSSerializer();</pre></td></tr> |
| <tr> <td class="numLineCover"> 2008</td> <td class="nbHitsCovered"> 672</td> <td class="src"><pre class="src"> LSOutput output = impl.createLSOutput();</pre></td></tr> |
| <tr> <td class="numLineCover"> 2009</td> <td class="nbHitsCovered"> 672</td> <td class="src"><pre class="src"> output.setByteStream(baos);</pre></td></tr> |
| <tr> <td class="numLineCover"> 2010</td> <td class="nbHitsCovered"> 672</td> <td class="src"><pre class="src"> writer.write(dom, output);</pre></td></tr> |
| <tr> <td class="numLineCover"> 2011</td> <td class="nbHitsCovered"> 672</td> <td class="src"><pre class="src"> <span class="keyword">return</span> baos.toByteArray();</pre></td></tr> |
| <tr> <td class="numLine"> 2012</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2013</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2014</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 2015</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Get the latest version of package content as InputStream, as it would be</span></pre></td></tr> |
| <tr> <td class="numLine"> 2016</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * saved. This might not be the original version once loaded from the</span></pre></td></tr> |
| <tr> <td class="numLine"> 2017</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * package.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2018</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 2019</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 2020</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * of the desired stream.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2021</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return Inputstream of the ODF file within the package for the given</span></pre></td></tr> |
| <tr> <td class="numLine"> 2022</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * path.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2023</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 2024</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> InputStream getInputStream(String internalPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2025</td> <td class="nbHitsCovered"> 1666</td> <td class="src"><pre class="src"> internalPath = normalizeFilePath(internalPath);</pre></td></tr> |
| <tr> <td class="numLine"> 2026</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// else we always cache here and return a ByteArrayInputStream because</span></pre></td></tr> |
| <tr> <td class="numLine"> 2027</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if</span></pre></td></tr> |
| <tr> <td class="numLine"> 2028</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// we would return ZipFile getInputStream(entry) we would not be</span></pre></td></tr> |
| <tr> <td class="numLine"> 2029</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// able to read 2 Entries at the same time. This is a limitation of the</span></pre></td></tr> |
| <tr> <td class="numLine"> 2030</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// ZipFile class.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2031</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// As it would be quite a common thing to read the content.xml and the</span></pre></td></tr> |
| <tr> <td class="numLine"> 2032</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// styles.xml</span></pre></td></tr> |
| <tr> <td class="numLine"> 2033</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// simultanously when using XSLT on OdfPackages we want to circumvent</span></pre></td></tr> |
| <tr> <td class="numLine"> 2034</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// this limitation</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2035</td> <td class="nbHitsCovered"> 1666</td> <td class="src"><pre class="src"> <span class="keyword">byte</span>[] data = getBytes(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 2036</td> <td class="nbHitsCovered"><a title="Line 2036: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 1666</a></td> <td class="src"><pre class="src"> <a title="Line 2036: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (data != <span class="keyword">null</span> && data.length != 0) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 2037</td> <td class="nbHitsCovered"> 1605</td> <td class="src"><pre class="src"> ByteArrayInputStream bais = <span class="keyword">new</span> ByteArrayInputStream(data);</pre></td></tr> |
| <tr> <td class="numLineCover"> 2038</td> <td class="nbHitsCovered"> 1605</td> <td class="src"><pre class="src"> <span class="keyword">return</span> bais;</pre></td></tr> |
| <tr> <td class="numLine"> 2039</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 2040</td> <td class="nbHitsCovered"> 61</td> <td class="src"><pre class="src"> <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 2041</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2042</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2043</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 2044</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Get the latest version of package content as InputStream, as it would be</span></pre></td></tr> |
| <tr> <td class="numLine"> 2045</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * saved. This might not be the original version once loaded from the</span></pre></td></tr> |
| <tr> <td class="numLine"> 2046</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * package.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2047</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 2048</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 2049</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * of the desired stream.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2050</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param useOriginal</span></pre></td></tr> |
| <tr> <td class="numLine"> 2051</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * true uses the stream as loaded from the ZIP. False will return</span></pre></td></tr> |
| <tr> <td class="numLine"> 2052</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * even modified file content as a stream.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2053</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return Inputstream of the ODF file within the package for the given</span></pre></td></tr> |
| <tr> <td class="numLine"> 2054</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * path.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2055</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 2056</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> InputStream getInputStream(String internalPath, <span class="keyword">boolean</span> useOriginal) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2057</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> InputStream stream = <span class="keyword">null</span>;</pre></td></tr> |
| <tr> <td class="numLineCover"> 2058</td> <td class="nbHitsUncovered"><a title="Line 2058: Conditional coverage 50% (1/2)."> 13</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 2058: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (useOriginal) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2059</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> ZipEntry entry = mOriginalZipEntries.get(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 2060</td> <td class="nbHitsCovered"><a title="Line 2060: Conditional coverage 100% (2/2)."> 13</a></td> <td class="src"><pre class="src"> <a title="Line 2060: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (entry != <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLine"> 2061</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2062</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> stream = mZipFile.getInputStream(entry);</pre></td></tr> |
| <tr> <td class="numLineCover"> 2063</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (IOException ex) {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2064</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(OdfPackage.<span class="keyword">class</span>.getName()).log(Level.SEVERE, <span class="keyword">null</span>, ex);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2065</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2066</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 2067</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2068</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> stream = getInputStream(internalPath);</span></pre></td></tr> |
| <tr> <td class="numLine"> 2069</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 2070</td> <td class="nbHitsCovered"> 13</td> <td class="src"><pre class="src"> <span class="keyword">return</span> stream;</pre></td></tr> |
| <tr> <td class="numLine"> 2071</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2072</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2073</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 2074</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Gets the InputStream containing whole OdfPackage.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2075</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 2076</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the ODF package as input stream</span></pre></td></tr> |
| <tr> <td class="numLine"> 2077</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws java.lang.Exception</span></pre></td></tr> |
| <tr> <td class="numLine"> 2078</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - if the package could not be read</span></pre></td></tr> |
| <tr> <td class="numLine"> 2079</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 2080</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> InputStream getInputStream() <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2081</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> PipedOutputStream os = <span class="keyword">new</span> PipedOutputStream();</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2082</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> PipedInputStream is = <span class="keyword">new</span> PipedInputStream();</span></pre></td></tr> |
| <tr> <td class="numLine"> 2083</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 2084</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> is.connect(os);</span></pre></td></tr> |
| <tr> <td class="numLine"> 2085</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 2086</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Thread thread1 = <span class="keyword">new</span> Thread() {</span></pre></td></tr> |
| <tr> <td class="numLine"> 2087</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2088</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> @Override</pre></td></tr> |
| <tr> <td class="numLine"> 2089</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> run() {</pre></td></tr> |
| <tr> <td class="numLine"> 2090</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2091</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> save(os, mBaseURI);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2092</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (Exception e) {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2093</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2094</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr> |
| <tr> <td class="numLine"> 2095</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> };</pre></td></tr> |
| <tr> <td class="numLine"> 2096</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 2097</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Thread thread2 = <span class="keyword">new</span> Thread() {</span></pre></td></tr> |
| <tr> <td class="numLine"> 2098</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2099</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> @Override</pre></td></tr> |
| <tr> <td class="numLine"> 2100</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> run() {</pre></td></tr> |
| <tr> <td class="numLine"> 2101</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2102</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> BufferedInputStream bis = <span class="keyword">new</span> BufferedInputStream(is, StreamHelper.PAGE_SIZE);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2103</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> BufferedOutputStream bos = <span class="keyword">new</span> BufferedOutputStream(os, StreamHelper.PAGE_SIZE);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2104</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> StreamHelper.transformStream(bis, bos);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2105</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> is.close();</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2106</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> os.close();</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2107</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (Exception ie) {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2108</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2109</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr> |
| <tr> <td class="numLine"> 2110</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> };</pre></td></tr> |
| <tr> <td class="numLine"> 2111</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 2112</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> thread1.start();</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2113</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> thread2.start();</span></pre></td></tr> |
| <tr> <td class="numLine"> 2114</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 2115</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> is;</span></pre></td></tr> |
| <tr> <td class="numLine"> 2116</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2117</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2118</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 2119</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Insert the OutputStream for into OdfPackage. An existing file will be</span></pre></td></tr> |
| <tr> <td class="numLine"> 2120</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * replaced.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2121</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 2122</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 2123</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - relative documentURL where the DOM tree should be inserted</span></pre></td></tr> |
| <tr> <td class="numLine"> 2124</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * as XML file</span></pre></td></tr> |
| <tr> <td class="numLine"> 2125</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return outputstream for the data of the file to be stored in package</span></pre></td></tr> |
| <tr> <td class="numLine"> 2126</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws java.lang.Exception</span></pre></td></tr> |
| <tr> <td class="numLine"> 2127</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * when the DOM tree could not be inserted</span></pre></td></tr> |
| <tr> <td class="numLine"> 2128</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 2129</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> OutputStream insertOutputStream(String internalPath) <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2130</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> insertOutputStream(internalPath, <span class="keyword">null</span>);</span></pre></td></tr> |
| <tr> <td class="numLine"> 2131</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2132</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2133</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 2134</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Insert the OutputStream - to be filled after method - when stream is</span></pre></td></tr> |
| <tr> <td class="numLine"> 2135</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * closed into OdfPackage. An existing file will be replaced.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2136</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 2137</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 2138</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - relative documentURL where the DOM tree should be inserted</span></pre></td></tr> |
| <tr> <td class="numLine"> 2139</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * as XML file</span></pre></td></tr> |
| <tr> <td class="numLine"> 2140</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param mediaType</span></pre></td></tr> |
| <tr> <td class="numLine"> 2141</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * - media type of stream</span></pre></td></tr> |
| <tr> <td class="numLine"> 2142</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return outputstream for the data of the file to be stored in package</span></pre></td></tr> |
| <tr> <td class="numLine"> 2143</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws java.lang.Exception</span></pre></td></tr> |
| <tr> <td class="numLine"> 2144</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * when the DOM tree could not be inserted</span></pre></td></tr> |
| <tr> <td class="numLine"> 2145</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 2146</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> OutputStream insertOutputStream(String internalPath, String mediaType) <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2147</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> internalPath = normalizeFilePath(internalPath);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2148</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> String fPath = internalPath;</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2149</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> OdfFileEntry fFileEntry = getFileEntry(internalPath);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2150</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">final</span> String fMediaType = mediaType;</span></pre></td></tr> |
| <tr> <td class="numLine"> 2151</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLineCover"> 2152</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> ByteArrayOutputStream baos = <span class="keyword">new</span> ByteArrayOutputStream() {</span></pre></td></tr> |
| <tr> <td class="numLine"> 2153</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2154</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> @Override</pre></td></tr> |
| <tr> <td class="numLine"> 2155</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> close() {</pre></td></tr> |
| <tr> <td class="numLine"> 2156</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">try</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2157</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">byte</span>[] data = <span class="keyword">this</span>.toByteArray();</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2158</td> <td class="nbHitsUncovered"><a title="Line 2158: Conditional coverage 0% (0/4) [each condition: 0%, 0%]."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 2158: Conditional coverage 0% (0/4) [each condition: 0%, 0%]."> <span class="keyword">if</span> (fMediaType == <span class="keyword">null</span> || fMediaType.length() == 0) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2159</td> <td class="nbHitsUncovered"><a title="Line 2159: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 2159: Conditional coverage 0% (0/2)."> insert(data, fPath, fFileEntry == <span class="keyword">null</span> ? <span class="keyword">null</span> : fFileEntry.getMediaTypeString());</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 2160</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2161</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> insert(data, fPath, fMediaType);</span></pre></td></tr> |
| <tr> <td class="numLine"> 2162</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 2163</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">super</span>.close();</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2164</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> } <span class="keyword">catch</span> (Exception ex) {</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2165</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(OdfPackage.<span class="keyword">class</span>.getName()).log(Level.SEVERE, <span class="keyword">null</span>, ex);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2166</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2167</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr> |
| <tr> <td class="numLine"> 2168</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> };</pre></td></tr> |
| <tr> <td class="numLineCover"> 2169</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> baos;</span></pre></td></tr> |
| <tr> <td class="numLine"> 2170</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2171</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2172</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 2173</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Removes a single file from the package.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2174</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 2175</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 2176</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * of the file relative to the package root</span></pre></td></tr> |
| <tr> <td class="numLine"> 2177</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 2178</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> remove(String internalPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2179</td> <td class="nbHitsCovered"> 115</td> <td class="src"><pre class="src"> internalPath = normalizePath(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 2180</td> <td class="nbHitsUncovered"><a title="Line 2180: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> 115</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 2180: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> <span class="keyword">if</span> (mZipEntries != <span class="keyword">null</span> && mZipEntries.containsKey(internalPath)) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2181</td> <td class="nbHitsCovered"> 68</td> <td class="src"><pre class="src"> mZipEntries.remove(internalPath);</pre></td></tr> |
| <tr> <td class="numLine"> 2182</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 2183</td> <td class="nbHitsUncovered"><a title="Line 2183: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> 115</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 2183: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> <span class="keyword">if</span> (mManifestEntries != <span class="keyword">null</span> && mManifestEntries.containsKey(internalPath)) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2184</td> <td class="nbHitsCovered"> 99</td> <td class="src"><pre class="src"> OdfFileEntry manifestEntry = mManifestEntries.remove(internalPath);</pre></td></tr> |
| <tr> <td class="numLineCover"> 2185</td> <td class="nbHitsCovered"> 99</td> <td class="src"><pre class="src"> FileEntryElement manifestEle = manifestEntry.getOdfElement();</pre></td></tr> |
| <tr> <td class="numLineCover"> 2186</td> <td class="nbHitsCovered"> 99</td> <td class="src"><pre class="src"> manifestEle.getParentNode().removeChild(manifestEle);</pre></td></tr> |
| <tr> <td class="numLine"> 2187</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 2188</td> <td class="nbHitsCovered"> 115</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2189</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2190</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 2191</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Encoded XML Attributes</span></pre></td></tr> |
| <tr> <td class="numLine"> 2192</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 2193</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> String encodeXMLAttributes(String attributeValue) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2194</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> String encodedValue = QUOTATION_PATTERN.matcher(attributeValue).replaceAll(ENCODED_QUOTATION);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2195</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> encodedValue = APOSTROPHE_PATTERN.matcher(encodedValue).replaceAll(ENCODED_APOSTROPHE);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2196</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> encodedValue;</span></pre></td></tr> |
| <tr> <td class="numLine"> 2197</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2198</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2199</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 2200</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Get EntityResolver to be used in XML Parsers which can resolve content</span></pre></td></tr> |
| <tr> <td class="numLine"> 2201</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * inside the OdfPackage</span></pre></td></tr> |
| <tr> <td class="numLine"> 2202</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 2203</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return a SAX EntityResolver</span></pre></td></tr> |
| <tr> <td class="numLine"> 2204</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 2205</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> EntityResolver getEntityResolver() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2206</td> <td class="nbHitsCovered"><a title="Line 2206: Conditional coverage 100% (2/2)."> 10</a></td> <td class="src"><pre class="src"> <a title="Line 2206: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (mResolver == <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 2207</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> mResolver = <span class="keyword">new</span> Resolver(<span class="keyword">this</span>);</pre></td></tr> |
| <tr> <td class="numLine"> 2208</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 2209</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> <span class="keyword">return</span> mResolver;</pre></td></tr> |
| <tr> <td class="numLine"> 2210</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2211</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2212</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 2213</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Get URIResolver to be used in XSL Transformations which can resolve</span></pre></td></tr> |
| <tr> <td class="numLine"> 2214</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * content inside the OdfPackage</span></pre></td></tr> |
| <tr> <td class="numLine"> 2215</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 2216</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return a TraX Resolver</span></pre></td></tr> |
| <tr> <td class="numLine"> 2217</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 2218</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> URIResolver getURIResolver() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2219</td> <td class="nbHitsUncovered"><a title="Line 2219: Conditional coverage 50% (1/2)."> 26</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 2219: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (mResolver == <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2220</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> mResolver = <span class="keyword">new</span> Resolver(<span class="keyword">this</span>);</span></pre></td></tr> |
| <tr> <td class="numLine"> 2221</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 2222</td> <td class="nbHitsCovered"> 26</td> <td class="src"><pre class="src"> <span class="keyword">return</span> mResolver;</pre></td></tr> |
| <tr> <td class="numLine"> 2223</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2224</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2225</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> String getBaseURLFromFile(File file) <span class="keyword">throws</span> Exception {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2226</td> <td class="nbHitsCovered"> 960</td> <td class="src"><pre class="src"> String baseURL = Util.toExternalForm(file.getCanonicalFile().toURI());</pre></td></tr> |
| <tr> <td class="numLineCover"> 2227</td> <td class="nbHitsCovered"> 960</td> <td class="src"><pre class="src"> baseURL = BACK_SLASH_PATTERN.matcher(baseURL).replaceAll(SLASH);</pre></td></tr> |
| <tr> <td class="numLineCover"> 2228</td> <td class="nbHitsCovered"> 960</td> <td class="src"><pre class="src"> <span class="keyword">return</span> baseURL;</pre></td></tr> |
| <tr> <td class="numLine"> 2229</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2230</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2231</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 2232</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Ensures that the given file path is not null nor empty and not an</span></pre></td></tr> |
| <tr> <td class="numLine"> 2233</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * external reference</span></pre></td></tr> |
| <tr> <td class="numLine"> 2234</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <ol></span></pre></td></tr> |
| <tr> <td class="numLine"> 2235</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>All backslashes "\" are exchanged by slashes "/"</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 2236</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>Any substring "/../", "/./" or "//" will be removed</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 2237</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <li>A prefix "./" and "../" will be removed</li></span></pre></td></tr> |
| <tr> <td class="numLine"> 2238</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </ol></span></pre></td></tr> |
| <tr> <td class="numLine"> 2239</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 2240</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @throws IllegalArgumentException</span></pre></td></tr> |
| <tr> <td class="numLine"> 2241</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * If the path is NULL, empty or an external path (e.g. starting</span></pre></td></tr> |
| <tr> <td class="numLine"> 2242</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * with "../" is given). None relative URLs will NOT throw an</span></pre></td></tr> |
| <tr> <td class="numLine"> 2243</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * exception.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2244</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the normalized path or the URL</span></pre></td></tr> |
| <tr> <td class="numLine"> 2245</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 2246</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">static</span> String normalizeFilePath(String internalPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2247</td> <td class="nbHitsUncovered"><a title="Line 2247: Conditional coverage 50% (1/2)."> 11298</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 2247: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (internalPath.equals(EMPTY_STRING)) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2248</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> String errMsg = <span class="string">"The internalPath given by parameter is an empty string!"</span>;</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2249</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(OdfPackage.<span class="keyword">class</span>.getName()).severe(errMsg);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2250</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(errMsg);</span></pre></td></tr> |
| <tr> <td class="numLine"> 2251</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2252</td> <td class="nbHitsCovered"> 11298</td> <td class="src"><pre class="src"> <span class="keyword">return</span> normalizePath(internalPath);</pre></td></tr> |
| <tr> <td class="numLine"> 2253</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2254</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2255</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2256</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 2257</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Ensures the given directory path is not null nor an external reference to</span></pre></td></tr> |
| <tr> <td class="numLine"> 2258</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * resources outside the package. An empty path and slash "/" are both</span></pre></td></tr> |
| <tr> <td class="numLine"> 2259</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * mapped to the root directory/document. NOTE: Although ODF only refer the</span></pre></td></tr> |
| <tr> <td class="numLine"> 2260</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * "/" as root, the empty path aligns more adequate with the file system</span></pre></td></tr> |
| <tr> <td class="numLine"> 2261</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * concept. To ensure the given directory path within the package can be</span></pre></td></tr> |
| <tr> <td class="numLine"> 2262</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * used as a key (is unique for the Package) the path will be normalized.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2263</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 2264</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #normalizeFilePath(String) In addition to the file path</span></pre></td></tr> |
| <tr> <td class="numLine"> 2265</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * normalization a trailing slash will be used for directories.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2266</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 2267</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">static</span> String normalizeDirectoryPath(String directoryPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2268</td> <td class="nbHitsCovered"> 1296</td> <td class="src"><pre class="src"> directoryPath = normalizePath(directoryPath);</pre></td></tr> |
| <tr> <td class="numLine"> 2269</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if not the root document - which is from ODF view a '/' and no</span></pre></td></tr> |
| <tr> <td class="numLine"> 2270</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// trailing '/'</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2271</td> <td class="nbHitsUncovered"><a title="Line 2271: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> 1296</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 2271: Conditional coverage 75% (3/4) [each condition: 50%, 100%]."> <span class="keyword">if</span> (!directoryPath.equals(OdfPackageDocument.ROOT_DOCUMENT_PATH) && !directoryPath.endsWith(SLASH)) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 2272</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// add a trailing slash</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2273</td> <td class="nbHitsCovered"> 86</td> <td class="src"><pre class="src"> directoryPath = directoryPath + SLASH;</pre></td></tr> |
| <tr> <td class="numLine"> 2274</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 2275</td> <td class="nbHitsCovered"> 1296</td> <td class="src"><pre class="src"> <span class="keyword">return</span> directoryPath;</pre></td></tr> |
| <tr> <td class="numLine"> 2276</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2277</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2278</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/** Normalizes both directory and file path */</span></pre></td></tr> |
| <tr> <td class="numLine"> 2279</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">static</span> String normalizePath(String path) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2280</td> <td class="nbHitsUncovered"><a title="Line 2280: Conditional coverage 50% (1/2)."> 25244</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 2280: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (path == <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2281</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> String errMsg = <span class="string">"The internalPath given by parameter is NULL!"</span>;</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2282</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> Logger.getLogger(OdfPackage.<span class="keyword">class</span>.getName()).severe(errMsg);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2283</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">throw</span> <span class="keyword">new</span> IllegalArgumentException(errMsg);</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2284</td> <td class="nbHitsCovered"><a title="Line 2284: Conditional coverage 100% (2/2)."> 25244</a></td> <td class="src"><pre class="src"> <a title="Line 2284: Conditional coverage 100% (2/2)."> } <span class="keyword">else</span> <span class="keyword">if</span> (!mightBeExternalReference(path)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 2285</td> <td class="nbHitsCovered"><a title="Line 2285: Conditional coverage 100% (2/2)."> 25234</a></td> <td class="src"><pre class="src"> <a title="Line 2285: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (path.equals(EMPTY_STRING)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 2286</td> <td class="nbHitsCovered"> 569</td> <td class="src"><pre class="src"> path = SLASH;</pre></td></tr> |
| <tr> <td class="numLine"> 2287</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLine"> 2288</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// exchange all backslash "\" with a slash "/"</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2289</td> <td class="nbHitsUncovered"><a title="Line 2289: Conditional coverage 50% (1/2)."> 24665</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 2289: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (path.indexOf(<span class="string">'\\'</span>) != -1) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2290</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> path = BACK_SLASH_PATTERN.matcher(path).replaceAll(SLASH);</span></pre></td></tr> |
| <tr> <td class="numLine"> 2291</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2292</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// exchange all double slash "//" with a slash "/"</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2293</td> <td class="nbHitsCovered"><a title="Line 2293: Conditional coverage 100% (2/2)."> 24715</a></td> <td class="src"><pre class="src"> <a title="Line 2293: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (path.indexOf(<span class="string">"//"</span>) != -1) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 2294</td> <td class="nbHitsCovered"> 50</td> <td class="src"><pre class="src"> path = DOUBLE_SLASH_PATTERN.matcher(path).replaceAll(SLASH);</pre></td></tr> |
| <tr> <td class="numLine"> 2295</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2296</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if directory replacements (e.g. ..) exist, resolve and remove</span></pre></td></tr> |
| <tr> <td class="numLine"> 2297</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// them</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2298</td> <td class="nbHitsCovered"><a title="Line 2298: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 24665</a></td> <td class="src"><pre class="src"> <a title="Line 2298: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (path.indexOf(<span class="string">"/."</span>) != -1 || path.indexOf(<span class="string">"./"</span>) != -1) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 2299</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> path = removeChangeDirectories(path);</pre></td></tr> |
| <tr> <td class="numLine"> 2300</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2301</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2302</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 2303</td> <td class="nbHitsCovered"> 25244</td> <td class="src"><pre class="src"> <span class="keyword">return</span> path;</pre></td></tr> |
| <tr> <td class="numLine"> 2304</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2305</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2306</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/** Normalizes both directory and file path */</span></pre></td></tr> |
| <tr> <td class="numLine"> 2307</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">boolean</span> mightBeExternalReference(String internalPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2308</td> <td class="nbHitsCovered"> 25244</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> isExternalReference = <span class="keyword">false</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 2309</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if the fileReference is a external relative documentURL..</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2310</td> <td class="nbHitsUncovered"><a title="Line 2310: Conditional coverage 75% (6/8) [each condition: 50%, 100%, 50%, 100%]."> 25244</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 2310: Conditional coverage 75% (6/8) [each condition: 50%, 100%, 50%, 100%]."> <span class="keyword">if</span> (internalPath.startsWith(DOUBLE_DOT) || <span class="comment">// or absolute documentURL</span></a></span></pre></td></tr> |
| <tr> <td class="numLine"> 2311</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// AND not root document</span></pre></td></tr> |
| <tr> <td class="numLine"> 2312</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> internalPath.startsWith(SLASH) && !internalPath.equals(SLASH) || <span class="comment">// or</span></pre></td></tr> |
| <tr> <td class="numLine"> 2313</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// absolute</span></pre></td></tr> |
| <tr> <td class="numLine"> 2314</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// IRI</span></pre></td></tr> |
| <tr> <td class="numLine"> 2315</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> internalPath.contains(COLON)) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2316</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> isExternalReference = <span class="keyword">true</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 2317</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 2318</td> <td class="nbHitsCovered"> 25244</td> <td class="src"><pre class="src"> <span class="keyword">return</span> isExternalReference;</pre></td></tr> |
| <tr> <td class="numLine"> 2319</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2320</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2321</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 2322</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Resolving the directory replacements (ie. "/../" and "/./") with a slash</span></pre></td></tr> |
| <tr> <td class="numLine"> 2323</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * "/"</span></pre></td></tr> |
| <tr> <td class="numLine"> 2324</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 2325</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">private</span> <span class="keyword">static</span> String removeChangeDirectories(String path) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2326</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> <span class="keyword">boolean</span> isDirectory = path.endsWith(SLASH);</pre></td></tr> |
| <tr> <td class="numLineCover"> 2327</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> StringTokenizer tokenizer = <span class="keyword">new</span> StringTokenizer(path, SLASH);</pre></td></tr> |
| <tr> <td class="numLineCover"> 2328</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> <span class="keyword">int</span> tokenCount = tokenizer.countTokens();</pre></td></tr> |
| <tr> <td class="numLineCover"> 2329</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> List<String> tokenList = <span class="keyword">new</span> ArrayList<String>(tokenCount);</pre></td></tr> |
| <tr> <td class="numLine"> 2330</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// add all paths to a list</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2331</td> <td class="nbHitsCovered"><a title="Line 2331: Conditional coverage 100% (2/2)."> 40</a></td> <td class="src"><pre class="src"> <a title="Line 2331: Conditional coverage 100% (2/2)."> <span class="keyword">while</span> (tokenizer.hasMoreTokens()) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 2332</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> String token = tokenizer.nextToken();</pre></td></tr> |
| <tr> <td class="numLineCover"> 2333</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> tokenList.add(token);</pre></td></tr> |
| <tr> <td class="numLineCover"> 2334</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 2335</td> <td class="nbHitsCovered"><a title="Line 2335: Conditional coverage 100% (2/2)."> 8</a></td> <td class="src"><pre class="src"> <a title="Line 2335: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!isDirectory) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 2336</td> <td class="nbHitsCovered"> 5</td> <td class="src"><pre class="src"> String lastPath = tokenList.get(tokenCount - 1);</pre></td></tr> |
| <tr> <td class="numLineCover"> 2337</td> <td class="nbHitsCovered"><a title="Line 2337: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> 5</a></td> <td class="src"><pre class="src"> <a title="Line 2337: Conditional coverage 100% (4/4) [each condition: 100%, 100%]."> <span class="keyword">if</span> (lastPath.equals(DOT) || lastPath.equals(DOUBLE_DOT)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 2338</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> isDirectory = <span class="keyword">true</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 2339</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2340</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2341</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> String currentToken;</pre></td></tr> |
| <tr> <td class="numLineCover"> 2342</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> <span class="keyword">int</span> removeDirLevel = 0;</pre></td></tr> |
| <tr> <td class="numLineCover"> 2343</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> StringBuilder out = <span class="keyword">new</span> StringBuilder();</pre></td></tr> |
| <tr> <td class="numLine"> 2344</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// work on the list from back to front</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2345</td> <td class="nbHitsCovered"><a title="Line 2345: Conditional coverage 100% (2/2)."> 40</a></td> <td class="src"><pre class="src"> <a title="Line 2345: Conditional coverage 100% (2/2)."> <span class="keyword">for</span> (<span class="keyword">int</span> i = tokenCount - 1; i >= 0; i--) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 2346</td> <td class="nbHitsCovered"> 32</td> <td class="src"><pre class="src"> currentToken = tokenList.get(i);</pre></td></tr> |
| <tr> <td class="numLine"> 2347</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// every ".." will remove an upcoming path</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2348</td> <td class="nbHitsCovered"><a title="Line 2348: Conditional coverage 100% (2/2)."> 32</a></td> <td class="src"><pre class="src"> <a title="Line 2348: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (currentToken.equals(DOUBLE_DOT)) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 2349</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> removeDirLevel++;</pre></td></tr> |
| <tr> <td class="numLineCover"> 2350</td> <td class="nbHitsCovered"><a title="Line 2350: Conditional coverage 100% (2/2)."> 23</a></td> <td class="src"><pre class="src"> <a title="Line 2350: Conditional coverage 100% (2/2)."> } <span class="keyword">else</span> <span class="keyword">if</span> (currentToken.equals(DOT)) {</a></pre></td></tr> |
| <tr> <td class="numLine"> 2351</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLine"> 2352</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// if a path have to be remove, neglect current path</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2353</td> <td class="nbHitsCovered"><a title="Line 2353: Conditional coverage 100% (2/2)."> 19</a></td> <td class="src"><pre class="src"> <a title="Line 2353: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (removeDirLevel > 0) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 2354</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> removeDirLevel--;</pre></td></tr> |
| <tr> <td class="numLine"> 2355</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLine"> 2356</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// add the path segment</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2357</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> out.insert(0, SLASH);</pre></td></tr> |
| <tr> <td class="numLineCover"> 2358</td> <td class="nbHitsCovered"> 10</td> <td class="src"><pre class="src"> out.insert(0, currentToken);</pre></td></tr> |
| <tr> <td class="numLine"> 2359</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2360</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2361</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 2362</td> <td class="nbHitsUncovered"><a title="Line 2362: Conditional coverage 50% (1/2)."> 8</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 2362: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (removeDirLevel > 0) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2363</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> EMPTY_STRING;</span></pre></td></tr> |
| <tr> <td class="numLine"> 2364</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2365</td> <td class="nbHitsCovered"><a title="Line 2365: Conditional coverage 100% (2/2)."> 8</a></td> <td class="src"><pre class="src"> <a title="Line 2365: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (!isDirectory) {</a></pre></td></tr> |
| <tr> <td class="numLine"> 2366</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// remove trailing slash /</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2367</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> out.deleteCharAt(out.length() - 1);</pre></td></tr> |
| <tr> <td class="numLine"> 2368</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 2369</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> <span class="keyword">return</span> out.toString();</pre></td></tr> |
| <tr> <td class="numLine"> 2370</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2371</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2372</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2373</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 2374</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Checks if the given reference is a reference, which points outside the</span></pre></td></tr> |
| <tr> <td class="numLine"> 2375</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * ODF package</span></pre></td></tr> |
| <tr> <td class="numLine"> 2376</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 2377</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param internalPath</span></pre></td></tr> |
| <tr> <td class="numLine"> 2378</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * the file reference to be checked</span></pre></td></tr> |
| <tr> <td class="numLine"> 2379</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return true if the reference is an package external reference</span></pre></td></tr> |
| <tr> <td class="numLine"> 2380</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 2381</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">boolean</span> isExternalReference(String internalPath) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2382</td> <td class="nbHitsUncovered"><a title="Line 2382: Conditional coverage 0% (0/2)."> 0</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 2382: Conditional coverage 0% (0/2)."> <span class="keyword">if</span> (mightBeExternalReference(internalPath)) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2383</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> <span class="keyword">true</span>;</span></pre></td></tr> |
| <tr> <td class="numLine"> 2384</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> } <span class="keyword">else</span> {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2385</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> mightBeExternalReference(normalizePath(internalPath));</span></pre></td></tr> |
| <tr> <td class="numLine"> 2386</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2387</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2388</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2389</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 2390</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Allow an application to register an error event handler.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2391</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p></span></pre></td></tr> |
| <tr> <td class="numLine"> 2392</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * If the application does not register an error handler, all error events</span></pre></td></tr> |
| <tr> <td class="numLine"> 2393</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * reported by the ODFDOM (e.g. the SAX Parser) will be silently ignored;</span></pre></td></tr> |
| <tr> <td class="numLine"> 2394</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * however, normal processing may not continue. It is highly recommended</span></pre></td></tr> |
| <tr> <td class="numLine"> 2395</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * that all ODF applications implement an error handler to avoid unexpected</span></pre></td></tr> |
| <tr> <td class="numLine"> 2396</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * bugs.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2397</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </p></span></pre></td></tr> |
| <tr> <td class="numLine"> 2398</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * <p></span></pre></td></tr> |
| <tr> <td class="numLine"> 2399</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Applications may register a new or different handler in the middle of a</span></pre></td></tr> |
| <tr> <td class="numLine"> 2400</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * parse, and the ODFDOM will begin using the new handler immediately.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2401</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </p></span></pre></td></tr> |
| <tr> <td class="numLine"> 2402</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 2403</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param handler</span></pre></td></tr> |
| <tr> <td class="numLine"> 2404</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * The error handler.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2405</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #getErrorHandler</span></pre></td></tr> |
| <tr> <td class="numLine"> 2406</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 2407</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> <span class="keyword">void</span> setErrorHandler(ErrorHandler handler) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2408</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> mErrorHandler = handler;</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2409</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> }</span></pre></td></tr> |
| <tr> <td class="numLine"> 2410</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2411</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 2412</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * Return the current error handler used for ODF validation.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2413</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * </span></pre></td></tr> |
| <tr> <td class="numLine"> 2414</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return The current error handler, or null if none has been registered</span></pre></td></tr> |
| <tr> <td class="numLine"> 2415</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * and validation is disabled.</span></pre></td></tr> |
| <tr> <td class="numLine"> 2416</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @see #setErrorHandler</span></pre></td></tr> |
| <tr> <td class="numLine"> 2417</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 2418</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">public</span> ErrorHandler getErrorHandler() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2419</td> <td class="nbHitsCovered"> 7116</td> <td class="src"><pre class="src"> <span class="keyword">return</span> mErrorHandler;</pre></td></tr> |
| <tr> <td class="numLine"> 2420</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2421</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2422</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">void</span> logValidationWarning(ValidationConstraint constraint, String baseURI, Object... o) <span class="keyword">throws</span> SAXException {</pre></td></tr> |
| <tr> <td class="numLine"> 2423</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// try{</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2424</td> <td class="nbHitsUncovered"><a title="Line 2424: Conditional coverage 50% (1/2)."> 63</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 2424: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (mErrorHandler == <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2425</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span>;</span></pre></td></tr> |
| <tr> <td class="numLine"> 2426</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 2427</td> <td class="nbHitsCovered"> 63</td> <td class="src"><pre class="src"> <span class="keyword">int</span> varCount = 0;</pre></td></tr> |
| <tr> <td class="numLineCover"> 2428</td> <td class="nbHitsUncovered"><a title="Line 2428: Conditional coverage 50% (1/2)."> 63</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 2428: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (o != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2429</td> <td class="nbHitsCovered"> 63</td> <td class="src"><pre class="src"> varCount = o.length;</pre></td></tr> |
| <tr> <td class="numLine"> 2430</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 2431</td> <td class="nbHitsUncovered"><a title="Line 2431: Conditional coverage 75% (3/4)."> 63</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 2431: Conditional coverage 75% (3/4)."> <span class="keyword">switch</span> (varCount) {</a></span></pre></td></tr> |
| <tr> <td class="numLine"> 2432</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">case</span> 0:</pre></td></tr> |
| <tr> <td class="numLineCover"> 2433</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> mErrorHandler.warning(<span class="keyword">new</span> OdfValidationException(constraint, baseURI, o));</pre></td></tr> |
| <tr> <td class="numLineCover"> 2434</td> <td class="nbHitsCovered"> 2</td> <td class="src"><pre class="src"> <span class="keyword">break</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 2435</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">case</span> 1:</pre></td></tr> |
| <tr> <td class="numLineCover"> 2436</td> <td class="nbHitsCovered"> 61</td> <td class="src"><pre class="src"> mErrorHandler.warning(<span class="keyword">new</span> OdfValidationException(constraint, baseURI, o[0]));</pre></td></tr> |
| <tr> <td class="numLineCover"> 2437</td> <td class="nbHitsCovered"> 61</td> <td class="src"><pre class="src"> <span class="keyword">break</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 2438</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">case</span> 2:</pre></td></tr> |
| <tr> <td class="numLineCover"> 2439</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> mErrorHandler.warning(<span class="keyword">new</span> OdfValidationException(constraint, baseURI, o[0], o[1]));</span></pre></td></tr> |
| <tr> <td class="numLine"> 2440</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">break</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 2441</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2442</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// } catch (SAXException ex){</span></pre></td></tr> |
| <tr> <td class="numLine"> 2443</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Logger.getLogger(OdfPackage.class.getName()).log(Level.WARNING, null,</span></pre></td></tr> |
| <tr> <td class="numLine"> 2444</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// ex);</span></pre></td></tr> |
| <tr> <td class="numLine"> 2445</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// }</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2446</td> <td class="nbHitsCovered"> 63</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2447</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2448</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">void</span> logValidationError(ValidationConstraint constraint, String baseURI, Object... o) <span class="keyword">throws</span> SAXException {</pre></td></tr> |
| <tr> <td class="numLine"> 2449</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// try{</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2450</td> <td class="nbHitsCovered"><a title="Line 2450: Conditional coverage 100% (2/2)."> 25</a></td> <td class="src"><pre class="src"> <a title="Line 2450: Conditional coverage 100% (2/2)."> <span class="keyword">if</span> (mErrorHandler == <span class="keyword">null</span>) {</a></pre></td></tr> |
| <tr> <td class="numLineCover"> 2451</td> <td class="nbHitsCovered"> 1</td> <td class="src"><pre class="src"> <span class="keyword">return</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 2452</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 2453</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> <span class="keyword">int</span> varCount = 0;</pre></td></tr> |
| <tr> <td class="numLineCover"> 2454</td> <td class="nbHitsUncovered"><a title="Line 2454: Conditional coverage 50% (1/2)."> 24</a></td> <td class="src"><pre class="src"><span class="srcUncovered"> <a title="Line 2454: Conditional coverage 50% (1/2)."> <span class="keyword">if</span> (o != <span class="keyword">null</span>) {</a></span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2455</td> <td class="nbHitsCovered"> 24</td> <td class="src"><pre class="src"> varCount = o.length;</pre></td></tr> |
| <tr> <td class="numLine"> 2456</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLineCover"> 2457</td> <td class="nbHitsCovered"><a title="Line 2457: Conditional coverage 100% (4/4)."> 24</a></td> <td class="src"><pre class="src"> <a title="Line 2457: Conditional coverage 100% (4/4)."> <span class="keyword">switch</span> (varCount) {</a></pre></td></tr> |
| <tr> <td class="numLine"> 2458</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">case</span> 0:</pre></td></tr> |
| <tr> <td class="numLineCover"> 2459</td> <td class="nbHitsCovered"> 9</td> <td class="src"><pre class="src"> mErrorHandler.error(<span class="keyword">new</span> OdfValidationException(constraint, baseURI, o));</pre></td></tr> |
| <tr> <td class="numLineCover"> 2460</td> <td class="nbHitsCovered"> 8</td> <td class="src"><pre class="src"> <span class="keyword">break</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 2461</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">case</span> 1:</pre></td></tr> |
| <tr> <td class="numLineCover"> 2462</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> mErrorHandler.error(<span class="keyword">new</span> OdfValidationException(constraint, baseURI, o[0]));</pre></td></tr> |
| <tr> <td class="numLineCover"> 2463</td> <td class="nbHitsCovered"> 12</td> <td class="src"><pre class="src"> <span class="keyword">break</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 2464</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">case</span> 2:</pre></td></tr> |
| <tr> <td class="numLineCover"> 2465</td> <td class="nbHitsCovered"> 3</td> <td class="src"><pre class="src"> mErrorHandler.error(<span class="keyword">new</span> OdfValidationException(constraint, baseURI, o[0], o[1]));</pre></td></tr> |
| <tr> <td class="numLine"> 2466</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">break</span>;</pre></td></tr> |
| <tr> <td class="numLine"> 2467</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2468</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// } catch (SAXException ex) {</span></pre></td></tr> |
| <tr> <td class="numLine"> 2469</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// Logger.getLogger(OdfPackage.class.getName()).log(Level.SEVERE, null,</span></pre></td></tr> |
| <tr> <td class="numLine"> 2470</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// ex);</span></pre></td></tr> |
| <tr> <td class="numLine"> 2471</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">// }</span></pre></td></tr> |
| <tr> <td class="numLineCover"> 2472</td> <td class="nbHitsCovered"> 23</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2473</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2474</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 2475</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @param odfVersion</span></pre></td></tr> |
| <tr> <td class="numLine"> 2476</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * parsed from the manifest</span></pre></td></tr> |
| <tr> <td class="numLine"> 2477</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 2478</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="keyword">void</span> setManifestVersion(String odfVersion) {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2479</td> <td class="nbHitsCovered"> 554</td> <td class="src"><pre class="src"> mManifestVersion = odfVersion;</pre></td></tr> |
| <tr> <td class="numLineCover"> 2480</td> <td class="nbHitsCovered"> 554</td> <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2481</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> </pre></td></tr> |
| <tr> <td class="numLine"> 2482</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment">/**</span></pre></td></tr> |
| <tr> <td class="numLine"> 2483</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * @return the ODF version found in the manifest. Meant to be used to reuse</span></pre></td></tr> |
| <tr> <td class="numLine"> 2484</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> * when the manifest is recreated</span></pre></td></tr> |
| <tr> <td class="numLine"> 2485</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> <span class="comment"> */</span></pre></td></tr> |
| <tr> <td class="numLine"> 2486</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> String getManifestVersion() {</pre></td></tr> |
| <tr> <td class="numLineCover"> 2487</td> <td class="nbHitsUncovered"> 0</td> <td class="src"><pre class="src"><span class="srcUncovered"> <span class="keyword">return</span> mManifestVersion;</span></pre></td></tr> |
| <tr> <td class="numLine"> 2488</td> <td class="nbHits"> </td> |
| <td class="src"><pre class="src"> }</pre></td></tr> |
| <tr> <td class="numLine"> 2489</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 22.02.13 10:27.</div> |
| </body> |
| </html> |