diff options
Diffstat (limited to 'target/site/jacoco')
63 files changed, 3273 insertions, 0 deletions
diff --git a/target/site/jacoco/index.html b/target/site/jacoco/index.html new file mode 100644 index 0000000..f0faf92 --- /dev/null +++ b/target/site/jacoco/index.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="jacoco-resources/report.gif" type="image/gif"/><title>spoteezer</title><script type="text/javascript" src="jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="jacoco-sessions.html" class="el_session">Sessions</a></span><span class="el_report">spoteezer</span></div><h1>spoteezer</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">2 723 of 2 740</td><td class="ctr2">0 %</td><td class="bar">209 of 209</td><td class="ctr2">0 %</td><td class="ctr1">205</td><td class="ctr2">207</td><td class="ctr1">723</td><td class="ctr2">727</td><td class="ctr1">88</td><td class="ctr2">90</td><td class="ctr1">17</td><td class="ctr2">18</td></tr></tfoot><tbody><tr><td id="a0"><a href="musichub.business/index.html" class="el_package">musichub.business</a></td><td class="bar" id="b0"><img src="jacoco-resources/redbar.gif" width="119" height="10" title="2 063" alt="2 063"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"><img src="jacoco-resources/redbar.gif" width="120" height="10" title="169" alt="169"/></td><td class="ctr2" id="e0">0 %</td><td class="ctr1" id="f0">172</td><td class="ctr2" id="g0">174</td><td class="ctr1" id="h0">499</td><td class="ctr2" id="i0">503</td><td class="ctr1" id="j0">81</td><td class="ctr2" id="k0">83</td><td class="ctr1" id="l0">15</td><td class="ctr2" id="m0">16</td></tr><tr><td id="a1"><a href="musichub.main/index.html" class="el_package">musichub.main</a></td><td class="bar" id="b1"><img src="jacoco-resources/redbar.gif" width="33" height="10" title="588" alt="588"/></td><td class="ctr2" id="c1">0 %</td><td class="bar" id="d1"><img src="jacoco-resources/redbar.gif" width="28" height="10" title="40" alt="40"/></td><td class="ctr2" id="e1">0 %</td><td class="ctr1" id="f1">29</td><td class="ctr2" id="g1">29</td><td class="ctr1" id="h1">199</td><td class="ctr2" id="i1">199</td><td class="ctr1" id="j2">3</td><td class="ctr2" id="k2">3</td><td class="ctr1" id="l1">1</td><td class="ctr2" id="m1">1</td></tr><tr><td id="a2"><a href="musichub.util/index.html" class="el_package">musichub.util</a></td><td class="bar" id="b2"><img src="jacoco-resources/redbar.gif" width="4" height="10" title="72" alt="72"/></td><td class="ctr2" id="c2">0 %</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">4</td><td class="ctr2" id="g2">4</td><td class="ctr1" id="h2">25</td><td class="ctr2" id="i2">25</td><td class="ctr1" id="j1">4</td><td class="ctr2" id="k1">4</td><td class="ctr1" id="l2">1</td><td class="ctr2" id="m2">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/jacoco-resources/branchfc.gif b/target/site/jacoco/jacoco-resources/branchfc.gif Binary files differnew file mode 100644 index 0000000..989b46d --- /dev/null +++ b/target/site/jacoco/jacoco-resources/branchfc.gif diff --git a/target/site/jacoco/jacoco-resources/branchnc.gif b/target/site/jacoco/jacoco-resources/branchnc.gif Binary files differnew file mode 100644 index 0000000..1933e07 --- /dev/null +++ b/target/site/jacoco/jacoco-resources/branchnc.gif diff --git a/target/site/jacoco/jacoco-resources/branchpc.gif b/target/site/jacoco/jacoco-resources/branchpc.gif Binary files differnew file mode 100644 index 0000000..cbf711b --- /dev/null +++ b/target/site/jacoco/jacoco-resources/branchpc.gif diff --git a/target/site/jacoco/jacoco-resources/bundle.gif b/target/site/jacoco/jacoco-resources/bundle.gif Binary files differnew file mode 100644 index 0000000..fca9c53 --- /dev/null +++ b/target/site/jacoco/jacoco-resources/bundle.gif diff --git a/target/site/jacoco/jacoco-resources/class.gif b/target/site/jacoco/jacoco-resources/class.gif Binary files differnew file mode 100644 index 0000000..eb348fb --- /dev/null +++ b/target/site/jacoco/jacoco-resources/class.gif diff --git a/target/site/jacoco/jacoco-resources/down.gif b/target/site/jacoco/jacoco-resources/down.gif Binary files differnew file mode 100644 index 0000000..440a14d --- /dev/null +++ b/target/site/jacoco/jacoco-resources/down.gif diff --git a/target/site/jacoco/jacoco-resources/greenbar.gif b/target/site/jacoco/jacoco-resources/greenbar.gif Binary files differnew file mode 100644 index 0000000..0ba6567 --- /dev/null +++ b/target/site/jacoco/jacoco-resources/greenbar.gif diff --git a/target/site/jacoco/jacoco-resources/group.gif b/target/site/jacoco/jacoco-resources/group.gif Binary files differnew file mode 100644 index 0000000..a4ea580 --- /dev/null +++ b/target/site/jacoco/jacoco-resources/group.gif diff --git a/target/site/jacoco/jacoco-resources/method.gif b/target/site/jacoco/jacoco-resources/method.gif Binary files differnew file mode 100644 index 0000000..7d24707 --- /dev/null +++ b/target/site/jacoco/jacoco-resources/method.gif diff --git a/target/site/jacoco/jacoco-resources/package.gif b/target/site/jacoco/jacoco-resources/package.gif Binary files differnew file mode 100644 index 0000000..131c28d --- /dev/null +++ b/target/site/jacoco/jacoco-resources/package.gif diff --git a/target/site/jacoco/jacoco-resources/prettify.css b/target/site/jacoco/jacoco-resources/prettify.css new file mode 100644 index 0000000..be5166e --- /dev/null +++ b/target/site/jacoco/jacoco-resources/prettify.css @@ -0,0 +1,13 @@ +/* Pretty printing styles. Used with prettify.js. */ + +.str { color: #2A00FF; } +.kwd { color: #7F0055; font-weight:bold; } +.com { color: #3F5FBF; } +.typ { color: #606; } +.lit { color: #066; } +.pun { color: #660; } +.pln { color: #000; } +.tag { color: #008; } +.atn { color: #606; } +.atv { color: #080; } +.dec { color: #606; } diff --git a/target/site/jacoco/jacoco-resources/prettify.js b/target/site/jacoco/jacoco-resources/prettify.js new file mode 100644 index 0000000..b2766fe --- /dev/null +++ b/target/site/jacoco/jacoco-resources/prettify.js @@ -0,0 +1,1510 @@ +// Copyright (C) 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +/** + * @fileoverview + * some functions for browser-side pretty printing of code contained in html. + * <p> + * + * For a fairly comprehensive set of languages see the + * <a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html#langs">README</a> + * file that came with this source. At a minimum, the lexer should work on a + * number of languages including C and friends, Java, Python, Bash, SQL, HTML, + * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk + * and a subset of Perl, but, because of commenting conventions, doesn't work on + * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class. + * <p> + * Usage: <ol> + * <li> include this source file in an html page via + * {@code <script type="text/javascript" src="/path/to/prettify.js"></script>} + * <li> define style rules. See the example page for examples. + * <li> mark the {@code <pre>} and {@code <code>} tags in your source with + * {@code class=prettyprint.} + * You can also use the (html deprecated) {@code <xmp>} tag, but the pretty + * printer needs to do more substantial DOM manipulations to support that, so + * some css styles may not be preserved. + * </ol> + * That's it. I wanted to keep the API as simple as possible, so there's no + * need to specify which language the code is in, but if you wish, you can add + * another class to the {@code <pre>} or {@code <code>} element to specify the + * language, as in {@code <pre class="prettyprint lang-java">}. Any class that + * starts with "lang-" followed by a file extension, specifies the file type. + * See the "lang-*.js" files in this directory for code that implements + * per-language file handlers. + * <p> + * Change log:<br> + * cbeust, 2006/08/22 + * <blockquote> + * Java annotations (start with "@") are now captured as literals ("lit") + * </blockquote> + * @requires console + */ + +// JSLint declarations +/*global console, document, navigator, setTimeout, window */ + +/** + * Split {@code prettyPrint} into multiple timeouts so as not to interfere with + * UI events. + * If set to {@code false}, {@code prettyPrint()} is synchronous. + */ +window['PR_SHOULD_USE_CONTINUATION'] = true; + +/** the number of characters between tab columns */ +window['PR_TAB_WIDTH'] = 8; + +/** Walks the DOM returning a properly escaped version of innerHTML. + * @param {Node} node + * @param {Array.<string>} out output buffer that receives chunks of HTML. + */ +window['PR_normalizedHtml'] + +/** Contains functions for creating and registering new language handlers. + * @type {Object} + */ + = window['PR'] + +/** Pretty print a chunk of code. + * + * @param {string} sourceCodeHtml code as html + * @return {string} code as html, but prettier + */ + = window['prettyPrintOne'] +/** Find all the {@code <pre>} and {@code <code>} tags in the DOM with + * {@code class=prettyprint} and prettify them. + * @param {Function?} opt_whenDone if specified, called when the last entry + * has been finished. + */ + = window['prettyPrint'] = void 0; + +/** browser detection. @extern @returns false if not IE, otherwise the major version. */ +window['_pr_isIE6'] = function () { + var ieVersion = navigator && navigator.userAgent && + navigator.userAgent.match(/\bMSIE ([678])\./); + ieVersion = ieVersion ? +ieVersion[1] : false; + window['_pr_isIE6'] = function () { return ieVersion; }; + return ieVersion; +}; + + +(function () { + // Keyword lists for various languages. + var FLOW_CONTROL_KEYWORDS = + "break continue do else for if return while "; + var C_KEYWORDS = FLOW_CONTROL_KEYWORDS + "auto case char const default " + + "double enum extern float goto int long register short signed sizeof " + + "static struct switch typedef union unsigned void volatile "; + var COMMON_KEYWORDS = C_KEYWORDS + "catch class delete false import " + + "new operator private protected public this throw true try typeof "; + var CPP_KEYWORDS = COMMON_KEYWORDS + "alignof align_union asm axiom bool " + + "concept concept_map const_cast constexpr decltype " + + "dynamic_cast explicit export friend inline late_check " + + "mutable namespace nullptr reinterpret_cast static_assert static_cast " + + "template typeid typename using virtual wchar_t where "; + var JAVA_KEYWORDS = COMMON_KEYWORDS + + "abstract boolean byte extends final finally implements import " + + "instanceof null native package strictfp super synchronized throws " + + "transient "; + var CSHARP_KEYWORDS = JAVA_KEYWORDS + + "as base by checked decimal delegate descending event " + + "fixed foreach from group implicit in interface internal into is lock " + + "object out override orderby params partial readonly ref sbyte sealed " + + "stackalloc string select uint ulong unchecked unsafe ushort var "; + var JSCRIPT_KEYWORDS = COMMON_KEYWORDS + + "debugger eval export function get null set undefined var with " + + "Infinity NaN "; + var PERL_KEYWORDS = "caller delete die do dump elsif eval exit foreach for " + + "goto if import last local my next no our print package redo require " + + "sub undef unless until use wantarray while BEGIN END "; + var PYTHON_KEYWORDS = FLOW_CONTROL_KEYWORDS + "and as assert class def del " + + "elif except exec finally from global import in is lambda " + + "nonlocal not or pass print raise try with yield " + + "False True None "; + var RUBY_KEYWORDS = FLOW_CONTROL_KEYWORDS + "alias and begin case class def" + + " defined elsif end ensure false in module next nil not or redo rescue " + + "retry self super then true undef unless until when yield BEGIN END "; + var SH_KEYWORDS = FLOW_CONTROL_KEYWORDS + "case done elif esac eval fi " + + "function in local set then until "; + var ALL_KEYWORDS = ( + CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS + + PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS); + + // token style names. correspond to css classes + /** token style for a string literal */ + var PR_STRING = 'str'; + /** token style for a keyword */ + var PR_KEYWORD = 'kwd'; + /** token style for a comment */ + var PR_COMMENT = 'com'; + /** token style for a type */ + var PR_TYPE = 'typ'; + /** token style for a literal value. e.g. 1, null, true. */ + var PR_LITERAL = 'lit'; + /** token style for a punctuation string. */ + var PR_PUNCTUATION = 'pun'; + /** token style for a punctuation string. */ + var PR_PLAIN = 'pln'; + + /** token style for an sgml tag. */ + var PR_TAG = 'tag'; + /** token style for a markup declaration such as a DOCTYPE. */ + var PR_DECLARATION = 'dec'; + /** token style for embedded source. */ + var PR_SOURCE = 'src'; + /** token style for an sgml attribute name. */ + var PR_ATTRIB_NAME = 'atn'; + /** token style for an sgml attribute value. */ + var PR_ATTRIB_VALUE = 'atv'; + + /** + * A class that indicates a section of markup that is not code, e.g. to allow + * embedding of line numbers within code listings. + */ + var PR_NOCODE = 'nocode'; + + /** A set of tokens that can precede a regular expression literal in + * javascript. + * http://www.mozilla.org/js/language/js20/rationale/syntax.html has the full + * list, but I've removed ones that might be problematic when seen in + * languages that don't support regular expression literals. + * + * <p>Specifically, I've removed any keywords that can't precede a regexp + * literal in a syntactically legal javascript program, and I've removed the + * "in" keyword since it's not a keyword in many languages, and might be used + * as a count of inches. + * + * <p>The link a above does not accurately describe EcmaScript rules since + * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works + * very well in practice. + * + * @private + */ + var REGEXP_PRECEDER_PATTERN = function () { + var preceders = [ + "!", "!=", "!==", "#", "%", "%=", "&", "&&", "&&=", + "&=", "(", "*", "*=", /* "+", */ "+=", ",", /* "-", */ "-=", + "->", /*".", "..", "...", handled below */ "/", "/=", ":", "::", ";", + "<", "<<", "<<=", "<=", "=", "==", "===", ">", + ">=", ">>", ">>=", ">>>", ">>>=", "?", "@", "[", + "^", "^=", "^^", "^^=", "{", "|", "|=", "||", + "||=", "~" /* handles =~ and !~ */, + "break", "case", "continue", "delete", + "do", "else", "finally", "instanceof", + "return", "throw", "try", "typeof" + ]; + var pattern = '(?:^^|[+-]'; + for (var i = 0; i < preceders.length; ++i) { + pattern += '|' + preceders[i].replace(/([^=<>:&a-z])/g, '\\$1'); + } + pattern += ')\\s*'; // matches at end, and matches empty string + return pattern; + // CAVEAT: this does not properly handle the case where a regular + // expression immediately follows another since a regular expression may + // have flags for case-sensitivity and the like. Having regexp tokens + // adjacent is not valid in any language I'm aware of, so I'm punting. + // TODO: maybe style special characters inside a regexp as punctuation. + }(); + + // Define regexps here so that the interpreter doesn't have to create an + // object each time the function containing them is called. + // The language spec requires a new object created even if you don't access + // the $1 members. + var pr_amp = /&/g; + var pr_lt = /</g; + var pr_gt = />/g; + var pr_quot = /\"/g; + /** like textToHtml but escapes double quotes to be attribute safe. */ + function attribToHtml(str) { + return str.replace(pr_amp, '&') + .replace(pr_lt, '<') + .replace(pr_gt, '>') + .replace(pr_quot, '"'); + } + + /** escapest html special characters to html. */ + function textToHtml(str) { + return str.replace(pr_amp, '&') + .replace(pr_lt, '<') + .replace(pr_gt, '>'); + } + + + var pr_ltEnt = /</g; + var pr_gtEnt = />/g; + var pr_aposEnt = /'/g; + var pr_quotEnt = /"/g; + var pr_ampEnt = /&/g; + var pr_nbspEnt = / /g; + /** unescapes html to plain text. */ + function htmlToText(html) { + var pos = html.indexOf('&'); + if (pos < 0) { return html; } + // Handle numeric entities specially. We can't use functional substitution + // since that doesn't work in older versions of Safari. + // These should be rare since most browsers convert them to normal chars. + for (--pos; (pos = html.indexOf('&#', pos + 1)) >= 0;) { + var end = html.indexOf(';', pos); + if (end >= 0) { + var num = html.substring(pos + 3, end); + var radix = 10; + if (num && num.charAt(0) === 'x') { + num = num.substring(1); + radix = 16; + } + var codePoint = parseInt(num, radix); + if (!isNaN(codePoint)) { + html = (html.substring(0, pos) + String.fromCharCode(codePoint) + + html.substring(end + 1)); + } + } + } + + return html.replace(pr_ltEnt, '<') + .replace(pr_gtEnt, '>') + .replace(pr_aposEnt, "'") + .replace(pr_quotEnt, '"') + .replace(pr_nbspEnt, ' ') + .replace(pr_ampEnt, '&'); + } + + /** is the given node's innerHTML normally unescaped? */ + function isRawContent(node) { + return 'XMP' === node.tagName; + } + + var newlineRe = /[\r\n]/g; + /** + * Are newlines and adjacent spaces significant in the given node's innerHTML? + */ + function isPreformatted(node, content) { + // PRE means preformatted, and is a very common case, so don't create + // unnecessary computed style objects. + if ('PRE' === node.tagName) { return true; } + if (!newlineRe.test(content)) { return true; } // Don't care + var whitespace = ''; + // For disconnected nodes, IE has no currentStyle. + if (node.currentStyle) { + whitespace = node.currentStyle.whiteSpace; + } else if (window.getComputedStyle) { + // Firefox makes a best guess if node is disconnected whereas Safari + // returns the empty string. + whitespace = window.getComputedStyle(node, null).whiteSpace; + } + return !whitespace || whitespace === 'pre'; + } + + function normalizedHtml(node, out, opt_sortAttrs) { + switch (node.nodeType) { + case 1: // an element + var name = node.tagName.toLowerCase(); + + out.push('<', name); + var attrs = node.attributes; + var n = attrs.length; + if (n) { + if (opt_sortAttrs) { + var sortedAttrs = []; + for (var i = n; --i >= 0;) { sortedAttrs[i] = attrs[i]; } + sortedAttrs.sort(function (a, b) { + return (a.name < b.name) ? -1 : a.name === b.name ? 0 : 1; + }); + attrs = sortedAttrs; + } + for (var i = 0; i < n; ++i) { + var attr = attrs[i]; + if (!attr.specified) { continue; } + out.push(' ', attr.name.toLowerCase(), + '="', attribToHtml(attr.value), '"'); + } + } + out.push('>'); + for (var child = node.firstChild; child; child = child.nextSibling) { + normalizedHtml(child, out, opt_sortAttrs); + } + if (node.firstChild || !/^(?:br|link|img)$/.test(name)) { + out.push('<\/', name, '>'); + } + break; + case 3: case 4: // text + out.push(textToHtml(node.nodeValue)); + break; + } + } + + /** + * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally + * matches the union o the sets o strings matched d by the input RegExp. + * Since it matches globally, if the input strings have a start-of-input + * anchor (/^.../), it is ignored for the purposes of unioning. + * @param {Array.<RegExp>} regexs non multiline, non-global regexs. + * @return {RegExp} a global regex. + */ + function combinePrefixPatterns(regexs) { + var capturedGroupIndex = 0; + + var needToFoldCase = false; + var ignoreCase = false; + for (var i = 0, n = regexs.length; i < n; ++i) { + var regex = regexs[i]; + if (regex.ignoreCase) { + ignoreCase = true; + } else if (/[a-z]/i.test(regex.source.replace( + /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) { + needToFoldCase = true; + ignoreCase = false; + break; + } + } + + function decodeEscape(charsetPart) { + if (charsetPart.charAt(0) !== '\\') { return charsetPart.charCodeAt(0); } + switch (charsetPart.charAt(1)) { + case 'b': return 8; + case 't': return 9; + case 'n': return 0xa; + case 'v': return 0xb; + case 'f': return 0xc; + case 'r': return 0xd; + case 'u': case 'x': + return parseInt(charsetPart.substring(2), 16) + || charsetPart.charCodeAt(1); + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': + return parseInt(charsetPart.substring(1), 8); + default: return charsetPart.charCodeAt(1); + } + } + + function encodeEscape(charCode) { + if (charCode < 0x20) { + return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16); + } + var ch = String.fromCharCode(charCode); + if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') { + ch = '\\' + ch; + } + return ch; + } + + function caseFoldCharset(charSet) { + var charsetParts = charSet.substring(1, charSet.length - 1).match( + new RegExp( + '\\\\u[0-9A-Fa-f]{4}' + + '|\\\\x[0-9A-Fa-f]{2}' + + '|\\\\[0-3][0-7]{0,2}' + + '|\\\\[0-7]{1,2}' + + '|\\\\[\\s\\S]' + + '|-' + + '|[^-\\\\]', + 'g')); + var groups = []; + var ranges = []; + var inverse = charsetParts[0] === '^'; + for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) { + var p = charsetParts[i]; + switch (p) { + case '\\B': case '\\b': + case '\\D': case '\\d': + case '\\S': case '\\s': + case '\\W': case '\\w': + groups.push(p); + continue; + } + var start = decodeEscape(p); + var end; + if (i + 2 < n && '-' === charsetParts[i + 1]) { + end = decodeEscape(charsetParts[i + 2]); + i += 2; + } else { + end = start; + } + ranges.push([start, end]); + // If the range might intersect letters, then expand it. + if (!(end < 65 || start > 122)) { + if (!(end < 65 || start > 90)) { + ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]); + } + if (!(end < 97 || start > 122)) { + ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]); + } + } + } + + // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]] + // -> [[1, 12], [14, 14], [16, 17]] + ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1] - a[1]); }); + var consolidatedRanges = []; + var lastRange = [NaN, NaN]; + for (var i = 0; i < ranges.length; ++i) { + var range = ranges[i]; + if (range[0] <= lastRange[1] + 1) { + lastRange[1] = Math.max(lastRange[1], range[1]); + } else { + consolidatedRanges.push(lastRange = range); + } + } + + var out = ['[']; + if (inverse) { out.push('^'); } + out.push.apply(out, groups); + for (var i = 0; i < consolidatedRanges.length; ++i) { + var range = consolidatedRanges[i]; + out.push(encodeEscape(range[0])); + if (range[1] > range[0]) { + if (range[1] + 1 > range[0]) { out.push('-'); } + out.push(encodeEscape(range[1])); + } + } + out.push(']'); + return out.join(''); + } + + function allowAnywhereFoldCaseAndRenumberGroups(regex) { + // Split into character sets, escape sequences, punctuation strings + // like ('(', '(?:', ')', '^'), and runs of characters that do not + // include any of the above. + var parts = regex.source.match( + new RegExp( + '(?:' + + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]' // a character set + + '|\\\\u[A-Fa-f0-9]{4}' // a unicode escape + + '|\\\\x[A-Fa-f0-9]{2}' // a hex escape + + '|\\\\[0-9]+' // a back-reference or octal escape + + '|\\\\[^ux0-9]' // other escape sequence + + '|\\(\\?[:!=]' // start of a non-capturing group + + '|[\\(\\)\\^]' // start/emd of a group, or line start + + '|[^\\x5B\\x5C\\(\\)\\^]+' // run of other characters + + ')', + 'g')); + var n = parts.length; + + // Maps captured group numbers to the number they will occupy in + // the output or to -1 if that has not been determined, or to + // undefined if they need not be capturing in the output. + var capturedGroups = []; + + // Walk over and identify back references to build the capturedGroups + // mapping. + for (var i = 0, groupIndex = 0; i < n; ++i) { + var p = parts[i]; + if (p === '(') { + // groups are 1-indexed, so max group index is count of '(' + ++groupIndex; + } else if ('\\' === p.charAt(0)) { + var decimalValue = +p.substring(1); + if (decimalValue && decimalValue <= groupIndex) { + capturedGroups[decimalValue] = -1; + } + } + } + + // Renumber groups and reduce capturing groups to non-capturing groups + // where possible. + for (var i = 1; i < capturedGroups.length; ++i) { + if (-1 === capturedGroups[i]) { + capturedGroups[i] = ++capturedGroupIndex; + } + } + for (var i = 0, groupIndex = 0; i < n; ++i) { + var p = parts[i]; + if (p === '(') { + ++groupIndex; + if (capturedGroups[groupIndex] === undefined) { + parts[i] = '(?:'; + } + } else if ('\\' === p.charAt(0)) { + var decimalValue = +p.substring(1); + if (decimalValue && decimalValue <= groupIndex) { + parts[i] = '\\' + capturedGroups[groupIndex]; + } + } + } + + // Remove any prefix anchors so that the output will match anywhere. + // ^^ really does mean an anchored match though. + for (var i = 0, groupIndex = 0; i < n; ++i) { + if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; } + } + + // Expand letters to groupts to handle mixing of case-sensitive and + // case-insensitive patterns if necessary. + if (regex.ignoreCase && needToFoldCase) { + for (var i = 0; i < n; ++i) { + var p = parts[i]; + var ch0 = p.charAt(0); + if (p.length >= 2 && ch0 === '[') { + parts[i] = caseFoldCharset(p); + } else if (ch0 !== '\\') { + // TODO: handle letters in numeric escapes. + parts[i] = p.replace( + /[a-zA-Z]/g, + function (ch) { + var cc = ch.charCodeAt(0); + return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']'; + }); + } + } + } + + return parts.join(''); + } + + var rewritten = []; + for (var i = 0, n = regexs.length; i < n; ++i) { + var regex = regexs[i]; + if (regex.global || regex.multiline) { throw new Error('' + regex); } + rewritten.push( + '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')'); + } + + return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g'); + } + + var PR_innerHtmlWorks = null; + function getInnerHtml(node) { + // inner html is hopelessly broken in Safari 2.0.4 when the content is + // an html description of well formed XML and the containing tag is a PRE + // tag, so we detect that case and emulate innerHTML. + if (null === PR_innerHtmlWorks) { + var testNode = document.createElement('PRE'); + testNode.appendChild( + document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />')); + PR_innerHtmlWorks = !/</.test(testNode.innerHTML); + } + + if (PR_innerHtmlWorks) { + var content = node.innerHTML; + // XMP tags contain unescaped entities so require special handling. + if (isRawContent(node)) { + content = textToHtml(content); + } else if (!isPreformatted(node, content)) { + content = content.replace(/(<br\s*\/?>)[\r\n]+/g, '$1') + .replace(/(?:[\r\n]+[ \t]*)+/g, ' '); + } + return content; + } + + var out = []; + for (var child = node.firstChild; child; child = child.nextSibling) { + normalizedHtml(child, out); + } + return out.join(''); + } + + /** returns a function that expand tabs to spaces. This function can be fed + * successive chunks of text, and will maintain its own internal state to + * keep track of how tabs are expanded. + * @return {function (string) : string} a function that takes + * plain text and return the text with tabs expanded. + * @private + */ + function makeTabExpander(tabWidth) { + var SPACES = ' '; + var charInLine = 0; + + return function (plainText) { + // walk over each character looking for tabs and newlines. + // On tabs, expand them. On newlines, reset charInLine. + // Otherwise increment charInLine + var out = null; + var pos = 0; + for (var i = 0, n = plainText.length; i < n; ++i) { + var ch = plainText.charAt(i); + + switch (ch) { + case '\t': + if (!out) { out = []; } + out.push(plainText.substring(pos, i)); + // calculate how much space we need in front of this part + // nSpaces is the amount of padding -- the number of spaces needed + // to move us to the next column, where columns occur at factors of + // tabWidth. + var nSpaces = tabWidth - (charInLine % tabWidth); + charInLine += nSpaces; + for (; nSpaces >= 0; nSpaces -= SPACES.length) { + out.push(SPACES.substring(0, nSpaces)); + } + pos = i + 1; + break; + case '\n': + charInLine = 0; + break; + default: + ++charInLine; + } + } + if (!out) { return plainText; } + out.push(plainText.substring(pos)); + return out.join(''); + }; + } + + var pr_chunkPattern = new RegExp( + '[^<]+' // A run of characters other than '<' + + '|<\!--[\\s\\S]*?--\>' // an HTML comment + + '|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>' // a CDATA section + // a probable tag that should not be highlighted + + '|<\/?[a-zA-Z](?:[^>\"\']|\'[^\']*\'|\"[^\"]*\")*>' + + '|<', // A '<' that does not begin a larger chunk + 'g'); + var pr_commentPrefix = /^<\!--/; + var pr_cdataPrefix = /^<!\[CDATA\[/; + var pr_brPrefix = /^<br\b/i; + var pr_tagNameRe = /^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/; + + /** split markup into chunks of html tags (style null) and + * plain text (style {@link #PR_PLAIN}), converting tags which are + * significant for tokenization (<br>) into their textual equivalent. + * + * @param {string} s html where whitespace is considered significant. + * @return {Object} source code and extracted tags. + * @private + */ + function extractTags(s) { + // since the pattern has the 'g' modifier and defines no capturing groups, + // this will return a list of all chunks which we then classify and wrap as + // PR_Tokens + var matches = s.match(pr_chunkPattern); + var sourceBuf = []; + var sourceBufLen = 0; + var extractedTags = []; + if (matches) { + for (var i = 0, n = matches.length; i < n; ++i) { + var match = matches[i]; + if (match.length > 1 && match.charAt(0) === '<') { + if (pr_commentPrefix.test(match)) { continue; } + if (pr_cdataPrefix.test(match)) { + // strip CDATA prefix and suffix. Don't unescape since it's CDATA + sourceBuf.push(match.substring(9, match.length - 3)); + sourceBufLen += match.length - 12; + } else if (pr_brPrefix.test(match)) { + // <br> tags are lexically significant so convert them to text. + // This is undone later. + sourceBuf.push('\n'); + ++sourceBufLen; + } else { + if (match.indexOf(PR_NOCODE) >= 0 && isNoCodeTag(match)) { + // A <span class="nocode"> will start a section that should be + // ignored. Continue walking the list until we see a matching end + // tag. + var name = match.match(pr_tagNameRe)[2]; + var depth = 1; + var j; + end_tag_loop: + for (j = i + 1; j < n; ++j) { + var name2 = matches[j].match(pr_tagNameRe); + if (name2 && name2[2] === name) { + if (name2[1] === '/') { + if (--depth === 0) { break end_tag_loop; } + } else { + ++depth; + } + } + } + if (j < n) { + extractedTags.push( + sourceBufLen, matches.slice(i, j + 1).join('')); + i = j; + } else { // Ignore unclosed sections. + extractedTags.push(sourceBufLen, match); + } + } else { + extractedTags.push(sourceBufLen, match); + } + } + } else { + var literalText = htmlToText(match); + sourceBuf.push(literalText); + sourceBufLen += literalText.length; + } + } + } + return { source: sourceBuf.join(''), tags: extractedTags }; + } + + /** True if the given tag contains a class attribute with the nocode class. */ + function isNoCodeTag(tag) { + return !!tag + // First canonicalize the representation of attributes + .replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g, + ' $1="$2$3$4"') + // Then look for the attribute we want. + .match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/); + } + + /** + * Apply the given language handler to sourceCode and add the resulting + * decorations to out. + * @param {number} basePos the index of sourceCode within the chunk of source + * whose decorations are already present on out. + */ + function appendDecorations(basePos, sourceCode, langHandler, out) { + if (!sourceCode) { return; } + var job = { + source: sourceCode, + basePos: basePos + }; + langHandler(job); + out.push.apply(out, job.decorations); + } + + /** Given triples of [style, pattern, context] returns a lexing function, + * The lexing function interprets the patterns to find token boundaries and + * returns a decoration list of the form + * [index_0, style_0, index_1, style_1, ..., index_n, style_n] + * where index_n is an index into the sourceCode, and style_n is a style + * constant like PR_PLAIN. index_n-1 <= index_n, and style_n-1 applies to + * all characters in sourceCode[index_n-1:index_n]. + * + * The stylePatterns is a list whose elements have the form + * [style : string, pattern : RegExp, DEPRECATED, shortcut : string]. + * + * Style is a style constant like PR_PLAIN, or can be a string of the + * form 'lang-FOO', where FOO is a language extension describing the + * language of the portion of the token in $1 after pattern executes. + * E.g., if style is 'lang-lisp', and group 1 contains the text + * '(hello (world))', then that portion of the token will be passed to the + * registered lisp handler for formatting. + * The text before and after group 1 will be restyled using this decorator + * so decorators should take care that this doesn't result in infinite + * recursion. For example, the HTML lexer rule for SCRIPT elements looks + * something like ['lang-js', /<[s]cript>(.+?)<\/script>/]. This may match + * '<script>foo()<\/script>', which would cause the current decorator to + * be called with '<script>' which would not match the same rule since + * group 1 must not be empty, so it would be instead styled as PR_TAG by + * the generic tag rule. The handler registered for the 'js' extension would + * then be called with 'foo()', and finally, the current decorator would + * be called with '<\/script>' which would not match the original rule and + * so the generic tag rule would identify it as a tag. + * + * Pattern must only match prefixes, and if it matches a prefix, then that + * match is considered a token with the same style. + * + * Context is applied to the last non-whitespace, non-comment token + * recognized. + * + * Shortcut is an optional string of characters, any of which, if the first + * character, gurantee that this pattern and only this pattern matches. + * + * @param {Array} shortcutStylePatterns patterns that always start with + * a known character. Must have a shortcut string. + * @param {Array} fallthroughStylePatterns patterns that will be tried in + * order if the shortcut ones fail. May have shortcuts. + * + * @return {function (Object)} a + * function that takes source code and returns a list of decorations. + */ + function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) { + var shortcuts = {}; + var tokenizer; + (function () { + var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns); + var allRegexs = []; + var regexKeys = {}; + for (var i = 0, n = allPatterns.length; i < n; ++i) { + var patternParts = allPatterns[i]; + var shortcutChars = patternParts[3]; + if (shortcutChars) { + for (var c = shortcutChars.length; --c >= 0;) { + shortcuts[shortcutChars.charAt(c)] = patternParts; + } + } + var regex = patternParts[1]; + var k = '' + regex; + if (!regexKeys.hasOwnProperty(k)) { + allRegexs.push(regex); + regexKeys[k] = null; + } + } + allRegexs.push(/[\0-\uffff]/); + tokenizer = combinePrefixPatterns(allRegexs); + })(); + + var nPatterns = fallthroughStylePatterns.length; + var notWs = /\S/; + + /** + * Lexes job.source and produces an output array job.decorations of style + * classes preceded by the position at which they start in job.source in + * order. + * + * @param {Object} job an object like {@code + * source: {string} sourceText plain text, + * basePos: {int} position of job.source in the larger chunk of + * sourceCode. + * } + */ + var decorate = function (job) { + var sourceCode = job.source, basePos = job.basePos; + /** Even entries are positions in source in ascending order. Odd enties + * are style markers (e.g., PR_COMMENT) that run from that position until + * the end. + * @type {Array.<number|string>} + */ + var decorations = [basePos, PR_PLAIN]; + var pos = 0; // index into sourceCode + var tokens = sourceCode.match(tokenizer) || []; + var styleCache = {}; + + for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) { + var token = tokens[ti]; + var style = styleCache[token]; + var match = void 0; + + var isEmbedded; + if (typeof style === 'string') { + isEmbedded = false; + } else { + var patternParts = shortcuts[token.charAt(0)]; + if (patternParts) { + match = token.match(patternParts[1]); + style = patternParts[0]; + } else { + for (var i = 0; i < nPatterns; ++i) { + patternParts = fallthroughStylePatterns[i]; + match = token.match(patternParts[1]); + if (match) { + style = patternParts[0]; + break; + } + } + + if (!match) { // make sure that we make progress + style = PR_PLAIN; + } + } + + isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5); + if (isEmbedded && !(match && typeof match[1] === 'string')) { + isEmbedded = false; + style = PR_SOURCE; + } + + if (!isEmbedded) { styleCache[token] = style; } + } + + var tokenStart = pos; + pos += token.length; + + if (!isEmbedded) { + decorations.push(basePos + tokenStart, style); + } else { // Treat group 1 as an embedded block of source code. + var embeddedSource = match[1]; + var embeddedSourceStart = token.indexOf(embeddedSource); + var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length; + if (match[2]) { + // If embeddedSource can be blank, then it would match at the + // beginning which would cause us to infinitely recurse on the + // entire token, so we catch the right context in match[2]. + embeddedSourceEnd = token.length - match[2].length; + embeddedSourceStart = embeddedSourceEnd - embeddedSource.length; + } + var lang = style.substring(5); + // Decorate the left of the embedded source + appendDecorations( + basePos + tokenStart, + token.substring(0, embeddedSourceStart), + decorate, decorations); + // Decorate the embedded source + appendDecorations( + basePos + tokenStart + embeddedSourceStart, + embeddedSource, + langHandlerForExtension(lang, embeddedSource), + decorations); + // Decorate the right of the embedded section + appendDecorations( + basePos + tokenStart + embeddedSourceEnd, + token.substring(embeddedSourceEnd), + decorate, decorations); + } + } + job.decorations = decorations; + }; + return decorate; + } + + /** returns a function that produces a list of decorations from source text. + * + * This code treats ", ', and ` as string delimiters, and \ as a string + * escape. It does not recognize perl's qq() style strings. + * It has no special handling for double delimiter escapes as in basic, or + * the tripled delimiters used in python, but should work on those regardless + * although in those cases a single string literal may be broken up into + * multiple adjacent string literals. + * + * It recognizes C, C++, and shell style comments. + * + * @param {Object} options a set of optional parameters. + * @return {function (Object)} a function that examines the source code + * in the input job and builds the decoration list. + */ + function sourceDecorator(options) { + var shortcutStylePatterns = [], fallthroughStylePatterns = []; + if (options['tripleQuotedStrings']) { + // '''multi-line-string''', 'single-line-string', and double-quoted + shortcutStylePatterns.push( + [PR_STRING, /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/, + null, '\'"']); + } else if (options['multiLineStrings']) { + // 'multi-line-string', "multi-line-string" + shortcutStylePatterns.push( + [PR_STRING, /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/, + null, '\'"`']); + } else { + // 'single-line-string', "single-line-string" + shortcutStylePatterns.push( + [PR_STRING, + /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/, + null, '"\'']); + } + if (options['verbatimStrings']) { + // verbatim-string-literal production from the C# grammar. See issue 93. + fallthroughStylePatterns.push( + [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]); + } + if (options['hashComments']) { + if (options['cStyleComments']) { + // Stop C preprocessor declarations at an unclosed open comment + shortcutStylePatterns.push( + [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/, + null, '#']); + fallthroughStylePatterns.push( + [PR_STRING, + /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/, + null]); + } else { + shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']); + } + } + if (options['cStyleComments']) { + fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]); + fallthroughStylePatterns.push( + [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]); + } + if (options['regexLiterals']) { + var REGEX_LITERAL = ( + // A regular expression literal starts with a slash that is + // not followed by * or / so that it is not confused with + // comments. + '/(?=[^/*])' + // and then contains any number of raw characters, + + '(?:[^/\\x5B\\x5C]' + // escape sequences (\x5C), + + '|\\x5C[\\s\\S]' + // or non-nesting character sets (\x5B\x5D); + + '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+' + // finally closed by a /. + + '/'); + fallthroughStylePatterns.push( + ['lang-regex', + new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')') + ]); + } + + var keywords = options['keywords'].replace(/^\s+|\s+$/g, ''); + if (keywords.length) { + fallthroughStylePatterns.push( + [PR_KEYWORD, + new RegExp('^(?:' + keywords.replace(/\s+/g, '|') + ')\\b'), null]); + } + + shortcutStylePatterns.push([PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0']); + fallthroughStylePatterns.push( + // TODO(mikesamuel): recognize non-latin letters and numerals in idents + [PR_LITERAL, /^@[a-z_$][a-z_$@0-9]*/i, null], + [PR_TYPE, /^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/, null], + [PR_PLAIN, /^[a-z_$][a-z_$@0-9]*/i, null], + [PR_LITERAL, + new RegExp( + '^(?:' + // A hex number + + '0x[a-f0-9]+' + // or an octal or decimal number, + + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)' + // possibly in scientific notation + + '(?:e[+\\-]?\\d+)?' + + ')' + // with an optional modifier like UL for unsigned long + + '[a-z]*', 'i'), + null, '0123456789'], + [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#]*/, null]); + + return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns); + } + + var decorateSource = sourceDecorator({ + 'keywords': ALL_KEYWORDS, + 'hashComments': true, + 'cStyleComments': true, + 'multiLineStrings': true, + 'regexLiterals': true + }); + + /** Breaks {@code job.source} around style boundaries in + * {@code job.decorations} while re-interleaving {@code job.extractedTags}, + * and leaves the result in {@code job.prettyPrintedHtml}. + * @param {Object} job like { + * source: {string} source as plain text, + * extractedTags: {Array.<number|string>} extractedTags chunks of raw + * html preceded by their position in {@code job.source} + * in order + * decorations: {Array.<number|string} an array of style classes preceded + * by the position at which they start in job.source in order + * } + * @private + */ + function recombineTagsAndDecorations(job) { + var sourceText = job.source; + var extractedTags = job.extractedTags; + var decorations = job.decorations; + + var html = []; + // index past the last char in sourceText written to html + var outputIdx = 0; + + var openDecoration = null; + var currentDecoration = null; + var tagPos = 0; // index into extractedTags + var decPos = 0; // index into decorations + var tabExpander = makeTabExpander(window['PR_TAB_WIDTH']); + + var adjacentSpaceRe = /([\r\n ]) /g; + var startOrSpaceRe = /(^| ) /gm; + var newlineRe = /\r\n?|\n/g; + var trailingSpaceRe = /[ \r\n]$/; + var lastWasSpace = true; // the last text chunk emitted ended with a space. + + // See bug 71 and http://stackoverflow.com/questions/136443/why-doesnt-ie7- + var isIE678 = window['_pr_isIE6'](); + var lineBreakHtml = ( + isIE678 + ? (job.sourceNode.tagName === 'PRE' + // Use line feeds instead of <br>s so that copying and pasting works + // on IE. + // Doing this on other browsers breaks lots of stuff since \r\n is + // treated as two newlines on Firefox. + ? (isIE678 === 6 ? ' \r\n' : + isIE678 === 7 ? ' <br>\r' : ' \r') + // IE collapses multiple adjacent <br>s into 1 line break. + // Prefix every newline with ' ' to prevent such behavior. + // is the same as   but works in XML as well as HTML. + : ' <br />') + : '<br />'); + + // Look for a class like linenums or linenums:<n> where <n> is the 1-indexed + // number of the first line. + var numberLines = job.sourceNode.className.match(/\blinenums\b(?::(\d+))?/); + var lineBreaker; + if (numberLines) { + var lineBreaks = []; + for (var i = 0; i < 10; ++i) { + lineBreaks[i] = lineBreakHtml + '</li><li class="L' + i + '">'; + } + var lineNum = numberLines[1] && numberLines[1].length + ? numberLines[1] - 1 : 0; // Lines are 1-indexed + html.push('<ol class="linenums"><li class="L', (lineNum) % 10, '"'); + if (lineNum) { + html.push(' value="', lineNum + 1, '"'); + } + html.push('>'); + lineBreaker = function () { + var lb = lineBreaks[++lineNum % 10]; + // If a decoration is open, we need to close it before closing a list-item + // and reopen it on the other side of the list item. + return openDecoration + ? ('</span>' + lb + '<span class="' + openDecoration + '">') : lb; + }; + } else { + lineBreaker = lineBreakHtml; + } + + // A helper function that is responsible for opening sections of decoration + // and outputing properly escaped chunks of source + function emitTextUpTo(sourceIdx) { + if (sourceIdx > outputIdx) { + if (openDecoration && openDecoration !== currentDecoration) { + // Close the current decoration + html.push('</span>'); + openDecoration = null; + } + if (!openDecoration && currentDecoration) { + openDecoration = currentDecoration; + html.push('<span class="', openDecoration, '">'); + } + // This interacts badly with some wikis which introduces paragraph tags + // into pre blocks for some strange reason. + // It's necessary for IE though which seems to lose the preformattedness + // of <pre> tags when their innerHTML is assigned. + // http://stud3.tuwien.ac.at/~e0226430/innerHtmlQuirk.html + // and it serves to undo the conversion of <br>s to newlines done in + // chunkify. + var htmlChunk = textToHtml( + tabExpander(sourceText.substring(outputIdx, sourceIdx))) + .replace(lastWasSpace + ? startOrSpaceRe + : adjacentSpaceRe, '$1 '); + // Keep track of whether we need to escape space at the beginning of the + // next chunk. + lastWasSpace = trailingSpaceRe.test(htmlChunk); + html.push(htmlChunk.replace(newlineRe, lineBreaker)); + outputIdx = sourceIdx; + } + } + + while (true) { + // Determine if we're going to consume a tag this time around. Otherwise + // we consume a decoration or exit. + var outputTag; + if (tagPos < extractedTags.length) { + if (decPos < decorations.length) { + // Pick one giving preference to extractedTags since we shouldn't open + // a new style that we're going to have to immediately close in order + // to output a tag. + outputTag = extractedTags[tagPos] <= decorations[decPos]; + } else { + outputTag = true; + } + } else { + outputTag = false; + } + // Consume either a decoration or a tag or exit. + if (outputTag) { + emitTextUpTo(extractedTags[tagPos]); + if (openDecoration) { + // Close the current decoration + html.push('</span>'); + openDecoration = null; + } + html.push(extractedTags[tagPos + 1]); + tagPos += 2; + } else if (decPos < decorations.length) { + emitTextUpTo(decorations[decPos]); + currentDecoration = decorations[decPos + 1]; + decPos += 2; + } else { + break; + } + } + emitTextUpTo(sourceText.length); + if (openDecoration) { + html.push('</span>'); + } + if (numberLines) { html.push('</li></ol>'); } + job.prettyPrintedHtml = html.join(''); + } + + /** Maps language-specific file extensions to handlers. */ + var langHandlerRegistry = {}; + /** Register a language handler for the given file extensions. + * @param {function (Object)} handler a function from source code to a list + * of decorations. Takes a single argument job which describes the + * state of the computation. The single parameter has the form + * {@code { + * source: {string} as plain text. + * decorations: {Array.<number|string>} an array of style classes + * preceded by the position at which they start in + * job.source in order. + * The language handler should assigned this field. + * basePos: {int} the position of source in the larger source chunk. + * All positions in the output decorations array are relative + * to the larger source chunk. + * } } + * @param {Array.<string>} fileExtensions + */ + function registerLangHandler(handler, fileExtensions) { + for (var i = fileExtensions.length; --i >= 0;) { + var ext = fileExtensions[i]; + if (!langHandlerRegistry.hasOwnProperty(ext)) { + langHandlerRegistry[ext] = handler; + } else if ('console' in window) { + console['warn']('cannot override language handler %s', ext); + } + } + } + function langHandlerForExtension(extension, source) { + if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) { + // Treat it as markup if the first non whitespace character is a < and + // the last non-whitespace character is a >. + extension = /^\s*</.test(source) + ? 'default-markup' + : 'default-code'; + } + return langHandlerRegistry[extension]; + } + registerLangHandler(decorateSource, ['default-code']); + registerLangHandler( + createSimpleLexer( + [], + [ + [PR_PLAIN, /^[^<?]+/], + [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/], + [PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/], + // Unescaped content in an unknown language + ['lang-', /^<\?([\s\S]+?)(?:\?>|$)/], + ['lang-', /^<%([\s\S]+?)(?:%>|$)/], + [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/], + ['lang-', /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i], + // Unescaped content in javascript. (Or possibly vbscript). + ['lang-js', /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i], + // Contains unescaped stylesheet content + ['lang-css', /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i], + ['lang-in.tag', /^(<\/?[a-z][^<>]*>)/i] + ]), + ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']); + registerLangHandler( + createSimpleLexer( + [ + [PR_PLAIN, /^[\s]+/, null, ' \t\r\n'], + [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\''] + ], + [ + [PR_TAG, /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i], + [PR_ATTRIB_NAME, /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i], + ['lang-uq.val', /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/], + [PR_PUNCTUATION, /^[=<>\/]+/], + ['lang-js', /^on\w+\s*=\s*\"([^\"]+)\"/i], + ['lang-js', /^on\w+\s*=\s*\'([^\']+)\'/i], + ['lang-js', /^on\w+\s*=\s*([^\"\'>\s]+)/i], + ['lang-css', /^style\s*=\s*\"([^\"]+)\"/i], + ['lang-css', /^style\s*=\s*\'([^\']+)\'/i], + ['lang-css', /^style\s*=\s*([^\"\'>\s]+)/i] + ]), + ['in.tag']); + registerLangHandler( + createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']); + registerLangHandler(sourceDecorator({ + 'keywords': CPP_KEYWORDS, + 'hashComments': true, + 'cStyleComments': true + }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']); + registerLangHandler(sourceDecorator({ + 'keywords': 'null true false' + }), ['json']); + registerLangHandler(sourceDecorator({ + 'keywords': CSHARP_KEYWORDS, + 'hashComments': true, + 'cStyleComments': true, + 'verbatimStrings': true + }), ['cs']); + registerLangHandler(sourceDecorator({ + 'keywords': JAVA_KEYWORDS, + 'cStyleComments': true + }), ['java']); + registerLangHandler(sourceDecorator({ + 'keywords': SH_KEYWORDS, + 'hashComments': true, + 'multiLineStrings': true + }), ['bsh', 'csh', 'sh']); + registerLangHandler(sourceDecorator({ + 'keywords': PYTHON_KEYWORDS, + 'hashComments': true, + 'multiLineStrings': true, + 'tripleQuotedStrings': true + }), ['cv', 'py']); + registerLangHandler(sourceDecorator({ + 'keywords': PERL_KEYWORDS, + 'hashComments': true, + 'multiLineStrings': true, + 'regexLiterals': true + }), ['perl', 'pl', 'pm']); + registerLangHandler(sourceDecorator({ + 'keywords': RUBY_KEYWORDS, + 'hashComments': true, + 'multiLineStrings': true, + 'regexLiterals': true + }), ['rb']); + registerLangHandler(sourceDecorator({ + 'keywords': JSCRIPT_KEYWORDS, + 'cStyleComments': true, + 'regexLiterals': true + }), ['js']); + registerLangHandler( + createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']); + + function applyDecorator(job) { + var sourceCodeHtml = job.sourceCodeHtml; + var opt_langExtension = job.langExtension; + + // Prepopulate output in case processing fails with an exception. + job.prettyPrintedHtml = sourceCodeHtml; + + try { + // Extract tags, and convert the source code to plain text. + var sourceAndExtractedTags = extractTags(sourceCodeHtml); + /** Plain text. @type {string} */ + var source = sourceAndExtractedTags.source; + job.source = source; + job.basePos = 0; + + /** Even entries are positions in source in ascending order. Odd entries + * are tags that were extracted at that position. + * @type {Array.<number|string>} + */ + job.extractedTags = sourceAndExtractedTags.tags; + + // Apply the appropriate language handler + langHandlerForExtension(opt_langExtension, source)(job); + // Integrate the decorations and tags back into the source code to produce + // a decorated html string which is left in job.prettyPrintedHtml. + recombineTagsAndDecorations(job); + } catch (e) { + if ('console' in window) { + console['log'](e && e['stack'] ? e['stack'] : e); + } + } + } + + function prettyPrintOne(sourceCodeHtml, opt_langExtension) { + var job = { + sourceCodeHtml: sourceCodeHtml, + langExtension: opt_langExtension + }; + applyDecorator(job); + return job.prettyPrintedHtml; + } + + function prettyPrint(opt_whenDone) { + function byTagName(tn) { return document.getElementsByTagName(tn); } + // fetch a list of nodes to rewrite + var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')]; + var elements = []; + for (var i = 0; i < codeSegments.length; ++i) { + for (var j = 0, n = codeSegments[i].length; j < n; ++j) { + elements.push(codeSegments[i][j]); + } + } + codeSegments = null; + + var clock = Date; + if (!clock['now']) { + clock = { 'now': function () { return (new Date).getTime(); } }; + } + + // The loop is broken into a series of continuations to make sure that we + // don't make the browser unresponsive when rewriting a large page. + var k = 0; + var prettyPrintingJob; + + function doWork() { + var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ? + clock.now() + 250 /* ms */ : + Infinity); + for (; k < elements.length && clock.now() < endTime; k++) { + var cs = elements[k]; + // [JACOCO] 'prettyprint' -> 'source' + if (cs.className && cs.className.indexOf('source') >= 0) { + // If the classes includes a language extensions, use it. + // Language extensions can be specified like + // <pre class="prettyprint lang-cpp"> + // the language extension "cpp" is used to find a language handler as + // passed to PR_registerLangHandler. + var langExtension = cs.className.match(/\blang-(\w+)\b/); + if (langExtension) { langExtension = langExtension[1]; } + + // make sure this is not nested in an already prettified element + var nested = false; + for (var p = cs.parentNode; p; p = p.parentNode) { + if ((p.tagName === 'pre' || p.tagName === 'code' || + p.tagName === 'xmp') && + // [JACOCO] 'prettyprint' -> 'source' + p.className && p.className.indexOf('source') >= 0) { + nested = true; + break; + } + } + if (!nested) { + // fetch the content as a snippet of properly escaped HTML. + // Firefox adds newlines at the end. + var content = getInnerHtml(cs); + content = content.replace(/(?:\r\n?|\n)$/, ''); + + // do the pretty printing + prettyPrintingJob = { + sourceCodeHtml: content, + langExtension: langExtension, + sourceNode: cs + }; + applyDecorator(prettyPrintingJob); + replaceWithPrettyPrintedHtml(); + } + } + } + if (k < elements.length) { + // finish up in a continuation + setTimeout(doWork, 250); + } else if (opt_whenDone) { + opt_whenDone(); + } + } + + function replaceWithPrettyPrintedHtml() { + var newContent = prettyPrintingJob.prettyPrintedHtml; + if (!newContent) { return; } + var cs = prettyPrintingJob.sourceNode; + + // push the prettified html back into the tag. + if (!isRawContent(cs)) { + // just replace the old html with the new + cs.innerHTML = newContent; + } else { + // we need to change the tag to a <pre> since <xmp>s do not allow + // embedded tags such as the span tags used to attach styles to + // sections of source code. + var pre = document.createElement('PRE'); + for (var i = 0; i < cs.attributes.length; ++i) { + var a = cs.attributes[i]; + if (a.specified) { + var aname = a.name.toLowerCase(); + if (aname === 'class') { + pre.className = a.value; // For IE 6 + } else { + pre.setAttribute(a.name, a.value); + } + } + } + pre.innerHTML = newContent; + + // remove the old + cs.parentNode.replaceChild(pre, cs); + cs = pre; + } + } + + doWork(); + } + + window['PR_normalizedHtml'] = normalizedHtml; + window['prettyPrintOne'] = prettyPrintOne; + window['prettyPrint'] = prettyPrint; + window['PR'] = { + 'combinePrefixPatterns': combinePrefixPatterns, + 'createSimpleLexer': createSimpleLexer, + 'registerLangHandler': registerLangHandler, + 'sourceDecorator': sourceDecorator, + 'PR_ATTRIB_NAME': PR_ATTRIB_NAME, + 'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE, + 'PR_COMMENT': PR_COMMENT, + 'PR_DECLARATION': PR_DECLARATION, + 'PR_KEYWORD': PR_KEYWORD, + 'PR_LITERAL': PR_LITERAL, + 'PR_NOCODE': PR_NOCODE, + 'PR_PLAIN': PR_PLAIN, + 'PR_PUNCTUATION': PR_PUNCTUATION, + 'PR_SOURCE': PR_SOURCE, + 'PR_STRING': PR_STRING, + 'PR_TAG': PR_TAG, + 'PR_TYPE': PR_TYPE + }; +})(); diff --git a/target/site/jacoco/jacoco-resources/redbar.gif b/target/site/jacoco/jacoco-resources/redbar.gif Binary files differnew file mode 100644 index 0000000..c2f7146 --- /dev/null +++ b/target/site/jacoco/jacoco-resources/redbar.gif diff --git a/target/site/jacoco/jacoco-resources/report.css b/target/site/jacoco/jacoco-resources/report.css new file mode 100644 index 0000000..dd936bc --- /dev/null +++ b/target/site/jacoco/jacoco-resources/report.css @@ -0,0 +1,243 @@ +body, td { + font-family:sans-serif; + font-size:10pt; +} + +h1 { + font-weight:bold; + font-size:18pt; +} + +.breadcrumb { + border:#d6d3ce 1px solid; + padding:2px 4px 2px 4px; +} + +.breadcrumb .info { + float:right; +} + +.breadcrumb .info a { + margin-left:8px; +} + +.el_report { + padding-left:18px; + background-image:url(report.gif); + background-position:left center; + background-repeat:no-repeat; +} + +.el_group { + padding-left:18px; + background-image:url(group.gif); + background-position:left center; + background-repeat:no-repeat; +} + +.el_bundle { + padding-left:18px; + background-image:url(bundle.gif); + background-position:left center; + background-repeat:no-repeat; +} + +.el_package { + padding-left:18px; + background-image:url(package.gif); + background-position:left center; + background-repeat:no-repeat; +} + +.el_class { + padding-left:18px; + background-image:url(class.gif); + background-position:left center; + background-repeat:no-repeat; +} + +.el_source { + padding-left:18px; + background-image:url(source.gif); + background-position:left center; + background-repeat:no-repeat; +} + +.el_method { + padding-left:18px; + background-image:url(method.gif); + background-position:left center; + background-repeat:no-repeat; +} + +.el_session { + padding-left:18px; + background-image:url(session.gif); + background-position:left center; + background-repeat:no-repeat; +} + +pre.source { + border:#d6d3ce 1px solid; + font-family:monospace; +} + +pre.source ol { + margin-bottom: 0px; + margin-top: 0px; +} + +pre.source li { + border-left: 1px solid #D6D3CE; + color: #A0A0A0; + padding-left: 0px; +} + +pre.source span.fc { + background-color:#ccffcc; +} + +pre.source span.nc { + background-color:#ffaaaa; +} + +pre.source span.pc { + background-color:#ffffcc; +} + +pre.source span.bfc { + background-image: url(branchfc.gif); + background-repeat: no-repeat; + background-position: 2px center; +} + +pre.source span.bfc:hover { + background-color:#80ff80; +} + +pre.source span.bnc { + background-image: url(branchnc.gif); + background-repeat: no-repeat; + background-position: 2px center; +} + +pre.source span.bnc:hover { + background-color:#ff8080; +} + +pre.source span.bpc { + background-image: url(branchpc.gif); + background-repeat: no-repeat; + background-position: 2px center; +} + +pre.source span.bpc:hover { + background-color:#ffff80; +} + +table.coverage { + empty-cells:show; + border-collapse:collapse; +} + +table.coverage thead { + background-color:#e0e0e0; +} + +table.coverage thead td { + white-space:nowrap; + padding:2px 14px 0px 6px; + border-bottom:#b0b0b0 1px solid; +} + +table.coverage thead td.bar { + border-left:#cccccc 1px solid; +} + +table.coverage thead td.ctr1 { + text-align:right; + border-left:#cccccc 1px solid; +} + +table.coverage thead td.ctr2 { + text-align:right; + padding-left:2px; +} + +table.coverage thead td.sortable { + cursor:pointer; + background-image:url(sort.gif); + background-position:right center; + background-repeat:no-repeat; +} + +table.coverage thead td.up { + background-image:url(up.gif); +} + +table.coverage thead td.down { + background-image:url(down.gif); +} + +table.coverage tbody td { + white-space:nowrap; + padding:2px 6px 2px 6px; + border-bottom:#d6d3ce 1px solid; +} + +table.coverage tbody tr:hover { + background: #f0f0d0 !important; +} + +table.coverage tbody td.bar { + border-left:#e8e8e8 1px solid; +} + +table.coverage tbody td.ctr1 { + text-align:right; + padding-right:14px; + border-left:#e8e8e8 1px solid; +} + +table.coverage tbody td.ctr2 { + text-align:right; + padding-right:14px; + padding-left:2px; +} + +table.coverage tfoot td { + white-space:nowrap; + padding:2px 6px 2px 6px; +} + +table.coverage tfoot td.bar { + border-left:#e8e8e8 1px solid; +} + +table.coverage tfoot td.ctr1 { + text-align:right; + padding-right:14px; + border-left:#e8e8e8 1px solid; +} + +table.coverage tfoot td.ctr2 { + text-align:right; + padding-right:14px; + padding-left:2px; +} + +.footer { + margin-top:20px; + border-top:#d6d3ce 1px solid; + padding-top:2px; + font-size:8pt; + color:#a0a0a0; +} + +.footer a { + color:#a0a0a0; +} + +.right { + float:right; +} diff --git a/target/site/jacoco/jacoco-resources/report.gif b/target/site/jacoco/jacoco-resources/report.gif Binary files differnew file mode 100644 index 0000000..8547be5 --- /dev/null +++ b/target/site/jacoco/jacoco-resources/report.gif diff --git a/target/site/jacoco/jacoco-resources/session.gif b/target/site/jacoco/jacoco-resources/session.gif Binary files differnew file mode 100644 index 0000000..0151bad --- /dev/null +++ b/target/site/jacoco/jacoco-resources/session.gif diff --git a/target/site/jacoco/jacoco-resources/sort.gif b/target/site/jacoco/jacoco-resources/sort.gif Binary files differnew file mode 100644 index 0000000..6757c2c --- /dev/null +++ b/target/site/jacoco/jacoco-resources/sort.gif diff --git a/target/site/jacoco/jacoco-resources/sort.js b/target/site/jacoco/jacoco-resources/sort.js new file mode 100644 index 0000000..e269fe3 --- /dev/null +++ b/target/site/jacoco/jacoco-resources/sort.js @@ -0,0 +1,148 @@ +/******************************************************************************* + * Copyright (c) 2009, 2018 Mountainminds GmbH & Co. KG and Contributors + * This program and the accompanying materials are made available under + * the terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Marc R. Hoffmann - initial API and implementation + * + *******************************************************************************/ + +(function () { + + /** + * Sets the initial sorting derived from the hash. + * + * @param linkelementids + * list of element ids to search for links to add sort inidcator + * hash links + */ + function initialSort(linkelementids) { + window.linkelementids = linkelementids; + var hash = window.location.hash; + if (hash) { + var m = hash.match(/up-./); + if (m) { + var header = window.document.getElementById(m[0].charAt(3)); + if (header) { + sortColumn(header, true); + } + return; + } + var m = hash.match(/dn-./); + if (m) { + var header = window.document.getElementById(m[0].charAt(3)); + if (header) { + sortColumn(header, false); + } + return + } + } + } + + /** + * Sorts the columns with the given header dependening on the current sort state. + */ + function toggleSort(header) { + var sortup = header.className.indexOf('down ') == 0; + sortColumn(header, sortup); + } + + /** + * Sorts the columns with the given header in the given direction. + */ + function sortColumn(header, sortup) { + var table = header.parentNode.parentNode.parentNode; + var body = table.tBodies[0]; + var colidx = getNodePosition(header); + + resetSortedStyle(table); + + var rows = body.rows; + var sortedrows = []; + for (var i = 0; i < rows.length; i++) { + r = rows[i]; + sortedrows[parseInt(r.childNodes[colidx].id.slice(1))] = r; + } + + var hash; + + if (sortup) { + for (var i = sortedrows.length - 1; i >= 0; i--) { + body.appendChild(sortedrows[i]); + } + header.className = 'up ' + header.className; + hash = 'up-' + header.id; + } else { + for (var i = 0; i < sortedrows.length; i++) { + body.appendChild(sortedrows[i]); + } + header.className = 'down ' + header.className; + hash = 'dn-' + header.id; + } + + setHash(hash); + } + + /** + * Adds the sort indicator as a hash to the document URL and all links. + */ + function setHash(hash) { + window.document.location.hash = hash; + ids = window.linkelementids; + for (var i = 0; i < ids.length; i++) { + setHashOnAllLinks(document.getElementById(ids[i]), hash); + } + } + + /** + * Extend all links within the given tag with the given hash. + */ + function setHashOnAllLinks(tag, hash) { + links = tag.getElementsByTagName("a"); + for (var i = 0; i < links.length; i++) { + var a = links[i]; + var href = a.href; + var hashpos = href.indexOf("#"); + if (hashpos != -1) { + href = href.substring(0, hashpos); + } + a.href = href + "#" + hash; + } + } + + /** + * Calculates the position of a element within its parent. + */ + function getNodePosition(element) { + var pos = -1; + while (element) { + element = element.previousSibling; + pos++; + } + return pos; + } + + /** + * Remove the sorting indicator style from all headers. + */ + function resetSortedStyle(table) { + for (var c = table.tHead.firstChild.firstChild; c; c = c.nextSibling) { + if (c.className) { + if (c.className.indexOf('down ') == 0) { + c.className = c.className.slice(5); + } + if (c.className.indexOf('up ') == 0) { + c.className = c.className.slice(3); + } + } + } + } + + window['initialSort'] = initialSort; + window['toggleSort'] = toggleSort; + +})(); diff --git a/target/site/jacoco/jacoco-resources/source.gif b/target/site/jacoco/jacoco-resources/source.gif Binary files differnew file mode 100644 index 0000000..b226e41 --- /dev/null +++ b/target/site/jacoco/jacoco-resources/source.gif diff --git a/target/site/jacoco/jacoco-resources/up.gif b/target/site/jacoco/jacoco-resources/up.gif Binary files differnew file mode 100644 index 0000000..58ed216 --- /dev/null +++ b/target/site/jacoco/jacoco-resources/up.gif diff --git a/target/site/jacoco/jacoco-sessions.html b/target/site/jacoco/jacoco-sessions.html new file mode 100644 index 0000000..478feda --- /dev/null +++ b/target/site/jacoco/jacoco-sessions.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="jacoco-resources/report.gif" type="image/gif"/><title>Sessions</title></head><body><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="jacoco-sessions.html" class="el_session">Sessions</a></span><a href="index.html" class="el_report">spoteezer</a> > <span class="el_session">Sessions</span></div><h1>Sessions</h1><p>This coverage report is based on execution data from the following sessions:</p><table class="coverage" cellspacing="0"><thead><tr><td>Session</td><td>Start Time</td><td>Dump Time</td></tr></thead><tbody><tr><td><span class="el_session">DESKTOP-M4INQND-e57e2e00</span></td><td>26 juin 2021, 14:29:08</td><td>26 juin 2021, 14:29:09</td></tr><tr><td><span class="el_session">DESKTOP-M4INQND-3e358c1a</span></td><td>26 juin 2021, 14:29:30</td><td>26 juin 2021, 14:29:30</td></tr><tr><td><span class="el_session">DESKTOP-M4INQND-56f46767</span></td><td>26 juin 2021, 14:29:49</td><td>26 juin 2021, 14:29:49</td></tr><tr><td><span class="el_session">DESKTOP-M4INQND-e88c304d</span></td><td>26 juin 2021, 14:30:30</td><td>26 juin 2021, 14:30:30</td></tr><tr><td><span class="el_session">DESKTOP-M4INQND-20d8781c</span></td><td>26 juin 2021, 14:30:42</td><td>26 juin 2021, 14:30:43</td></tr><tr><td><span class="el_session">DESKTOP-M4INQND-442c10a6</span></td><td>26 juin 2021, 14:30:53</td><td>26 juin 2021, 14:30:53</td></tr></tbody></table><p>Execution data for the following classes is considered in this report:</p><table class="coverage" cellspacing="0"><thead><tr><td>Class</td><td>Id</td></tr></thead><tbody><tr><td><a href="musichub.business/PathValidation.html" class="el_class">musichub.business.PathValidation</a></td><td><code>23fa11bc9f27a597</code></td></tr><tr><td><span class="el_class">musichub.business.PathValidationTest</span></td><td><code>c2c5ebe52507fc9e</code></td></tr><tr><td><span class="el_class">musichub.business.PathValidationTest</span></td><td><code>325f5b44374bcaeb</code></td></tr><tr><td><span class="el_class">musichub.business.PathValidationTest</span></td><td><code>4c7ade2bf38c6e74</code></td></tr><tr><td><span class="el_class">musichub.business.PathValidationTest</span></td><td><code>192d10ac364dc41c</code></td></tr><tr><td><span class="el_class">org.apache.maven.plugin.surefire.log.api.NullConsoleLogger</span></td><td><code>80d79e52a7499259</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.AbstractPathConfiguration</span></td><td><code>8182fa1396653f01</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.BaseProviderFactory</span></td><td><code>82593383b8ea92d6</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.BiProperty</span></td><td><code>4945e268841ae2cb</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.BooterDeserializer</span></td><td><code>5e68b147d2c4b22f</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ClassLoaderConfiguration</span></td><td><code>dc8fd5c18ebb0e44</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.Classpath</span></td><td><code>6f6b6469b9fdf4dd</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ClasspathConfiguration</span></td><td><code>4c7a5282c74ba3e2</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.Command</span></td><td><code>eb1b53eb8cbe7b47</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.CommandReader</span></td><td><code>0c8d3ca700ec7199</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.CommandReader.1</span></td><td><code>fbfebde20e2b504c</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.CommandReader.CommandRunnable</span></td><td><code>ee59ae4d74408619</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.DumpErrorSingleton</span></td><td><code>a3fa02cb87e0e12b</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter</span></td><td><code>a5c33895f0d22838</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.1</span></td><td><code>c87487d278c3ea96</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.2</span></td><td><code>31c66931520df8eb</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.3</span></td><td><code>95d48141fa4dd03d</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.4</span></td><td><code>24dcd1c5bcf0d850</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.5</span></td><td><code>862846325c16cf76</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.6</span></td><td><code>b3ab24d3791d84dd</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.7</span></td><td><code>401437f62a3b16ff</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.PingScheduler</span></td><td><code>04bf02021dfc5e9c</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkingReporterFactory</span></td><td><code>076a6c0176f6238b</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkingRunListener</span></td><td><code>92d4b034b32ca2c0</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.MasterProcessCommand</span></td><td><code>da65de332c2de19d</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.PpidChecker</span></td><td><code>71b8c658da2ea8d3</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.PpidChecker.2</span></td><td><code>68d262a2c2ad8f14</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.PpidChecker.ProcessInfoConsumer</span></td><td><code>73f319c21fab7e7f</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ProcessInfo</span></td><td><code>b5b56cd86f3f0b31</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.PropertiesWrapper</span></td><td><code>ae4bf137cc5290c1</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ProviderConfiguration</span></td><td><code>d19986536a351b50</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.Shutdown</span></td><td><code>ee9c65017e107986</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.StartupConfiguration</span></td><td><code>a8cc10b01ed27439</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.SystemPropertyManager</span></td><td><code>f47497b1dde50d64</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.TypeEncodedValue</span></td><td><code>5ea9766678ac06a2</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.cli.CommandLineOption</span></td><td><code>467fc7f51b73863b</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.JUnitPlatformProvider</span></td><td><code>89b934b90ec6eb01</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.RunListenerAdapter</span></td><td><code>02cb8e87a6db2057</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.TestPlanScannerFilter</span></td><td><code>622558f718a42827</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.org.apache.maven.shared.utils.StringUtils</span></td><td><code>336ef03300f29635</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.providerapi.AbstractProvider</span></td><td><code>90f3b08fe8a1c87c</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.report.ClassNameStackTraceFilter</span></td><td><code>2e0e75f8104a222a</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.report.ConsoleOutputCapture</span></td><td><code>b8ae904ed8536017</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.report.ConsoleOutputCapture.ForwardingPrintStream</span></td><td><code>f912ea5d2dac308e</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.report.ConsoleOutputCapture.NullOutputStream</span></td><td><code>8d05eb67510fd586</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.report.PojoStackTraceWriter</span></td><td><code>cdfe959904c6726b</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.report.ReporterConfiguration</span></td><td><code>4281487891f02f69</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.report.SafeThrowable</span></td><td><code>e61429531d0f0c1c</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.report.SimpleReportEntry</span></td><td><code>ced572f24a462295</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.report.SmartStackTraceParser</span></td><td><code>05e423188a7bbb31</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shade.org.apache.commons.io.IOUtils</span></td><td><code>31aed2fcfab3e082</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shade.org.apache.commons.io.output.StringBuilderWriter</span></td><td><code>6d33fec8cb3374c0</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shade.org.apache.commons.lang3.JavaVersion</span></td><td><code>a8452005cb20bb7d</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shade.org.apache.commons.lang3.StringUtils</span></td><td><code>4f785afa8bb3a23f</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shade.org.apache.commons.lang3.SystemUtils</span></td><td><code>aba69a973b7ba06a</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shade.org.apache.commons.lang3.math.NumberUtils</span></td><td><code>d0156407bff7b695</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shade.org.apache.maven.shared.utils.StringUtils</span></td><td><code>483d14212b21a3ea</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.suite.RunResult</span></td><td><code>f5c7c53a954bcafa</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.DirectoryScannerParameters</span></td><td><code>2b5eeacae469cd1d</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.IncludedExcludedPatterns</span></td><td><code>f39908e3b64d7090</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.ResolvedTest</span></td><td><code>a598483e424232d4</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.ResolvedTest.ClassMatcher</span></td><td><code>79be7f2fa77ad8d7</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.ResolvedTest.MethodMatcher</span></td><td><code>7c71374a51e8e61b</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.ResolvedTest.Type</span></td><td><code>90e4214668937845</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.RunOrderParameters</span></td><td><code>b4c06223c3099700</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.TestArtifactInfo</span></td><td><code>f703953620e80b33</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.TestListResolver</span></td><td><code>7d372c99b98a147d</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.TestRequest</span></td><td><code>0fa2c0cc34345df2</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.CloseableIterator</span></td><td><code>cc15bdebae86d5d2</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.DefaultRunOrderCalculator</span></td><td><code>1aeecbcd3bf6e89b</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.DefaultScanResult</span></td><td><code>7fefafdf8c793c36</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.ReflectionUtils</span></td><td><code>8d5f4b05d6d77207</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.RunOrder</span></td><td><code>d2292a6beb4b6337</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.TestsToRun</span></td><td><code>a95363e4b4ba2069</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.TestsToRun.ClassesIterator</span></td><td><code>84a139c598502c0b</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.internal.DaemonThreadFactory</span></td><td><code>21a589f6dedb169c</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.internal.DaemonThreadFactory.NamedThreadFactory</span></td><td><code>682458ca85b067a3</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.internal.DumpFileUtils</span></td><td><code>fff19f49be3d8149</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.internal.ImmutableMap</span></td><td><code>72bcae5e55b4fabb</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.internal.ObjectUtils</span></td><td><code>69a2a92649b44645</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.internal.StringUtils</span></td><td><code>3a7e4daf0a993e1e</code></td></tr><tr><td><span class="el_class">org.apiguardian.api.API.Status</span></td><td><code>0341e8d99fc36573</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertEquals</span></td><td><code>12bfbbf2e4327e63</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertFalse</span></td><td><code>32fea5a28fb6a114</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertTrue</span></td><td><code>612f68f7274dd69c</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertionUtils</span></td><td><code>da37ffd9f98016fd</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.Assertions</span></td><td><code>041279bcf2826fff</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.TestInstance.Lifecycle</span></td><td><code>0e93858cc703e9fc</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.ConditionEvaluationResult</span></td><td><code>2f9dc9ea54b57975</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.ExtensionContext</span></td><td><code>222e1fc44c4844aa</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.DiscoveryFilterApplier</span></td><td><code>ae96a3ff3c2e2bc4</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.JupiterTestEngine</span></td><td><code>c74f725c8cb223be</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.AbstractExtensionContext</span></td><td><code>1f7ed0b87a9f2cca</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ClassExtensionContext</span></td><td><code>b85422abe06bbadd</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ClassTestDescriptor</span></td><td><code>61a635a4acc3ee31</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.JupiterEngineDescriptor</span></td><td><code>d025635c09450d0d</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.JupiterEngineExtensionContext</span></td><td><code>7ae853fe3a80d83c</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.JupiterTestDescriptor</span></td><td><code>606e5ec97816bda5</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.LifecycleMethodUtils</span></td><td><code>19c9fba5accef0fa</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor</span></td><td><code>65654838f58d8b44</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.MethodExtensionContext</span></td><td><code>c098f6d0bb344d56</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.TestInstanceLifecycleUtils</span></td><td><code>c42bb138e6a06252</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor</span></td><td><code>54eb6a19bd953962</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.AbstractMethodResolver</span></td><td><code>3934f16bf877b9f5</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.DiscoverySelectorResolver</span></td><td><code>a858789f976fefbc</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.JavaElementsResolver</span></td><td><code>32e9ea682e77049d</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodFinder</span></td><td><code>5ea468d2eb528361</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.NestedTestsResolver</span></td><td><code>9d92451ae793af41</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.TestContainerResolver</span></td><td><code>7db010f5e9c7301d</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.TestFactoryMethodResolver</span></td><td><code>59fd27320e375440</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.TestMethodResolver</span></td><td><code>1417c6356fa4b27f</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.TestTemplateMethodResolver</span></td><td><code>47563eb55cd35171</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsInnerClass</span></td><td><code>f7d9846d00228720</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsNestedTestClass</span></td><td><code>e47ff7cd33073803</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsPotentialTestContainer</span></td><td><code>0f8df015b2d5841a</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsScannableTestClass</span></td><td><code>839db992754219f6</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestClassWithTests</span></td><td><code>5ab134cc6ef3a81f</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestFactoryMethod</span></td><td><code>a2c68978bd6bfbc6</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestMethod</span></td><td><code>8b244977e441886e</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestTemplateMethod</span></td><td><code>0baf1066bf0cbad7</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestableMethod</span></td><td><code>59a0b58a40803fe2</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ConditionEvaluator</span></td><td><code>fba35d945644501d</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ExecutableInvoker</span></td><td><code>d64b9ef7a154ea95</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ExtensionValuesStore</span></td><td><code>2517eb7835ca6234</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.JupiterEngineExecutionContext</span></td><td><code>65be276e3a954a94</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.JupiterEngineExecutionContext.Builder</span></td><td><code>dd69537274ccbffc</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.JupiterEngineExecutionContext.State</span></td><td><code>38616672a2502408</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ThrowableCollector</span></td><td><code>92102b13561afdcf</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.DisabledCondition</span></td><td><code>a967493a244329fa</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.ExtensionRegistry</span></td><td><code>20b847fc63fd255b</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.RepeatedTestExtension</span></td><td><code>1b7914cc8cf83732</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TestInfoParameterResolver</span></td><td><code>1b5b370a56807cae</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TestReporterParameterResolver</span></td><td><code>839c7c31b3ec6390</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.logging.LoggerFactory</span></td><td><code>ca4e1a8773fb9bed</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.logging.LoggerFactory.DelegatingLogger</span></td><td><code>fd74fe2bb4edddd0</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.AnnotationUtils</span></td><td><code>32499b01efc144e8</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.AnnotationUtils.AnnotationCacheKey</span></td><td><code>f04082259bc4a6ab</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.BlacklistedExceptions</span></td><td><code>73365157bacc50af</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClassLoaderUtils</span></td><td><code>ebded5f4ecebd9d8</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClassUtils</span></td><td><code>4982a89773933a90</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClasspathScanner</span></td><td><code>8425ab535628f6b9</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.CollectionUtils</span></td><td><code>59532d0e14166bc8</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ExceptionUtils</span></td><td><code>0125033b30a9585f</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.Preconditions</span></td><td><code>f9207dc44e9d043d</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ReflectionUtils</span></td><td><code>4d39f1033ae8eb12</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ReflectionUtils.HierarchyTraversalMode</span></td><td><code>b267f8ac562d551e</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.StringUtils</span></td><td><code>3441f99393e2406b</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.CompositeFilter</span></td><td><code>d9d6482243cc9fa3</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.CompositeFilter.1</span></td><td><code>75dffc26c0811b9d</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.ExecutionRequest</span></td><td><code>ed3835cc21e5a048</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.Filter</span></td><td><code>f932423ccd3b54bf</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.FilterResult</span></td><td><code>bf731bc7f64ce694</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestDescriptor</span></td><td><code>e9574ca206cded64</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestDescriptor.Type</span></td><td><code>eb97fc5a29f3ee3a</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestExecutionResult</span></td><td><code>abbab174d32db912</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestExecutionResult.Status</span></td><td><code>da0473a55d05e891</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.UniqueId</span></td><td><code>d23a178963e86ca7</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.UniqueId.Segment</span></td><td><code>54a2765f04c8cab7</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.UniqueIdFormat</span></td><td><code>c860ade4b928ce32</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.discovery.ClassSelector</span></td><td><code>228aa96d72021db2</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.discovery.DiscoverySelectors</span></td><td><code>8fefc6f1651cc3bd</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.AbstractTestDescriptor</span></td><td><code>2bfbf25c43491443</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.ClassSource</span></td><td><code>9727c5551a632c40</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.EngineDescriptor</span></td><td><code>b7dbf6dfb794516c</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.MethodSource</span></td><td><code>0a1b0f0f95f17b77</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.filter.ClasspathScanningSupport</span></td><td><code>8223a02c2b9d8c89</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.ExecutionTracker</span></td><td><code>cbd37bfd76595d62</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine</span></td><td><code>410766a2a07e44b1</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor</span></td><td><code>7b43a475463d740e</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.1</span></td><td><code>197b854565198af0</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.Node</span></td><td><code>8a5379bd364a5bf6</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.Node.SkipResult</span></td><td><code>d4551dfb7a813206</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.SingleTestExecutor</span></td><td><code>d75bd01628eef7be</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.TestIdentifier</span></td><td><code>225bb434f8f223e2</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.TestPlan</span></td><td><code>9a2b71b572924cbc</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultDiscoveryRequest</span></td><td><code>7dda3ad9a0e6a666</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultLauncher</span></td><td><code>1a1f88af87dc6ec1</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ExecutionListenerAdapter</span></td><td><code>52cf3c3c69d4dfba</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters</span></td><td><code>ef55cacb5e47a902</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder</span></td><td><code>e78a71b91c159e69</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherFactory</span></td><td><code>e2bd67b8a72737b5</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.Root</span></td><td><code>32394ca895f9fb9a</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ServiceLoaderTestEngineRegistry</span></td><td><code>7c054c4cf76cb0f6</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ServiceLoaderTestExecutionListenerRegistry</span></td><td><code>2299bac1075a6bf3</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.TestExecutionListenerRegistry</span></td><td><code>190f4fb2b0ab865d</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.TestExecutionListenerRegistry.CompositeTestExecutionListener</span></td><td><code>7538d2d860e1f9cb</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.LegacyReportingUtils</span></td><td><code>f3c021e100a54063</code></td></tr><tr><td><span class="el_class">org.opentest4j.AssertionFailedError</span></td><td><code>2c5f69ceb24e9128</code></td></tr><tr><td><span class="el_class">org.opentest4j.ValueWrapper</span></td><td><code>7d0d1c90c1c4c4b3</code></td></tr><tr><td><span class="el_class">sun.text.resources.cldr.ext.FormatData_fr</span></td><td><code>cfe4ef8ff7428512</code></td></tr><tr><td><span class="el_class">sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo</span></td><td><code>888d0e6a76acb845</code></td></tr><tr><td><span class="el_class">sun.util.resources.provider.LocaleDataProvider</span></td><td><code>36ca29d59ab35e5c</code></td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/jacoco.csv b/target/site/jacoco/jacoco.csv new file mode 100644 index 0000000..9aff09d --- /dev/null +++ b/target/site/jacoco/jacoco.csv @@ -0,0 +1,19 @@ +GROUP,PACKAGE,CLASS,INSTRUCTION_MISSED,INSTRUCTION_COVERED,BRANCH_MISSED,BRANCH_COVERED,LINE_MISSED,LINE_COVERED,COMPLEXITY_MISSED,COMPLEXITY_COVERED,METHOD_MISSED,METHOD_COVERED +spoteezer,musichub.util,XMLHandler,72,0,0,0,25,0,4,0,4,0 +spoteezer,musichub.business,Album,330,0,14,0,84,0,16,0,9,0 +spoteezer,musichub.business,PathValidation,0,17,0,0,0,4,0,2,0,2 +spoteezer,musichub.business,SortByAuthor,9,0,0,0,2,0,2,0,2,0 +spoteezer,musichub.business,NoAlbumFoundException,4,0,0,0,2,0,1,0,1,0 +spoteezer,musichub.business,Language,49,0,0,0,6,0,3,0,3,0 +spoteezer,musichub.business,SortByDate,9,0,0,0,2,0,2,0,2,0 +spoteezer,musichub.business,MusicHub,803,0,114,0,195,0,79,0,22,0 +spoteezer,musichub.business,Category,49,0,0,0,6,0,3,0,3,0 +spoteezer,musichub.business,Song,105,0,6,0,26,0,12,0,7,0 +spoteezer,musichub.business,NoPlayListFoundException,4,0,0,0,2,0,1,0,1,0 +spoteezer,musichub.business,PlayList,202,0,14,0,53,0,14,0,7,0 +spoteezer,musichub.business,AudioBook,164,0,10,0,39,0,17,0,9,0 +spoteezer,musichub.business,SortByGenre,9,0,0,0,2,0,2,0,2,0 +spoteezer,musichub.business,NoElementFoundException,4,0,0,0,2,0,1,0,1,0 +spoteezer,musichub.business,Genre,56,0,0,0,6,0,3,0,3,0 +spoteezer,musichub.business,AudioElement,266,0,11,0,72,0,16,0,9,0 +spoteezer,musichub.main,Main,588,0,40,0,199,0,29,0,3,0 diff --git a/target/site/jacoco/jacoco.xml b/target/site/jacoco/jacoco.xml new file mode 100644 index 0000000..5a939ee --- /dev/null +++ b/target/site/jacoco/jacoco.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?><!DOCTYPE report PUBLIC "-//JACOCO//DTD Report 1.1//EN" "report.dtd"><report name="spoteezer"><sessioninfo id="DESKTOP-M4INQND-e57e2e00" start="1624710548706" dump="1624710549076"/><sessioninfo id="DESKTOP-M4INQND-3e358c1a" start="1624710570201" dump="1624710570575"/><sessioninfo id="DESKTOP-M4INQND-56f46767" start="1624710589444" dump="1624710589830"/><sessioninfo id="DESKTOP-M4INQND-e88c304d" start="1624710630581" dump="1624710630973"/><sessioninfo id="DESKTOP-M4INQND-20d8781c" start="1624710642738" dump="1624710643144"/><sessioninfo id="DESKTOP-M4INQND-442c10a6" start="1624710653198" dump="1624710653579"/><package name="musichub/util"><class name="musichub/util/XMLHandler" sourcefilename="XMLHandler.java"><method name="<init>" desc="()V" line="26"><counter type="INSTRUCTION" missed="23" covered="0"/><counter type="LINE" missed="9" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="createXMLFile" desc="(Lorg/w3c/dom/Document;Ljava/lang/String;)V" line="41"><counter type="INSTRUCTION" missed="23" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="createXMLDocument" desc="()Lorg/w3c/dom/Document;" line="57"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="parseXMLFile" desc="(Ljava/lang/String;)Lorg/w3c/dom/NodeList;" line="61"><counter type="INSTRUCTION" missed="22" covered="0"/><counter type="LINE" missed="8" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="72" covered="0"/><counter type="LINE" missed="25" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="4" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><sourcefile name="XMLHandler.java"><line nr="26" mi="2" ci="0" mb="0" cb="0"/><line nr="28" mi="3" ci="0" mb="0" cb="0"/><line nr="29" mi="5" ci="0" mb="0" cb="0"/><line nr="30" mi="3" ci="0" mb="0" cb="0"/><line nr="31" mi="5" ci="0" mb="0" cb="0"/><line nr="32" mi="1" ci="0" mb="0" cb="0"/><line nr="33" mi="2" ci="0" mb="0" cb="0"/><line nr="34" mi="1" ci="0" mb="0" cb="0"/><line nr="35" mi="1" ci="0" mb="0" cb="0"/><line nr="41" mi="5" ci="0" mb="0" cb="0"/><line nr="42" mi="8" ci="0" mb="0" cb="0"/><line nr="49" mi="5" ci="0" mb="0" cb="0"/><line nr="51" mi="1" ci="0" mb="0" cb="0"/><line nr="52" mi="2" ci="0" mb="0" cb="0"/><line nr="53" mi="1" ci="0" mb="0" cb="0"/><line nr="54" mi="1" ci="0" mb="0" cb="0"/><line nr="57" mi="4" ci="0" mb="0" cb="0"/><line nr="61" mi="2" ci="0" mb="0" cb="0"/><line nr="63" mi="8" ci="0" mb="0" cb="0"/><line nr="64" mi="3" ci="0" mb="0" cb="0"/><line nr="66" mi="3" ci="0" mb="0" cb="0"/><line nr="67" mi="1" ci="0" mb="0" cb="0"/><line nr="68" mi="2" ci="0" mb="0" cb="0"/><line nr="69" mi="1" ci="0" mb="0" cb="0"/><line nr="70" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="72" covered="0"/><counter type="LINE" missed="25" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="4" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="72" covered="0"/><counter type="LINE" missed="25" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="4" covered="0"/><counter type="CLASS" missed="1" covered="0"/></package><package name="musichub/business"><class name="musichub/business/Album" sourcefilename="Album.java"><method name="<init>" desc="(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;)V" line="21"><counter type="INSTRUCTION" missed="33" covered="0"/><counter type="LINE" missed="12" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="<init>" desc="(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V" line="35"><counter type="INSTRUCTION" missed="34" covered="0"/><counter type="LINE" missed="12" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="<init>" desc="(Lorg/w3c/dom/Element;)V" line="49"><counter type="INSTRUCTION" missed="112" covered="0"/><counter type="BRANCH" missed="12" covered="0"/><counter type="LINE" missed="26" covered="0"/><counter type="COMPLEXITY" missed="7" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="addSong" desc="(Ljava/util/UUID;)V" line="89"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getSongs" desc="()Ljava/util/List;" line="94"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getSongsRandomly" desc="()Ljava/util/ArrayList;" line="98"><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getTitle" desc="()Ljava/lang/String;" line="104"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getDate" desc="()Ljava/util/Date;" line="108"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="createXMLElement" desc="(Lorg/w3c/dom/Document;Lorg/w3c/dom/Element;)V" line="112"><counter type="INSTRUCTION" missed="129" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="26" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="330" covered="0"/><counter type="BRANCH" missed="14" covered="0"/><counter type="LINE" missed="84" covered="0"/><counter type="COMPLEXITY" missed="16" covered="0"/><counter type="METHOD" missed="9" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="musichub/business/PathValidation" sourcefilename="PathValidation.java"><method name="<init>" desc="()V" line="22"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="isPathValid" desc="(Ljava/lang/String;)Z" line="34"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="musichub/business/SortByAuthor" sourcefilename="MusicHub.java"><method name="<init>" desc="()V" line="27"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="compare" desc="(Lmusichub/business/AudioElement;Lmusichub/business/AudioElement;)I" line="29"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="musichub/business/NoAlbumFoundException" sourcefilename="NoAlbumFoundException.java"><method name="<init>" desc="(Ljava/lang/String;)V" line="6"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="musichub/business/Language" sourcefilename="Language.java"><method name="<init>" desc="(Ljava/lang/String;ILjava/lang/String;)V" line="7"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getLanguage" desc="()Ljava/lang/String;" line="12"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="<clinit>" desc="()V" line="3"><counter type="INSTRUCTION" missed="38" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="49" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="3" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="musichub/business/SortByDate" sourcefilename="MusicHub.java"><method name="<init>" desc="()V" line="15"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="compare" desc="(Lmusichub/business/Album;Lmusichub/business/Album;)I" line="17"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="musichub/business/MusicHub" sourcefilename="MusicHub.java"><method name="<init>" desc="()V" line="41"><counter type="INSTRUCTION" missed="29" covered="0"/><counter type="LINE" missed="9" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="addElement" desc="(Lmusichub/business/AudioElement;)V" line="53"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="addAlbum" desc="(Lmusichub/business/Album;)V" line="57"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="addPlaylist" desc="(Lmusichub/business/PlayList;)V" line="61"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="deletePlayList" desc="(Ljava/lang/String;)V" line="66"><counter type="INSTRUCTION" missed="40" covered="0"/><counter type="BRANCH" missed="8" covered="0"/><counter type="LINE" missed="11" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="albums" desc="()Ljava/util/Iterator;" line="81"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="playlists" desc="()Ljava/util/Iterator;" line="85"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="elements" desc="()Ljava/util/Iterator;" line="89"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getAlbumsTitlesSortedByDate" desc="()Ljava/lang/String;" line="93"><counter type="INSTRUCTION" missed="32" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getAudiobooksTitlesSortedByAuthor" desc="()Ljava/lang/String;" line="101"><counter type="INSTRUCTION" missed="53" covered="0"/><counter type="BRANCH" missed="6" covered="0"/><counter type="LINE" missed="9" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getAlbumSongs" desc="(Ljava/lang/String;)Ljava/util/List;" line="113"><counter type="INSTRUCTION" missed="73" covered="0"/><counter type="BRANCH" missed="14" covered="0"/><counter type="LINE" missed="15" covered="0"/><counter type="COMPLEXITY" missed="8" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getAlbumSongsSortedByGenre" desc="(Ljava/lang/String;)Ljava/util/List;" line="135"><counter type="INSTRUCTION" missed="79" covered="0"/><counter type="BRANCH" missed="14" covered="0"/><counter type="LINE" missed="16" covered="0"/><counter type="COMPLEXITY" missed="8" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="addElementToAlbum" desc="(Ljava/lang/String;Ljava/lang/String;)V" line="158"><counter type="INSTRUCTION" missed="82" covered="0"/><counter type="BRANCH" missed="12" covered="0"/><counter type="LINE" missed="20" covered="0"/><counter type="COMPLEXITY" missed="7" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="addElementToPlayList" desc="(Ljava/lang/String;Ljava/lang/String;)V" line="187"><counter type="INSTRUCTION" missed="82" covered="0"/><counter type="BRANCH" missed="12" covered="0"/><counter type="LINE" missed="20" covered="0"/><counter type="COMPLEXITY" missed="7" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="loadAlbums" desc="()V" line="218"><counter type="INSTRUCTION" missed="44" covered="0"/><counter type="BRANCH" missed="8" covered="0"/><counter type="LINE" missed="11" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="loadPlaylists" desc="()V" line="236"><counter type="INSTRUCTION" missed="44" covered="0"/><counter type="BRANCH" missed="8" covered="0"/><counter type="LINE" missed="11" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="loadElements" desc="()V" line="254"><counter type="INSTRUCTION" missed="64" covered="0"/><counter type="BRANCH" missed="10" covered="0"/><counter type="LINE" missed="18" covered="0"/><counter type="COMPLEXITY" missed="6" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="saveAlbums" desc="()V" line="282"><counter type="INSTRUCTION" missed="36" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="10" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="savePlayLists" desc="()V" line="298"><counter type="INSTRUCTION" missed="36" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="10" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="saveElements" desc="()V" line="314"><counter type="INSTRUCTION" missed="47" covered="0"/><counter type="BRANCH" missed="8" covered="0"/><counter type="LINE" missed="12" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getAudioElement" desc="(Ljava/util/List;Ljava/lang/String;)V" line="335"><counter type="INSTRUCTION" missed="19" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="<clinit>" desc="()V" line="34"><counter type="INSTRUCTION" missed="13" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="803" covered="0"/><counter type="BRANCH" missed="114" covered="0"/><counter type="LINE" missed="195" covered="0"/><counter type="COMPLEXITY" missed="79" covered="0"/><counter type="METHOD" missed="22" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="musichub/business/Category" sourcefilename="Category.java"><method name="<init>" desc="(Ljava/lang/String;ILjava/lang/String;)V" line="7"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getCategory" desc="()Ljava/lang/String;" line="12"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="<clinit>" desc="()V" line="3"><counter type="INSTRUCTION" missed="38" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="49" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="3" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="musichub/business/Song" sourcefilename="Song.java"><method name="<init>" desc="(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" line="11"><counter type="INSTRUCTION" missed="11" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="<init>" desc="(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V" line="16"><counter type="INSTRUCTION" missed="10" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="<init>" desc="(Lorg/w3c/dom/Element;)V" line="21"><counter type="INSTRUCTION" missed="12" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getGenre" desc="()Ljava/lang/String;" line="26"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setGenre" desc="(Ljava/lang/String;)V" line="30"><counter type="INSTRUCTION" missed="33" covered="0"/><counter type="BRANCH" missed="6" covered="0"/><counter type="LINE" missed="8" covered="0"/><counter type="COMPLEXITY" missed="6" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="toString" desc="()Ljava/lang/String;" line="41"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="createXMLElement" desc="(Lorg/w3c/dom/Document;Lorg/w3c/dom/Element;)V" line="46"><counter type="INSTRUCTION" missed="29" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="105" covered="0"/><counter type="BRANCH" missed="6" covered="0"/><counter type="LINE" missed="26" covered="0"/><counter type="COMPLEXITY" missed="12" covered="0"/><counter type="METHOD" missed="7" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="musichub/business/NoPlayListFoundException" sourcefilename="NoPlayListFoundException.java"><method name="<init>" desc="(Ljava/lang/String;)V" line="6"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="musichub/business/PlayList" sourcefilename="PlayList.java"><method name="<init>" desc="(Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;)V" line="16"><counter type="INSTRUCTION" missed="13" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="<init>" desc="(Ljava/lang/String;)V" line="22"><counter type="INSTRUCTION" missed="14" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="<init>" desc="(Lorg/w3c/dom/Element;)V" line="28"><counter type="INSTRUCTION" missed="88" covered="0"/><counter type="BRANCH" missed="12" covered="0"/><counter type="LINE" missed="23" covered="0"/><counter type="COMPLEXITY" missed="7" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="addElement" desc="(Ljava/util/UUID;)V" line="66"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getElements" desc="()Ljava/util/ArrayList;" line="70"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getTitle" desc="()Ljava/lang/String;" line="74"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="createXMLElement" desc="(Lorg/w3c/dom/Document;Lorg/w3c/dom/Element;)V" line="78"><counter type="INSTRUCTION" missed="75" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="16" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="202" covered="0"/><counter type="BRANCH" missed="14" covered="0"/><counter type="LINE" missed="53" covered="0"/><counter type="COMPLEXITY" missed="14" covered="0"/><counter type="METHOD" missed="7" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="musichub/business/AudioBook" sourcefilename="AudioBook.java"><method name="<init>" desc="(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" line="11"><counter type="INSTRUCTION" missed="14" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="<init>" desc="(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" line="17"><counter type="INSTRUCTION" missed="13" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="<init>" desc="(Lorg/w3c/dom/Element;)V" line="23"><counter type="INSTRUCTION" missed="20" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getLanguage" desc="()Lmusichub/business/Language;" line="29"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setLanguage" desc="(Ljava/lang/String;)V" line="33"><counter type="INSTRUCTION" missed="29" covered="0"/><counter type="BRANCH" missed="5" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getCategory" desc="()Lmusichub/business/Category;" line="43"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setCategory" desc="(Ljava/lang/String;)V" line="47"><counter type="INSTRUCTION" missed="29" covered="0"/><counter type="BRANCH" missed="5" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="toString" desc="()Ljava/lang/String;" line="58"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="createXMLElement" desc="(Lorg/w3c/dom/Document;Lorg/w3c/dom/Element;)V" line="64"><counter type="INSTRUCTION" missed="45" covered="0"/><counter type="LINE" missed="10" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="164" covered="0"/><counter type="BRANCH" missed="10" covered="0"/><counter type="LINE" missed="39" covered="0"/><counter type="COMPLEXITY" missed="17" covered="0"/><counter type="METHOD" missed="9" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="musichub/business/SortByGenre" sourcefilename="MusicHub.java"><method name="<init>" desc="()V" line="21"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="compare" desc="(Lmusichub/business/Song;Lmusichub/business/Song;)I" line="23"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="9" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="musichub/business/NoElementFoundException" sourcefilename="NoElementFoundException.java"><method name="<init>" desc="(Ljava/lang/String;)V" line="6"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="musichub/business/Genre" sourcefilename="Genre.java"><method name="<init>" desc="(Ljava/lang/String;ILjava/lang/String;)V" line="7"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getGenre" desc="()Ljava/lang/String;" line="12"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="<clinit>" desc="()V" line="3"><counter type="INSTRUCTION" missed="45" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="56" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="3" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="musichub/business/AudioElement" sourcefilename="AudioElement.java"><method name="<init>" desc="(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V" line="24"><counter type="INSTRUCTION" missed="19" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="<init>" desc="(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V" line="32"><counter type="INSTRUCTION" missed="18" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="<init>" desc="(Lorg/w3c/dom/Element;)V" line="40"><counter type="INSTRUCTION" missed="63" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="14" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getUUID" desc="()Ljava/util/UUID;" line="59"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getArtist" desc="()Ljava/lang/String;" line="63"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getTitle" desc="()Ljava/lang/String;" line="67"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="toString" desc="()Ljava/lang/String;" line="71"><counter type="INSTRUCTION" missed="10" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="createXMLElement" desc="(Lorg/w3c/dom/Document;Lorg/w3c/dom/Element;)V" line="75"><counter type="INSTRUCTION" missed="79" covered="0"/><counter type="LINE" missed="16" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="manageAudioElement" desc="()V" line="99"><counter type="INSTRUCTION" missed="68" covered="0"/><counter type="BRANCH" missed="7" covered="0"/><counter type="LINE" missed="24" covered="0"/><counter type="COMPLEXITY" missed="6" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="266" covered="0"/><counter type="BRANCH" missed="11" covered="0"/><counter type="LINE" missed="72" covered="0"/><counter type="COMPLEXITY" missed="16" covered="0"/><counter type="METHOD" missed="9" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><sourcefile name="MusicHub.java"><line nr="15" mi="3" ci="0" mb="0" cb="0"/><line nr="17" mi="6" ci="0" mb="0" cb="0"/><line nr="21" mi="3" ci="0" mb="0" cb="0"/><line nr="23" mi="6" ci="0" mb="0" cb="0"/><line nr="27" mi="3" ci="0" mb="0" cb="0"/><line nr="29" mi="6" ci="0" mb="0" cb="0"/><line nr="34" mi="3" ci="0" mb="0" cb="0"/><line nr="35" mi="3" ci="0" mb="0" cb="0"/><line nr="36" mi="3" ci="0" mb="0" cb="0"/><line nr="37" mi="4" ci="0" mb="0" cb="0"/><line nr="41" mi="5" ci="0" mb="0" cb="0"/><line nr="43" mi="2" ci="0" mb="0" cb="0"/><line nr="44" mi="5" ci="0" mb="0" cb="0"/><line nr="45" mi="5" ci="0" mb="0" cb="0"/><line nr="46" mi="5" ci="0" mb="0" cb="0"/><line nr="47" mi="2" ci="0" mb="0" cb="0"/><line nr="48" mi="2" ci="0" mb="0" cb="0"/><line nr="49" mi="2" ci="0" mb="0" cb="0"/><line nr="50" mi="1" ci="0" mb="0" cb="0"/><line nr="53" mi="5" ci="0" mb="0" cb="0"/><line nr="54" mi="1" ci="0" mb="0" cb="0"/><line nr="57" mi="5" ci="0" mb="0" cb="0"/><line nr="58" mi="1" ci="0" mb="0" cb="0"/><line nr="61" mi="5" ci="0" mb="0" cb="0"/><line nr="62" mi="1" ci="0" mb="0" cb="0"/><line nr="66" mi="2" ci="0" mb="0" cb="0"/><line nr="67" mi="2" ci="0" mb="0" cb="0"/><line nr="68" mi="11" ci="0" mb="2" cb="0"/><line nr="69" mi="5" ci="0" mb="2" cb="0"/><line nr="70" mi="2" ci="0" mb="0" cb="0"/><line nr="71" mi="1" ci="0" mb="0" cb="0"/><line nr="73" mi="1" ci="0" mb="0" cb="0"/><line nr="75" mi="2" ci="0" mb="2" cb="0"/><line nr="76" mi="5" ci="0" mb="0" cb="0"/><line nr="77" mi="8" ci="0" mb="2" cb="0"/><line nr="78" mi="1" ci="0" mb="0" cb="0"/><line nr="81" mi="4" ci="0" mb="0" cb="0"/><line nr="85" mi="4" ci="0" mb="0" cb="0"/><line nr="89" mi="4" ci="0" mb="0" cb="0"/><line nr="93" mi="4" ci="0" mb="0" cb="0"/><line nr="94" mi="6" ci="0" mb="0" cb="0"/><line nr="95" mi="11" ci="0" mb="2" cb="0"/><line nr="96" mi="8" ci="0" mb="0" cb="0"/><line nr="97" mi="3" ci="0" mb="0" cb="0"/><line nr="101" mi="4" ci="0" mb="0" cb="0"/><line nr="102" mi="4" ci="0" mb="0" cb="0"/><line nr="103" mi="11" ci="0" mb="2" cb="0"/><line nr="104" mi="4" ci="0" mb="2" cb="0"/><line nr="105" mi="4" ci="0" mb="0" cb="0"/><line nr="106" mi="5" ci="0" mb="0" cb="0"/><line nr="107" mi="10" ci="0" mb="2" cb="0"/><line nr="108" mi="8" ci="0" mb="0" cb="0"/><line nr="109" mi="3" ci="0" mb="0" cb="0"/><line nr="113" mi="2" ci="0" mb="0" cb="0"/><line nr="114" mi="4" ci="0" mb="0" cb="0"/><line nr="115" mi="11" ci="0" mb="2" cb="0"/><line nr="116" mi="5" ci="0" mb="2" cb="0"/><line nr="117" mi="2" ci="0" mb="0" cb="0"/><line nr="118" mi="1" ci="0" mb="0" cb="0"/><line nr="120" mi="1" ci="0" mb="0" cb="0"/><line nr="121" mi="7" ci="0" mb="2" cb="0"/><line nr="123" mi="3" ci="0" mb="0" cb="0"/><line nr="124" mi="10" ci="0" mb="2" cb="0"/><line nr="125" mi="12" ci="0" mb="2" cb="0"/><line nr="126" mi="3" ci="0" mb="2" cb="0"/><line nr="127" mi="9" ci="0" mb="2" cb="0"/><line nr="129" mi="1" ci="0" mb="0" cb="0"/><line nr="130" mi="2" ci="0" mb="0" cb="0"/><line nr="135" mi="2" ci="0" mb="0" cb="0"/><line nr="136" mi="4" ci="0" mb="0" cb="0"/><line nr="137" mi="11" ci="0" mb="2" cb="0"/><line nr="138" mi="5" ci="0" mb="2" cb="0"/><line nr="139" mi="2" ci="0" mb="0" cb="0"/><line nr="140" mi="1" ci="0" mb="0" cb="0"/><line nr="142" mi="1" ci="0" mb="0" cb="0"/><line nr="143" mi="7" ci="0" mb="2" cb="0"/><line nr="145" mi="3" ci="0" mb="0" cb="0"/><line nr="146" mi="10" ci="0" mb="2" cb="0"/><line nr="147" mi="12" ci="0" mb="2" cb="0"/><line nr="148" mi="3" ci="0" mb="2" cb="0"/><line nr="149" mi="10" ci="0" mb="2" cb="0"/><line nr="151" mi="1" ci="0" mb="0" cb="0"/><line nr="152" mi="5" ci="0" mb="0" cb="0"/><line nr="153" mi="2" ci="0" mb="0" cb="0"/><line nr="158" mi="2" ci="0" mb="0" cb="0"/><line nr="160" mi="2" ci="0" mb="0" cb="0"/><line nr="161" mi="9" ci="0" mb="2" cb="0"/><line nr="162" mi="9" ci="0" mb="2" cb="0"/><line nr="163" mi="6" ci="0" mb="0" cb="0"/><line nr="164" mi="2" ci="0" mb="0" cb="0"/><line nr="165" mi="1" ci="0" mb="0" cb="0"/><line nr="169" mi="2" ci="0" mb="2" cb="0"/><line nr="170" mi="2" ci="0" mb="0" cb="0"/><line nr="171" mi="11" ci="0" mb="2" cb="0"/><line nr="172" mi="5" ci="0" mb="2" cb="0"/><line nr="173" mi="2" ci="0" mb="0" cb="0"/><line nr="174" mi="1" ci="0" mb="0" cb="0"/><line nr="176" mi="1" ci="0" mb="0" cb="0"/><line nr="177" mi="2" ci="0" mb="2" cb="0"/><line nr="178" mi="4" ci="0" mb="0" cb="0"/><line nr="180" mi="7" ci="0" mb="0" cb="0"/><line nr="181" mi="6" ci="0" mb="0" cb="0"/><line nr="182" mi="7" ci="0" mb="0" cb="0"/><line nr="184" mi="1" ci="0" mb="0" cb="0"/><line nr="187" mi="2" ci="0" mb="0" cb="0"/><line nr="189" mi="2" ci="0" mb="0" cb="0"/><line nr="191" mi="9" ci="0" mb="2" cb="0"/><line nr="192" mi="9" ci="0" mb="2" cb="0"/><line nr="193" mi="6" ci="0" mb="0" cb="0"/><line nr="194" mi="2" ci="0" mb="0" cb="0"/><line nr="195" mi="1" ci="0" mb="0" cb="0"/><line nr="199" mi="2" ci="0" mb="2" cb="0"/><line nr="200" mi="2" ci="0" mb="0" cb="0"/><line nr="201" mi="11" ci="0" mb="2" cb="0"/><line nr="202" mi="5" ci="0" mb="2" cb="0"/><line nr="203" mi="2" ci="0" mb="0" cb="0"/><line nr="204" mi="1" ci="0" mb="0" cb="0"/><line nr="206" mi="1" ci="0" mb="0" cb="0"/><line nr="207" mi="2" ci="0" mb="2" cb="0"/><line nr="208" mi="4" ci="0" mb="0" cb="0"/><line nr="210" mi="7" ci="0" mb="0" cb="0"/><line nr="211" mi="6" ci="0" mb="0" cb="0"/><line nr="213" mi="7" ci="0" mb="0" cb="0"/><line nr="215" mi="1" ci="0" mb="0" cb="0"/><line nr="218" mi="5" ci="0" mb="0" cb="0"/><line nr="219" mi="3" ci="0" mb="2" cb="0"/><line nr="221" mi="8" ci="0" mb="2" cb="0"/><line nr="222" mi="6" ci="0" mb="2" cb="0"/><line nr="223" mi="5" ci="0" mb="0" cb="0"/><line nr="224" mi="5" ci="0" mb="2" cb="0"/><line nr="226" mi="6" ci="0" mb="0" cb="0"/><line nr="227" mi="1" ci="0" mb="0" cb="0"/><line nr="228" mi="3" ci="0" mb="0" cb="0"/><line nr="229" mi="1" ci="0" mb="0" cb="0"/><line nr="233" mi="1" ci="0" mb="0" cb="0"/><line nr="236" mi="5" ci="0" mb="0" cb="0"/><line nr="237" mi="3" ci="0" mb="2" cb="0"/><line nr="239" mi="8" ci="0" mb="2" cb="0"/><line nr="240" mi="6" ci="0" mb="2" cb="0"/><line nr="241" mi="5" ci="0" mb="0" cb="0"/><line nr="242" mi="5" ci="0" mb="2" cb="0"/><line nr="244" mi="6" ci="0" mb="0" cb="0"/><line nr="245" mi="1" ci="0" mb="0" cb="0"/><line nr="246" mi="3" ci="0" mb="0" cb="0"/><line nr="247" mi="1" ci="0" mb="0" cb="0"/><line nr="251" mi="1" ci="0" mb="0" cb="0"/><line nr="254" mi="5" ci="0" mb="0" cb="0"/><line nr="255" mi="3" ci="0" mb="2" cb="0"/><line nr="257" mi="8" ci="0" mb="2" cb="0"/><line nr="258" mi="6" ci="0" mb="2" cb="0"/><line nr="259" mi="5" ci="0" mb="0" cb="0"/><line nr="260" mi="5" ci="0" mb="2" cb="0"/><line nr="262" mi="5" ci="0" mb="0" cb="0"/><line nr="263" mi="3" ci="0" mb="0" cb="0"/><line nr="264" mi="1" ci="0" mb="0" cb="0"/><line nr="265" mi="3" ci="0" mb="0" cb="0"/><line nr="266" mi="1" ci="0" mb="0" cb="0"/><line nr="268" mi="5" ci="0" mb="2" cb="0"/><line nr="270" mi="5" ci="0" mb="0" cb="0"/><line nr="271" mi="3" ci="0" mb="0" cb="0"/><line nr="272" mi="1" ci="0" mb="0" cb="0"/><line nr="273" mi="3" ci="0" mb="0" cb="0"/><line nr="274" mi="1" ci="0" mb="0" cb="0"/><line nr="278" mi="1" ci="0" mb="0" cb="0"/><line nr="282" mi="4" ci="0" mb="0" cb="0"/><line nr="283" mi="3" ci="0" mb="2" cb="0"/><line nr="286" mi="4" ci="0" mb="0" cb="0"/><line nr="287" mi="4" ci="0" mb="0" cb="0"/><line nr="290" mi="6" ci="0" mb="2" cb="0"/><line nr="291" mi="4" ci="0" mb="0" cb="0"/><line nr="292" mi="4" ci="0" mb="0" cb="0"/><line nr="293" mi="1" ci="0" mb="0" cb="0"/><line nr="294" mi="5" ci="0" mb="0" cb="0"/><line nr="295" mi="1" ci="0" mb="0" cb="0"/><line nr="298" mi="4" ci="0" mb="0" cb="0"/><line nr="299" mi="3" ci="0" mb="2" cb="0"/><line nr="302" mi="4" ci="0" mb="0" cb="0"/><line nr="303" mi="4" ci="0" mb="0" cb="0"/><line nr="306" mi="6" ci="0" mb="2" cb="0"/><line nr="307" mi="4" ci="0" mb="0" cb="0"/><line nr="308" mi="4" ci="0" mb="0" cb="0"/><line nr="309" mi="1" ci="0" mb="0" cb="0"/><line nr="310" mi="5" ci="0" mb="0" cb="0"/><line nr="311" mi="1" ci="0" mb="0" cb="0"/><line nr="314" mi="4" ci="0" mb="0" cb="0"/><line nr="315" mi="3" ci="0" mb="2" cb="0"/><line nr="318" mi="4" ci="0" mb="0" cb="0"/><line nr="319" mi="4" ci="0" mb="0" cb="0"/><line nr="322" mi="11" ci="0" mb="2" cb="0"/><line nr="324" mi="3" ci="0" mb="2" cb="0"/><line nr="325" mi="4" ci="0" mb="0" cb="0"/><line nr="327" mi="3" ci="0" mb="2" cb="0"/><line nr="328" mi="4" ci="0" mb="0" cb="0"/><line nr="330" mi="1" ci="0" mb="0" cb="0"/><line nr="331" mi="5" ci="0" mb="0" cb="0"/><line nr="332" mi="1" ci="0" mb="0" cb="0"/><line nr="335" mi="10" ci="0" mb="2" cb="0"/><line nr="336" mi="5" ci="0" mb="2" cb="0"/><line nr="337" mi="2" ci="0" mb="0" cb="0"/><line nr="339" mi="1" ci="0" mb="0" cb="0"/><line nr="341" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="830" covered="0"/><counter type="BRANCH" missed="114" covered="0"/><counter type="LINE" missed="201" covered="0"/><counter type="COMPLEXITY" missed="85" covered="0"/><counter type="METHOD" missed="28" covered="0"/><counter type="CLASS" missed="4" covered="0"/></sourcefile><sourcefile name="PlayList.java"><line nr="16" mi="2" ci="0" mb="0" cb="0"/><line nr="17" mi="3" ci="0" mb="0" cb="0"/><line nr="18" mi="4" ci="0" mb="0" cb="0"/><line nr="19" mi="3" ci="0" mb="0" cb="0"/><line nr="20" mi="1" ci="0" mb="0" cb="0"/><line nr="22" mi="2" ci="0" mb="0" cb="0"/><line nr="23" mi="3" ci="0" mb="0" cb="0"/><line nr="24" mi="3" ci="0" mb="0" cb="0"/><line nr="25" mi="5" ci="0" mb="0" cb="0"/><line nr="26" mi="1" ci="0" mb="0" cb="0"/><line nr="28" mi="2" ci="0" mb="0" cb="0"/><line nr="30" mi="8" ci="0" mb="0" cb="0"/><line nr="32" mi="2" ci="0" mb="0" cb="0"/><line nr="34" mi="7" ci="0" mb="0" cb="0"/><line nr="35" mi="1" ci="0" mb="0" cb="0"/><line nr="36" mi="3" ci="0" mb="0" cb="0"/><line nr="37" mi="1" ci="0" mb="0" cb="0"/><line nr="38" mi="5" ci="0" mb="4" cb="0"/><line nr="39" mi="4" ci="0" mb="0" cb="0"/><line nr="40" mi="4" ci="0" mb="0" cb="0"/><line nr="43" mi="6" ci="0" mb="0" cb="0"/><line nr="44" mi="3" ci="0" mb="0" cb="0"/><line nr="45" mi="3" ci="0" mb="2" cb="0"/><line nr="47" mi="5" ci="0" mb="0" cb="0"/><line nr="50" mi="8" ci="0" mb="2" cb="0"/><line nr="51" mi="6" ci="0" mb="2" cb="0"/><line nr="52" mi="5" ci="0" mb="0" cb="0"/><line nr="53" mi="5" ci="0" mb="2" cb="0"/><line nr="55" mi="5" ci="0" mb="0" cb="0"/><line nr="56" mi="1" ci="0" mb="0" cb="0"/><line nr="57" mi="2" ci="0" mb="0" cb="0"/><line nr="58" mi="1" ci="0" mb="0" cb="0"/><line nr="63" mi="1" ci="0" mb="0" cb="0"/><line nr="66" mi="5" ci="0" mb="0" cb="0"/><line nr="67" mi="1" ci="0" mb="0" cb="0"/><line nr="70" mi="3" ci="0" mb="0" cb="0"/><line nr="74" mi="3" ci="0" mb="0" cb="0"/><line nr="78" mi="4" ci="0" mb="0" cb="0"/><line nr="79" mi="4" ci="0" mb="0" cb="0"/><line nr="81" mi="4" ci="0" mb="0" cb="0"/><line nr="82" mi="7" ci="0" mb="0" cb="0"/><line nr="83" mi="4" ci="0" mb="0" cb="0"/><line nr="85" mi="4" ci="0" mb="0" cb="0"/><line nr="86" mi="8" ci="0" mb="0" cb="0"/><line nr="87" mi="4" ci="0" mb="0" cb="0"/><line nr="90" mi="4" ci="0" mb="0" cb="0"/><line nr="91" mi="11" ci="0" mb="2" cb="0"/><line nr="93" mi="4" ci="0" mb="0" cb="0"/><line nr="94" mi="7" ci="0" mb="0" cb="0"/><line nr="95" mi="4" ci="0" mb="0" cb="0"/><line nr="96" mi="1" ci="0" mb="0" cb="0"/><line nr="97" mi="4" ci="0" mb="0" cb="0"/><line nr="98" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="202" covered="0"/><counter type="BRANCH" missed="14" covered="0"/><counter type="LINE" missed="53" covered="0"/><counter type="COMPLEXITY" missed="14" covered="0"/><counter type="METHOD" missed="7" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="NoAlbumFoundException.java"><line nr="6" mi="3" ci="0" mb="0" cb="0"/><line nr="7" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="Album.java"><line nr="21" mi="2" ci="0" mb="0" cb="0"/><line nr="22" mi="3" ci="0" mb="0" cb="0"/><line nr="23" mi="3" ci="0" mb="0" cb="0"/><line nr="24" mi="3" ci="0" mb="0" cb="0"/><line nr="25" mi="4" ci="0" mb="0" cb="0"/><line nr="27" mi="5" ci="0" mb="0" cb="0"/><line nr="28" mi="5" ci="0" mb="0" cb="0"/><line nr="29" mi="1" ci="0" mb="0" cb="0"/><line nr="30" mi="2" ci="0" mb="0" cb="0"/><line nr="31" mi="1" ci="0" mb="0" cb="0"/><line nr="32" mi="3" ci="0" mb="0" cb="0"/><line nr="33" mi="1" ci="0" mb="0" cb="0"/><line nr="35" mi="2" ci="0" mb="0" cb="0"/><line nr="36" mi="3" ci="0" mb="0" cb="0"/><line nr="37" mi="3" ci="0" mb="0" cb="0"/><line nr="38" mi="3" ci="0" mb="0" cb="0"/><line nr="39" mi="3" ci="0" mb="0" cb="0"/><line nr="41" mi="5" ci="0" mb="0" cb="0"/><line nr="42" mi="5" ci="0" mb="0" cb="0"/><line nr="43" mi="1" ci="0" mb="0" cb="0"/><line nr="44" mi="2" ci="0" mb="0" cb="0"/><line nr="45" mi="1" ci="0" mb="0" cb="0"/><line nr="46" mi="5" ci="0" mb="0" cb="0"/><line nr="47" mi="1" ci="0" mb="0" cb="0"/><line nr="49" mi="2" ci="0" mb="0" cb="0"/><line nr="51" mi="8" ci="0" mb="0" cb="0"/><line nr="52" mi="9" ci="0" mb="0" cb="0"/><line nr="53" mi="2" ci="0" mb="0" cb="0"/><line nr="55" mi="7" ci="0" mb="0" cb="0"/><line nr="56" mi="1" ci="0" mb="0" cb="0"/><line nr="57" mi="3" ci="0" mb="0" cb="0"/><line nr="58" mi="1" ci="0" mb="0" cb="0"/><line nr="59" mi="5" ci="0" mb="4" cb="0"/><line nr="60" mi="4" ci="0" mb="0" cb="0"/><line nr="61" mi="4" ci="0" mb="0" cb="0"/><line nr="63" mi="5" ci="0" mb="0" cb="0"/><line nr="64" mi="10" ci="0" mb="0" cb="0"/><line nr="66" mi="6" ci="0" mb="0" cb="0"/><line nr="67" mi="3" ci="0" mb="0" cb="0"/><line nr="68" mi="3" ci="0" mb="2" cb="0"/><line nr="70" mi="5" ci="0" mb="0" cb="0"/><line nr="72" mi="8" ci="0" mb="2" cb="0"/><line nr="73" mi="6" ci="0" mb="2" cb="0"/><line nr="74" mi="5" ci="0" mb="0" cb="0"/><line nr="75" mi="5" ci="0" mb="2" cb="0"/><line nr="77" mi="5" ci="0" mb="0" cb="0"/><line nr="78" mi="1" ci="0" mb="0" cb="0"/><line nr="79" mi="2" ci="0" mb="0" cb="0"/><line nr="80" mi="1" ci="0" mb="0" cb="0"/><line nr="85" mi="1" ci="0" mb="0" cb="0"/><line nr="89" mi="5" ci="0" mb="0" cb="0"/><line nr="90" mi="1" ci="0" mb="0" cb="0"/><line nr="94" mi="3" ci="0" mb="0" cb="0"/><line nr="98" mi="3" ci="0" mb="0" cb="0"/><line nr="99" mi="2" ci="0" mb="0" cb="0"/><line nr="100" mi="2" ci="0" mb="0" cb="0"/><line nr="104" mi="3" ci="0" mb="0" cb="0"/><line nr="108" mi="3" ci="0" mb="0" cb="0"/><line nr="112" mi="4" ci="0" mb="0" cb="0"/><line nr="113" mi="4" ci="0" mb="0" cb="0"/><line nr="115" mi="4" ci="0" mb="0" cb="0"/><line nr="116" mi="7" ci="0" mb="0" cb="0"/><line nr="117" mi="4" ci="0" mb="0" cb="0"/><line nr="119" mi="4" ci="0" mb="0" cb="0"/><line nr="120" mi="7" ci="0" mb="0" cb="0"/><line nr="121" mi="4" ci="0" mb="0" cb="0"/><line nr="123" mi="4" ci="0" mb="0" cb="0"/><line nr="124" mi="9" ci="0" mb="0" cb="0"/><line nr="125" mi="4" ci="0" mb="0" cb="0"/><line nr="127" mi="4" ci="0" mb="0" cb="0"/><line nr="128" mi="8" ci="0" mb="0" cb="0"/><line nr="129" mi="4" ci="0" mb="0" cb="0"/><line nr="131" mi="4" ci="0" mb="0" cb="0"/><line nr="132" mi="5" ci="0" mb="0" cb="0"/><line nr="133" mi="9" ci="0" mb="0" cb="0"/><line nr="134" mi="4" ci="0" mb="0" cb="0"/><line nr="136" mi="4" ci="0" mb="0" cb="0"/><line nr="137" mi="11" ci="0" mb="2" cb="0"/><line nr="138" mi="4" ci="0" mb="0" cb="0"/><line nr="139" mi="7" ci="0" mb="0" cb="0"/><line nr="140" mi="4" ci="0" mb="0" cb="0"/><line nr="141" mi="1" ci="0" mb="0" cb="0"/><line nr="142" mi="4" ci="0" mb="0" cb="0"/><line nr="144" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="330" covered="0"/><counter type="BRANCH" missed="14" covered="0"/><counter type="LINE" missed="84" covered="0"/><counter type="COMPLEXITY" missed="16" covered="0"/><counter type="METHOD" missed="9" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="Language.java"><line nr="3" mi="3" ci="0" mb="0" cb="0"/><line nr="4" mi="35" ci="0" mb="0" cb="0"/><line nr="7" mi="4" ci="0" mb="0" cb="0"/><line nr="8" mi="3" ci="0" mb="0" cb="0"/><line nr="9" mi="1" ci="0" mb="0" cb="0"/><line nr="12" mi="3" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="49" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="3" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="Genre.java"><line nr="3" mi="3" ci="0" mb="0" cb="0"/><line nr="4" mi="42" ci="0" mb="0" cb="0"/><line nr="7" mi="4" ci="0" mb="0" cb="0"/><line nr="8" mi="3" ci="0" mb="0" cb="0"/><line nr="9" mi="1" ci="0" mb="0" cb="0"/><line nr="12" mi="3" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="56" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="3" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="NoPlayListFoundException.java"><line nr="6" mi="3" ci="0" mb="0" cb="0"/><line nr="7" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="AudioElement.java"><line nr="24" mi="2" ci="0" mb="0" cb="0"/><line nr="25" mi="3" ci="0" mb="0" cb="0"/><line nr="26" mi="3" ci="0" mb="0" cb="0"/><line nr="27" mi="3" ci="0" mb="0" cb="0"/><line nr="28" mi="4" ci="0" mb="0" cb="0"/><line nr="29" mi="3" ci="0" mb="0" cb="0"/><line nr="30" mi="1" ci="0" mb="0" cb="0"/><line nr="32" mi="2" ci="0" mb="0" cb="0"/><line nr="33" mi="3" ci="0" mb="0" cb="0"/><line nr="34" mi="3" ci="0" mb="0" cb="0"/><line nr="35" mi="3" ci="0" mb="0" cb="0"/><line nr="36" mi="3" ci="0" mb="0" cb="0"/><line nr="37" mi="3" ci="0" mb="0" cb="0"/><line nr="38" mi="1" ci="0" mb="0" cb="0"/><line nr="40" mi="2" ci="0" mb="0" cb="0"/><line nr="42" mi="8" ci="0" mb="0" cb="0"/><line nr="43" mi="8" ci="0" mb="0" cb="0"/><line nr="44" mi="9" ci="0" mb="0" cb="0"/><line nr="45" mi="8" ci="0" mb="0" cb="0"/><line nr="46" mi="2" ci="0" mb="0" cb="0"/><line nr="48" mi="7" ci="0" mb="0" cb="0"/><line nr="49" mi="1" ci="0" mb="0" cb="0"/><line nr="50" mi="3" ci="0" mb="0" cb="0"/><line nr="51" mi="1" ci="0" mb="0" cb="0"/><line nr="52" mi="5" ci="0" mb="4" cb="0"/><line nr="53" mi="4" ci="0" mb="0" cb="0"/><line nr="54" mi="4" ci="0" mb="0" cb="0"/><line nr="56" mi="1" ci="0" mb="0" cb="0"/><line nr="59" mi="3" ci="0" mb="0" cb="0"/><line nr="63" mi="3" ci="0" mb="0" cb="0"/><line nr="67" mi="3" ci="0" mb="0" cb="0"/><line nr="71" mi="10" ci="0" mb="0" cb="0"/><line nr="75" mi="4" ci="0" mb="0" cb="0"/><line nr="76" mi="7" ci="0" mb="0" cb="0"/><line nr="77" mi="4" ci="0" mb="0" cb="0"/><line nr="79" mi="4" ci="0" mb="0" cb="0"/><line nr="80" mi="7" ci="0" mb="0" cb="0"/><line nr="81" mi="4" ci="0" mb="0" cb="0"/><line nr="83" mi="4" ci="0" mb="0" cb="0"/><line nr="84" mi="9" ci="0" mb="0" cb="0"/><line nr="85" mi="4" ci="0" mb="0" cb="0"/><line nr="87" mi="4" ci="0" mb="0" cb="0"/><line nr="88" mi="8" ci="0" mb="0" cb="0"/><line nr="89" mi="4" ci="0" mb="0" cb="0"/><line nr="91" mi="4" ci="0" mb="0" cb="0"/><line nr="92" mi="7" ci="0" mb="0" cb="0"/><line nr="93" mi="4" ci="0" mb="0" cb="0"/><line nr="95" mi="1" ci="0" mb="0" cb="0"/><line nr="99" mi="5" ci="0" mb="0" cb="0"/><line nr="101" mi="6" ci="0" mb="0" cb="0"/><line nr="102" mi="3" ci="0" mb="0" cb="0"/><line nr="103" mi="2" ci="0" mb="0" cb="0"/><line nr="104" mi="3" ci="0" mb="0" cb="0"/><line nr="106" mi="2" ci="0" mb="0" cb="0"/><line nr="108" mi="4" ci="0" mb="2" cb="0"/><line nr="109" mi="3" ci="0" mb="0" cb="0"/><line nr="110" mi="3" ci="0" mb="0" cb="0"/><line nr="111" mi="3" ci="0" mb="0" cb="0"/><line nr="112" mi="3" ci="0" mb="0" cb="0"/><line nr="114" mi="8" ci="0" mb="5" cb="0"/><line nr="115" mi="2" ci="0" mb="0" cb="0"/><line nr="116" mi="1" ci="0" mb="0" cb="0"/><line nr="117" mi="2" ci="0" mb="0" cb="0"/><line nr="118" mi="1" ci="0" mb="0" cb="0"/><line nr="119" mi="3" ci="0" mb="0" cb="0"/><line nr="120" mi="1" ci="0" mb="0" cb="0"/><line nr="121" mi="2" ci="0" mb="0" cb="0"/><line nr="122" mi="1" ci="0" mb="0" cb="0"/><line nr="123" mi="3" ci="0" mb="0" cb="0"/><line nr="125" mi="4" ci="0" mb="0" cb="0"/><line nr="128" mi="2" ci="0" mb="0" cb="0"/><line nr="130" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="266" covered="0"/><counter type="BRANCH" missed="11" covered="0"/><counter type="LINE" missed="72" covered="0"/><counter type="COMPLEXITY" missed="16" covered="0"/><counter type="METHOD" missed="9" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="NoElementFoundException.java"><line nr="6" mi="3" ci="0" mb="0" cb="0"/><line nr="7" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="PathValidation.java"><line nr="22" mi="0" ci="2" mb="0" cb="0"/><line nr="23" mi="0" ci="5" mb="0" cb="0"/><line nr="34" mi="0" ci="5" mb="0" cb="0"/><line nr="35" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="Category.java"><line nr="3" mi="3" ci="0" mb="0" cb="0"/><line nr="4" mi="35" ci="0" mb="0" cb="0"/><line nr="7" mi="4" ci="0" mb="0" cb="0"/><line nr="8" mi="3" ci="0" mb="0" cb="0"/><line nr="9" mi="1" ci="0" mb="0" cb="0"/><line nr="12" mi="3" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="49" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="3" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="AudioBook.java"><line nr="11" mi="7" ci="0" mb="0" cb="0"/><line nr="12" mi="3" ci="0" mb="0" cb="0"/><line nr="13" mi="3" ci="0" mb="0" cb="0"/><line nr="14" mi="1" ci="0" mb="0" cb="0"/><line nr="17" mi="6" ci="0" mb="0" cb="0"/><line nr="18" mi="3" ci="0" mb="0" cb="0"/><line nr="19" mi="3" ci="0" mb="0" cb="0"/><line nr="20" mi="1" ci="0" mb="0" cb="0"/><line nr="23" mi="3" ci="0" mb="0" cb="0"/><line nr="24" mi="8" ci="0" mb="0" cb="0"/><line nr="25" mi="8" ci="0" mb="0" cb="0"/><line nr="26" mi="1" ci="0" mb="0" cb="0"/><line nr="29" mi="3" ci="0" mb="0" cb="0"/><line nr="33" mi="9" ci="0" mb="5" cb="0"/><line nr="34" mi="4" ci="0" mb="0" cb="0"/><line nr="35" mi="4" ci="0" mb="0" cb="0"/><line nr="36" mi="4" ci="0" mb="0" cb="0"/><line nr="37" mi="4" ci="0" mb="0" cb="0"/><line nr="38" mi="3" ci="0" mb="0" cb="0"/><line nr="40" mi="1" ci="0" mb="0" cb="0"/><line nr="43" mi="3" ci="0" mb="0" cb="0"/><line nr="47" mi="9" ci="0" mb="5" cb="0"/><line nr="48" mi="4" ci="0" mb="0" cb="0"/><line nr="49" mi="4" ci="0" mb="0" cb="0"/><line nr="50" mi="4" ci="0" mb="0" cb="0"/><line nr="51" mi="4" ci="0" mb="0" cb="0"/><line nr="52" mi="3" ci="0" mb="0" cb="0"/><line nr="54" mi="1" ci="0" mb="0" cb="0"/><line nr="58" mi="8" ci="0" mb="0" cb="0"/><line nr="64" mi="4" ci="0" mb="0" cb="0"/><line nr="66" mi="4" ci="0" mb="0" cb="0"/><line nr="68" mi="4" ci="0" mb="0" cb="0"/><line nr="69" mi="8" ci="0" mb="0" cb="0"/><line nr="70" mi="4" ci="0" mb="0" cb="0"/><line nr="72" mi="4" ci="0" mb="0" cb="0"/><line nr="73" mi="8" ci="0" mb="0" cb="0"/><line nr="74" mi="4" ci="0" mb="0" cb="0"/><line nr="76" mi="4" ci="0" mb="0" cb="0"/><line nr="77" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="164" covered="0"/><counter type="BRANCH" missed="10" covered="0"/><counter type="LINE" missed="39" covered="0"/><counter type="COMPLEXITY" missed="17" covered="0"/><counter type="METHOD" missed="9" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="Song.java"><line nr="11" mi="7" ci="0" mb="0" cb="0"/><line nr="12" mi="3" ci="0" mb="0" cb="0"/><line nr="13" mi="1" ci="0" mb="0" cb="0"/><line nr="16" mi="6" ci="0" mb="0" cb="0"/><line nr="17" mi="3" ci="0" mb="0" cb="0"/><line nr="18" mi="1" ci="0" mb="0" cb="0"/><line nr="21" mi="3" ci="0" mb="0" cb="0"/><line nr="22" mi="8" ci="0" mb="0" cb="0"/><line nr="23" mi="1" ci="0" mb="0" cb="0"/><line nr="26" mi="4" ci="0" mb="0" cb="0"/><line nr="30" mi="9" ci="0" mb="6" cb="0"/><line nr="31" mi="4" ci="0" mb="0" cb="0"/><line nr="32" mi="4" ci="0" mb="0" cb="0"/><line nr="33" mi="4" ci="0" mb="0" cb="0"/><line nr="34" mi="4" ci="0" mb="0" cb="0"/><line nr="35" mi="4" ci="0" mb="0" cb="0"/><line nr="36" mi="3" ci="0" mb="0" cb="0"/><line nr="38" mi="1" ci="0" mb="0" cb="0"/><line nr="41" mi="6" ci="0" mb="0" cb="0"/><line nr="46" mi="4" ci="0" mb="0" cb="0"/><line nr="48" mi="4" ci="0" mb="0" cb="0"/><line nr="50" mi="4" ci="0" mb="0" cb="0"/><line nr="51" mi="8" ci="0" mb="0" cb="0"/><line nr="52" mi="4" ci="0" mb="0" cb="0"/><line nr="54" mi="4" ci="0" mb="0" cb="0"/><line nr="55" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="105" covered="0"/><counter type="BRANCH" missed="6" covered="0"/><counter type="LINE" missed="26" covered="0"/><counter type="COMPLEXITY" missed="12" covered="0"/><counter type="METHOD" missed="7" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="2063" covered="17"/><counter type="BRANCH" missed="169" covered="0"/><counter type="LINE" missed="499" covered="4"/><counter type="COMPLEXITY" missed="172" covered="2"/><counter type="METHOD" missed="81" covered="2"/><counter type="CLASS" missed="15" covered="1"/></package><package name="musichub/main"><class name="musichub/main/Main" sourcefilename="Main.java"><method name="<init>" desc="()V" line="14"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="main" desc="([Ljava/lang/String;)V" line="17"><counter type="INSTRUCTION" missed="548" covered="0"/><counter type="BRANCH" missed="40" covered="0"/><counter type="LINE" missed="185" covered="0"/><counter type="COMPLEXITY" missed="27" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="printAvailableCommands" desc="()V" line="252"><counter type="INSTRUCTION" missed="37" covered="0"/><counter type="LINE" missed="13" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="588" covered="0"/><counter type="BRANCH" missed="40" covered="0"/><counter type="LINE" missed="199" covered="0"/><counter type="COMPLEXITY" missed="29" covered="0"/><counter type="METHOD" missed="3" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><sourcefile name="Main.java"><line nr="14" mi="3" ci="0" mb="0" cb="0"/><line nr="17" mi="4" ci="0" mb="0" cb="0"/><line nr="19" mi="3" ci="0" mb="0" cb="0"/><line nr="22" mi="5" ci="0" mb="0" cb="0"/><line nr="23" mi="3" ci="0" mb="0" cb="0"/><line nr="27" mi="5" ci="0" mb="2" cb="0"/><line nr="29" mi="4" ci="0" mb="2" cb="0"/><line nr="30" mi="4" ci="0" mb="14" cb="0"/><line nr="32" mi="2" ci="0" mb="0" cb="0"/><line nr="34" mi="1" ci="0" mb="0" cb="0"/><line nr="35" mi="3" ci="0" mb="0" cb="0"/><line nr="36" mi="1" ci="0" mb="0" cb="0"/><line nr="39" mi="4" ci="0" mb="0" cb="0"/><line nr="40" mi="1" ci="0" mb="0" cb="0"/><line nr="41" mi="3" ci="0" mb="0" cb="0"/><line nr="42" mi="1" ci="0" mb="0" cb="0"/><line nr="45" mi="3" ci="0" mb="0" cb="0"/><line nr="46" mi="4" ci="0" mb="0" cb="0"/><line nr="48" mi="3" ci="0" mb="0" cb="0"/><line nr="50" mi="4" ci="0" mb="0" cb="0"/><line nr="51" mi="3" ci="0" mb="0" cb="0"/><line nr="52" mi="1" ci="0" mb="0" cb="0"/><line nr="53" mi="5" ci="0" mb="0" cb="0"/><line nr="54" mi="1" ci="0" mb="0" cb="0"/><line nr="55" mi="1" ci="0" mb="0" cb="0"/><line nr="56" mi="3" ci="0" mb="0" cb="0"/><line nr="57" mi="1" ci="0" mb="0" cb="0"/><line nr="60" mi="3" ci="0" mb="0" cb="0"/><line nr="61" mi="4" ci="0" mb="0" cb="0"/><line nr="63" mi="3" ci="0" mb="0" cb="0"/><line nr="65" mi="4" ci="0" mb="0" cb="0"/><line nr="66" mi="5" ci="0" mb="0" cb="0"/><line nr="67" mi="3" ci="0" mb="0" cb="0"/><line nr="68" mi="4" ci="0" mb="0" cb="0"/><line nr="69" mi="1" ci="0" mb="0" cb="0"/><line nr="70" mi="5" ci="0" mb="0" cb="0"/><line nr="71" mi="1" ci="0" mb="0" cb="0"/><line nr="72" mi="1" ci="0" mb="0" cb="0"/><line nr="73" mi="3" ci="0" mb="0" cb="0"/><line nr="74" mi="1" ci="0" mb="0" cb="0"/><line nr="77" mi="4" ci="0" mb="0" cb="0"/><line nr="78" mi="1" ci="0" mb="0" cb="0"/><line nr="79" mi="3" ci="0" mb="0" cb="0"/><line nr="80" mi="1" ci="0" mb="0" cb="0"/><line nr="83" mi="3" ci="0" mb="0" cb="0"/><line nr="84" mi="3" ci="0" mb="0" cb="0"/><line nr="85" mi="3" ci="0" mb="0" cb="0"/><line nr="86" mi="3" ci="0" mb="0" cb="0"/><line nr="87" mi="3" ci="0" mb="0" cb="0"/><line nr="88" mi="3" ci="0" mb="0" cb="0"/><line nr="89" mi="3" ci="0" mb="0" cb="0"/><line nr="90" mi="3" ci="0" mb="0" cb="0"/><line nr="91" mi="4" ci="0" mb="0" cb="0"/><line nr="93" mi="3" ci="0" mb="0" cb="0"/><line nr="94" mi="3" ci="0" mb="0" cb="0"/><line nr="95" mi="3" ci="0" mb="2" cb="0"/><line nr="96" mi="3" ci="0" mb="0" cb="0"/><line nr="97" mi="3" ci="0" mb="0" cb="0"/><line nr="98" mi="1" ci="0" mb="0" cb="0"/><line nr="101" mi="9" ci="0" mb="0" cb="0"/><line nr="102" mi="3" ci="0" mb="0" cb="0"/><line nr="103" mi="3" ci="0" mb="0" cb="0"/><line nr="104" mi="3" ci="0" mb="0" cb="0"/><line nr="105" mi="10" ci="0" mb="2" cb="0"/><line nr="106" mi="3" ci="0" mb="0" cb="0"/><line nr="107" mi="1" ci="0" mb="0" cb="0"/><line nr="108" mi="3" ci="0" mb="0" cb="0"/><line nr="109" mi="1" ci="0" mb="0" cb="0"/><line nr="112" mi="3" ci="0" mb="0" cb="0"/><line nr="113" mi="3" ci="0" mb="0" cb="0"/><line nr="114" mi="3" ci="0" mb="0" cb="0"/><line nr="115" mi="3" ci="0" mb="0" cb="0"/><line nr="116" mi="3" ci="0" mb="0" cb="0"/><line nr="117" mi="3" ci="0" mb="0" cb="0"/><line nr="118" mi="4" ci="0" mb="0" cb="0"/><line nr="119" mi="3" ci="0" mb="0" cb="0"/><line nr="120" mi="3" ci="0" mb="0" cb="0"/><line nr="121" mi="8" ci="0" mb="0" cb="0"/><line nr="122" mi="3" ci="0" mb="0" cb="0"/><line nr="123" mi="3" ci="0" mb="0" cb="0"/><line nr="124" mi="3" ci="0" mb="0" cb="0"/><line nr="125" mi="10" ci="0" mb="2" cb="0"/><line nr="126" mi="3" ci="0" mb="0" cb="0"/><line nr="127" mi="1" ci="0" mb="0" cb="0"/><line nr="128" mi="3" ci="0" mb="0" cb="0"/><line nr="129" mi="1" ci="0" mb="0" cb="0"/><line nr="132" mi="3" ci="0" mb="0" cb="0"/><line nr="133" mi="3" ci="0" mb="0" cb="0"/><line nr="134" mi="3" ci="0" mb="0" cb="0"/><line nr="135" mi="3" ci="0" mb="2" cb="0"/><line nr="136" mi="4" ci="0" mb="0" cb="0"/><line nr="137" mi="7" ci="0" mb="2" cb="0"/><line nr="138" mi="1" ci="0" mb="0" cb="0"/><line nr="139" mi="3" ci="0" mb="0" cb="0"/><line nr="141" mi="3" ci="0" mb="0" cb="0"/><line nr="142" mi="3" ci="0" mb="0" cb="0"/><line nr="143" mi="3" ci="0" mb="2" cb="0"/><line nr="144" mi="4" ci="0" mb="0" cb="0"/><line nr="145" mi="4" ci="0" mb="0" cb="0"/><line nr="146" mi="1" ci="0" mb="0" cb="0"/><line nr="147" mi="3" ci="0" mb="0" cb="0"/><line nr="149" mi="4" ci="0" mb="0" cb="0"/><line nr="150" mi="1" ci="0" mb="0" cb="0"/><line nr="151" mi="4" ci="0" mb="0" cb="0"/><line nr="152" mi="1" ci="0" mb="0" cb="0"/><line nr="153" mi="3" ci="0" mb="0" cb="0"/><line nr="154" mi="1" ci="0" mb="0" cb="0"/><line nr="155" mi="3" ci="0" mb="0" cb="0"/><line nr="156" mi="1" ci="0" mb="0" cb="0"/><line nr="159" mi="3" ci="0" mb="0" cb="0"/><line nr="160" mi="3" ci="0" mb="0" cb="0"/><line nr="161" mi="3" ci="0" mb="0" cb="0"/><line nr="162" mi="3" ci="0" mb="0" cb="0"/><line nr="163" mi="3" ci="0" mb="0" cb="0"/><line nr="164" mi="3" ci="0" mb="0" cb="0"/><line nr="165" mi="3" ci="0" mb="0" cb="0"/><line nr="166" mi="3" ci="0" mb="0" cb="0"/><line nr="167" mi="4" ci="0" mb="0" cb="0"/><line nr="168" mi="3" ci="0" mb="0" cb="0"/><line nr="169" mi="3" ci="0" mb="0" cb="0"/><line nr="170" mi="3" ci="0" mb="0" cb="0"/><line nr="171" mi="3" ci="0" mb="0" cb="0"/><line nr="172" mi="10" ci="0" mb="0" cb="0"/><line nr="173" mi="3" ci="0" mb="0" cb="0"/><line nr="174" mi="3" ci="0" mb="0" cb="0"/><line nr="175" mi="3" ci="0" mb="0" cb="0"/><line nr="176" mi="10" ci="0" mb="2" cb="0"/><line nr="177" mi="1" ci="0" mb="0" cb="0"/><line nr="178" mi="3" ci="0" mb="0" cb="0"/><line nr="179" mi="1" ci="0" mb="0" cb="0"/><line nr="182" mi="3" ci="0" mb="0" cb="0"/><line nr="183" mi="3" ci="0" mb="0" cb="0"/><line nr="184" mi="3" ci="0" mb="0" cb="0"/><line nr="185" mi="3" ci="0" mb="2" cb="0"/><line nr="186" mi="4" ci="0" mb="0" cb="0"/><line nr="187" mi="4" ci="0" mb="0" cb="0"/><line nr="188" mi="1" ci="0" mb="0" cb="0"/><line nr="189" mi="3" ci="0" mb="0" cb="0"/><line nr="190" mi="3" ci="0" mb="0" cb="0"/><line nr="191" mi="5" ci="0" mb="0" cb="0"/><line nr="192" mi="3" ci="0" mb="0" cb="0"/><line nr="193" mi="3" ci="0" mb="0" cb="0"/><line nr="195" mi="3" ci="0" mb="0" cb="0"/><line nr="196" mi="3" ci="0" mb="2" cb="0"/><line nr="197" mi="4" ci="0" mb="0" cb="0"/><line nr="198" mi="4" ci="0" mb="0" cb="0"/><line nr="199" mi="1" ci="0" mb="0" cb="0"/><line nr="200" mi="5" ci="0" mb="2" cb="0"/><line nr="201" mi="3" ci="0" mb="0" cb="0"/><line nr="202" mi="3" ci="0" mb="0" cb="0"/><line nr="204" mi="4" ci="0" mb="0" cb="0"/><line nr="205" mi="1" ci="0" mb="0" cb="0"/><line nr="206" mi="4" ci="0" mb="0" cb="0"/><line nr="207" mi="1" ci="0" mb="0" cb="0"/><line nr="209" mi="3" ci="0" mb="0" cb="0"/><line nr="210" mi="3" ci="0" mb="0" cb="0"/><line nr="211" mi="1" ci="0" mb="0" cb="0"/><line nr="212" mi="3" ci="0" mb="0" cb="0"/><line nr="213" mi="1" ci="0" mb="0" cb="0"/><line nr="214" mi="3" ci="0" mb="0" cb="0"/><line nr="215" mi="1" ci="0" mb="0" cb="0"/><line nr="218" mi="3" ci="0" mb="0" cb="0"/><line nr="219" mi="3" ci="0" mb="0" cb="0"/><line nr="220" mi="3" ci="0" mb="2" cb="0"/><line nr="221" mi="4" ci="0" mb="0" cb="0"/><line nr="222" mi="4" ci="0" mb="0" cb="0"/><line nr="223" mi="1" ci="0" mb="0" cb="0"/><line nr="224" mi="3" ci="0" mb="0" cb="0"/><line nr="226" mi="3" ci="0" mb="0" cb="0"/><line nr="227" mi="1" ci="0" mb="0" cb="0"/><line nr="228" mi="4" ci="0" mb="0" cb="0"/><line nr="229" mi="1" ci="0" mb="0" cb="0"/><line nr="230" mi="3" ci="0" mb="0" cb="0"/><line nr="231" mi="1" ci="0" mb="0" cb="0"/><line nr="232" mi="3" ci="0" mb="0" cb="0"/><line nr="233" mi="1" ci="0" mb="0" cb="0"/><line nr="236" mi="2" ci="0" mb="0" cb="0"/><line nr="237" mi="2" ci="0" mb="0" cb="0"/><line nr="238" mi="2" ci="0" mb="0" cb="0"/><line nr="239" mi="3" ci="0" mb="0" cb="0"/><line nr="240" mi="1" ci="0" mb="0" cb="0"/><line nr="241" mi="3" ci="0" mb="0" cb="0"/><line nr="242" mi="1" ci="0" mb="0" cb="0"/><line nr="245" mi="1" ci="0" mb="0" cb="0"/><line nr="248" mi="2" ci="0" mb="0" cb="0"/><line nr="249" mi="1" ci="0" mb="0" cb="0"/><line nr="252" mi="3" ci="0" mb="0" cb="0"/><line nr="253" mi="3" ci="0" mb="0" cb="0"/><line nr="254" mi="3" ci="0" mb="0" cb="0"/><line nr="255" mi="3" ci="0" mb="0" cb="0"/><line nr="256" mi="3" ci="0" mb="0" cb="0"/><line nr="257" mi="3" ci="0" mb="0" cb="0"/><line nr="258" mi="3" ci="0" mb="0" cb="0"/><line nr="259" mi="3" ci="0" mb="0" cb="0"/><line nr="260" mi="3" ci="0" mb="0" cb="0"/><line nr="261" mi="3" ci="0" mb="0" cb="0"/><line nr="262" mi="3" ci="0" mb="0" cb="0"/><line nr="263" mi="3" ci="0" mb="0" cb="0"/><line nr="264" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="588" covered="0"/><counter type="BRANCH" missed="40" covered="0"/><counter type="LINE" missed="199" covered="0"/><counter type="COMPLEXITY" missed="29" covered="0"/><counter type="METHOD" missed="3" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="588" covered="0"/><counter type="BRANCH" missed="40" covered="0"/><counter type="LINE" missed="199" covered="0"/><counter type="COMPLEXITY" missed="29" covered="0"/><counter type="METHOD" missed="3" covered="0"/><counter type="CLASS" missed="1" covered="0"/></package><counter type="INSTRUCTION" missed="2723" covered="17"/><counter type="BRANCH" missed="209" covered="0"/><counter type="LINE" missed="723" covered="4"/><counter type="COMPLEXITY" missed="205" covered="2"/><counter type="METHOD" missed="88" covered="2"/><counter type="CLASS" missed="17" covered="1"/></report>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/Album.html b/target/site/jacoco/musichub.business/Album.html new file mode 100644 index 0000000..24287ce --- /dev/null +++ b/target/site/jacoco/musichub.business/Album.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Album</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.html" class="el_package">musichub.business</a> > <span class="el_class">Album</span></div><h1>Album</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">330 of 330</td><td class="ctr2">0 %</td><td class="bar">14 of 14</td><td class="ctr2">0 %</td><td class="ctr1">16</td><td class="ctr2">16</td><td class="ctr1">84</td><td class="ctr2">84</td><td class="ctr1">9</td><td class="ctr2">9</td></tr></tfoot><tbody><tr><td id="a4"><a href="Album.java.html#L112" class="el_method">createXMLElement(Document, Element)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="129" alt="129"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="20" height="10" title="2" alt="2"/></td><td class="ctr2" id="e0">0 %</td><td class="ctr1" id="f1">2</td><td class="ctr2" id="g1">2</td><td class="ctr1" id="h0">26</td><td class="ctr2" id="i0">26</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a1"><a href="Album.java.html#L49" class="el_method">Album(Element)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="104" height="10" title="112" alt="112"/></td><td class="ctr2" id="c1">0 %</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="12" alt="12"/></td><td class="ctr2" id="e1">0 %</td><td class="ctr1" id="f0">7</td><td class="ctr2" id="g0">7</td><td class="ctr1" id="h1">26</td><td class="ctr2" id="i1">26</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a2"><a href="Album.java.html#L35" class="el_method">Album(String, String, int, String)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="31" height="10" title="34" alt="34"/></td><td class="ctr2" id="c2">0 %</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">12</td><td class="ctr2" id="i2">12</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a3"><a href="Album.java.html#L21" class="el_method">Album(String, String, int, String, String, ArrayList)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="30" height="10" title="33" alt="33"/></td><td class="ctr2" id="c3">0 %</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">12</td><td class="ctr2" id="i3">12</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a7"><a href="Album.java.html#L98" class="el_method">getSongsRandomly()</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="6" height="10" title="7" alt="7"/></td><td class="ctr2" id="c4">0 %</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">3</td><td class="ctr2" id="i4">3</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a0"><a href="Album.java.html#L89" class="el_method">addSong(UUID)</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="5" height="10" title="6" alt="6"/></td><td class="ctr2" id="c5">0 %</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h5">2</td><td class="ctr2" id="i5">2</td><td class="ctr1" id="j5">1</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a6"><a href="Album.java.html#L94" class="el_method">getSongs()</a></td><td class="bar" id="b6"><img src="../jacoco-resources/redbar.gif" width="2" height="10" title="3" alt="3"/></td><td class="ctr2" id="c6">0 %</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">1</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h6">1</td><td class="ctr2" id="i6">1</td><td class="ctr1" id="j6">1</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a8"><a href="Album.java.html#L104" class="el_method">getTitle()</a></td><td class="bar" id="b7"><img src="../jacoco-resources/redbar.gif" width="2" height="10" title="3" alt="3"/></td><td class="ctr2" id="c7">0 %</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">1</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h7">1</td><td class="ctr2" id="i7">1</td><td class="ctr1" id="j7">1</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a5"><a href="Album.java.html#L108" class="el_method">getDate()</a></td><td class="bar" id="b8"><img src="../jacoco-resources/redbar.gif" width="2" height="10" title="3" alt="3"/></td><td class="ctr2" id="c8">0 %</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">1</td><td class="ctr2" id="g8">1</td><td class="ctr1" id="h8">1</td><td class="ctr2" id="i8">1</td><td class="ctr1" id="j8">1</td><td class="ctr2" id="k8">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/Album.java.html b/target/site/jacoco/musichub.business/Album.java.html new file mode 100644 index 0000000..107bbe9 --- /dev/null +++ b/target/site/jacoco/musichub.business/Album.java.html @@ -0,0 +1,146 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Album.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.source.html" class="el_package">musichub.business</a> > <span class="el_source">Album.java</span></div><h1>Album.java</h1><pre class="source lang-java linenums">package musichub.business; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + + +public class Album { + private final String title; + private final int lengthInSeconds; + private final UUID uuid; + private String artist; + private Date date; + private ArrayList<UUID> songsUIDs; + +<span class="nc" id="L21"> public Album(String title, String artist, int lengthInSeconds, String id, String date, ArrayList<UUID> songsUIDs) {</span> +<span class="nc" id="L22"> this.title = title;</span> +<span class="nc" id="L23"> this.artist = artist;</span> +<span class="nc" id="L24"> this.lengthInSeconds = lengthInSeconds;</span> +<span class="nc" id="L25"> this.uuid = UUID.fromString(id);</span> + try { +<span class="nc" id="L27"> SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");</span> +<span class="nc" id="L28"> this.date = sdf.parse(date);</span> +<span class="nc" id="L29"> } catch (ParseException ex) {</span> +<span class="nc" id="L30"> ex.printStackTrace();</span> +<span class="nc" id="L31"> }</span> +<span class="nc" id="L32"> this.songsUIDs = songsUIDs;</span> +<span class="nc" id="L33"> }</span> + +<span class="nc" id="L35"> public Album(String title, String artist, int lengthInSeconds, String date) {</span> +<span class="nc" id="L36"> this.title = title;</span> +<span class="nc" id="L37"> this.artist = artist;</span> +<span class="nc" id="L38"> this.lengthInSeconds = lengthInSeconds;</span> +<span class="nc" id="L39"> this.uuid = UUID.randomUUID();</span> + try { +<span class="nc" id="L41"> SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");</span> +<span class="nc" id="L42"> this.date = sdf.parse(date);</span> +<span class="nc" id="L43"> } catch (ParseException ex) {</span> +<span class="nc" id="L44"> ex.printStackTrace();</span> +<span class="nc" id="L45"> }</span> +<span class="nc" id="L46"> this.songsUIDs = new ArrayList<>();</span> +<span class="nc" id="L47"> }</span> + +<span class="nc" id="L49"> public Album(Element xmlElement) throws Exception {</span> + { +<span class="nc" id="L51"> this.title = xmlElement.getElementsByTagName("title").item(0).getTextContent();</span> +<span class="nc" id="L52"> this.lengthInSeconds = Integer.parseInt(xmlElement.getElementsByTagName("lengthInSeconds").item(0).getTextContent());</span> +<span class="nc" id="L53"> String uuid = null;</span> + try { +<span class="nc" id="L55"> uuid = xmlElement.getElementsByTagName("UUID").item(0).getTextContent();</span> +<span class="nc" id="L56"> } catch (Exception ex) {</span> +<span class="nc" id="L57"> System.out.println("Empty album UUID, will create a new one");</span> +<span class="nc" id="L58"> }</span> +<span class="nc bnc" id="L59" title="All 4 branches missed."> if ((uuid == null) || (uuid.isEmpty()))</span> +<span class="nc" id="L60"> this.uuid = UUID.randomUUID();</span> +<span class="nc" id="L61"> else this.uuid = UUID.fromString(uuid);</span> + +<span class="nc" id="L63"> SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");</span> +<span class="nc" id="L64"> this.date = sdf.parse(xmlElement.getElementsByTagName("date").item(0).getTextContent());</span> + //parse list of songs: +<span class="nc" id="L66"> Node songsElement = xmlElement.getElementsByTagName("songs").item(0);</span> +<span class="nc" id="L67"> NodeList songUUIDNodes = songsElement.getChildNodes();</span> +<span class="nc bnc" id="L68" title="All 2 branches missed."> if (songUUIDNodes == null) return;</span> + +<span class="nc" id="L70"> this.songsUIDs = new ArrayList<>();</span> + +<span class="nc bnc" id="L72" title="All 2 branches missed."> for (int i = 0; i < songUUIDNodes.getLength(); i++) {</span> +<span class="nc bnc" id="L73" title="All 2 branches missed."> if (songUUIDNodes.item(i).getNodeType() == Node.ELEMENT_NODE) {</span> +<span class="nc" id="L74"> Element songElement = (Element) songUUIDNodes.item(i);</span> +<span class="nc bnc" id="L75" title="All 2 branches missed."> if (songElement.getNodeName().equals("UUID")) {</span> + try { +<span class="nc" id="L77"> this.addSong(UUID.fromString(songElement.getTextContent()));</span> +<span class="nc" id="L78"> } catch (Exception ex) {</span> +<span class="nc" id="L79"> ex.printStackTrace();</span> +<span class="nc" id="L80"> }</span> + } + } + } + } +<span class="nc" id="L85"> }</span> + + + public void addSong(UUID song) { +<span class="nc" id="L89"> songsUIDs.add(song);</span> +<span class="nc" id="L90"> }</span> + + + public List<UUID> getSongs() { +<span class="nc" id="L94"> return songsUIDs;</span> + } + + public ArrayList<UUID> getSongsRandomly() { +<span class="nc" id="L98"> ArrayList<UUID> shuffledSongs = songsUIDs;</span> +<span class="nc" id="L99"> Collections.shuffle(shuffledSongs);</span> +<span class="nc" id="L100"> return shuffledSongs;</span> + } + + public String getTitle() { +<span class="nc" id="L104"> return title;</span> + } + + public Date getDate() { +<span class="nc" id="L108"> return date;</span> + } + + public void createXMLElement(Document document, Element parentElement) { +<span class="nc" id="L112"> Element albumElement = document.createElement("album");</span> +<span class="nc" id="L113"> parentElement.appendChild(albumElement);</span> + +<span class="nc" id="L115"> Element nameElement = document.createElement("title");</span> +<span class="nc" id="L116"> nameElement.appendChild(document.createTextNode(title));</span> +<span class="nc" id="L117"> albumElement.appendChild(nameElement);</span> + +<span class="nc" id="L119"> Element artistElement = document.createElement("artist");</span> +<span class="nc" id="L120"> artistElement.appendChild(document.createTextNode(artist));</span> +<span class="nc" id="L121"> albumElement.appendChild(artistElement);</span> + +<span class="nc" id="L123"> Element lengthElement = document.createElement("lengthInSeconds");</span> +<span class="nc" id="L124"> lengthElement.appendChild(document.createTextNode(Integer.valueOf(lengthInSeconds).toString()));</span> +<span class="nc" id="L125"> albumElement.appendChild(lengthElement);</span> + +<span class="nc" id="L127"> Element UUIDElement = document.createElement("UUID");</span> +<span class="nc" id="L128"> UUIDElement.appendChild(document.createTextNode(uuid.toString()));</span> +<span class="nc" id="L129"> albumElement.appendChild(UUIDElement);</span> + +<span class="nc" id="L131"> Element dateElement = document.createElement("date");</span> +<span class="nc" id="L132"> SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");</span> +<span class="nc" id="L133"> dateElement.appendChild(document.createTextNode(sdf.format(date)));</span> +<span class="nc" id="L134"> albumElement.appendChild(dateElement);</span> + +<span class="nc" id="L136"> Element songsElement = document.createElement("songs");</span> +<span class="nc bnc" id="L137" title="All 2 branches missed."> for (UUID currentUUID : this.songsUIDs) {</span> +<span class="nc" id="L138"> Element songUUIDElement = document.createElement("UUID");</span> +<span class="nc" id="L139"> songUUIDElement.appendChild(document.createTextNode(currentUUID.toString()));</span> +<span class="nc" id="L140"> songsElement.appendChild(songUUIDElement);</span> +<span class="nc" id="L141"> }</span> +<span class="nc" id="L142"> albumElement.appendChild(songsElement);</span> + +<span class="nc" id="L144"> }</span> +} +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/AudioBook.html b/target/site/jacoco/musichub.business/AudioBook.html new file mode 100644 index 0000000..aec1e56 --- /dev/null +++ b/target/site/jacoco/musichub.business/AudioBook.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>AudioBook</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.html" class="el_package">musichub.business</a> > <span class="el_class">AudioBook</span></div><h1>AudioBook</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">164 of 164</td><td class="ctr2">0 %</td><td class="bar">10 of 10</td><td class="ctr2">0 %</td><td class="ctr1">17</td><td class="ctr2">17</td><td class="ctr1">39</td><td class="ctr2">39</td><td class="ctr1">9</td><td class="ctr2">9</td></tr></tfoot><tbody><tr><td id="a3"><a href="AudioBook.java.html#L64" class="el_method">createXMLElement(Document, Element)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="45" alt="45"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h0">10</td><td class="ctr2" id="i0">10</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a7"><a href="AudioBook.java.html#L33" class="el_method">setLanguage(String)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="77" height="10" title="29" alt="29"/></td><td class="ctr2" id="c1">0 %</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="5" alt="5"/></td><td class="ctr2" id="e0">0 %</td><td class="ctr1" id="f0">5</td><td class="ctr2" id="g0">5</td><td class="ctr1" id="h1">7</td><td class="ctr2" id="i1">7</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a6"><a href="AudioBook.java.html#L47" class="el_method">setCategory(String)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="77" height="10" title="29" alt="29"/></td><td class="ctr2" id="c2">0 %</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="5" alt="5"/></td><td class="ctr2" id="e1">0 %</td><td class="ctr1" id="f1">5</td><td class="ctr2" id="g1">5</td><td class="ctr1" id="h2">7</td><td class="ctr2" id="i2">7</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a0"><a href="AudioBook.java.html#L23" class="el_method">AudioBook(Element)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="53" height="10" title="20" alt="20"/></td><td class="ctr2" id="c3">0 %</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">4</td><td class="ctr2" id="i3">4</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a2"><a href="AudioBook.java.html#L11" class="el_method">AudioBook(String, String, int, String, String, String, String)</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="37" height="10" title="14" alt="14"/></td><td class="ctr2" id="c4">0 %</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">4</td><td class="ctr2" id="i4">4</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a1"><a href="AudioBook.java.html#L17" class="el_method">AudioBook(String, String, int, String, String, String)</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="34" height="10" title="13" alt="13"/></td><td class="ctr2" id="c5">0 %</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h5">4</td><td class="ctr2" id="i5">4</td><td class="ctr1" id="j5">1</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a8"><a href="AudioBook.java.html#L58" class="el_method">toString()</a></td><td class="bar" id="b6"><img src="../jacoco-resources/redbar.gif" width="21" height="10" title="8" alt="8"/></td><td class="ctr2" id="c6">0 %</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">1</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h6">1</td><td class="ctr2" id="i6">1</td><td class="ctr1" id="j6">1</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a5"><a href="AudioBook.java.html#L29" class="el_method">getLanguage()</a></td><td class="bar" id="b7"><img src="../jacoco-resources/redbar.gif" width="8" height="10" title="3" alt="3"/></td><td class="ctr2" id="c7">0 %</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">1</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h7">1</td><td class="ctr2" id="i7">1</td><td class="ctr1" id="j7">1</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a4"><a href="AudioBook.java.html#L43" class="el_method">getCategory()</a></td><td class="bar" id="b8"><img src="../jacoco-resources/redbar.gif" width="8" height="10" title="3" alt="3"/></td><td class="ctr2" id="c8">0 %</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">1</td><td class="ctr2" id="g8">1</td><td class="ctr1" id="h8">1</td><td class="ctr2" id="i8">1</td><td class="ctr1" id="j8">1</td><td class="ctr2" id="k8">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/AudioBook.java.html b/target/site/jacoco/musichub.business/AudioBook.java.html new file mode 100644 index 0000000..33a7924 --- /dev/null +++ b/target/site/jacoco/musichub.business/AudioBook.java.html @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>AudioBook.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.source.html" class="el_package">musichub.business</a> > <span class="el_source">AudioBook.java</span></div><h1>AudioBook.java</h1><pre class="source lang-java linenums">package musichub.business; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +public class AudioBook extends AudioElement { + private Language language; + private Category category; + + public AudioBook(String title, String artist, int lengthInSeconds, String uid, String content, String language, String category) { +<span class="nc" id="L11"> super(title, artist, lengthInSeconds, uid, content);</span> +<span class="nc" id="L12"> this.setLanguage(language);</span> +<span class="nc" id="L13"> this.setCategory(category);</span> +<span class="nc" id="L14"> }</span> + + public AudioBook(String title, String artist, int lengthInSeconds, String content, String language, String category) { +<span class="nc" id="L17"> super(title, artist, lengthInSeconds, content);</span> +<span class="nc" id="L18"> this.setLanguage(language);</span> +<span class="nc" id="L19"> this.setCategory(category);</span> +<span class="nc" id="L20"> }</span> + + public AudioBook(Element xmlElement) { +<span class="nc" id="L23"> super(xmlElement);</span> +<span class="nc" id="L24"> this.setLanguage(xmlElement.getElementsByTagName("language").item(0).getTextContent());</span> +<span class="nc" id="L25"> this.setCategory(xmlElement.getElementsByTagName("category").item(0).getTextContent());</span> +<span class="nc" id="L26"> }</span> + + public Language getLanguage() { +<span class="nc" id="L29"> return this.language;</span> + } + + public void setLanguage(String language) { +<span class="nc bnc" id="L33" title="All 5 branches missed."> switch (language.toLowerCase()) {</span> +<span class="nc" id="L34"> default -> this.language = Language.ENGLISH;</span> +<span class="nc" id="L35"> case "french" -> this.language = Language.FRENCH;</span> +<span class="nc" id="L36"> case "german" -> this.language = Language.GERMAN;</span> +<span class="nc" id="L37"> case "spanish" -> this.language = Language.SPANISH;</span> +<span class="nc" id="L38"> case "italian" -> this.language = Language.ITALIAN;</span> + } +<span class="nc" id="L40"> }</span> + + public Category getCategory() { +<span class="nc" id="L43"> return this.category;</span> + } + + public void setCategory(String category) { +<span class="nc bnc" id="L47" title="All 5 branches missed."> switch (category.toLowerCase()) {</span> +<span class="nc" id="L48"> default -> this.category = Category.YOUTH;</span> +<span class="nc" id="L49"> case "novel" -> this.category = Category.NOVEL;</span> +<span class="nc" id="L50"> case "theater" -> this.category = Category.THEATER;</span> +<span class="nc" id="L51"> case "documentary" -> this.category = Category.DOCUMENTARY;</span> +<span class="nc" id="L52"> case "speech" -> this.category = Category.SPEECH;</span> + } +<span class="nc" id="L54"> }</span> + + + public String toString() { +<span class="nc" id="L58"> return super.toString() + ", Language = " + getLanguage() + ", Category = " + getCategory() + "\n";</span> + } + + + public void createXMLElement(Document document, Element parentElement) { + // audiobook element +<span class="nc" id="L64"> Element audioBook = document.createElement("audiobook");</span> + +<span class="nc" id="L66"> super.createXMLElement(document, audioBook);</span> + +<span class="nc" id="L68"> Element languageElement = document.createElement("language");</span> +<span class="nc" id="L69"> languageElement.appendChild(document.createTextNode(language.getLanguage()));</span> +<span class="nc" id="L70"> audioBook.appendChild(languageElement);</span> + +<span class="nc" id="L72"> Element categoryElement = document.createElement("category");</span> +<span class="nc" id="L73"> categoryElement.appendChild(document.createTextNode(category.getCategory()));</span> +<span class="nc" id="L74"> audioBook.appendChild(categoryElement);</span> + +<span class="nc" id="L76"> parentElement.appendChild(audioBook);</span> +<span class="nc" id="L77"> }</span> +} +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/AudioElement.html b/target/site/jacoco/musichub.business/AudioElement.html new file mode 100644 index 0000000..7a6e499 --- /dev/null +++ b/target/site/jacoco/musichub.business/AudioElement.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>AudioElement</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.html" class="el_package">musichub.business</a> > <span class="el_class">AudioElement</span></div><h1>AudioElement</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">266 of 266</td><td class="ctr2">0 %</td><td class="bar">11 of 11</td><td class="ctr2">0 %</td><td class="ctr1">16</td><td class="ctr2">16</td><td class="ctr1">72</td><td class="ctr2">72</td><td class="ctr1">9</td><td class="ctr2">9</td></tr></tfoot><tbody><tr><td id="a3"><a href="AudioElement.java.html#L75" class="el_method">createXMLElement(Document, Element)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="79" alt="79"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h1">16</td><td class="ctr2" id="i1">16</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a7"><a href="AudioElement.java.html#L99" class="el_method">manageAudioElement()</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="103" height="10" title="68" alt="68"/></td><td class="ctr2" id="c1">0 %</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="7" alt="7"/></td><td class="ctr2" id="e0">0 %</td><td class="ctr1" id="f0">6</td><td class="ctr2" id="g0">6</td><td class="ctr1" id="h0">24</td><td class="ctr2" id="i0">24</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a0"><a href="AudioElement.java.html#L40" class="el_method">AudioElement(Element)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="95" height="10" title="63" alt="63"/></td><td class="ctr2" id="c2">0 %</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="68" height="10" title="4" alt="4"/></td><td class="ctr2" id="e1">0 %</td><td class="ctr1" id="f1">3</td><td class="ctr2" id="g1">3</td><td class="ctr1" id="h2">14</td><td class="ctr2" id="i2">14</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a2"><a href="AudioElement.java.html#L24" class="el_method">AudioElement(String, String, int, String, String)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="28" height="10" title="19" alt="19"/></td><td class="ctr2" id="c3">0 %</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">7</td><td class="ctr2" id="i3">7</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a1"><a href="AudioElement.java.html#L32" class="el_method">AudioElement(String, String, int, String)</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="27" height="10" title="18" alt="18"/></td><td class="ctr2" id="c4">0 %</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">7</td><td class="ctr2" id="i4">7</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a8"><a href="AudioElement.java.html#L71" class="el_method">toString()</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="15" height="10" title="10" alt="10"/></td><td class="ctr2" id="c5">0 %</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h5">1</td><td class="ctr2" id="i5">1</td><td class="ctr1" id="j5">1</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a6"><a href="AudioElement.java.html#L59" class="el_method">getUUID()</a></td><td class="bar" id="b6"><img src="../jacoco-resources/redbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c6">0 %</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">1</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h6">1</td><td class="ctr2" id="i6">1</td><td class="ctr1" id="j6">1</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a4"><a href="AudioElement.java.html#L63" class="el_method">getArtist()</a></td><td class="bar" id="b7"><img src="../jacoco-resources/redbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c7">0 %</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">1</td><td class="ctr2" id="g7">1</td><td class="ctr1" id="h7">1</td><td class="ctr2" id="i7">1</td><td class="ctr1" id="j7">1</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a5"><a href="AudioElement.java.html#L67" class="el_method">getTitle()</a></td><td class="bar" id="b8"><img src="../jacoco-resources/redbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c8">0 %</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">1</td><td class="ctr2" id="g8">1</td><td class="ctr1" id="h8">1</td><td class="ctr2" id="i8">1</td><td class="ctr1" id="j8">1</td><td class="ctr2" id="k8">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/AudioElement.java.html b/target/site/jacoco/musichub.business/AudioElement.java.html new file mode 100644 index 0000000..4401836 --- /dev/null +++ b/target/site/jacoco/musichub.business/AudioElement.java.html @@ -0,0 +1,133 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>AudioElement.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.source.html" class="el_package">musichub.business</a> > <span class="el_source">AudioElement.java</span></div><h1>AudioElement.java</h1><pre class="source lang-java linenums">package musichub.business; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import java.io.File; +import java.io.IOException; +import java.util.Scanner; +import java.util.UUID; + +import javax.sound.sampled.AudioInputStream; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.Clip; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.UnsupportedAudioFileException; + +public abstract class AudioElement { + protected String title; + protected String artist; + protected int lengthInSeconds; + protected UUID uuid; + protected String content; + +<span class="nc" id="L24"> public AudioElement(String title, String artist, int lengthInSeconds, String id, String content) {</span> +<span class="nc" id="L25"> this.title = title;</span> +<span class="nc" id="L26"> this.artist = artist;</span> +<span class="nc" id="L27"> this.lengthInSeconds = lengthInSeconds;</span> +<span class="nc" id="L28"> this.uuid = UUID.fromString(id);</span> +<span class="nc" id="L29"> this.content = content;</span> +<span class="nc" id="L30"> }</span> + +<span class="nc" id="L32"> public AudioElement(String title, String artist, int lengthInSeconds, String content) {</span> +<span class="nc" id="L33"> this.title = title;</span> +<span class="nc" id="L34"> this.artist = artist;</span> +<span class="nc" id="L35"> this.lengthInSeconds = lengthInSeconds;</span> +<span class="nc" id="L36"> this.content = content;</span> +<span class="nc" id="L37"> this.uuid = UUID.randomUUID();</span> +<span class="nc" id="L38"> }</span> + +<span class="nc" id="L40"> public AudioElement(Element xmlElement) {</span> + { +<span class="nc" id="L42"> title = xmlElement.getElementsByTagName("title").item(0).getTextContent();</span> +<span class="nc" id="L43"> artist = xmlElement.getElementsByTagName("artist").item(0).getTextContent();</span> +<span class="nc" id="L44"> lengthInSeconds = Integer.parseInt(xmlElement.getElementsByTagName("length").item(0).getTextContent());</span> +<span class="nc" id="L45"> content = xmlElement.getElementsByTagName("content").item(0).getTextContent();</span> +<span class="nc" id="L46"> String uuid = null;</span> + try { +<span class="nc" id="L48"> uuid = xmlElement.getElementsByTagName("UUID").item(0).getTextContent();</span> +<span class="nc" id="L49"> } catch (Exception ex) {</span> +<span class="nc" id="L50"> System.out.println("Empty element UUID, will create a new one");</span> +<span class="nc" id="L51"> }</span> +<span class="nc bnc" id="L52" title="All 4 branches missed."> if ((uuid == null) || (uuid.isEmpty()))</span> +<span class="nc" id="L53"> this.uuid = UUID.randomUUID();</span> +<span class="nc" id="L54"> else this.uuid = UUID.fromString(uuid);</span> + } +<span class="nc" id="L56"> }</span> + + public UUID getUUID() { +<span class="nc" id="L59"> return this.uuid;</span> + } + + public String getArtist() { +<span class="nc" id="L63"> return this.artist;</span> + } + + public String getTitle() { +<span class="nc" id="L67"> return this.title;</span> + } + + public String toString() { +<span class="nc" id="L71"> return "Title = " + this.title + ", Artist = " + this.artist + ", Length = " + this.lengthInSeconds + ", Content = " + this.content;</span> + } + + public void createXMLElement(Document document, Element parentElement) { +<span class="nc" id="L75"> Element nameElement = document.createElement("title");</span> +<span class="nc" id="L76"> nameElement.appendChild(document.createTextNode(title));</span> +<span class="nc" id="L77"> parentElement.appendChild(nameElement);</span> + +<span class="nc" id="L79"> Element artistElement = document.createElement("artist");</span> +<span class="nc" id="L80"> artistElement.appendChild(document.createTextNode(artist));</span> +<span class="nc" id="L81"> parentElement.appendChild(artistElement);</span> + +<span class="nc" id="L83"> Element lengthElement = document.createElement("length");</span> +<span class="nc" id="L84"> lengthElement.appendChild(document.createTextNode(Integer.valueOf(lengthInSeconds).toString()));</span> +<span class="nc" id="L85"> parentElement.appendChild(lengthElement);</span> + +<span class="nc" id="L87"> Element UUIDElement = document.createElement("UUID");</span> +<span class="nc" id="L88"> UUIDElement.appendChild(document.createTextNode(uuid.toString()));</span> +<span class="nc" id="L89"> parentElement.appendChild(UUIDElement);</span> + +<span class="nc" id="L91"> Element contentElement = document.createElement("content");</span> +<span class="nc" id="L92"> contentElement.appendChild(document.createTextNode(content));</span> +<span class="nc" id="L93"> parentElement.appendChild(contentElement);</span> + +<span class="nc" id="L95"> }</span> + + public void manageAudioElement() throws UnsupportedAudioFileException, IOException, LineUnavailableException { + +<span class="nc" id="L99"> Scanner scanner = new Scanner(System.in); </span> + +<span class="nc" id="L101"> File file = new File(this.content);</span> +<span class="nc" id="L102"> AudioInputStream audioStream = AudioSystem.getAudioInputStream(file);</span> +<span class="nc" id="L103"> Clip clip = AudioSystem.getClip();</span> +<span class="nc" id="L104"> clip.open(audioStream);</span> + +<span class="nc" id="L106"> String action = "";</span> + +<span class="nc bnc" id="L108" title="All 2 branches missed."> while(!action.equals("Q")) {</span> +<span class="nc" id="L109"> System.out.println("P = Play \b S = Stop \b R = Reset \b Q = Quit");</span> +<span class="nc" id="L110"> System.out.println("Enter your choice");</span> +<span class="nc" id="L111"> action = scanner.next();</span> +<span class="nc" id="L112"> action = action.toUpperCase();</span> + +<span class="nc bnc" id="L114" title="All 5 branches missed."> switch(action) {</span> +<span class="nc" id="L115"> case "S" : clip.stop();</span> +<span class="nc" id="L116"> break;</span> +<span class="nc" id="L117"> case "P" : clip.start();</span> +<span class="nc" id="L118"> break;</span> +<span class="nc" id="L119"> case "R" : clip.setMicrosecondPosition(0);</span> +<span class="nc" id="L120"> break;</span> +<span class="nc" id="L121"> case "Q" : clip.stop();</span> +<span class="nc" id="L122"> break;</span> +<span class="nc" id="L123"> default : System.out.println("try again");</span> + } +<span class="nc" id="L125"> System.out.println("You stoped the Audio element");</span> + } + +<span class="nc" id="L128"> clip.close();</span> + +<span class="nc" id="L130"> }</span> + +} +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/Category.html b/target/site/jacoco/musichub.business/Category.html new file mode 100644 index 0000000..d7e4df0 --- /dev/null +++ b/target/site/jacoco/musichub.business/Category.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Category</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.html" class="el_package">musichub.business</a> > <span class="el_class">Category</span></div><h1>Category</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">49 of 49</td><td class="ctr2">0 %</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">3</td><td class="ctr2">3</td><td class="ctr1">6</td><td class="ctr2">6</td><td class="ctr1">3</td><td class="ctr2">3</td></tr></tfoot><tbody><tr><td id="a2"><a href="Category.java.html#L3" class="el_method">static {...}</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="38" alt="38"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h1">2</td><td class="ctr2" id="i1">2</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a0"><a href="Category.java.html#L7" class="el_method">Category(String, int, String)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="25" height="10" title="8" alt="8"/></td><td class="ctr2" id="c1">0 %</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h0">3</td><td class="ctr2" id="i0">3</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a1"><a href="Category.java.html#L12" class="el_method">getCategory()</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="9" height="10" title="3" alt="3"/></td><td class="ctr2" id="c2">0 %</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">1</td><td class="ctr2" id="i2">1</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/Category.java.html b/target/site/jacoco/musichub.business/Category.java.html new file mode 100644 index 0000000..cdef51f --- /dev/null +++ b/target/site/jacoco/musichub.business/Category.java.html @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Category.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.source.html" class="el_package">musichub.business</a> > <span class="el_source">Category.java</span></div><h1>Category.java</h1><pre class="source lang-java linenums">package musichub.business; + +<span class="nc" id="L3">public enum Category {</span> +<span class="nc" id="L4"> YOUTH("youth"), NOVEL("novel"), THEATER("theater"), DOCUMENTARY("documentary"), SPEECH("speech");</span> + private final String category; + +<span class="nc" id="L7"> Category(String category) {</span> +<span class="nc" id="L8"> this.category = category;</span> +<span class="nc" id="L9"> }</span> + + public String getCategory() { +<span class="nc" id="L12"> return category;</span> + } +} +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/Genre.html b/target/site/jacoco/musichub.business/Genre.html new file mode 100644 index 0000000..88e0ecd --- /dev/null +++ b/target/site/jacoco/musichub.business/Genre.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Genre</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.html" class="el_package">musichub.business</a> > <span class="el_class">Genre</span></div><h1>Genre</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">56 of 56</td><td class="ctr2">0 %</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">3</td><td class="ctr2">3</td><td class="ctr1">6</td><td class="ctr2">6</td><td class="ctr1">3</td><td class="ctr2">3</td></tr></tfoot><tbody><tr><td id="a2"><a href="Genre.java.html#L3" class="el_method">static {...}</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="45" alt="45"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h1">2</td><td class="ctr2" id="i1">2</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a0"><a href="Genre.java.html#L7" class="el_method">Genre(String, int, String)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="21" height="10" title="8" alt="8"/></td><td class="ctr2" id="c1">0 %</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h0">3</td><td class="ctr2" id="i0">3</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a1"><a href="Genre.java.html#L12" class="el_method">getGenre()</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="8" height="10" title="3" alt="3"/></td><td class="ctr2" id="c2">0 %</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">1</td><td class="ctr2" id="i2">1</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/Genre.java.html b/target/site/jacoco/musichub.business/Genre.java.html new file mode 100644 index 0000000..021bb4b --- /dev/null +++ b/target/site/jacoco/musichub.business/Genre.java.html @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Genre.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.source.html" class="el_package">musichub.business</a> > <span class="el_source">Genre.java</span></div><h1>Genre.java</h1><pre class="source lang-java linenums">package musichub.business; + +<span class="nc" id="L3">public enum Genre {</span> +<span class="nc" id="L4"> JAZZ("jazz"), CLASSIC("classic"), HIPHOP("hiphop"), ROCK("rock"), POP("pop"), RAP("rap");</span> + private final String genre; + +<span class="nc" id="L7"> Genre(String genre) {</span> +<span class="nc" id="L8"> this.genre = genre;</span> +<span class="nc" id="L9"> }</span> + + public String getGenre() { +<span class="nc" id="L12"> return genre;</span> + } +} +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/Language.html b/target/site/jacoco/musichub.business/Language.html new file mode 100644 index 0000000..604af85 --- /dev/null +++ b/target/site/jacoco/musichub.business/Language.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Language</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.html" class="el_package">musichub.business</a> > <span class="el_class">Language</span></div><h1>Language</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">49 of 49</td><td class="ctr2">0 %</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">3</td><td class="ctr2">3</td><td class="ctr1">6</td><td class="ctr2">6</td><td class="ctr1">3</td><td class="ctr2">3</td></tr></tfoot><tbody><tr><td id="a2"><a href="Language.java.html#L3" class="el_method">static {...}</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="38" alt="38"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h1">2</td><td class="ctr2" id="i1">2</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a1"><a href="Language.java.html#L7" class="el_method">Language(String, int, String)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="25" height="10" title="8" alt="8"/></td><td class="ctr2" id="c1">0 %</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h0">3</td><td class="ctr2" id="i0">3</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a0"><a href="Language.java.html#L12" class="el_method">getLanguage()</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="9" height="10" title="3" alt="3"/></td><td class="ctr2" id="c2">0 %</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">1</td><td class="ctr2" id="i2">1</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/Language.java.html b/target/site/jacoco/musichub.business/Language.java.html new file mode 100644 index 0000000..f974811 --- /dev/null +++ b/target/site/jacoco/musichub.business/Language.java.html @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Language.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.source.html" class="el_package">musichub.business</a> > <span class="el_source">Language.java</span></div><h1>Language.java</h1><pre class="source lang-java linenums">package musichub.business; + +<span class="nc" id="L3">public enum Language {</span> +<span class="nc" id="L4"> FRENCH("french"), ENGLISH("english"), ITALIAN("italian"), SPANISH("spanish"), GERMAN("german");</span> + private final String language; + +<span class="nc" id="L7"> Language(String language) {</span> +<span class="nc" id="L8"> this.language = language;</span> +<span class="nc" id="L9"> }</span> + + public String getLanguage() { +<span class="nc" id="L12"> return language;</span> + } +} +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/MusicHub.html b/target/site/jacoco/musichub.business/MusicHub.html new file mode 100644 index 0000000..6bedc98 --- /dev/null +++ b/target/site/jacoco/musichub.business/MusicHub.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>MusicHub</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.html" class="el_package">musichub.business</a> > <span class="el_class">MusicHub</span></div><h1>MusicHub</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">803 of 803</td><td class="ctr2">0 %</td><td class="bar">114 of 114</td><td class="ctr2">0 %</td><td class="ctr1">79</td><td class="ctr2">79</td><td class="ctr1">195</td><td class="ctr2">195</td><td class="ctr1">22</td><td class="ctr2">22</td></tr></tfoot><tbody><tr><td id="a2"><a href="MusicHub.java.html#L158" class="el_method">addElementToAlbum(String, String)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="82" alt="82"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d2"><img src="../jacoco-resources/redbar.gif" width="102" height="10" title="12" alt="12"/></td><td class="ctr2" id="e0">0 %</td><td class="ctr1" id="f2">7</td><td class="ctr2" id="g2">7</td><td class="ctr1" id="h0">20</td><td class="ctr2" id="i0">20</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a3"><a href="MusicHub.java.html#L187" class="el_method">addElementToPlayList(String, String)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="82" alt="82"/></td><td class="ctr2" id="c1">0 %</td><td class="bar" id="d3"><img src="../jacoco-resources/redbar.gif" width="102" height="10" title="12" alt="12"/></td><td class="ctr2" id="e1">0 %</td><td class="ctr1" id="f3">7</td><td class="ctr2" id="g3">7</td><td class="ctr1" id="h1">20</td><td class="ctr2" id="i1">20</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a9"><a href="MusicHub.java.html#L135" class="el_method">getAlbumSongsSortedByGenre(String)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="115" height="10" title="79" alt="79"/></td><td class="ctr2" id="c2">0 %</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="14" alt="14"/></td><td class="ctr2" id="e2">0 %</td><td class="ctr1" id="f0">8</td><td class="ctr2" id="g0">8</td><td class="ctr1" id="h3">16</td><td class="ctr2" id="i3">16</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a8"><a href="MusicHub.java.html#L113" class="el_method">getAlbumSongs(String)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="106" height="10" title="73" alt="73"/></td><td class="ctr2" id="c3">0 %</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="14" alt="14"/></td><td class="ctr2" id="e3">0 %</td><td class="ctr1" id="f1">8</td><td class="ctr2" id="g1">8</td><td class="ctr1" id="h4">15</td><td class="ctr2" id="i4">15</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a14"><a href="MusicHub.java.html#L254" class="el_method">loadElements()</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="93" height="10" title="64" alt="64"/></td><td class="ctr2" id="c4">0 %</td><td class="bar" id="d4"><img src="../jacoco-resources/redbar.gif" width="85" height="10" title="10" alt="10"/></td><td class="ctr2" id="e4">0 %</td><td class="ctr1" id="f4">6</td><td class="ctr2" id="g4">6</td><td class="ctr1" id="h2">18</td><td class="ctr2" id="i2">18</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a11"><a href="MusicHub.java.html#L101" class="el_method">getAudiobooksTitlesSortedByAuthor()</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="77" height="10" title="53" alt="53"/></td><td class="ctr2" id="c5">0 %</td><td class="bar" id="d9"><img src="../jacoco-resources/redbar.gif" width="51" height="10" title="6" alt="6"/></td><td class="ctr2" id="e5">0 %</td><td class="ctr1" id="f9">4</td><td class="ctr2" id="g9">4</td><td class="ctr1" id="h11">9</td><td class="ctr2" id="i11">9</td><td class="ctr1" id="j5">1</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a19"><a href="MusicHub.java.html#L314" class="el_method">saveElements()</a></td><td class="bar" id="b6"><img src="../jacoco-resources/redbar.gif" width="68" height="10" title="47" alt="47"/></td><td class="ctr2" id="c6">0 %</td><td class="bar" id="d5"><img src="../jacoco-resources/redbar.gif" width="68" height="10" title="8" alt="8"/></td><td class="ctr2" id="e6">0 %</td><td class="ctr1" id="f5">5</td><td class="ctr2" id="g5">5</td><td class="ctr1" id="h5">12</td><td class="ctr2" id="i5">12</td><td class="ctr1" id="j6">1</td><td class="ctr2" id="k6">1</td></tr><tr><td id="a13"><a href="MusicHub.java.html#L218" class="el_method">loadAlbums()</a></td><td class="bar" id="b7"><img src="../jacoco-resources/redbar.gif" width="64" height="10" title="44" alt="44"/></td><td class="ctr2" id="c7">0 %</td><td class="bar" id="d6"><img src="../jacoco-resources/redbar.gif" width="68" height="10" title="8" alt="8"/></td><td class="ctr2" id="e7">0 %</td><td class="ctr1" id="f6">5</td><td class="ctr2" id="g6">5</td><td class="ctr1" id="h6">11</td><td class="ctr2" id="i6">11</td><td class="ctr1" id="j7">1</td><td class="ctr2" id="k7">1</td></tr><tr><td id="a15"><a href="MusicHub.java.html#L236" class="el_method">loadPlaylists()</a></td><td class="bar" id="b8"><img src="../jacoco-resources/redbar.gif" width="64" height="10" title="44" alt="44"/></td><td class="ctr2" id="c8">0 %</td><td class="bar" id="d7"><img src="../jacoco-resources/redbar.gif" width="68" height="10" title="8" alt="8"/></td><td class="ctr2" id="e8">0 %</td><td class="ctr1" id="f7">5</td><td class="ctr2" id="g7">5</td><td class="ctr1" id="h7">11</td><td class="ctr2" id="i7">11</td><td class="ctr1" id="j8">1</td><td class="ctr2" id="k8">1</td></tr><tr><td id="a6"><a href="MusicHub.java.html#L66" class="el_method">deletePlayList(String)</a></td><td class="bar" id="b9"><img src="../jacoco-resources/redbar.gif" width="58" height="10" title="40" alt="40"/></td><td class="ctr2" id="c9">0 %</td><td class="bar" id="d8"><img src="../jacoco-resources/redbar.gif" width="68" height="10" title="8" alt="8"/></td><td class="ctr2" id="e9">0 %</td><td class="ctr1" id="f8">5</td><td class="ctr2" id="g8">5</td><td class="ctr1" id="h8">11</td><td class="ctr2" id="i8">11</td><td class="ctr1" id="j9">1</td><td class="ctr2" id="k9">1</td></tr><tr><td id="a18"><a href="MusicHub.java.html#L282" class="el_method">saveAlbums()</a></td><td class="bar" id="b10"><img src="../jacoco-resources/redbar.gif" width="52" height="10" title="36" alt="36"/></td><td class="ctr2" id="c10">0 %</td><td class="bar" id="d10"><img src="../jacoco-resources/redbar.gif" width="34" height="10" title="4" alt="4"/></td><td class="ctr2" id="e10">0 %</td><td class="ctr1" id="f10">3</td><td class="ctr2" id="g10">3</td><td class="ctr1" id="h9">10</td><td class="ctr2" id="i9">10</td><td class="ctr1" id="j10">1</td><td class="ctr2" id="k10">1</td></tr><tr><td id="a20"><a href="MusicHub.java.html#L298" class="el_method">savePlayLists()</a></td><td class="bar" id="b11"><img src="../jacoco-resources/redbar.gif" width="52" height="10" title="36" alt="36"/></td><td class="ctr2" id="c11">0 %</td><td class="bar" id="d11"><img src="../jacoco-resources/redbar.gif" width="34" height="10" title="4" alt="4"/></td><td class="ctr2" id="e11">0 %</td><td class="ctr1" id="f11">3</td><td class="ctr2" id="g11">3</td><td class="ctr1" id="h10">10</td><td class="ctr2" id="i10">10</td><td class="ctr1" id="j11">1</td><td class="ctr2" id="k11">1</td></tr><tr><td id="a10"><a href="MusicHub.java.html#L93" class="el_method">getAlbumsTitlesSortedByDate()</a></td><td class="bar" id="b12"><img src="../jacoco-resources/redbar.gif" width="46" height="10" title="32" alt="32"/></td><td class="ctr2" id="c12">0 %</td><td class="bar" id="d13"><img src="../jacoco-resources/redbar.gif" width="17" height="10" title="2" alt="2"/></td><td class="ctr2" id="e12">0 %</td><td class="ctr1" id="f13">2</td><td class="ctr2" id="g13">2</td><td class="ctr1" id="h13">5</td><td class="ctr2" id="i13">5</td><td class="ctr1" id="j12">1</td><td class="ctr2" id="k12">1</td></tr><tr><td id="a16"><a href="MusicHub.java.html#L41" class="el_method">MusicHub()</a></td><td class="bar" id="b13"><img src="../jacoco-resources/redbar.gif" width="42" height="10" title="29" alt="29"/></td><td class="ctr2" id="c13">0 %</td><td class="bar" id="d14"/><td class="ctr2" id="e14">n/a</td><td class="ctr1" id="f14">1</td><td class="ctr2" id="g14">1</td><td class="ctr1" id="h12">9</td><td class="ctr2" id="i12">9</td><td class="ctr1" id="j13">1</td><td class="ctr2" id="k13">1</td></tr><tr><td id="a12"><a href="MusicHub.java.html#L335" class="el_method">getAudioElement(List, String)</a></td><td class="bar" id="b14"><img src="../jacoco-resources/redbar.gif" width="27" height="10" title="19" alt="19"/></td><td class="ctr2" id="c14">0 %</td><td class="bar" id="d12"><img src="../jacoco-resources/redbar.gif" width="34" height="10" title="4" alt="4"/></td><td class="ctr2" id="e13">0 %</td><td class="ctr1" id="f12">3</td><td class="ctr2" id="g12">3</td><td class="ctr1" id="h14">5</td><td class="ctr2" id="i14">5</td><td class="ctr1" id="j14">1</td><td class="ctr2" id="k14">1</td></tr><tr><td id="a21"><a href="MusicHub.java.html#L34" class="el_method">static {...}</a></td><td class="bar" id="b15"><img src="../jacoco-resources/redbar.gif" width="19" height="10" title="13" alt="13"/></td><td class="ctr2" id="c15">0 %</td><td class="bar" id="d15"/><td class="ctr2" id="e15">n/a</td><td class="ctr1" id="f15">1</td><td class="ctr2" id="g15">1</td><td class="ctr1" id="h15">4</td><td class="ctr2" id="i15">4</td><td class="ctr1" id="j15">1</td><td class="ctr2" id="k15">1</td></tr><tr><td id="a1"><a href="MusicHub.java.html#L53" class="el_method">addElement(AudioElement)</a></td><td class="bar" id="b16"><img src="../jacoco-resources/redbar.gif" width="8" height="10" title="6" alt="6"/></td><td class="ctr2" id="c16">0 %</td><td class="bar" id="d16"/><td class="ctr2" id="e16">n/a</td><td class="ctr1" id="f16">1</td><td class="ctr2" id="g16">1</td><td class="ctr1" id="h16">2</td><td class="ctr2" id="i16">2</td><td class="ctr1" id="j16">1</td><td class="ctr2" id="k16">1</td></tr><tr><td id="a0"><a href="MusicHub.java.html#L57" class="el_method">addAlbum(Album)</a></td><td class="bar" id="b17"><img src="../jacoco-resources/redbar.gif" width="8" height="10" title="6" alt="6"/></td><td class="ctr2" id="c17">0 %</td><td class="bar" id="d17"/><td class="ctr2" id="e17">n/a</td><td class="ctr1" id="f17">1</td><td class="ctr2" id="g17">1</td><td class="ctr1" id="h17">2</td><td class="ctr2" id="i17">2</td><td class="ctr1" id="j17">1</td><td class="ctr2" id="k17">1</td></tr><tr><td id="a4"><a href="MusicHub.java.html#L61" class="el_method">addPlaylist(PlayList)</a></td><td class="bar" id="b18"><img src="../jacoco-resources/redbar.gif" width="8" height="10" title="6" alt="6"/></td><td class="ctr2" id="c18">0 %</td><td class="bar" id="d18"/><td class="ctr2" id="e18">n/a</td><td class="ctr1" id="f18">1</td><td class="ctr2" id="g18">1</td><td class="ctr1" id="h18">2</td><td class="ctr2" id="i18">2</td><td class="ctr1" id="j18">1</td><td class="ctr2" id="k18">1</td></tr><tr><td id="a5"><a href="MusicHub.java.html#L81" class="el_method">albums()</a></td><td class="bar" id="b19"><img src="../jacoco-resources/redbar.gif" width="5" height="10" title="4" alt="4"/></td><td class="ctr2" id="c19">0 %</td><td class="bar" id="d19"/><td class="ctr2" id="e19">n/a</td><td class="ctr1" id="f19">1</td><td class="ctr2" id="g19">1</td><td class="ctr1" id="h19">1</td><td class="ctr2" id="i19">1</td><td class="ctr1" id="j19">1</td><td class="ctr2" id="k19">1</td></tr><tr><td id="a17"><a href="MusicHub.java.html#L85" class="el_method">playlists()</a></td><td class="bar" id="b20"><img src="../jacoco-resources/redbar.gif" width="5" height="10" title="4" alt="4"/></td><td class="ctr2" id="c20">0 %</td><td class="bar" id="d20"/><td class="ctr2" id="e20">n/a</td><td class="ctr1" id="f20">1</td><td class="ctr2" id="g20">1</td><td class="ctr1" id="h20">1</td><td class="ctr2" id="i20">1</td><td class="ctr1" id="j20">1</td><td class="ctr2" id="k20">1</td></tr><tr><td id="a7"><a href="MusicHub.java.html#L89" class="el_method">elements()</a></td><td class="bar" id="b21"><img src="../jacoco-resources/redbar.gif" width="5" height="10" title="4" alt="4"/></td><td class="ctr2" id="c21">0 %</td><td class="bar" id="d21"/><td class="ctr2" id="e21">n/a</td><td class="ctr1" id="f21">1</td><td class="ctr2" id="g21">1</td><td class="ctr1" id="h21">1</td><td class="ctr2" id="i21">1</td><td class="ctr1" id="j21">1</td><td class="ctr2" id="k21">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/MusicHub.java.html b/target/site/jacoco/musichub.business/MusicHub.java.html new file mode 100644 index 0000000..b9dfd09 --- /dev/null +++ b/target/site/jacoco/musichub.business/MusicHub.java.html @@ -0,0 +1,343 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>MusicHub.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.source.html" class="el_package">musichub.business</a> > <span class="el_source">MusicHub.java</span></div><h1>MusicHub.java</h1><pre class="source lang-java linenums">package musichub.business; + +import musichub.util.XMLHandler; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import java.io.IOException; +import java.util.*; + +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.UnsupportedAudioFileException; + +<span class="nc" id="L15">class SortByDate implements Comparator<Album> {</span> + public int compare(Album a1, Album a2) { +<span class="nc" id="L17"> return a1.getDate().compareTo(a2.getDate());</span> + } +} + +<span class="nc" id="L21">class SortByGenre implements Comparator<Song> {</span> + public int compare(Song s1, Song s2) { +<span class="nc" id="L23"> return s1.getGenre().compareTo(s2.getGenre());</span> + } +} + +<span class="nc" id="L27">class SortByAuthor implements Comparator<AudioElement> {</span> + public int compare(AudioElement e1, AudioElement e2) { +<span class="nc" id="L29"> return e1.getArtist().compareTo(e2.getArtist());</span> + } +} + +public class MusicHub { +<span class="nc" id="L34"> public static final String DIR = System.getProperty("user.dir");</span> +<span class="nc" id="L35"> public static final String ALBUMS_FILE_PATH = DIR + "/files/albums.xml";</span> +<span class="nc" id="L36"> public static final String PLAYLISTS_FILE_PATH = DIR + "/files/playlists.xml";</span> +<span class="nc" id="L37"> public static final String ELEMENTS_FILE_PATH = DIR + "/files/elements.xml";</span> + private final List<Album> albums; + private final List<PlayList> playlists; + private final List<AudioElement> elements; +<span class="nc" id="L41"> private final XMLHandler xmlHandler = new XMLHandler();</span> + +<span class="nc" id="L43"> public MusicHub() {</span> +<span class="nc" id="L44"> albums = new LinkedList<>();</span> +<span class="nc" id="L45"> playlists = new LinkedList<>();</span> +<span class="nc" id="L46"> elements = new LinkedList<>();</span> +<span class="nc" id="L47"> this.loadElements();</span> +<span class="nc" id="L48"> this.loadAlbums();</span> +<span class="nc" id="L49"> this.loadPlaylists();</span> +<span class="nc" id="L50"> }</span> + + public void addElement(AudioElement element) { +<span class="nc" id="L53"> elements.add(element);</span> +<span class="nc" id="L54"> }</span> + + public void addAlbum(Album album) { +<span class="nc" id="L57"> albums.add(album);</span> +<span class="nc" id="L58"> }</span> + + public void addPlaylist(PlayList playlist) { +<span class="nc" id="L61"> playlists.add(playlist);</span> +<span class="nc" id="L62"> }</span> + + public void deletePlayList(String playListTitle) throws NoPlayListFoundException { + +<span class="nc" id="L66"> PlayList thePlayList = null;</span> +<span class="nc" id="L67"> boolean result = false;</span> +<span class="nc bnc" id="L68" title="All 2 branches missed."> for (PlayList pl : playlists) {</span> +<span class="nc bnc" id="L69" title="All 2 branches missed."> if (pl.getTitle().equalsIgnoreCase(playListTitle)) {</span> +<span class="nc" id="L70"> thePlayList = pl;</span> +<span class="nc" id="L71"> break;</span> + } +<span class="nc" id="L73"> }</span> + +<span class="nc bnc" id="L75" title="All 2 branches missed."> if (thePlayList != null)</span> +<span class="nc" id="L76"> result = playlists.remove(thePlayList);</span> +<span class="nc bnc" id="L77" title="All 2 branches missed."> if (!result) throw new NoPlayListFoundException("Playlist " + playListTitle + " not found!");</span> +<span class="nc" id="L78"> }</span> + + public Iterator<Album> albums() { +<span class="nc" id="L81"> return albums.listIterator();</span> + } + + public Iterator<PlayList> playlists() { +<span class="nc" id="L85"> return playlists.listIterator();</span> + } + + public Iterator<AudioElement> elements() { +<span class="nc" id="L89"> return elements.listIterator();</span> + } + + public String getAlbumsTitlesSortedByDate() { +<span class="nc" id="L93"> StringBuilder titleList = new StringBuilder();</span> +<span class="nc" id="L94"> albums.sort(new SortByDate());</span> +<span class="nc bnc" id="L95" title="All 2 branches missed."> for (Album al : albums)</span> +<span class="nc" id="L96"> titleList.append(al.getTitle()).append("\n");</span> +<span class="nc" id="L97"> return titleList.toString();</span> + } + + public String getAudiobooksTitlesSortedByAuthor() { +<span class="nc" id="L101"> StringBuilder titleList = new StringBuilder();</span> +<span class="nc" id="L102"> List<AudioElement> audioBookList = new ArrayList<>();</span> +<span class="nc bnc" id="L103" title="All 2 branches missed."> for (AudioElement ae : elements)</span> +<span class="nc bnc" id="L104" title="All 2 branches missed."> if (ae instanceof AudioBook)</span> +<span class="nc" id="L105"> audioBookList.add(ae);</span> +<span class="nc" id="L106"> audioBookList.sort(new SortByAuthor());</span> +<span class="nc bnc" id="L107" title="All 2 branches missed."> for (AudioElement ab : audioBookList)</span> +<span class="nc" id="L108"> titleList.append(ab.getArtist()).append("\n");</span> +<span class="nc" id="L109"> return titleList.toString();</span> + } + + public List<AudioElement> getAlbumSongs(String albumTitle) throws NoAlbumFoundException { +<span class="nc" id="L113"> Album theAlbum = null;</span> +<span class="nc" id="L114"> ArrayList<AudioElement> songsInAlbum = new ArrayList<>();</span> +<span class="nc bnc" id="L115" title="All 2 branches missed."> for (Album al : albums) {</span> +<span class="nc bnc" id="L116" title="All 2 branches missed."> if (al.getTitle().equalsIgnoreCase(albumTitle)) {</span> +<span class="nc" id="L117"> theAlbum = al;</span> +<span class="nc" id="L118"> break;</span> + } +<span class="nc" id="L120"> }</span> +<span class="nc bnc" id="L121" title="All 2 branches missed."> if (theAlbum == null) throw new NoAlbumFoundException("No album with this title in the MusicHub!");</span> + +<span class="nc" id="L123"> List<UUID> songIDs = theAlbum.getSongs();</span> +<span class="nc bnc" id="L124" title="All 2 branches missed."> for (UUID id : songIDs)</span> +<span class="nc bnc" id="L125" title="All 2 branches missed."> for (AudioElement el : elements) {</span> +<span class="nc bnc" id="L126" title="All 2 branches missed."> if (el instanceof Song) {</span> +<span class="nc bnc" id="L127" title="All 2 branches missed."> if (el.getUUID().equals(id)) songsInAlbum.add(el);</span> + } +<span class="nc" id="L129"> }</span> +<span class="nc" id="L130"> return songsInAlbum;</span> + + } + + public List<Song> getAlbumSongsSortedByGenre(String albumTitle) throws NoAlbumFoundException { +<span class="nc" id="L135"> Album theAlbum = null;</span> +<span class="nc" id="L136"> ArrayList<Song> songsInAlbum = new ArrayList<>();</span> +<span class="nc bnc" id="L137" title="All 2 branches missed."> for (Album al : albums) {</span> +<span class="nc bnc" id="L138" title="All 2 branches missed."> if (al.getTitle().equalsIgnoreCase(albumTitle)) {</span> +<span class="nc" id="L139"> theAlbum = al;</span> +<span class="nc" id="L140"> break;</span> + } +<span class="nc" id="L142"> }</span> +<span class="nc bnc" id="L143" title="All 2 branches missed."> if (theAlbum == null) throw new NoAlbumFoundException("No album with this title in the MusicHub!");</span> + +<span class="nc" id="L145"> List<UUID> songIDs = theAlbum.getSongs();</span> +<span class="nc bnc" id="L146" title="All 2 branches missed."> for (UUID id : songIDs)</span> +<span class="nc bnc" id="L147" title="All 2 branches missed."> for (AudioElement el : elements) {</span> +<span class="nc bnc" id="L148" title="All 2 branches missed."> if (el instanceof Song) {</span> +<span class="nc bnc" id="L149" title="All 2 branches missed."> if (el.getUUID().equals(id)) songsInAlbum.add((Song) el);</span> + } +<span class="nc" id="L151"> }</span> +<span class="nc" id="L152"> songsInAlbum.sort(new SortByGenre());</span> +<span class="nc" id="L153"> return songsInAlbum;</span> + + } + + public void addElementToAlbum(String elementTitle, String albumTitle) throws NoAlbumFoundException, NoElementFoundException { +<span class="nc" id="L158"> Album theAlbum = null;</span> + int i; +<span class="nc" id="L160"> boolean found = false;</span> +<span class="nc bnc" id="L161" title="All 2 branches missed."> for (i = 0; i < albums.size(); i++) {</span> +<span class="nc bnc" id="L162" title="All 2 branches missed."> if (albums.get(i).getTitle().equalsIgnoreCase(albumTitle)) {</span> +<span class="nc" id="L163"> theAlbum = albums.get(i);</span> +<span class="nc" id="L164"> found = true;</span> +<span class="nc" id="L165"> break;</span> + } + } + +<span class="nc bnc" id="L169" title="All 2 branches missed."> if (found) {</span> +<span class="nc" id="L170"> AudioElement theElement = null;</span> +<span class="nc bnc" id="L171" title="All 2 branches missed."> for (AudioElement ae : elements) {</span> +<span class="nc bnc" id="L172" title="All 2 branches missed."> if (ae.getTitle().equalsIgnoreCase(elementTitle)) {</span> +<span class="nc" id="L173"> theElement = ae;</span> +<span class="nc" id="L174"> break;</span> + } +<span class="nc" id="L176"> }</span> +<span class="nc bnc" id="L177" title="All 2 branches missed."> if (theElement != null) {</span> +<span class="nc" id="L178"> theAlbum.addSong(theElement.getUUID());</span> + //replace the album in the list +<span class="nc" id="L180"> albums.set(i, theAlbum);</span> +<span class="nc" id="L181"> } else throw new NoElementFoundException("Element " + elementTitle + " not found!");</span> +<span class="nc" id="L182"> } else throw new NoAlbumFoundException("Album " + albumTitle + " not found!");</span> + +<span class="nc" id="L184"> }</span> + + public void addElementToPlayList(String elementTitle, String playListTitle) throws NoPlayListFoundException, NoElementFoundException { +<span class="nc" id="L187"> PlayList thePlaylist = null;</span> + int i; +<span class="nc" id="L189"> boolean found = false;</span> + +<span class="nc bnc" id="L191" title="All 2 branches missed."> for (i = 0; i < playlists.size(); i++) {</span> +<span class="nc bnc" id="L192" title="All 2 branches missed."> if (playlists.get(i).getTitle().equalsIgnoreCase(playListTitle)) {</span> +<span class="nc" id="L193"> thePlaylist = playlists.get(i);</span> +<span class="nc" id="L194"> found = true;</span> +<span class="nc" id="L195"> break;</span> + } + } + +<span class="nc bnc" id="L199" title="All 2 branches missed."> if (found) {</span> +<span class="nc" id="L200"> AudioElement theElement = null;</span> +<span class="nc bnc" id="L201" title="All 2 branches missed."> for (AudioElement ae : elements) {</span> +<span class="nc bnc" id="L202" title="All 2 branches missed."> if (ae.getTitle().equalsIgnoreCase(elementTitle)) {</span> +<span class="nc" id="L203"> theElement = ae;</span> +<span class="nc" id="L204"> break;</span> + } +<span class="nc" id="L206"> }</span> +<span class="nc bnc" id="L207" title="All 2 branches missed."> if (theElement != null) {</span> +<span class="nc" id="L208"> thePlaylist.addElement(theElement.getUUID());</span> + //replace the album in the list +<span class="nc" id="L210"> playlists.set(i, thePlaylist);</span> +<span class="nc" id="L211"> } else throw new NoElementFoundException("Element " + elementTitle + " not found!");</span> + +<span class="nc" id="L213"> } else throw new NoPlayListFoundException("Playlist " + playListTitle + " not found!");</span> + +<span class="nc" id="L215"> }</span> + + private void loadAlbums() { +<span class="nc" id="L218"> NodeList albumNodes = xmlHandler.parseXMLFile(ALBUMS_FILE_PATH);</span> +<span class="nc bnc" id="L219" title="All 2 branches missed."> if (albumNodes == null) return;</span> + +<span class="nc bnc" id="L221" title="All 2 branches missed."> for (int i = 0; i < albumNodes.getLength(); i++) {</span> +<span class="nc bnc" id="L222" title="All 2 branches missed."> if (albumNodes.item(i).getNodeType() == Node.ELEMENT_NODE) {</span> +<span class="nc" id="L223"> Element albumElement = (Element) albumNodes.item(i);</span> +<span class="nc bnc" id="L224" title="All 2 branches missed."> if (albumElement.getNodeName().equals("album")) {</span> + try { +<span class="nc" id="L226"> this.addAlbum(new Album(albumElement));</span> +<span class="nc" id="L227"> } catch (Exception ex) {</span> +<span class="nc" id="L228"> System.out.println("Something is wrong with the XML album element");</span> +<span class="nc" id="L229"> }</span> + } + } + } +<span class="nc" id="L233"> }</span> + + private void loadPlaylists() { +<span class="nc" id="L236"> NodeList playlistNodes = xmlHandler.parseXMLFile(PLAYLISTS_FILE_PATH);</span> +<span class="nc bnc" id="L237" title="All 2 branches missed."> if (playlistNodes == null) return;</span> + +<span class="nc bnc" id="L239" title="All 2 branches missed."> for (int i = 0; i < playlistNodes.getLength(); i++) {</span> +<span class="nc bnc" id="L240" title="All 2 branches missed."> if (playlistNodes.item(i).getNodeType() == Node.ELEMENT_NODE) {</span> +<span class="nc" id="L241"> Element playlistElement = (Element) playlistNodes.item(i);</span> +<span class="nc bnc" id="L242" title="All 2 branches missed."> if (playlistElement.getNodeName().equals("playlist")) {</span> + try { +<span class="nc" id="L244"> this.addPlaylist(new PlayList(playlistElement));</span> +<span class="nc" id="L245"> } catch (Exception ex) {</span> +<span class="nc" id="L246"> System.out.println("Something is wrong with the XML playlist element");</span> +<span class="nc" id="L247"> }</span> + } + } + } +<span class="nc" id="L251"> }</span> + + private void loadElements() { +<span class="nc" id="L254"> NodeList audioelementsNodes = xmlHandler.parseXMLFile(ELEMENTS_FILE_PATH);</span> +<span class="nc bnc" id="L255" title="All 2 branches missed."> if (audioelementsNodes == null) return;</span> + +<span class="nc bnc" id="L257" title="All 2 branches missed."> for (int i = 0; i < audioelementsNodes.getLength(); i++) {</span> +<span class="nc bnc" id="L258" title="All 2 branches missed."> if (audioelementsNodes.item(i).getNodeType() == Node.ELEMENT_NODE) {</span> +<span class="nc" id="L259"> Element audioElement = (Element) audioelementsNodes.item(i);</span> +<span class="nc bnc" id="L260" title="All 2 branches missed."> if (audioElement.getNodeName().equals("song")) {</span> + try { +<span class="nc" id="L262"> AudioElement newSong = new Song(audioElement);</span> +<span class="nc" id="L263"> this.addElement(newSong);</span> +<span class="nc" id="L264"> } catch (Exception ex) {</span> +<span class="nc" id="L265"> System.out.println("Something is wrong with the XML song element");</span> +<span class="nc" id="L266"> }</span> + } +<span class="nc bnc" id="L268" title="All 2 branches missed."> if (audioElement.getNodeName().equals("audiobook")) {</span> + try { +<span class="nc" id="L270"> AudioElement newAudioBook = new AudioBook(audioElement);</span> +<span class="nc" id="L271"> this.addElement(newAudioBook);</span> +<span class="nc" id="L272"> } catch (Exception ex) {</span> +<span class="nc" id="L273"> System.out.println("Something is wrong with the XML audiobook element");</span> +<span class="nc" id="L274"> }</span> + } + } + } +<span class="nc" id="L278"> }</span> + + + public void saveAlbums() { +<span class="nc" id="L282"> Document document = xmlHandler.createXMLDocument();</span> +<span class="nc bnc" id="L283" title="All 2 branches missed."> if (document == null) return;</span> + + // root element +<span class="nc" id="L286"> Element root = document.createElement("albums");</span> +<span class="nc" id="L287"> document.appendChild(root);</span> + + //save all albums +<span class="nc bnc" id="L290" title="All 2 branches missed."> for (Iterator<Album> albumsIter = this.albums(); albumsIter.hasNext(); ) {</span> +<span class="nc" id="L291"> Album currentAlbum = albumsIter.next();</span> +<span class="nc" id="L292"> currentAlbum.createXMLElement(document, root);</span> +<span class="nc" id="L293"> }</span> +<span class="nc" id="L294"> xmlHandler.createXMLFile(document, ALBUMS_FILE_PATH);</span> +<span class="nc" id="L295"> }</span> + + public void savePlayLists() { +<span class="nc" id="L298"> Document document = xmlHandler.createXMLDocument();</span> +<span class="nc bnc" id="L299" title="All 2 branches missed."> if (document == null) return;</span> + + // root element +<span class="nc" id="L302"> Element root = document.createElement("playlists");</span> +<span class="nc" id="L303"> document.appendChild(root);</span> + + //save all playlists +<span class="nc bnc" id="L306" title="All 2 branches missed."> for (Iterator<PlayList> playlistsIter = this.playlists(); playlistsIter.hasNext(); ) {</span> +<span class="nc" id="L307"> PlayList currentPlayList = playlistsIter.next();</span> +<span class="nc" id="L308"> currentPlayList.createXMLElement(document, root);</span> +<span class="nc" id="L309"> }</span> +<span class="nc" id="L310"> xmlHandler.createXMLFile(document, PLAYLISTS_FILE_PATH);</span> +<span class="nc" id="L311"> }</span> + + public void saveElements() { +<span class="nc" id="L314"> Document document = xmlHandler.createXMLDocument();</span> +<span class="nc bnc" id="L315" title="All 2 branches missed."> if (document == null) return;</span> + + // root element +<span class="nc" id="L318"> Element root = document.createElement("elements");</span> +<span class="nc" id="L319"> document.appendChild(root);</span> + + //save all AudioElements +<span class="nc bnc" id="L322" title="All 2 branches missed."> for (AudioElement currentElement : elements) {</span> + +<span class="nc bnc" id="L324" title="All 2 branches missed."> if (currentElement instanceof Song) {</span> +<span class="nc" id="L325"> currentElement.createXMLElement(document, root);</span> + } +<span class="nc bnc" id="L327" title="All 2 branches missed."> if (currentElement instanceof AudioBook) {</span> +<span class="nc" id="L328"> currentElement.createXMLElement(document, root);</span> + } +<span class="nc" id="L330"> }</span> +<span class="nc" id="L331"> xmlHandler.createXMLFile(document, ELEMENTS_FILE_PATH);</span> +<span class="nc" id="L332"> }</span> + + public void getAudioElement(List<AudioElement> audios, String elementTitle) throws NoAlbumFoundException, UnsupportedAudioFileException, IOException, LineUnavailableException { +<span class="nc bnc" id="L335" title="All 2 branches missed."> for (AudioElement el : audios) {</span> +<span class="nc bnc" id="L336" title="All 2 branches missed."> if (el.getTitle().equalsIgnoreCase(elementTitle)) {</span> +<span class="nc" id="L337"> el.manageAudioElement();</span> + } +<span class="nc" id="L339"> }</span> + +<span class="nc" id="L341"> }</span> +} +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/NoAlbumFoundException.html b/target/site/jacoco/musichub.business/NoAlbumFoundException.html new file mode 100644 index 0000000..51bf5be --- /dev/null +++ b/target/site/jacoco/musichub.business/NoAlbumFoundException.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>NoAlbumFoundException</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.html" class="el_package">musichub.business</a> > <span class="el_class">NoAlbumFoundException</span></div><h1>NoAlbumFoundException</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">4 of 4</td><td class="ctr2">0 %</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">1</td><td class="ctr2">1</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="NoAlbumFoundException.java.html#L6" class="el_method">NoAlbumFoundException(String)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">2</td><td class="ctr2" id="i0">2</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/NoAlbumFoundException.java.html b/target/site/jacoco/musichub.business/NoAlbumFoundException.java.html new file mode 100644 index 0000000..d78347b --- /dev/null +++ b/target/site/jacoco/musichub.business/NoAlbumFoundException.java.html @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>NoAlbumFoundException.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.source.html" class="el_package">musichub.business</a> > <span class="el_source">NoAlbumFoundException.java</span></div><h1>NoAlbumFoundException.java</h1><pre class="source lang-java linenums">package musichub.business; + +public class NoAlbumFoundException extends Exception { + + public NoAlbumFoundException(String msg) { +<span class="nc" id="L6"> super(msg);</span> +<span class="nc" id="L7"> }</span> +} +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/NoElementFoundException.html b/target/site/jacoco/musichub.business/NoElementFoundException.html new file mode 100644 index 0000000..01fecbd --- /dev/null +++ b/target/site/jacoco/musichub.business/NoElementFoundException.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>NoElementFoundException</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.html" class="el_package">musichub.business</a> > <span class="el_class">NoElementFoundException</span></div><h1>NoElementFoundException</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">4 of 4</td><td class="ctr2">0 %</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">1</td><td class="ctr2">1</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="NoElementFoundException.java.html#L6" class="el_method">NoElementFoundException(String)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">2</td><td class="ctr2" id="i0">2</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/NoElementFoundException.java.html b/target/site/jacoco/musichub.business/NoElementFoundException.java.html new file mode 100644 index 0000000..4d5f6bb --- /dev/null +++ b/target/site/jacoco/musichub.business/NoElementFoundException.java.html @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>NoElementFoundException.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.source.html" class="el_package">musichub.business</a> > <span class="el_source">NoElementFoundException.java</span></div><h1>NoElementFoundException.java</h1><pre class="source lang-java linenums">package musichub.business; + +public class NoElementFoundException extends Exception { + + public NoElementFoundException(String msg) { +<span class="nc" id="L6"> super(msg);</span> +<span class="nc" id="L7"> }</span> +} +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/NoPlayListFoundException.html b/target/site/jacoco/musichub.business/NoPlayListFoundException.html new file mode 100644 index 0000000..d1803ad --- /dev/null +++ b/target/site/jacoco/musichub.business/NoPlayListFoundException.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>NoPlayListFoundException</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.html" class="el_package">musichub.business</a> > <span class="el_class">NoPlayListFoundException</span></div><h1>NoPlayListFoundException</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">4 of 4</td><td class="ctr2">0 %</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">1</td><td class="ctr2">1</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="NoPlayListFoundException.java.html#L6" class="el_method">NoPlayListFoundException(String)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="4" alt="4"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">2</td><td class="ctr2" id="i0">2</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/NoPlayListFoundException.java.html b/target/site/jacoco/musichub.business/NoPlayListFoundException.java.html new file mode 100644 index 0000000..f93e9a4 --- /dev/null +++ b/target/site/jacoco/musichub.business/NoPlayListFoundException.java.html @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>NoPlayListFoundException.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.source.html" class="el_package">musichub.business</a> > <span class="el_source">NoPlayListFoundException.java</span></div><h1>NoPlayListFoundException.java</h1><pre class="source lang-java linenums">package musichub.business; + +public class NoPlayListFoundException extends Exception { + + public NoPlayListFoundException(String msg) { +<span class="nc" id="L6"> super(msg);</span> +<span class="nc" id="L7"> }</span> +} +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/PathValidation.html b/target/site/jacoco/musichub.business/PathValidation.html new file mode 100644 index 0000000..3b58bb2 --- /dev/null +++ b/target/site/jacoco/musichub.business/PathValidation.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>PathValidation</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.html" class="el_package">musichub.business</a> > <span class="el_class">PathValidation</span></div><h1>PathValidation</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">0 of 17</td><td class="ctr2">100 %</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">0</td><td class="ctr2">2</td><td class="ctr1">0</td><td class="ctr2">4</td><td class="ctr1">0</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a0"><a href="PathValidation.java.html#L34" class="el_method">isPathValid(String)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="10" alt="10"/></td><td class="ctr2" id="c0">100 %</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">0</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">0</td><td class="ctr2" id="i0">2</td><td class="ctr1" id="j0">0</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a1"><a href="PathValidation.java.html#L22" class="el_method">PathValidation()</a></td><td class="bar" id="b1"><img src="../jacoco-resources/greenbar.gif" width="84" height="10" title="7" alt="7"/></td><td class="ctr2" id="c1">100 %</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">0</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">0</td><td class="ctr2" id="i1">2</td><td class="ctr1" id="j1">0</td><td class="ctr2" id="k1">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/PathValidation.java.html b/target/site/jacoco/musichub.business/PathValidation.java.html new file mode 100644 index 0000000..4d22953 --- /dev/null +++ b/target/site/jacoco/musichub.business/PathValidation.java.html @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>PathValidation.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.source.html" class="el_package">musichub.business</a> > <span class="el_source">PathValidation.java</span></div><h1>PathValidation.java</h1><pre class="source lang-java linenums">package musichub.business; + +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +/** + * Class offering a path validation method. + * + * @author Aimeric ADJUTOR + * @version 1.0 + */ + +public final class PathValidation { + + /** + * Method that just throws an AssertionError if the class is called + * @author Aimeric ADJUTOR + * @throws AssertionError you can't instantiate this class + */ + +<span class="fc" id="L22"> public PathValidation() {</span> +<span class="fc" id="L23"> throw new AssertionError("You just can't instantiate this class.");</span> + } + + /** + * Method that checks the validity of a given path + * + * @param inputPath the path given by the user + * @return a boolean + */ + + public static boolean isPathValid(String inputPath) { +<span class="fc" id="L34"> Path path = Paths.get(inputPath);</span> +<span class="fc" id="L35"> return Files.exists(path);</span> + } + +} +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/PlayList.html b/target/site/jacoco/musichub.business/PlayList.html new file mode 100644 index 0000000..ae17a14 --- /dev/null +++ b/target/site/jacoco/musichub.business/PlayList.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>PlayList</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.html" class="el_package">musichub.business</a> > <span class="el_class">PlayList</span></div><h1>PlayList</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">202 of 202</td><td class="ctr2">0 %</td><td class="bar">14 of 14</td><td class="ctr2">0 %</td><td class="ctr1">14</td><td class="ctr2">14</td><td class="ctr1">53</td><td class="ctr2">53</td><td class="ctr1">7</td><td class="ctr2">7</td></tr></tfoot><tbody><tr><td id="a4"><a href="PlayList.java.html#L28" class="el_method">PlayList(Element)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="88" alt="88"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="12" alt="12"/></td><td class="ctr2" id="e0">0 %</td><td class="ctr1" id="f0">7</td><td class="ctr2" id="g0">7</td><td class="ctr1" id="h0">23</td><td class="ctr2" id="i0">23</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a1"><a href="PlayList.java.html#L78" class="el_method">createXMLElement(Document, Element)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="102" height="10" title="75" alt="75"/></td><td class="ctr2" id="c1">0 %</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="20" height="10" title="2" alt="2"/></td><td class="ctr2" id="e1">0 %</td><td class="ctr1" id="f1">2</td><td class="ctr2" id="g1">2</td><td class="ctr1" id="h1">16</td><td class="ctr2" id="i1">16</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a5"><a href="PlayList.java.html#L22" class="el_method">PlayList(String)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="19" height="10" title="14" alt="14"/></td><td class="ctr2" id="c2">0 %</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">5</td><td class="ctr2" id="i2">5</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a6"><a href="PlayList.java.html#L16" class="el_method">PlayList(String, String, ArrayList)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="17" height="10" title="13" alt="13"/></td><td class="ctr2" id="c3">0 %</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">5</td><td class="ctr2" id="i3">5</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a0"><a href="PlayList.java.html#L66" class="el_method">addElement(UUID)</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="8" height="10" title="6" alt="6"/></td><td class="ctr2" id="c4">0 %</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">2</td><td class="ctr2" id="i4">2</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a2"><a href="PlayList.java.html#L70" class="el_method">getElements()</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c5">0 %</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h5">1</td><td class="ctr2" id="i5">1</td><td class="ctr1" id="j5">1</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a3"><a href="PlayList.java.html#L74" class="el_method">getTitle()</a></td><td class="bar" id="b6"><img src="../jacoco-resources/redbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c6">0 %</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">1</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h6">1</td><td class="ctr2" id="i6">1</td><td class="ctr1" id="j6">1</td><td class="ctr2" id="k6">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/PlayList.java.html b/target/site/jacoco/musichub.business/PlayList.java.html new file mode 100644 index 0000000..6a45004 --- /dev/null +++ b/target/site/jacoco/musichub.business/PlayList.java.html @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>PlayList.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.source.html" class="el_package">musichub.business</a> > <span class="el_source">PlayList.java</span></div><h1>PlayList.java</h1><pre class="source lang-java linenums">package musichub.business; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import java.util.ArrayList; +import java.util.UUID; + +public class PlayList { + private final String title; + private final UUID uuid; + private ArrayList<UUID> elementUUIDs; + +<span class="nc" id="L16"> public PlayList(String title, String id, ArrayList<UUID> elementUUIDs) {</span> +<span class="nc" id="L17"> this.title = title;</span> +<span class="nc" id="L18"> this.uuid = UUID.fromString(id);</span> +<span class="nc" id="L19"> this.elementUUIDs = elementUUIDs;</span> +<span class="nc" id="L20"> }</span> + +<span class="nc" id="L22"> public PlayList(String title) {</span> +<span class="nc" id="L23"> this.title = title;</span> +<span class="nc" id="L24"> this.uuid = UUID.randomUUID();</span> +<span class="nc" id="L25"> this.elementUUIDs = new ArrayList<>();</span> +<span class="nc" id="L26"> }</span> + +<span class="nc" id="L28"> public PlayList(Element xmlElement) {</span> + { +<span class="nc" id="L30"> this.title = xmlElement.getElementsByTagName("title").item(0).getTextContent();</span> + +<span class="nc" id="L32"> String uuid = null;</span> + try { +<span class="nc" id="L34"> uuid = xmlElement.getElementsByTagName("UUID").item(0).getTextContent();</span> +<span class="nc" id="L35"> } catch (Exception ex) {</span> +<span class="nc" id="L36"> System.out.println("Empty playlist UUID, will create a new one");</span> +<span class="nc" id="L37"> }</span> +<span class="nc bnc" id="L38" title="All 4 branches missed."> if ((uuid == null) || (uuid.isEmpty()))</span> +<span class="nc" id="L39"> this.uuid = UUID.randomUUID();</span> +<span class="nc" id="L40"> else this.uuid = UUID.fromString(uuid);</span> + + //parse list of elements: +<span class="nc" id="L43"> Node elementsElement = xmlElement.getElementsByTagName("elements").item(0);</span> +<span class="nc" id="L44"> NodeList elementUUIDNodes = elementsElement.getChildNodes();</span> +<span class="nc bnc" id="L45" title="All 2 branches missed."> if (elementUUIDNodes == null) return;</span> + +<span class="nc" id="L47"> this.elementUUIDs = new ArrayList<>();</span> + + +<span class="nc bnc" id="L50" title="All 2 branches missed."> for (int i = 0; i < elementUUIDNodes.getLength(); i++) {</span> +<span class="nc bnc" id="L51" title="All 2 branches missed."> if (elementUUIDNodes.item(i).getNodeType() == Node.ELEMENT_NODE) {</span> +<span class="nc" id="L52"> Element elementElement = (Element) elementUUIDNodes.item(i);</span> +<span class="nc bnc" id="L53" title="All 2 branches missed."> if (elementElement.getNodeName().equals("UUID")) {</span> + try { +<span class="nc" id="L55"> this.addElement(UUID.fromString(elementElement.getTextContent()));</span> +<span class="nc" id="L56"> } catch (Exception ex) {</span> +<span class="nc" id="L57"> ex.printStackTrace();</span> +<span class="nc" id="L58"> }</span> + } + } + } + } +<span class="nc" id="L63"> }</span> + + public void addElement(UUID element) { +<span class="nc" id="L66"> elementUUIDs.add(element);</span> +<span class="nc" id="L67"> }</span> + + public ArrayList<UUID> getElements() { +<span class="nc" id="L70"> return elementUUIDs;</span> + } + + public String getTitle() { +<span class="nc" id="L74"> return title;</span> + } + + public void createXMLElement(Document document, Element parentElement) { +<span class="nc" id="L78"> Element playlistElement = document.createElement("playlist");</span> +<span class="nc" id="L79"> parentElement.appendChild(playlistElement);</span> + +<span class="nc" id="L81"> Element nameElement = document.createElement("title");</span> +<span class="nc" id="L82"> nameElement.appendChild(document.createTextNode(title));</span> +<span class="nc" id="L83"> playlistElement.appendChild(nameElement);</span> + +<span class="nc" id="L85"> Element UUIDElement = document.createElement("UUID");</span> +<span class="nc" id="L86"> UUIDElement.appendChild(document.createTextNode(uuid.toString()));</span> +<span class="nc" id="L87"> playlistElement.appendChild(UUIDElement);</span> + + +<span class="nc" id="L90"> Element elementsElement = document.createElement("elements");</span> +<span class="nc bnc" id="L91" title="All 2 branches missed."> for (UUID currentUUID : this.elementUUIDs) {</span> + +<span class="nc" id="L93"> Element elementUUIDElement = document.createElement("UUID");</span> +<span class="nc" id="L94"> elementUUIDElement.appendChild(document.createTextNode(currentUUID.toString()));</span> +<span class="nc" id="L95"> elementsElement.appendChild(elementUUIDElement);</span> +<span class="nc" id="L96"> }</span> +<span class="nc" id="L97"> playlistElement.appendChild(elementsElement);</span> +<span class="nc" id="L98"> }</span> + +} +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/Song.html b/target/site/jacoco/musichub.business/Song.html new file mode 100644 index 0000000..4af18c3 --- /dev/null +++ b/target/site/jacoco/musichub.business/Song.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Song</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.html" class="el_package">musichub.business</a> > <span class="el_class">Song</span></div><h1>Song</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">105 of 105</td><td class="ctr2">0 %</td><td class="bar">6 of 6</td><td class="ctr2">0 %</td><td class="ctr1">12</td><td class="ctr2">12</td><td class="ctr1">26</td><td class="ctr2">26</td><td class="ctr1">7</td><td class="ctr2">7</td></tr></tfoot><tbody><tr><td id="a2"><a href="Song.java.html#L30" class="el_method">setGenre(String)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="33" alt="33"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="6" alt="6"/></td><td class="ctr2" id="e0">0 %</td><td class="ctr1" id="f0">6</td><td class="ctr2" id="g0">6</td><td class="ctr1" id="h0">8</td><td class="ctr2" id="i0">8</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a0"><a href="Song.java.html#L46" class="el_method">createXMLElement(Document, Element)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="105" height="10" title="29" alt="29"/></td><td class="ctr2" id="c1">0 %</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">7</td><td class="ctr2" id="i1">7</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a3"><a href="Song.java.html#L21" class="el_method">Song(Element)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="43" height="10" title="12" alt="12"/></td><td class="ctr2" id="c2">0 %</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">3</td><td class="ctr2" id="i2">3</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a5"><a href="Song.java.html#L11" class="el_method">Song(String, String, int, String, String, String)</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="40" height="10" title="11" alt="11"/></td><td class="ctr2" id="c3">0 %</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">3</td><td class="ctr2" id="i3">3</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr><tr><td id="a4"><a href="Song.java.html#L16" class="el_method">Song(String, String, int, String, String)</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="36" height="10" title="10" alt="10"/></td><td class="ctr2" id="c4">0 %</td><td class="bar" id="d4"/><td class="ctr2" id="e4">n/a</td><td class="ctr1" id="f4">1</td><td class="ctr2" id="g4">1</td><td class="ctr1" id="h4">3</td><td class="ctr2" id="i4">3</td><td class="ctr1" id="j4">1</td><td class="ctr2" id="k4">1</td></tr><tr><td id="a6"><a href="Song.java.html#L41" class="el_method">toString()</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="21" height="10" title="6" alt="6"/></td><td class="ctr2" id="c5">0 %</td><td class="bar" id="d5"/><td class="ctr2" id="e5">n/a</td><td class="ctr1" id="f5">1</td><td class="ctr2" id="g5">1</td><td class="ctr1" id="h5">1</td><td class="ctr2" id="i5">1</td><td class="ctr1" id="j5">1</td><td class="ctr2" id="k5">1</td></tr><tr><td id="a1"><a href="Song.java.html#L26" class="el_method">getGenre()</a></td><td class="bar" id="b6"><img src="../jacoco-resources/redbar.gif" width="14" height="10" title="4" alt="4"/></td><td class="ctr2" id="c6">0 %</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">1</td><td class="ctr2" id="g6">1</td><td class="ctr1" id="h6">1</td><td class="ctr2" id="i6">1</td><td class="ctr1" id="j6">1</td><td class="ctr2" id="k6">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/Song.java.html b/target/site/jacoco/musichub.business/Song.java.html new file mode 100644 index 0000000..4f7f01d --- /dev/null +++ b/target/site/jacoco/musichub.business/Song.java.html @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Song.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.source.html" class="el_package">musichub.business</a> > <span class="el_source">Song.java</span></div><h1>Song.java</h1><pre class="source lang-java linenums">package musichub.business; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + + +public class Song extends AudioElement { + private Genre genre; + + public Song(String title, String artist, int length, String uid, String content, String genre) { +<span class="nc" id="L11"> super(title, artist, length, uid, content);</span> +<span class="nc" id="L12"> this.setGenre(genre);</span> +<span class="nc" id="L13"> }</span> + + public Song(String title, String artist, int length, String content, String genre) { +<span class="nc" id="L16"> super(title, artist, length, content);</span> +<span class="nc" id="L17"> this.setGenre(genre);</span> +<span class="nc" id="L18"> }</span> + + public Song(Element xmlElement) { +<span class="nc" id="L21"> super(xmlElement);</span> +<span class="nc" id="L22"> this.setGenre(xmlElement.getElementsByTagName("genre").item(0).getTextContent());</span> +<span class="nc" id="L23"> }</span> + + public String getGenre() { +<span class="nc" id="L26"> return genre.getGenre();</span> + } + + public void setGenre(String genre) { +<span class="nc bnc" id="L30" title="All 6 branches missed."> switch (genre.toLowerCase()) {</span> +<span class="nc" id="L31"> default -> this.genre = Genre.JAZZ;</span> +<span class="nc" id="L32"> case "classic" -> this.genre = Genre.CLASSIC;</span> +<span class="nc" id="L33"> case "hiphop" -> this.genre = Genre.HIPHOP;</span> +<span class="nc" id="L34"> case "rock" -> this.genre = Genre.ROCK;</span> +<span class="nc" id="L35"> case "pop" -> this.genre = Genre.POP;</span> +<span class="nc" id="L36"> case "rap" -> this.genre = Genre.RAP;</span> + } +<span class="nc" id="L38"> }</span> + + public String toString() { +<span class="nc" id="L41"> return super.toString() + ", Genre = " + getGenre() + "\n";</span> + } + + public void createXMLElement(Document document, Element parentElement) { + // song element +<span class="nc" id="L46"> Element song = document.createElement("song");</span> + +<span class="nc" id="L48"> super.createXMLElement(document, song);</span> + +<span class="nc" id="L50"> Element genreElement = document.createElement("genre");</span> +<span class="nc" id="L51"> genreElement.appendChild(document.createTextNode(genre.getGenre()));</span> +<span class="nc" id="L52"> song.appendChild(genreElement);</span> + +<span class="nc" id="L54"> parentElement.appendChild(song);</span> +<span class="nc" id="L55"> }</span> + + +} +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/SortByAuthor.html b/target/site/jacoco/musichub.business/SortByAuthor.html new file mode 100644 index 0000000..851cdce --- /dev/null +++ b/target/site/jacoco/musichub.business/SortByAuthor.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>SortByAuthor</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.html" class="el_package">musichub.business</a> > <span class="el_class">SortByAuthor</span></div><h1>SortByAuthor</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">9 of 9</td><td class="ctr2">0 %</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">2</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a0"><a href="MusicHub.java.html#L29" class="el_method">compare(AudioElement, AudioElement)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="6" alt="6"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">1</td><td class="ctr2" id="i0">1</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a1"><a href="MusicHub.java.html#L27" class="el_method">SortByAuthor()</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="60" height="10" title="3" alt="3"/></td><td class="ctr2" id="c1">0 %</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">1</td><td class="ctr2" id="i1">1</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/SortByDate.html b/target/site/jacoco/musichub.business/SortByDate.html new file mode 100644 index 0000000..8f4b2f7 --- /dev/null +++ b/target/site/jacoco/musichub.business/SortByDate.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>SortByDate</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.html" class="el_package">musichub.business</a> > <span class="el_class">SortByDate</span></div><h1>SortByDate</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">9 of 9</td><td class="ctr2">0 %</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">2</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a0"><a href="MusicHub.java.html#L17" class="el_method">compare(Album, Album)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="6" alt="6"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">1</td><td class="ctr2" id="i0">1</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a1"><a href="MusicHub.java.html#L15" class="el_method">SortByDate()</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="60" height="10" title="3" alt="3"/></td><td class="ctr2" id="c1">0 %</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">1</td><td class="ctr2" id="i1">1</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/SortByGenre.html b/target/site/jacoco/musichub.business/SortByGenre.html new file mode 100644 index 0000000..6dd6e7d --- /dev/null +++ b/target/site/jacoco/musichub.business/SortByGenre.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>SortByGenre</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.html" class="el_package">musichub.business</a> > <span class="el_class">SortByGenre</span></div><h1>SortByGenre</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">9 of 9</td><td class="ctr2">0 %</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">2</td><td class="ctr2">2</td><td class="ctr1">2</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a0"><a href="MusicHub.java.html#L23" class="el_method">compare(Song, Song)</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="6" alt="6"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">1</td><td class="ctr2" id="i0">1</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a1"><a href="MusicHub.java.html#L21" class="el_method">SortByGenre()</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="60" height="10" title="3" alt="3"/></td><td class="ctr2" id="c1">0 %</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">1</td><td class="ctr2" id="i1">1</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/index.html b/target/site/jacoco/musichub.business/index.html new file mode 100644 index 0000000..178e60b --- /dev/null +++ b/target/site/jacoco/musichub.business/index.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>musichub.business</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.source.html" class="el_source">Source Files</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <span class="el_package">musichub.business</span></div><h1>musichub.business</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">2 063 of 2 080</td><td class="ctr2">0 %</td><td class="bar">169 of 169</td><td class="ctr2">0 %</td><td class="ctr1">172</td><td class="ctr2">174</td><td class="ctr1">499</td><td class="ctr2">503</td><td class="ctr1">81</td><td class="ctr2">83</td><td class="ctr1">15</td><td class="ctr2">16</td></tr></tfoot><tbody><tr><td id="a6"><a href="MusicHub.html" class="el_class">MusicHub</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="803" alt="803"/></td><td class="ctr2" id="c1">0 %</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="114" alt="114"/></td><td class="ctr2" id="e0">0 %</td><td class="ctr1" id="f0">79</td><td class="ctr2" id="g0">79</td><td class="ctr1" id="h0">195</td><td class="ctr2" id="i0">195</td><td class="ctr1" id="j0">22</td><td class="ctr2" id="k0">22</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr><tr><td id="a0"><a href="Album.html" class="el_class">Album</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="49" height="10" title="330" alt="330"/></td><td class="ctr2" id="c2">0 %</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="14" height="10" title="14" alt="14"/></td><td class="ctr2" id="e1">0 %</td><td class="ctr1" id="f2">16</td><td class="ctr2" id="g2">16</td><td class="ctr1" id="h1">84</td><td class="ctr2" id="i1">84</td><td class="ctr1" id="j1">9</td><td class="ctr2" id="k1">9</td><td class="ctr1" id="l1">1</td><td class="ctr2" id="m1">1</td></tr><tr><td id="a2"><a href="AudioElement.html" class="el_class">AudioElement</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="39" height="10" title="266" alt="266"/></td><td class="ctr2" id="c3">0 %</td><td class="bar" id="d3"><img src="../jacoco-resources/redbar.gif" width="11" height="10" title="11" alt="11"/></td><td class="ctr2" id="e2">0 %</td><td class="ctr1" id="f3">16</td><td class="ctr2" id="g3">16</td><td class="ctr1" id="h2">72</td><td class="ctr2" id="i2">72</td><td class="ctr1" id="j2">9</td><td class="ctr2" id="k2">9</td><td class="ctr1" id="l2">1</td><td class="ctr2" id="m2">1</td></tr><tr><td id="a11"><a href="PlayList.html" class="el_class">PlayList</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="30" height="10" title="202" alt="202"/></td><td class="ctr2" id="c4">0 %</td><td class="bar" id="d2"><img src="../jacoco-resources/redbar.gif" width="14" height="10" title="14" alt="14"/></td><td class="ctr2" id="e3">0 %</td><td class="ctr1" id="f4">14</td><td class="ctr2" id="g4">14</td><td class="ctr1" id="h3">53</td><td class="ctr2" id="i3">53</td><td class="ctr1" id="j4">7</td><td class="ctr2" id="k4">7</td><td class="ctr1" id="l3">1</td><td class="ctr2" id="m3">1</td></tr><tr><td id="a1"><a href="AudioBook.html" class="el_class">AudioBook</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="24" height="10" title="164" alt="164"/></td><td class="ctr2" id="c5">0 %</td><td class="bar" id="d4"><img src="../jacoco-resources/redbar.gif" width="10" height="10" title="10" alt="10"/></td><td class="ctr2" id="e4">0 %</td><td class="ctr1" id="f1">17</td><td class="ctr2" id="g1">17</td><td class="ctr1" id="h4">39</td><td class="ctr2" id="i4">39</td><td class="ctr1" id="j3">9</td><td class="ctr2" id="k3">9</td><td class="ctr1" id="l4">1</td><td class="ctr2" id="m4">1</td></tr><tr><td id="a12"><a href="Song.html" class="el_class">Song</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="15" height="10" title="105" alt="105"/></td><td class="ctr2" id="c6">0 %</td><td class="bar" id="d5"><img src="../jacoco-resources/redbar.gif" width="6" height="10" title="6" alt="6"/></td><td class="ctr2" id="e5">0 %</td><td class="ctr1" id="f5">12</td><td class="ctr2" id="g5">12</td><td class="ctr1" id="h5">26</td><td class="ctr2" id="i5">26</td><td class="ctr1" id="j5">7</td><td class="ctr2" id="k5">7</td><td class="ctr1" id="l5">1</td><td class="ctr2" id="m5">1</td></tr><tr><td id="a4"><a href="Genre.html" class="el_class">Genre</a></td><td class="bar" id="b6"><img src="../jacoco-resources/redbar.gif" width="8" height="10" title="56" alt="56"/></td><td class="ctr2" id="c7">0 %</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">3</td><td class="ctr2" id="g6">3</td><td class="ctr1" id="h6">6</td><td class="ctr2" id="i6">6</td><td class="ctr1" id="j6">3</td><td class="ctr2" id="k6">3</td><td class="ctr1" id="l6">1</td><td class="ctr2" id="m6">1</td></tr><tr><td id="a5"><a href="Language.html" class="el_class">Language</a></td><td class="bar" id="b7"><img src="../jacoco-resources/redbar.gif" width="7" height="10" title="49" alt="49"/></td><td class="ctr2" id="c8">0 %</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">3</td><td class="ctr2" id="g7">3</td><td class="ctr1" id="h7">6</td><td class="ctr2" id="i7">6</td><td class="ctr1" id="j7">3</td><td class="ctr2" id="k7">3</td><td class="ctr1" id="l7">1</td><td class="ctr2" id="m7">1</td></tr><tr><td id="a3"><a href="Category.html" class="el_class">Category</a></td><td class="bar" id="b8"><img src="../jacoco-resources/redbar.gif" width="7" height="10" title="49" alt="49"/></td><td class="ctr2" id="c9">0 %</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">3</td><td class="ctr2" id="g8">3</td><td class="ctr1" id="h8">6</td><td class="ctr2" id="i8">6</td><td class="ctr1" id="j8">3</td><td class="ctr2" id="k8">3</td><td class="ctr1" id="l8">1</td><td class="ctr2" id="m8">1</td></tr><tr><td id="a13"><a href="SortByAuthor.html" class="el_class">SortByAuthor</a></td><td class="bar" id="b9"><img src="../jacoco-resources/redbar.gif" width="1" height="10" title="9" alt="9"/></td><td class="ctr2" id="c10">0 %</td><td class="bar" id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f9">2</td><td class="ctr2" id="g9">2</td><td class="ctr1" id="h9">2</td><td class="ctr2" id="i10">2</td><td class="ctr1" id="j9">2</td><td class="ctr2" id="k9">2</td><td class="ctr1" id="l9">1</td><td class="ctr2" id="m9">1</td></tr><tr><td id="a14"><a href="SortByDate.html" class="el_class">SortByDate</a></td><td class="bar" id="b10"><img src="../jacoco-resources/redbar.gif" width="1" height="10" title="9" alt="9"/></td><td class="ctr2" id="c11">0 %</td><td class="bar" id="d10"/><td class="ctr2" id="e10">n/a</td><td class="ctr1" id="f10">2</td><td class="ctr2" id="g10">2</td><td class="ctr1" id="h10">2</td><td class="ctr2" id="i11">2</td><td class="ctr1" id="j10">2</td><td class="ctr2" id="k10">2</td><td class="ctr1" id="l10">1</td><td class="ctr2" id="m10">1</td></tr><tr><td id="a15"><a href="SortByGenre.html" class="el_class">SortByGenre</a></td><td class="bar" id="b11"><img src="../jacoco-resources/redbar.gif" width="1" height="10" title="9" alt="9"/></td><td class="ctr2" id="c12">0 %</td><td class="bar" id="d11"/><td class="ctr2" id="e11">n/a</td><td class="ctr1" id="f11">2</td><td class="ctr2" id="g11">2</td><td class="ctr1" id="h11">2</td><td class="ctr2" id="i12">2</td><td class="ctr1" id="j11">2</td><td class="ctr2" id="k11">2</td><td class="ctr1" id="l11">1</td><td class="ctr2" id="m11">1</td></tr><tr><td id="a7"><a href="NoAlbumFoundException.html" class="el_class">NoAlbumFoundException</a></td><td class="bar" id="b12"/><td class="ctr2" id="c13">0 %</td><td class="bar" id="d12"/><td class="ctr2" id="e12">n/a</td><td class="ctr1" id="f12">1</td><td class="ctr2" id="g13">1</td><td class="ctr1" id="h12">2</td><td class="ctr2" id="i13">2</td><td class="ctr1" id="j12">1</td><td class="ctr2" id="k13">1</td><td class="ctr1" id="l12">1</td><td class="ctr2" id="m12">1</td></tr><tr><td id="a9"><a href="NoPlayListFoundException.html" class="el_class">NoPlayListFoundException</a></td><td class="bar" id="b13"/><td class="ctr2" id="c14">0 %</td><td class="bar" id="d13"/><td class="ctr2" id="e13">n/a</td><td class="ctr1" id="f13">1</td><td class="ctr2" id="g14">1</td><td class="ctr1" id="h13">2</td><td class="ctr2" id="i14">2</td><td class="ctr1" id="j13">1</td><td class="ctr2" id="k14">1</td><td class="ctr1" id="l13">1</td><td class="ctr2" id="m13">1</td></tr><tr><td id="a8"><a href="NoElementFoundException.html" class="el_class">NoElementFoundException</a></td><td class="bar" id="b14"/><td class="ctr2" id="c15">0 %</td><td class="bar" id="d14"/><td class="ctr2" id="e14">n/a</td><td class="ctr1" id="f14">1</td><td class="ctr2" id="g15">1</td><td class="ctr1" id="h14">2</td><td class="ctr2" id="i15">2</td><td class="ctr1" id="j14">1</td><td class="ctr2" id="k15">1</td><td class="ctr1" id="l14">1</td><td class="ctr2" id="m14">1</td></tr><tr><td id="a10"><a href="PathValidation.html" class="el_class">PathValidation</a></td><td class="bar" id="b15"><img src="../jacoco-resources/greenbar.gif" width="2" height="10" title="17" alt="17"/></td><td class="ctr2" id="c0">100 %</td><td class="bar" id="d15"/><td class="ctr2" id="e15">n/a</td><td class="ctr1" id="f15">0</td><td class="ctr2" id="g12">2</td><td class="ctr1" id="h15">0</td><td class="ctr2" id="i9">4</td><td class="ctr1" id="j15">0</td><td class="ctr2" id="k12">2</td><td class="ctr1" id="l15">0</td><td class="ctr2" id="m15">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.business/index.source.html b/target/site/jacoco/musichub.business/index.source.html new file mode 100644 index 0000000..45a5b59 --- /dev/null +++ b/target/site/jacoco/musichub.business/index.source.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>musichub.business</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.html" class="el_class">Classes</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <span class="el_package">musichub.business</span></div><h1>musichub.business</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">2 063 of 2 080</td><td class="ctr2">0 %</td><td class="bar">169 of 169</td><td class="ctr2">0 %</td><td class="ctr1">172</td><td class="ctr2">174</td><td class="ctr1">499</td><td class="ctr2">503</td><td class="ctr1">81</td><td class="ctr2">83</td><td class="ctr1">15</td><td class="ctr2">16</td></tr></tfoot><tbody><tr><td id="a6"><a href="MusicHub.java.html" class="el_source">MusicHub.java</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="830" alt="830"/></td><td class="ctr2" id="c1">0 %</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="114" alt="114"/></td><td class="ctr2" id="e0">0 %</td><td class="ctr1" id="f0">85</td><td class="ctr2" id="g0">85</td><td class="ctr1" id="h0">201</td><td class="ctr2" id="i0">201</td><td class="ctr1" id="j0">28</td><td class="ctr2" id="k0">28</td><td class="ctr1" id="l0">4</td><td class="ctr2" id="m0">4</td></tr><tr><td id="a0"><a href="Album.java.html" class="el_source">Album.java</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="47" height="10" title="330" alt="330"/></td><td class="ctr2" id="c2">0 %</td><td class="bar" id="d1"><img src="../jacoco-resources/redbar.gif" width="14" height="10" title="14" alt="14"/></td><td class="ctr2" id="e1">0 %</td><td class="ctr1" id="f2">16</td><td class="ctr2" id="g2">16</td><td class="ctr1" id="h1">84</td><td class="ctr2" id="i1">84</td><td class="ctr1" id="j1">9</td><td class="ctr2" id="k1">9</td><td class="ctr1" id="l1">1</td><td class="ctr2" id="m1">1</td></tr><tr><td id="a2"><a href="AudioElement.java.html" class="el_source">AudioElement.java</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="38" height="10" title="266" alt="266"/></td><td class="ctr2" id="c3">0 %</td><td class="bar" id="d3"><img src="../jacoco-resources/redbar.gif" width="11" height="10" title="11" alt="11"/></td><td class="ctr2" id="e2">0 %</td><td class="ctr1" id="f3">16</td><td class="ctr2" id="g3">16</td><td class="ctr1" id="h2">72</td><td class="ctr2" id="i2">72</td><td class="ctr1" id="j2">9</td><td class="ctr2" id="k2">9</td><td class="ctr1" id="l2">1</td><td class="ctr2" id="m2">1</td></tr><tr><td id="a11"><a href="PlayList.java.html" class="el_source">PlayList.java</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="29" height="10" title="202" alt="202"/></td><td class="ctr2" id="c4">0 %</td><td class="bar" id="d2"><img src="../jacoco-resources/redbar.gif" width="14" height="10" title="14" alt="14"/></td><td class="ctr2" id="e3">0 %</td><td class="ctr1" id="f4">14</td><td class="ctr2" id="g4">14</td><td class="ctr1" id="h3">53</td><td class="ctr2" id="i3">53</td><td class="ctr1" id="j4">7</td><td class="ctr2" id="k4">7</td><td class="ctr1" id="l3">1</td><td class="ctr2" id="m3">1</td></tr><tr><td id="a1"><a href="AudioBook.java.html" class="el_source">AudioBook.java</a></td><td class="bar" id="b4"><img src="../jacoco-resources/redbar.gif" width="23" height="10" title="164" alt="164"/></td><td class="ctr2" id="c5">0 %</td><td class="bar" id="d4"><img src="../jacoco-resources/redbar.gif" width="10" height="10" title="10" alt="10"/></td><td class="ctr2" id="e4">0 %</td><td class="ctr1" id="f1">17</td><td class="ctr2" id="g1">17</td><td class="ctr1" id="h4">39</td><td class="ctr2" id="i4">39</td><td class="ctr1" id="j3">9</td><td class="ctr2" id="k3">9</td><td class="ctr1" id="l4">1</td><td class="ctr2" id="m4">1</td></tr><tr><td id="a12"><a href="Song.java.html" class="el_source">Song.java</a></td><td class="bar" id="b5"><img src="../jacoco-resources/redbar.gif" width="15" height="10" title="105" alt="105"/></td><td class="ctr2" id="c6">0 %</td><td class="bar" id="d5"><img src="../jacoco-resources/redbar.gif" width="6" height="10" title="6" alt="6"/></td><td class="ctr2" id="e5">0 %</td><td class="ctr1" id="f5">12</td><td class="ctr2" id="g5">12</td><td class="ctr1" id="h5">26</td><td class="ctr2" id="i5">26</td><td class="ctr1" id="j5">7</td><td class="ctr2" id="k5">7</td><td class="ctr1" id="l5">1</td><td class="ctr2" id="m5">1</td></tr><tr><td id="a4"><a href="Genre.java.html" class="el_source">Genre.java</a></td><td class="bar" id="b6"><img src="../jacoco-resources/redbar.gif" width="8" height="10" title="56" alt="56"/></td><td class="ctr2" id="c7">0 %</td><td class="bar" id="d6"/><td class="ctr2" id="e6">n/a</td><td class="ctr1" id="f6">3</td><td class="ctr2" id="g6">3</td><td class="ctr1" id="h6">6</td><td class="ctr2" id="i6">6</td><td class="ctr1" id="j6">3</td><td class="ctr2" id="k6">3</td><td class="ctr1" id="l6">1</td><td class="ctr2" id="m6">1</td></tr><tr><td id="a5"><a href="Language.java.html" class="el_source">Language.java</a></td><td class="bar" id="b7"><img src="../jacoco-resources/redbar.gif" width="7" height="10" title="49" alt="49"/></td><td class="ctr2" id="c8">0 %</td><td class="bar" id="d7"/><td class="ctr2" id="e7">n/a</td><td class="ctr1" id="f7">3</td><td class="ctr2" id="g7">3</td><td class="ctr1" id="h7">6</td><td class="ctr2" id="i7">6</td><td class="ctr1" id="j7">3</td><td class="ctr2" id="k7">3</td><td class="ctr1" id="l7">1</td><td class="ctr2" id="m7">1</td></tr><tr><td id="a3"><a href="Category.java.html" class="el_source">Category.java</a></td><td class="bar" id="b8"><img src="../jacoco-resources/redbar.gif" width="7" height="10" title="49" alt="49"/></td><td class="ctr2" id="c9">0 %</td><td class="bar" id="d8"/><td class="ctr2" id="e8">n/a</td><td class="ctr1" id="f8">3</td><td class="ctr2" id="g8">3</td><td class="ctr1" id="h8">6</td><td class="ctr2" id="i8">6</td><td class="ctr1" id="j8">3</td><td class="ctr2" id="k8">3</td><td class="ctr1" id="l8">1</td><td class="ctr2" id="m8">1</td></tr><tr><td id="a7"><a href="NoAlbumFoundException.java.html" class="el_source">NoAlbumFoundException.java</a></td><td class="bar" id="b9"/><td class="ctr2" id="c10">0 %</td><td class="bar" id="d9"/><td class="ctr2" id="e9">n/a</td><td class="ctr1" id="f9">1</td><td class="ctr2" id="g10">1</td><td class="ctr1" id="h9">2</td><td class="ctr2" id="i10">2</td><td class="ctr1" id="j9">1</td><td class="ctr2" id="k10">1</td><td class="ctr1" id="l9">1</td><td class="ctr2" id="m9">1</td></tr><tr><td id="a9"><a href="NoPlayListFoundException.java.html" class="el_source">NoPlayListFoundException.java</a></td><td class="bar" id="b10"/><td class="ctr2" id="c11">0 %</td><td class="bar" id="d10"/><td class="ctr2" id="e10">n/a</td><td class="ctr1" id="f10">1</td><td class="ctr2" id="g11">1</td><td class="ctr1" id="h10">2</td><td class="ctr2" id="i11">2</td><td class="ctr1" id="j10">1</td><td class="ctr2" id="k11">1</td><td class="ctr1" id="l10">1</td><td class="ctr2" id="m10">1</td></tr><tr><td id="a8"><a href="NoElementFoundException.java.html" class="el_source">NoElementFoundException.java</a></td><td class="bar" id="b11"/><td class="ctr2" id="c12">0 %</td><td class="bar" id="d11"/><td class="ctr2" id="e11">n/a</td><td class="ctr1" id="f11">1</td><td class="ctr2" id="g12">1</td><td class="ctr1" id="h11">2</td><td class="ctr2" id="i12">2</td><td class="ctr1" id="j11">1</td><td class="ctr2" id="k12">1</td><td class="ctr1" id="l11">1</td><td class="ctr2" id="m11">1</td></tr><tr><td id="a10"><a href="PathValidation.java.html" class="el_source">PathValidation.java</a></td><td class="bar" id="b12"><img src="../jacoco-resources/greenbar.gif" width="2" height="10" title="17" alt="17"/></td><td class="ctr2" id="c0">100 %</td><td class="bar" id="d12"/><td class="ctr2" id="e12">n/a</td><td class="ctr1" id="f12">0</td><td class="ctr2" id="g9">2</td><td class="ctr1" id="h12">0</td><td class="ctr2" id="i9">4</td><td class="ctr1" id="j12">0</td><td class="ctr2" id="k9">2</td><td class="ctr1" id="l12">0</td><td class="ctr2" id="m12">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.main/Main.html b/target/site/jacoco/musichub.main/Main.html new file mode 100644 index 0000000..de45b84 --- /dev/null +++ b/target/site/jacoco/musichub.main/Main.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Main</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.html" class="el_package">musichub.main</a> > <span class="el_class">Main</span></div><h1>Main</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">588 of 588</td><td class="ctr2">0 %</td><td class="bar">40 of 40</td><td class="ctr2">0 %</td><td class="ctr1">29</td><td class="ctr2">29</td><td class="ctr1">199</td><td class="ctr2">199</td><td class="ctr1">3</td><td class="ctr2">3</td></tr></tfoot><tbody><tr><td id="a1"><a href="Main.java.html#L17" class="el_method">main(String[])</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="548" alt="548"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="40" alt="40"/></td><td class="ctr2" id="e0">0 %</td><td class="ctr1" id="f0">27</td><td class="ctr2" id="g0">27</td><td class="ctr1" id="h0">185</td><td class="ctr2" id="i0">185</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a2"><a href="Main.java.html#L252" class="el_method">printAvailableCommands()</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="8" height="10" title="37" alt="37"/></td><td class="ctr2" id="c1">0 %</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">13</td><td class="ctr2" id="i1">13</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a0"><a href="Main.java.html#L14" class="el_method">Main()</a></td><td class="bar" id="b2"/><td class="ctr2" id="c2">0 %</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">1</td><td class="ctr2" id="i2">1</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.main/Main.java.html b/target/site/jacoco/musichub.main/Main.java.html new file mode 100644 index 0000000..df39af0 --- /dev/null +++ b/target/site/jacoco/musichub.main/Main.java.html @@ -0,0 +1,266 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>Main.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.source.html" class="el_package">musichub.main</a> > <span class="el_source">Main.java</span></div><h1>Main.java</h1><pre class="source lang-java linenums">package musichub.main; + +import musichub.business.*; + +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.UnsupportedAudioFileException; +import java.io.IOException; +import java.util.Iterator; +import java.util.List; +import java.util.Scanner; + +import static musichub.business.PathValidation.isPathValid; + +<span class="nc" id="L14">public class Main {</span> + public static void main(String[] args) throws UnsupportedAudioFileException, IOException, LineUnavailableException { + +<span class="nc" id="L17"> MusicHub theHub = new MusicHub();</span> + +<span class="nc" id="L19"> System.out.println("Type h for available commands");</span> + + +<span class="nc" id="L22"> Scanner scan = new Scanner(System.in);</span> +<span class="nc" id="L23"> String choice = scan.nextLine();</span> + + String albumTitle; + +<span class="nc bnc" id="L27" title="All 2 branches missed."> if (choice.length() == 0) System.exit(0);</span> + +<span class="nc bnc" id="L29" title="All 2 branches missed."> while (!choice.equals("")) { //if the user puts nothing, quit the loop/system</span> +<span class="nc bnc" id="L30" title="All 14 branches missed."> switch (choice.charAt(0)) {</span> + case 'q': //added the option directly in the switch instead of the loop +<span class="nc" id="L32"> System.exit(0);</span> + case 'h': +<span class="nc" id="L34"> printAvailableCommands();</span> +<span class="nc" id="L35"> choice = scan.nextLine();</span> +<span class="nc" id="L36"> break;</span> + case 't': + //album titles, ordered by date +<span class="nc" id="L39"> System.out.println(theHub.getAlbumsTitlesSortedByDate());</span> +<span class="nc" id="L40"> printAvailableCommands();</span> +<span class="nc" id="L41"> choice = scan.nextLine();</span> +<span class="nc" id="L42"> break;</span> + case 'g': + //songs of an album, sorted by genre +<span class="nc" id="L45"> System.out.println("Songs of an album sorted by genre will be displayed; enter the album name, available albums are:");</span> +<span class="nc" id="L46"> System.out.println(theHub.getAlbumsTitlesSortedByDate());</span> + +<span class="nc" id="L48"> albumTitle = scan.nextLine();</span> + try { +<span class="nc" id="L50"> List<Song> songs = theHub.getAlbumSongsSortedByGenre(albumTitle);</span> +<span class="nc" id="L51"> System.out.println(songs);</span> +<span class="nc" id="L52"> } catch (NoAlbumFoundException ex) {</span> +<span class="nc" id="L53"> System.out.println("No album found with the requested title " + ex.getMessage());</span> +<span class="nc" id="L54"> }</span> +<span class="nc" id="L55"> printAvailableCommands();</span> +<span class="nc" id="L56"> choice = scan.nextLine();</span> +<span class="nc" id="L57"> break;</span> + case 'd': + //songs of an album +<span class="nc" id="L60"> System.out.println("Songs of an album will be displayed; enter the album name, available albums are:");</span> +<span class="nc" id="L61"> System.out.println(theHub.getAlbumsTitlesSortedByDate());</span> + +<span class="nc" id="L63"> albumTitle = scan.nextLine();</span> + try { +<span class="nc" id="L65"> List<AudioElement> songs = theHub.getAlbumSongs(albumTitle);</span> +<span class="nc" id="L66"> System.out.println(theHub.getAlbumSongs(albumTitle));</span> +<span class="nc" id="L67"> String song = scan.nextLine();</span> +<span class="nc" id="L68"> theHub.getAudioElement(songs, song);</span> +<span class="nc" id="L69"> } catch (NoAlbumFoundException ex) {</span> +<span class="nc" id="L70"> System.out.println("No album found with the requested title " + ex.getMessage());</span> +<span class="nc" id="L71"> }</span> +<span class="nc" id="L72"> printAvailableCommands();</span> +<span class="nc" id="L73"> choice = scan.nextLine();</span> +<span class="nc" id="L74"> break;</span> + case 'u': + //audiobooks ordered by author +<span class="nc" id="L77"> System.out.println(theHub.getAudiobooksTitlesSortedByAuthor());</span> +<span class="nc" id="L78"> printAvailableCommands();</span> +<span class="nc" id="L79"> choice = scan.nextLine();</span> +<span class="nc" id="L80"> break;</span> + case 'c': + // add a new song +<span class="nc" id="L83"> System.out.println("Enter a new song: ");</span> +<span class="nc" id="L84"> System.out.println("Song title: ");</span> +<span class="nc" id="L85"> String title = scan.nextLine();</span> +<span class="nc" id="L86"> System.out.println("Song genre (jazz, classic, hiphop, rock, pop, rap):");</span> +<span class="nc" id="L87"> String genre = scan.nextLine();</span> +<span class="nc" id="L88"> System.out.println("Song artist: ");</span> +<span class="nc" id="L89"> String artist = scan.nextLine();</span> +<span class="nc" id="L90"> System.out.println("Song length in seconds: ");</span> +<span class="nc" id="L91"> int length = Integer.parseInt(scan.nextLine());</span> + +<span class="nc" id="L93"> System.out.println("Song content: ");</span> +<span class="nc" id="L94"> String content = scan.nextLine();</span> +<span class="nc bnc" id="L95" title="All 2 branches missed."> if (!isPathValid(content)) {</span> +<span class="nc" id="L96"> System.out.println("The music file was not found with the path you've provided.\nType h for available commands");</span> +<span class="nc" id="L97"> choice = scan.nextLine();</span> +<span class="nc" id="L98"> break;</span> + } + +<span class="nc" id="L101"> Song s = new Song(title, artist, length, content, genre);</span> +<span class="nc" id="L102"> theHub.addElement(s);</span> +<span class="nc" id="L103"> System.out.println("New element list: ");</span> +<span class="nc" id="L104"> Iterator<AudioElement> it = theHub.elements();</span> +<span class="nc bnc" id="L105" title="All 2 branches missed."> while (it.hasNext()) System.out.println(it.next().getTitle());</span> +<span class="nc" id="L106"> System.out.println("Song created!");</span> +<span class="nc" id="L107"> printAvailableCommands();</span> +<span class="nc" id="L108"> choice = scan.nextLine();</span> +<span class="nc" id="L109"> break;</span> + case 'a': + // add a new album +<span class="nc" id="L112"> System.out.println("Enter a new album: ");</span> +<span class="nc" id="L113"> System.out.println("Album title: ");</span> +<span class="nc" id="L114"> String aTitle = scan.nextLine();</span> +<span class="nc" id="L115"> System.out.println("Album artist: ");</span> +<span class="nc" id="L116"> String aArtist = scan.nextLine();</span> +<span class="nc" id="L117"> System.out.println("Album length in seconds: ");</span> +<span class="nc" id="L118"> int aLength = Integer.parseInt(scan.nextLine());</span> +<span class="nc" id="L119"> System.out.println("Album date as YYYY-DD-MM: ");</span> +<span class="nc" id="L120"> String aDate = scan.nextLine();</span> +<span class="nc" id="L121"> Album a = new Album(aTitle, aArtist, aLength, aDate);</span> +<span class="nc" id="L122"> theHub.addAlbum(a);</span> +<span class="nc" id="L123"> System.out.println("New list of albums: ");</span> +<span class="nc" id="L124"> Iterator<Album> ita = theHub.albums();</span> +<span class="nc bnc" id="L125" title="All 2 branches missed."> while (ita.hasNext()) System.out.println(ita.next().getTitle());</span> +<span class="nc" id="L126"> System.out.println("Album created!");</span> +<span class="nc" id="L127"> printAvailableCommands();</span> +<span class="nc" id="L128"> choice = scan.nextLine();</span> +<span class="nc" id="L129"> break;</span> + case '+': + //add a song to an album: +<span class="nc" id="L132"> System.out.println("Add an existing song to an existing album");</span> +<span class="nc" id="L133"> System.out.println("Type the name of the song you wish to add. Available songs: ");</span> +<span class="nc" id="L134"> Iterator<AudioElement> itae = theHub.elements();</span> +<span class="nc bnc" id="L135" title="All 2 branches missed."> while (itae.hasNext()) {</span> +<span class="nc" id="L136"> AudioElement ae = itae.next();</span> +<span class="nc bnc" id="L137" title="All 2 branches missed."> if (ae instanceof Song) System.out.println(ae.getTitle());</span> +<span class="nc" id="L138"> }</span> +<span class="nc" id="L139"> String songTitle = scan.nextLine();</span> + +<span class="nc" id="L141"> System.out.println("Type the name of the album you wish to enrich. Available albums: ");</span> +<span class="nc" id="L142"> Iterator<Album> ait = theHub.albums();</span> +<span class="nc bnc" id="L143" title="All 2 branches missed."> while (ait.hasNext()) {</span> +<span class="nc" id="L144"> Album al = ait.next();</span> +<span class="nc" id="L145"> System.out.println(al.getTitle());</span> +<span class="nc" id="L146"> }</span> +<span class="nc" id="L147"> String titleAlbum = scan.nextLine();</span> + try { +<span class="nc" id="L149"> theHub.addElementToAlbum(songTitle, titleAlbum);</span> +<span class="nc" id="L150"> } catch (NoAlbumFoundException | NoElementFoundException ex) {</span> +<span class="nc" id="L151"> System.out.println(ex.getMessage());</span> +<span class="nc" id="L152"> }</span> +<span class="nc" id="L153"> System.out.println("Song added to the album!");</span> +<span class="nc" id="L154"> printAvailableCommands();</span> +<span class="nc" id="L155"> choice = scan.nextLine();</span> +<span class="nc" id="L156"> break;</span> + case 'l': + // add a new audiobook +<span class="nc" id="L159"> System.out.println("Enter a new audiobook: ");</span> +<span class="nc" id="L160"> System.out.println("AudioBook title: ");</span> +<span class="nc" id="L161"> String bTitle = scan.nextLine();</span> +<span class="nc" id="L162"> System.out.println("AudioBook category (youth, novel, theater, documentary, speech)");</span> +<span class="nc" id="L163"> String bCategory = scan.nextLine();</span> +<span class="nc" id="L164"> System.out.println("AudioBook artist: ");</span> +<span class="nc" id="L165"> String bArtist = scan.nextLine();</span> +<span class="nc" id="L166"> System.out.println("AudioBook length in seconds: ");</span> +<span class="nc" id="L167"> int bLength = Integer.parseInt(scan.nextLine());</span> +<span class="nc" id="L168"> System.out.println("AudioBook content: ");</span> +<span class="nc" id="L169"> String bContent = scan.nextLine();</span> +<span class="nc" id="L170"> System.out.println("AudioBook language (french, english, italian, spanish, german)");</span> +<span class="nc" id="L171"> String bLanguage = scan.nextLine();</span> +<span class="nc" id="L172"> AudioBook b = new AudioBook(bTitle, bArtist, bLength, bContent, bLanguage, bCategory);</span> +<span class="nc" id="L173"> theHub.addElement(b);</span> +<span class="nc" id="L174"> System.out.println("Audiobook created! New element list: ");</span> +<span class="nc" id="L175"> Iterator<AudioElement> itl = theHub.elements();</span> +<span class="nc bnc" id="L176" title="All 2 branches missed."> while (itl.hasNext()) System.out.println(itl.next().getTitle());</span> +<span class="nc" id="L177"> printAvailableCommands();</span> +<span class="nc" id="L178"> choice = scan.nextLine();</span> +<span class="nc" id="L179"> break;</span> + case 'p': + //create a new playlist from existing elements +<span class="nc" id="L182"> System.out.println("Add an existing song or audiobook to a new playlist");</span> +<span class="nc" id="L183"> System.out.println("Existing playlists:");</span> +<span class="nc" id="L184"> Iterator<PlayList> itpl = theHub.playlists();</span> +<span class="nc bnc" id="L185" title="All 2 branches missed."> while (itpl.hasNext()) {</span> +<span class="nc" id="L186"> PlayList pl = itpl.next();</span> +<span class="nc" id="L187"> System.out.println(pl.getTitle());</span> +<span class="nc" id="L188"> }</span> +<span class="nc" id="L189"> System.out.println("Type the name of the playlist you wish to create:");</span> +<span class="nc" id="L190"> String playListTitle = scan.nextLine();</span> +<span class="nc" id="L191"> PlayList pl = new PlayList(playListTitle);</span> +<span class="nc" id="L192"> theHub.addPlaylist(pl);</span> +<span class="nc" id="L193"> System.out.println("Available elements: ");</span> + +<span class="nc" id="L195"> Iterator<AudioElement> itael = theHub.elements();</span> +<span class="nc bnc" id="L196" title="All 2 branches missed."> while (itael.hasNext()) {</span> +<span class="nc" id="L197"> AudioElement ae = itael.next();</span> +<span class="nc" id="L198"> System.out.println(ae.getTitle());</span> +<span class="nc" id="L199"> }</span> +<span class="nc bnc" id="L200" title="All 2 branches missed."> while (choice.charAt(0) != 'n') {</span> +<span class="nc" id="L201"> System.out.println("Type the name of the audio element you wish to add or 'n' to exit:");</span> +<span class="nc" id="L202"> String elementTitle = scan.nextLine();</span> + try { +<span class="nc" id="L204"> theHub.addElementToPlayList(elementTitle, playListTitle);</span> +<span class="nc" id="L205"> } catch (NoPlayListFoundException | NoElementFoundException ex) {</span> +<span class="nc" id="L206"> System.out.println(ex.getMessage());</span> +<span class="nc" id="L207"> }</span> + +<span class="nc" id="L209"> System.out.println("Type y to add a new one, n to end");</span> +<span class="nc" id="L210"> choice = scan.nextLine();</span> +<span class="nc" id="L211"> }</span> +<span class="nc" id="L212"> System.out.println("Playlist created!");</span> +<span class="nc" id="L213"> printAvailableCommands();</span> +<span class="nc" id="L214"> choice = scan.nextLine();</span> +<span class="nc" id="L215"> break;</span> + case '-': + //delete a playlist +<span class="nc" id="L218"> System.out.println("Delete an existing playlist. Available playlists:");</span> +<span class="nc" id="L219"> Iterator<PlayList> itp = theHub.playlists();</span> +<span class="nc bnc" id="L220" title="All 2 branches missed."> while (itp.hasNext()) {</span> +<span class="nc" id="L221"> PlayList p = itp.next();</span> +<span class="nc" id="L222"> System.out.println(p.getTitle());</span> +<span class="nc" id="L223"> }</span> +<span class="nc" id="L224"> String plTitle = scan.nextLine();</span> + try { +<span class="nc" id="L226"> theHub.deletePlayList(plTitle);</span> +<span class="nc" id="L227"> } catch (NoPlayListFoundException ex) {</span> +<span class="nc" id="L228"> System.out.println(ex.getMessage());</span> +<span class="nc" id="L229"> }</span> +<span class="nc" id="L230"> System.out.println("Playlist deleted!");</span> +<span class="nc" id="L231"> printAvailableCommands();</span> +<span class="nc" id="L232"> choice = scan.nextLine();</span> +<span class="nc" id="L233"> break;</span> + case 's': + //save elements, albums, playlists +<span class="nc" id="L236"> theHub.saveElements();</span> +<span class="nc" id="L237"> theHub.saveAlbums();</span> +<span class="nc" id="L238"> theHub.savePlayLists();</span> +<span class="nc" id="L239"> System.out.println("Elements, albums and playlists saved!");</span> +<span class="nc" id="L240"> printAvailableCommands();</span> +<span class="nc" id="L241"> choice = scan.nextLine();</span> +<span class="nc" id="L242"> break;</span> + default: + +<span class="nc" id="L245"> break;</span> + } + } +<span class="nc" id="L248"> scan.close();</span> +<span class="nc" id="L249"> }</span> + + private static void printAvailableCommands() { +<span class="nc" id="L252"> System.out.println("t: display the album titles, ordered by date");</span> +<span class="nc" id="L253"> System.out.println("g: display songs of an album, ordered by genre");</span> +<span class="nc" id="L254"> System.out.println("d: display songs of an album");</span> +<span class="nc" id="L255"> System.out.println("u: display audiobooks ordered by author");</span> +<span class="nc" id="L256"> System.out.println("c: add a new song");</span> +<span class="nc" id="L257"> System.out.println("a: add a new album");</span> +<span class="nc" id="L258"> System.out.println("+: add a song to an album");</span> +<span class="nc" id="L259"> System.out.println("l: add a new audiobook");</span> +<span class="nc" id="L260"> System.out.println("p: create a new playlist from existing songs and audio books");</span> +<span class="nc" id="L261"> System.out.println("-: delete an existing playlist");</span> +<span class="nc" id="L262"> System.out.println("s: save elements, albums, playlists");</span> +<span class="nc" id="L263"> System.out.println("q: quit program");</span> +<span class="nc" id="L264"> }</span> +} +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.main/index.html b/target/site/jacoco/musichub.main/index.html new file mode 100644 index 0000000..c4e995d --- /dev/null +++ b/target/site/jacoco/musichub.main/index.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>musichub.main</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.source.html" class="el_source">Source Files</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <span class="el_package">musichub.main</span></div><h1>musichub.main</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">588 of 588</td><td class="ctr2">0 %</td><td class="bar">40 of 40</td><td class="ctr2">0 %</td><td class="ctr1">29</td><td class="ctr2">29</td><td class="ctr1">199</td><td class="ctr2">199</td><td class="ctr1">3</td><td class="ctr2">3</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="Main.html" class="el_class">Main</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="588" alt="588"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="40" alt="40"/></td><td class="ctr2" id="e0">0 %</td><td class="ctr1" id="f0">29</td><td class="ctr2" id="g0">29</td><td class="ctr1" id="h0">199</td><td class="ctr2" id="i0">199</td><td class="ctr1" id="j0">3</td><td class="ctr2" id="k0">3</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.main/index.source.html b/target/site/jacoco/musichub.main/index.source.html new file mode 100644 index 0000000..189774f --- /dev/null +++ b/target/site/jacoco/musichub.main/index.source.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>musichub.main</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.html" class="el_class">Classes</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <span class="el_package">musichub.main</span></div><h1>musichub.main</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">588 of 588</td><td class="ctr2">0 %</td><td class="bar">40 of 40</td><td class="ctr2">0 %</td><td class="ctr1">29</td><td class="ctr2">29</td><td class="ctr1">199</td><td class="ctr2">199</td><td class="ctr1">3</td><td class="ctr2">3</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="Main.java.html" class="el_source">Main.java</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="588" alt="588"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="40" alt="40"/></td><td class="ctr2" id="e0">0 %</td><td class="ctr1" id="f0">29</td><td class="ctr2" id="g0">29</td><td class="ctr1" id="h0">199</td><td class="ctr2" id="i0">199</td><td class="ctr1" id="j0">3</td><td class="ctr2" id="k0">3</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.util/XMLHandler.html b/target/site/jacoco/musichub.util/XMLHandler.html new file mode 100644 index 0000000..7aff8c8 --- /dev/null +++ b/target/site/jacoco/musichub.util/XMLHandler.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>XMLHandler</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.html" class="el_package">musichub.util</a> > <span class="el_class">XMLHandler</span></div><h1>XMLHandler</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">72 of 72</td><td class="ctr2">0 %</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">4</td><td class="ctr2">4</td><td class="ctr1">25</td><td class="ctr2">25</td><td class="ctr1">4</td><td class="ctr2">4</td></tr></tfoot><tbody><tr><td id="a3"><a href="XMLHandler.java.html#L26" class="el_method">XMLHandler()</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="23" alt="23"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g0">1</td><td class="ctr1" id="h0">9</td><td class="ctr2" id="i0">9</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a1"><a href="XMLHandler.java.html#L41" class="el_method">createXMLFile(Document, String)</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="23" alt="23"/></td><td class="ctr2" id="c1">0 %</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h2">7</td><td class="ctr2" id="i2">7</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a2"><a href="XMLHandler.java.html#L61" class="el_method">parseXMLFile(String)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/redbar.gif" width="114" height="10" title="22" alt="22"/></td><td class="ctr2" id="c2">0 %</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h1">8</td><td class="ctr2" id="i1">8</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr><tr><td id="a0"><a href="XMLHandler.java.html#L57" class="el_method">createXMLDocument()</a></td><td class="bar" id="b3"><img src="../jacoco-resources/redbar.gif" width="20" height="10" title="4" alt="4"/></td><td class="ctr2" id="c3">0 %</td><td class="bar" id="d3"/><td class="ctr2" id="e3">n/a</td><td class="ctr1" id="f3">1</td><td class="ctr2" id="g3">1</td><td class="ctr1" id="h3">1</td><td class="ctr2" id="i3">1</td><td class="ctr1" id="j3">1</td><td class="ctr2" id="k3">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.util/XMLHandler.java.html b/target/site/jacoco/musichub.util/XMLHandler.java.html new file mode 100644 index 0000000..b8ee27a --- /dev/null +++ b/target/site/jacoco/musichub.util/XMLHandler.java.html @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>XMLHandler.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.source.html" class="el_package">musichub.util</a> > <span class="el_source">XMLHandler.java</span></div><h1>XMLHandler.java</h1><pre class="source lang-java linenums">package musichub.util; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import java.io.File; +import java.io.IOException; + + +public class XMLHandler { + TransformerFactory transformerFactory; + Transformer transformer; + DocumentBuilderFactory documentFactory; + DocumentBuilder documentBuilder; + +<span class="nc" id="L26"> public XMLHandler() {</span> + try { +<span class="nc" id="L28"> transformerFactory = TransformerFactory.newInstance();</span> +<span class="nc" id="L29"> transformer = transformerFactory.newTransformer();</span> +<span class="nc" id="L30"> documentFactory = DocumentBuilderFactory.newInstance();</span> +<span class="nc" id="L31"> documentBuilder = documentFactory.newDocumentBuilder();</span> +<span class="nc" id="L32"> } catch (TransformerException | ParserConfigurationException tfe) {</span> +<span class="nc" id="L33"> tfe.printStackTrace();</span> +<span class="nc" id="L34"> }</span> +<span class="nc" id="L35"> }</span> + + public void createXMLFile(Document document, String filePath) { + try { + // create the xml file + //transform the DOM Object to an XML File +<span class="nc" id="L41"> DOMSource domSource = new DOMSource(document);</span> +<span class="nc" id="L42"> StreamResult streamResult = new StreamResult(new File(filePath));</span> + + // If you use + // StreamResult result = new StreamResult(System.out); + // the output will be pushed to the standard output ... + // You can use that for debugging + +<span class="nc" id="L49"> transformer.transform(domSource, streamResult);</span> + +<span class="nc" id="L51"> } catch (TransformerException tfe) {</span> +<span class="nc" id="L52"> tfe.printStackTrace();</span> +<span class="nc" id="L53"> }</span> +<span class="nc" id="L54"> }</span> + + public Document createXMLDocument() { +<span class="nc" id="L57"> return documentBuilder.newDocument();</span> + } + + public NodeList parseXMLFile(String filePath) { +<span class="nc" id="L61"> NodeList elementNodes = null;</span> + try { +<span class="nc" id="L63"> Document document = documentBuilder.parse(new File(filePath));</span> +<span class="nc" id="L64"> Element root = document.getDocumentElement();</span> + +<span class="nc" id="L66"> elementNodes = root.getChildNodes();</span> +<span class="nc" id="L67"> } catch (SAXException | IOException e) {</span> +<span class="nc" id="L68"> e.printStackTrace();</span> +<span class="nc" id="L69"> }</span> +<span class="nc" id="L70"> return elementNodes;</span> + } + + +} +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.util/index.html b/target/site/jacoco/musichub.util/index.html new file mode 100644 index 0000000..1194ec1 --- /dev/null +++ b/target/site/jacoco/musichub.util/index.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>musichub.util</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.source.html" class="el_source">Source Files</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <span class="el_package">musichub.util</span></div><h1>musichub.util</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">72 of 72</td><td class="ctr2">0 %</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">4</td><td class="ctr2">4</td><td class="ctr1">25</td><td class="ctr2">25</td><td class="ctr1">4</td><td class="ctr2">4</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="XMLHandler.html" class="el_class">XMLHandler</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="72" alt="72"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">4</td><td class="ctr2" id="g0">4</td><td class="ctr1" id="h0">25</td><td class="ctr2" id="i0">25</td><td class="ctr1" id="j0">4</td><td class="ctr2" id="k0">4</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file diff --git a/target/site/jacoco/musichub.util/index.source.html b/target/site/jacoco/musichub.util/index.source.html new file mode 100644 index 0000000..e6f6dba --- /dev/null +++ b/target/site/jacoco/musichub.util/index.source.html @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>musichub.util</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.html" class="el_class">Classes</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <span class="el_package">musichub.util</span></div><h1>musichub.util</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">72 of 72</td><td class="ctr2">0 %</td><td class="bar">0 of 0</td><td class="ctr2">n/a</td><td class="ctr1">4</td><td class="ctr2">4</td><td class="ctr1">25</td><td class="ctr2">25</td><td class="ctr1">4</td><td class="ctr2">4</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="XMLHandler.java.html" class="el_source">XMLHandler.java</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="72" alt="72"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"/><td class="ctr2" id="e0">n/a</td><td class="ctr1" id="f0">4</td><td class="ctr2" id="g0">4</td><td class="ctr1" id="h0">25</td><td class="ctr2" id="i0">25</td><td class="ctr1" id="j0">4</td><td class="ctr2" id="k0">4</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file |