<!DOCTYPE html>
<html lang='en'>
<head>
<title>[bug-66612] get macrosheet xml (test) - poi.git - Mirror of Apache POI: https://github.com/apache/poi</title>
<meta name='generator' content='cgit v1.2.3'/>
<meta name='robots' content='index, nofollow'/>
<link rel='stylesheet' type='text/css' href='/cgit.css'/>
<link rel='shortcut icon' href='/favicon.ico'/>
<link rel='alternate' title='Atom feed' href='https://source.dussan.org/poi.git/atom/poi-ooxml?h=trunk' type='application/atom+xml'/>
</head>
<body>
<div id='cgit'><table id='header'>
<tr>
<td class='logo' rowspan='2'><a href='/'><img src='/cgit.png' alt='cgit logo'/></a></td>
<td class='main'><a href='/'>index</a> : <a href='/poi.git/'>poi.git</a></td><td class='form'><form method='get'>
<input type='hidden' name='id' value='dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085'/><select name='h' onchange='this.form.submit();'>
<option value='BUILD_BRANCH'>BUILD_BRANCH</option>
<option value='NIO_32_BRANCH'>NIO_32_BRANCH</option>
<option value='NIO_BRANCH'>NIO_BRANCH</option>
<option value='REL_1_5_BRANCH'>REL_1_5_BRANCH</option>
<option value='REL_2_BRANCH'>REL_2_BRANCH</option>
<option value='REL_3_10_BRANCH'>REL_3_10_BRANCH</option>
<option value='REL_3_11_BRANCH'>REL_3_11_BRANCH</option>
<option value='asf-site'>asf-site</option>
<option value='common_sl'>common_sl</option>
<option value='dependabot/github_actions/actions/checkout-5'>dependabot/github_actions/actions/checkout-5</option>
<option value='dependabot/gradle/batikVersion-1.18'>dependabot/gradle/batikVersion-1.18</option>
<option value='dependabot/gradle/batikVersion-1.19'>dependabot/gradle/batikVersion-1.19</option>
<option value='dependabot/gradle/bouncyCastleVersion-1.80'>dependabot/gradle/bouncyCastleVersion-1.80</option>
<option value='dependabot/gradle/com.dorongold.task-tree-4.0.1'>dependabot/gradle/com.dorongold.task-tree-4.0.1</option>
<option value='dependabot/gradle/com.fasterxml.woodstox-woodstox-core-7.1.0'>dependabot/gradle/com.fasterxml.woodstox-woodstox-core-7.1.0</option>
<option value='dependabot/gradle/com.fasterxml.woodstox-woodstox-core-7.1.1'>dependabot/gradle/com.fasterxml.woodstox-woodstox-core-7.1.1</option>
<option value='dependabot/gradle/com.github.spotbugs-6.0.24'>dependabot/gradle/com.github.spotbugs-6.0.24</option>
<option value='dependabot/gradle/com.github.spotbugs-6.0.25'>dependabot/gradle/com.github.spotbugs-6.0.25</option>
<option value='dependabot/gradle/com.github.spotbugs-6.0.26'>dependabot/gradle/com.github.spotbugs-6.0.26</option>
<option value='dependabot/gradle/com.github.spotbugs-6.0.27'>dependabot/gradle/com.github.spotbugs-6.0.27</option>
<option value='dependabot/gradle/com.github.spotbugs-6.1.0'>dependabot/gradle/com.github.spotbugs-6.1.0</option>
<option value='dependabot/gradle/com.github.spotbugs-6.1.1'>dependabot/gradle/com.github.spotbugs-6.1.1</option>
<option value='dependabot/gradle/com.github.spotbugs-6.1.10'>dependabot/gradle/com.github.spotbugs-6.1.10</option>
<option value='dependabot/gradle/com.github.spotbugs-6.1.11'>dependabot/gradle/com.github.spotbugs-6.1.11</option>
<option value='dependabot/gradle/com.github.spotbugs-6.1.12'>dependabot/gradle/com.github.spotbugs-6.1.12</option>
<option value='dependabot/gradle/com.github.spotbugs-6.1.13'>dependabot/gradle/com.github.spotbugs-6.1.13</option>
<option value='dependabot/gradle/com.github.spotbugs-6.1.2'>dependabot/gradle/com.github.spotbugs-6.1.2</option>
<option value='dependabot/gradle/com.github.spotbugs-6.1.3'>dependabot/gradle/com.github.spotbugs-6.1.3</option>
<option value='dependabot/gradle/com.github.spotbugs-6.1.4'>dependabot/gradle/com.github.spotbugs-6.1.4</option>
<option value='dependabot/gradle/com.github.spotbugs-6.1.5'>dependabot/gradle/com.github.spotbugs-6.1.5</option>
<option value='dependabot/gradle/com.github.spotbugs-6.1.6'>dependabot/gradle/com.github.spotbugs-6.1.6</option>
<option value='dependabot/gradle/com.github.spotbugs-6.1.7'>dependabot/gradle/com.github.spotbugs-6.1.7</option>
<option value='dependabot/gradle/com.github.spotbugs-6.1.9'>dependabot/gradle/com.github.spotbugs-6.1.9</option>
<option value='dependabot/gradle/com.github.spotbugs-6.2.0'>dependabot/gradle/com.github.spotbugs-6.2.0</option>
<option value='dependabot/gradle/com.github.spotbugs-6.2.1'>dependabot/gradle/com.github.spotbugs-6.2.1</option>
<option value='dependabot/gradle/com.github.spotbugs-6.2.2'>dependabot/gradle/com.github.spotbugs-6.2.2</option>
<option value='dependabot/gradle/com.github.spotbugs-6.2.3'>dependabot/gradle/com.github.spotbugs-6.2.3</option>
<option value='dependabot/gradle/com.github.spotbugs-6.2.4'>dependabot/gradle/com.github.spotbugs-6.2.4</option>
<option value='dependabot/gradle/com.google.guava-guava-33.3.1-jre'>dependabot/gradle/com.google.guava-guava-33.3.1-jre</option>
<option value='dependabot/gradle/com.google.guava-guava-33.4.0-jre'>dependabot/gradle/com.google.guava-guava-33.4.0-jre</option>
<option value='dependabot/gradle/com.google.guava-guava-33.4.5-jre'>dependabot/gradle/com.google.guava-guava-33.4.5-jre</option>
<option value='dependabot/gradle/com.google.guava-guava-33.4.6-jre'>dependabot/gradle/com.google.guava-guava-33.4.6-jre</option>
<option value='dependabot/gradle/com.google.guava-guava-33.4.7-jre'>dependabot/gradle/com.google.guava-guava-33.4.7-jre</option>
<option value='dependabot/gradle/com.google.guava-guava-33.4.8-jre'>dependabot/gradle/com.google.guava-guava-33.4.8-jre</option>
<option value='dependabot/gradle/commons-codec-commons-codec-1.17.2'>dependabot/gradle/commons-codec-commons-codec-1.17.2</option>
<option value='dependabot/gradle/commons-codec-commons-codec-1.18.0'>dependabot/gradle/commons-codec-commons-codec-1.18.0</option>
<option value='dependabot/gradle/commons-codec-commons-codec-1.19.0'>dependabot/gradle/commons-codec-commons-codec-1.19.0</option>
<option value='dependabot/gradle/de.rototor.pdfbox-graphics2d-3.0.3'>dependabot/gradle/de.rototor.pdfbox-graphics2d-3.0.3</option>
<option value='dependabot/gradle/de.thetaphi.forbiddenapis-3.8'>dependabot/gradle/de.thetaphi.forbiddenapis-3.8</option>
<option value='dependabot/gradle/de.thetaphi.forbiddenapis-3.9'>dependabot/gradle/de.thetaphi.forbiddenapis-3.9</option>
<option value='dependabot/gradle/junitVersion-5.11.2'>dependabot/gradle/junitVersion-5.11.2</option>
<option value='dependabot/gradle/junitVersion-5.11.3'>dependabot/gradle/junitVersion-5.11.3</option>
<option value='dependabot/gradle/junitVersion-5.11.4'>dependabot/gradle/junitVersion-5.11.4</option>
<option value='dependabot/gradle/junitVersion-5.12.0'>dependabot/gradle/junitVersion-5.12.0</option>
<option value='dependabot/gradle/junitVersion-5.12.1'>dependabot/gradle/junitVersion-5.12.1</option>
<option value='dependabot/gradle/junitVersion-5.12.2'>dependabot/gradle/junitVersion-5.12.2</option>
<option value='dependabot/gradle/junitVersion-5.13.0'>dependabot/gradle/junitVersion-5.13.0</option>
<option value='dependabot/gradle/junitVersion-5.13.1'>dependabot/gradle/junitVersion-5.13.1</option>
<option value='dependabot/gradle/junitVersion-5.13.3'>dependabot/gradle/junitVersion-5.13.3</option>
<option value='dependabot/gradle/junitVersion-5.13.4'>dependabot/gradle/junitVersion-5.13.4</option>
<option value='dependabot/gradle/log4jVersion-2.24.1'>dependabot/gradle/log4jVersion-2.24.1</option>
<option value='dependabot/gradle/log4jVersion-2.24.2'>dependabot/gradle/log4jVersion-2.24.2</option>
<option value='dependabot/gradle/log4jVersion-2.24.3'>dependabot/gradle/log4jVersion-2.24.3</option>
<option value='dependabot/gradle/log4jVersion-2.25.0'>dependabot/gradle/log4jVersion-2.25.0</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.15.10'>dependabot/gradle/net.bytebuddy-byte-buddy-1.15.10</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.15.11'>dependabot/gradle/net.bytebuddy-byte-buddy-1.15.11</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.15.3'>dependabot/gradle/net.bytebuddy-byte-buddy-1.15.3</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.15.4'>dependabot/gradle/net.bytebuddy-byte-buddy-1.15.4</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.15.5'>dependabot/gradle/net.bytebuddy-byte-buddy-1.15.5</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.15.7'>dependabot/gradle/net.bytebuddy-byte-buddy-1.15.7</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.17.0'>dependabot/gradle/net.bytebuddy-byte-buddy-1.17.0</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.17.1'>dependabot/gradle/net.bytebuddy-byte-buddy-1.17.1</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.17.2'>dependabot/gradle/net.bytebuddy-byte-buddy-1.17.2</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.17.4'>dependabot/gradle/net.bytebuddy-byte-buddy-1.17.4</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.17.5'>dependabot/gradle/net.bytebuddy-byte-buddy-1.17.5</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-1.17.6'>dependabot/gradle/net.bytebuddy-byte-buddy-1.17.6</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.10'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.10</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.11'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.11</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.3'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.3</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.4'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.4</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.5'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.5</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.7'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.15.7</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.0'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.0</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.1'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.1</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.2'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.2</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.4'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.4</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.5'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.5</option>
<option value='dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.6'>dependabot/gradle/net.bytebuddy-byte-buddy-agent-1.17.6</option>
<option value='dependabot/gradle/net.sf.saxon-Saxon-HE-12.6'>dependabot/gradle/net.sf.saxon-Saxon-HE-12.6</option>
<option value='dependabot/gradle/net.sf.saxon-Saxon-HE-12.8'>dependabot/gradle/net.sf.saxon-Saxon-HE-12.8</option>
<option value='dependabot/gradle/org.apache.commons-commons-collections4-4.5.0'>dependabot/gradle/org.apache.commons-commons-collections4-4.5.0</option>
<option value='dependabot/gradle/org.apache.pdfbox-pdfbox-3.0.4'>dependabot/gradle/org.apache.pdfbox-pdfbox-3.0.4</option>
<option value='dependabot/gradle/org.apache.pdfbox-pdfbox-3.0.5'>dependabot/gradle/org.apache.pdfbox-pdfbox-3.0.5</option>
<option value='dependabot/gradle/org.apache.santuario-xmlsec-4.0.3'>dependabot/gradle/org.apache.santuario-xmlsec-4.0.3</option>
<option value='dependabot/gradle/org.apache.santuario-xmlsec-4.0.4'>dependabot/gradle/org.apache.santuario-xmlsec-4.0.4</option>
<option value='dependabot/gradle/org.apache.xmlbeans-xmlbeans-5.2.2'>dependabot/gradle/org.apache.xmlbeans-xmlbeans-5.2.2</option>
<option value='dependabot/gradle/org.cyclonedx.bom-2.0.0'>dependabot/gradle/org.cyclonedx.bom-2.0.0</option>
<option value='dependabot/gradle/org.cyclonedx.bom-2.1.0'>dependabot/gradle/org.cyclonedx.bom-2.1.0</option>
<option value='dependabot/gradle/org.cyclonedx.bom-2.2.0'>dependabot/gradle/org.cyclonedx.bom-2.2.0</option>
<option value='dependabot/gradle/org.cyclonedx.bom-2.3.0'>dependabot/gradle/org.cyclonedx.bom-2.3.0</option>
<option value='dependabot/gradle/org.junit.jupiter-junit-jupiter-5.13.3'>dependabot/gradle/org.junit.jupiter-junit-jupiter-5.13.3</option>
<option value='dependabot/gradle/org.junit.jupiter-junit-jupiter-5.13.4'>dependabot/gradle/org.junit.jupiter-junit-jupiter-5.13.4</option>
<option value='dependabot/gradle/org.junit.platform-junit-platform-launcher-1.12.1'>dependabot/gradle/org.junit.platform-junit-platform-launcher-1.12.1</option>
<option value='dependabot/gradle/org.junit.platform-junit-platform-launcher-1.12.2'>dependabot/gradle/org.junit.platform-junit-platform-launcher-1.12.2</option>
<option value='dependabot/gradle/org.junit.platform-junit-platform-launcher-1.13.0'>dependabot/gradle/org.junit.platform-junit-platform-launcher-1.13.0</option>
<option value='dependabot/gradle/org.junit.platform-junit-platform-launcher-1.13.1'>dependabot/gradle/org.junit.platform-junit-platform-launcher-1.13.1</option>
<option value='dependabot/gradle/org.mockito-mockito-core-5.14.1'>dependabot/gradle/org.mockito-mockito-core-5.14.1</option>
<option value='dependabot/gradle/org.mockito-mockito-core-5.14.2'>dependabot/gradle/org.mockito-mockito-core-5.14.2</option>
<option value='dependabot/gradle/org.mockito-mockito-core-5.15.2'>dependabot/gradle/org.mockito-mockito-core-5.15.2</option>
<option value='dependabot/gradle/org.mockito-mockito-core-5.16.0'>dependabot/gradle/org.mockito-mockito-core-5.16.0</option>
<option value='dependabot/gradle/org.mockito-mockito-core-5.16.1'>dependabot/gradle/org.mockito-mockito-core-5.16.1</option>
<option value='dependabot/gradle/org.mockito-mockito-core-5.17.0'>dependabot/gradle/org.mockito-mockito-core-5.17.0</option>
<option value='dependabot/gradle/org.mockito-mockito-core-5.18.0'>dependabot/gradle/org.mockito-mockito-core-5.18.0</option>
<option value='dependabot/gradle/org.slf4j-slf4j-api-2.0.17'>dependabot/gradle/org.slf4j-slf4j-api-2.0.17</option>
<option value='dependabot/gradle/org.slf4j-slf4j-simple-2.0.17'>dependabot/gradle/org.slf4j-slf4j-simple-2.0.17</option>
<option value='dependabot/gradle/org.sonarqube-6.0.0.5145'>dependabot/gradle/org.sonarqube-6.0.0.5145</option>
<option value='dependabot/gradle/org.sonarqube-6.1.0.5360'>dependabot/gradle/org.sonarqube-6.1.0.5360</option>
<option value='dependabot/gradle/org.sonarqube-6.2.0.5505'>dependabot/gradle/org.sonarqube-6.2.0.5505</option>
<option value='dependabot/gradle/org.xmlunit-xmlunit-core-2.10.1'>dependabot/gradle/org.xmlunit-xmlunit-core-2.10.1</option>
<option value='dependabot/gradle/org.xmlunit-xmlunit-core-2.10.3'>dependabot/gradle/org.xmlunit-xmlunit-core-2.10.3</option>
<option value='excelant'>excelant</option>
<option value='gsoc2012'>gsoc2012</option>
<option value='hemf'>hemf</option>
<option value='hssf_cryptoapi'>hssf_cryptoapi</option>
<option value='jakarta-poi'>jakarta-poi</option>
<option value='log4j'>log4j</option>
<option value='maven'>maven</option>
<option value='mv'>mv</option>
<option value='ooxml'>ooxml</option>
<option value='performance-branch'>performance-branch</option>
<option value='ss_border_property_template'>ss_border_property_template</option>
<option value='table-borders'>table-borders</option>
<option value='trunk' selected='selected'>trunk</option>
<option value='wmf_render'>wmf_render</option>
<option value='xml_signature'>xml_signature</option>
<option value='xssf_structured_references'>xssf_structured_references</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>Mirror of Apache POI: https://github.com/apache/poi</td><td class='sub right'>www-data</td></tr></table>
<table class='tabs'><tr><td>
<a href='/poi.git/about/'>about</a><a href='/poi.git/'>summary</a><a href='/poi.git/refs/?id=dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085'>refs</a><a href='/poi.git/log/poi-ooxml'>log</a><a href='/poi.git/tree/poi-ooxml?id=dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085'>tree</a><a class='active' href='/poi.git/commit/poi-ooxml?id=dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085'>commit</a><a href='/poi.git/diff/poi-ooxml?id=dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085'>diff</a><a href='/poi.git/stats/poi-ooxml'>stats</a></td><td class='form'><form class='right' method='get' action='/poi.git/log/poi-ooxml'>
<input type='hidden' name='id' value='dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/poi.git/commit/?id=dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085'>root</a>/<a href='/poi.git/commit/poi-ooxml?id=dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085'>poi-ooxml</a></div><div class='content'><div class='cgit-panel'><b>diff options</b><form method='get'><input type='hidden' name='id' value='dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085'/><table><tr><td colspan='2'/></tr><tr><td class='label'>context:</td><td class='ctrl'><select name='context' onchange='this.form.submit();'><option value='1'>1</option><option value='2'>2</option><option value='3' selected='selected'>3</option><option value='4'>4</option><option value='5'>5</option><option value='6'>6</option><option value='7'>7</option><option value='8'>8</option><option value='9'>9</option><option value='10'>10</option><option value='15'>15</option><option value='20'>20</option><option value='25'>25</option><option value='30'>30</option><option value='35'>35</option><option value='40'>40</option></select></td></tr><tr><td class='label'>space:</td><td class='ctrl'><select name='ignorews' onchange='this.form.submit();'><option value='0' selected='selected'>include</option><option value='1'>ignore</option></select></td></tr><tr><td class='label'>mode:</td><td class='ctrl'><select name='dt' onchange='this.form.submit();'><option value='0' selected='selected'>unified</option><option value='1'>ssdiff</option><option value='2'>stat only</option></select></td></tr><tr><td/><td class='ctrl'><noscript><input type='submit' value='reload'/></noscript></td></tr></table></form></div><table summary='commit info' class='commit-info'>
<tr><th>author</th><td>PJ Fanning &lt;fanningpj@apache.org&gt;</td><td class='right'>2023-05-22 16:31:05 +0000</td></tr>
<tr><th>committer</th><td>PJ Fanning &lt;fanningpj@apache.org&gt;</td><td class='right'>2023-05-22 16:31:05 +0000</td></tr>
<tr><th>commit</th><td colspan='2' class='oid'><a href='/poi.git/commit/poi-ooxml?id=dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085'>dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085</a> (<a href='/poi.git/patch/poi-ooxml?id=dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085'>patch</a>)</td></tr>
<tr><th>tree</th><td colspan='2' class='oid'><a href='/poi.git/tree/?id=dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085'>d0dbe3ae16c20de0ff3f9ec9b01cea35c37ff866</a> /<a href='/poi.git/tree/poi-ooxml?id=dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085'>poi-ooxml</a></td></tr>
<tr><th>parent</th><td colspan='2' class='oid'><a href='/poi.git/commit/poi-ooxml?id=bc035b1aff973201e861ee82573a2129604e224d'>bc035b1aff973201e861ee82573a2129604e224d</a> (<a href='/poi.git/diff/poi-ooxml?id=dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085&amp;id2=bc035b1aff973201e861ee82573a2129604e224d'>diff</a>)</td></tr><tr><th>download</th><td colspan='2' class='oid'><a href='/poi.git/snapshot/poi-dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085.tar.gz'>poi-dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085.tar.gz</a><br/><a href='/poi.git/snapshot/poi-dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085.zip'>poi-dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085.zip</a><br/></td></tr></table>
<div class='commit-subject'>[bug-66612] get macrosheet xml (test)</div><div class='commit-msg'>git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1909996 13f79535-47bb-0310-9956-ffa450edef68
</div><div class='diffstat-header'><a href='/poi.git/diff/?id=dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085'>Diffstat</a> (limited to 'poi-ooxml')</div><table summary='diffstat' class='diffstat'><tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/poi.git/diff/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFBReader.java?id=dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085'>poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFBReader.java</a></td><td class='right'>4</td><td class='graph'><table summary='file diffstat' width='4%'><tr><td class='add' style='width: 50.0%;'/><td class='rem' style='width: 50.0%;'/><td class='none' style='width: 0.0%;'/></tr></table></td></tr>
<tr><td class='mode'>-rw-r--r--</td><td class='upd'><a href='/poi.git/diff/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java?id=dfe5dd150cdcb5a32fbcb00d9c442ef1a21d0085'>poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java</a></td><td class='right'>2</td><td class='graph'><table summary='file diffstat' width='4%'><tr><td class='add' style='width: 25.0%;'/><td class='rem' style='width: 25.0%;'/><td class='none' style='width: 50.0%;'/></tr></table></td></tr>
</table><div class='diffstat-summary'>2 files changed, 3 insertions, 3 deletions</div><table summary='diff' class='diff'><tr><td><div class='head'>diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFBReader.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFBReader.java<br/>index f11514ca84..bf730e79d1 100644<br/>--- a/<a href='/poi.git/tree/poi-ooxml/src/main/java/org/apache/poi/xssf/eventusermodel/XSSFBReader.java?id=bc035b1aff973<style>pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */</style><div class="highlight"><pre><span></span><span class="cm">/*</span>
<span class="cm"> * Copyright 2012 gitblit.com.</span>
<span class="cm"> *</span>
<span class="cm"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span>
<span class="cm"> * you may not use this file except in compliance with the License.</span>
<span class="cm"> * You may obtain a copy of the License at</span>
<span class="cm"> *</span>
<span class="cm"> *     http://www.apache.org/licenses/LICENSE-2.0</span>
<span class="cm"> *</span>
<span class="cm"> * Unless required by applicable law or agreed to in writing, software</span>
<span class="cm"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span>
<span class="cm"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
<span class="cm"> * See the License for the specific language governing permissions and</span>
<span class="cm"> * limitations under the License.</span>
<span class="cm"> */</span>
<span class="kn">package</span><span class="w"> </span><span class="nn">com.gitblit.models</span><span class="p">;</span>

<span class="kn">import</span><span class="w"> </span><span class="nn">java.io.Serializable</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.util.ArrayList</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.util.Date</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.util.LinkedHashSet</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.util.List</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">java.util.Set</span><span class="p">;</span>

<span class="kn">import</span><span class="w"> </span><span class="nn">com.gitblit.utils.ArrayUtils</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">com.gitblit.utils.StringUtils</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">com.gitblit.utils.TimeUtils</span><span class="p">;</span>

<span class="cm">/**</span>
<span class="cm"> * The Gitblit Issue model, its component classes, and enums.</span>
<span class="cm"> * </span>
<span class="cm"> * @author James Moger</span>
<span class="cm"> * </span>
<span class="cm"> */</span>
<span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">IssueModel</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">Serializable</span><span class="p">,</span><span class="w"> </span><span class="n">Comparable</span><span class="o">&lt;</span><span class="n">IssueModel</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span>

<span class="w">	</span><span class="kd">private</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="n">serialVersionUID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1L</span><span class="p">;</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">id</span><span class="p">;</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="n">Type</span><span class="w"> </span><span class="n">type</span><span class="p">;</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="n">Status</span><span class="w"> </span><span class="n">status</span><span class="p">;</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="n">Priority</span><span class="w"> </span><span class="n">priority</span><span class="p">;</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="n">Date</span><span class="w"> </span><span class="n">created</span><span class="p">;</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">summary</span><span class="p">;</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">description</span><span class="p">;</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">reporter</span><span class="p">;</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">owner</span><span class="p">;</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">milestone</span><span class="p">;</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">Change</span><span class="o">&gt;</span><span class="w"> </span><span class="n">changes</span><span class="p">;</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="nf">IssueModel</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="c1">// the first applied change set the date appropriately</span>
<span class="w">		</span><span class="n">created</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Date</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>

<span class="w">		</span><span class="n">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Type</span><span class="p">.</span><span class="na">Defect</span><span class="p">;</span>
<span class="w">		</span><span class="n">status</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Status</span><span class="p">.</span><span class="na">New</span><span class="p">;</span>
<span class="w">		</span><span class="n">priority</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Priority</span><span class="p">.</span><span class="na">Medium</span><span class="p">;</span>

<span class="w">		</span><span class="n">changes</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">ArrayList</span><span class="o">&lt;</span><span class="n">Change</span><span class="o">&gt;</span><span class="p">();</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">getStatus</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="n">String</span><span class="w"> </span><span class="n">s</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">status</span><span class="p">.</span><span class="na">toString</span><span class="p">();</span>
<span class="w">		</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">StringUtils</span><span class="p">.</span><span class="na">isEmpty</span><span class="p">(</span><span class="n">owner</span><span class="p">))</span>
<span class="w">			</span><span class="n">s</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="s">&quot; (&quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">owner</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">&quot;)&quot;</span><span class="p">;</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="n">s</span><span class="p">;</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">hasLabel</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">label</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="n">getLabels</span><span class="p">().</span><span class="na">contains</span><span class="p">(</span><span class="n">label</span><span class="p">);</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">String</span><span class="o">&gt;</span><span class="w"> </span><span class="nf">getLabels</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="n">List</span><span class="o">&lt;</span><span class="n">String</span><span class="o">&gt;</span><span class="w"> </span><span class="n">list</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">ArrayList</span><span class="o">&lt;</span><span class="n">String</span><span class="o">&gt;</span><span class="p">();</span>
<span class="w">		</span><span class="n">String</span><span class="w"> </span><span class="n">labels</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<span class="w">		</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">Change</span><span class="w"> </span><span class="n">change</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">changes</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">change</span><span class="p">.</span><span class="na">hasField</span><span class="p">(</span><span class="n">Field</span><span class="p">.</span><span class="na">Labels</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="n">labels</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">change</span><span class="p">.</span><span class="na">getString</span><span class="p">(</span><span class="n">Field</span><span class="p">.</span><span class="na">Labels</span><span class="p">);</span>
<span class="w">			</span><span class="p">}</span>
<span class="w">		</span><span class="p">}</span>
<span class="w">		</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">StringUtils</span><span class="p">.</span><span class="na">isEmpty</span><span class="p">(</span><span class="n">labels</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="n">list</span><span class="p">.</span><span class="na">addAll</span><span class="p">(</span><span class="n">StringUtils</span><span class="p">.</span><span class="na">getStringsFromValue</span><span class="p">(</span><span class="n">labels</span><span class="p">,</span><span class="w"> </span><span class="s">&quot; &quot;</span><span class="p">));</span>
<span class="w">		</span><span class="p">}</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="n">list</span><span class="p">;</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="n">Attachment</span><span class="w"> </span><span class="nf">getAttachment</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">name</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="n">Attachment</span><span class="w"> </span><span class="n">attachment</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<span class="w">		</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">Change</span><span class="w"> </span><span class="n">change</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">changes</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">change</span><span class="p">.</span><span class="na">hasAttachments</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="n">Attachment</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">change</span><span class="p">.</span><span class="na">getAttachment</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
<span class="w">				</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="kc">null</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">					</span><span class="n">attachment</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="p">;</span>
<span class="w">				</span><span class="p">}</span>
<span class="w">			</span><span class="p">}</span>
<span class="w">		</span><span class="p">}</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="n">attachment</span><span class="p">;</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">Attachment</span><span class="o">&gt;</span><span class="w"> </span><span class="nf">getAttachments</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="n">List</span><span class="o">&lt;</span><span class="n">Attachment</span><span class="o">&gt;</span><span class="w"> </span><span class="n">list</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">ArrayList</span><span class="o">&lt;</span><span class="n">Attachment</span><span class="o">&gt;</span><span class="p">();</span>
<span class="w">		</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">Change</span><span class="w"> </span><span class="n">change</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">changes</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">change</span><span class="p">.</span><span class="na">hasAttachments</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="n">list</span><span class="p">.</span><span class="na">addAll</span><span class="p">(</span><span class="n">change</span><span class="p">.</span><span class="na">attachments</span><span class="p">);</span>
<span class="w">			</span><span class="p">}</span>
<span class="w">		</span><span class="p">}</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="n">list</span><span class="p">;</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">applyChange</span><span class="p">(</span><span class="n">Change</span><span class="w"> </span><span class="n">change</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">changes</span><span class="p">.</span><span class="na">size</span><span class="p">()</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="c1">// first change created the issue</span>
<span class="w">			</span><span class="n">created</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">change</span><span class="p">.</span><span class="na">created</span><span class="p">;</span>
<span class="w">		</span><span class="p">}</span>
<span class="w">		</span><span class="n">changes</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="n">change</span><span class="p">);</span>

<span class="w">		</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">change</span><span class="p">.</span><span class="na">hasFieldChanges</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">FieldChange</span><span class="w"> </span><span class="n">fieldChange</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">change</span><span class="p">.</span><span class="na">fieldChanges</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">fieldChange</span><span class="p">.</span><span class="na">field</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="k">case</span><span class="w"> </span><span class="n">Id</span><span class="p">:</span>
<span class="w">					</span><span class="n">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fieldChange</span><span class="p">.</span><span class="na">value</span><span class="p">.</span><span class="na">toString</span><span class="p">();</span>
<span class="w">					</span><span class="k">break</span><span class="p">;</span>
<span class="w">				</span><span class="k">case</span><span class="w"> </span><span class="n">Type</span><span class="p">:</span>
<span class="w">					</span><span class="n">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">IssueModel</span><span class="p">.</span><span class="na">Type</span><span class="p">.</span><span class="na">fromObject</span><span class="p">(</span><span class="n">fieldChange</span><span class="p">.</span><span class="na">value</span><span class="p">);</span>
<span class="w">					</span><span class="k">break</span><span class="p">;</span>
<span class="w">				</span><span class="k">case</span><span class="w"> </span><span class="n">Status</span><span class="p">:</span>
<span class="w">					</span><span class="n">status</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">IssueModel</span><span class="p">.</span><span class="na">Status</span><span class="p">.</span><span class="na">fromObject</span><span class="p">(</span><span class="n">fieldChange</span><span class="p">.</span><span class="na">value</span><span class="p">);</span>
<span class="w">					</span><span class="k">break</span><span class="p">;</span>
<span class="w">				</span><span class="k">case</span><span class="w"> </span><span class="n">Priority</span><span class="p">:</span>
<span class="w">					</span><span class="n">priority</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">IssueModel</span><span class="p">.</span><span class="na">Priority</span><span class="p">.</span><span class="na">fromObject</span><span class="p">(</span><span class="n">fieldChange</span><span class="p">.</span><span class="na">value</span><span class="p">);</span>
<span class="w">					</span><span class="k">break</span><span class="p">;</span>
<span class="w">				</span><span class="k">case</span><span class="w"> </span><span class="n">Summary</span><span class="p">:</span>
<span class="w">					</span><span class="n">summary</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fieldChange</span><span class="p">.</span><span class="na">value</span><span class="p">.</span><span class="na">toString</span><span class="p">();</span>
<span class="w">					</span><span class="k">break</span><span class="p">;</span>
<span class="w">				</span><span class="k">case</span><span class="w"> </span><span class="n">Description</span><span class="p">:</span>
<span class="w">					</span><span class="n">description</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fieldChange</span><span class="p">.</span><span class="na">value</span><span class="p">.</span><span class="na">toString</span><span class="p">();</span>
<span class="w">					</span><span class="k">break</span><span class="p">;</span>
<span class="w">				</span><span class="k">case</span><span class="w"> </span><span class="n">Reporter</span><span class="p">:</span>
<span class="w">					</span><span class="n">reporter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fieldChange</span><span class="p">.</span><span class="na">value</span><span class="p">.</span><span class="na">toString</span><span class="p">();</span>
<span class="w">					</span><span class="k">break</span><span class="p">;</span>
<span class="w">				</span><span class="k">case</span><span class="w"> </span><span class="n">Owner</span><span class="p">:</span>
<span class="w">					</span><span class="n">owner</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fieldChange</span><span class="p">.</span><span class="na">value</span><span class="p">.</span><span class="na">toString</span><span class="p">();</span>
<span class="w">					</span><span class="k">break</span><span class="p">;</span>
<span class="w">				</span><span class="k">case</span><span class="w"> </span><span class="n">Milestone</span><span class="p">:</span>
<span class="w">					</span><span class="n">milestone</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fieldChange</span><span class="p">.</span><span class="na">value</span><span class="p">.</span><span class="na">toString</span><span class="p">();</span>
<span class="w">					</span><span class="k">break</span><span class="p">;</span>
<span class="w">				</span><span class="p">}</span>
<span class="w">			</span><span class="p">}</span>
<span class="w">		</span><span class="p">}</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="nd">@Override</span>
<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">toString</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="n">StringBuilder</span><span class="w"> </span><span class="n">sb</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">StringBuilder</span><span class="p">();</span>
<span class="w">		</span><span class="n">sb</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="s">&quot;issue &quot;</span><span class="p">);</span>
<span class="w">		</span><span class="n">sb</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="n">id</span><span class="p">.</span><span class="na">substring</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">8</span><span class="p">));</span>
<span class="w">		</span><span class="n">sb</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="s">&quot; (&quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">summary</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">&quot;)\n&quot;</span><span class="p">);</span>
<span class="w">		</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">Change</span><span class="w"> </span><span class="n">change</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">changes</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="n">sb</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="n">change</span><span class="p">);</span>
<span class="w">			</span><span class="n">sb</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="sc">&#39;\n&#39;</span><span class="p">);</span>
<span class="w">		</span><span class="p">}</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="n">sb</span><span class="p">.</span><span class="na">toString</span><span class="p">();</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="nd">@Override</span>
<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">compareTo</span><span class="p">(</span><span class="n">IssueModel</span><span class="w"> </span><span class="n">o</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="n">o</span><span class="p">.</span><span class="na">created</span><span class="p">.</span><span class="na">compareTo</span><span class="p">(</span><span class="n">created</span><span class="p">);</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="nd">@Override</span>
<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">equals</span><span class="p">(</span><span class="n">Object</span><span class="w"> </span><span class="n">o</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">o</span><span class="w"> </span><span class="k">instanceof</span><span class="w"> </span><span class="n">IssueModel</span><span class="p">)</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="n">id</span><span class="p">.</span><span class="na">equals</span><span class="p">(((</span><span class="n">IssueModel</span><span class="p">)</span><span class="w"> </span><span class="n">o</span><span class="p">).</span><span class="na">id</span><span class="p">);</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="kd">super</span><span class="p">.</span><span class="na">equals</span><span class="p">(</span><span class="n">o</span><span class="p">);</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="nd">@Override</span>
<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">hashCode</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="k">return</span><span class="w"> </span><span class="n">id</span><span class="p">.</span><span class="na">hashCode</span><span class="p">();</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Change</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">Serializable</span><span class="p">,</span><span class="w"> </span><span class="n">Comparable</span><span class="o">&lt;</span><span class="n">Change</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span>

<span class="w">		</span><span class="kd">private</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="n">serialVersionUID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1L</span><span class="p">;</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">Date</span><span class="w"> </span><span class="n">created</span><span class="p">;</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">author</span><span class="p">;</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">id</span><span class="p">;</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="n">code</span><span class="p">;</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="n">Comment</span><span class="w"> </span><span class="n">comment</span><span class="p">;</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="n">Set</span><span class="o">&lt;</span><span class="n">FieldChange</span><span class="o">&gt;</span><span class="w"> </span><span class="n">fieldChanges</span><span class="p">;</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="n">Set</span><span class="o">&lt;</span><span class="n">Attachment</span><span class="o">&gt;</span><span class="w"> </span><span class="n">attachments</span><span class="p">;</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="nf">Change</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">author</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">this</span><span class="p">.</span><span class="na">created</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Date</span><span class="p">((</span><span class="n">System</span><span class="p">.</span><span class="na">currentTimeMillis</span><span class="p">()</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">1000</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">1000</span><span class="p">);</span>
<span class="w">			</span><span class="k">this</span><span class="p">.</span><span class="na">author</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">author</span><span class="p">;</span>
<span class="w">			</span><span class="k">this</span><span class="p">.</span><span class="na">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">StringUtils</span><span class="p">.</span><span class="na">getSHA1</span><span class="p">(</span><span class="n">created</span><span class="p">.</span><span class="na">toString</span><span class="p">()</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">author</span><span class="p">);</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">hasComment</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="n">comment</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="kc">null</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="o">!</span><span class="n">comment</span><span class="p">.</span><span class="na">deleted</span><span class="p">;</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">comment</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">text</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="n">comment</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Comment</span><span class="p">(</span><span class="n">text</span><span class="p">);</span>
<span class="w">			</span><span class="n">comment</span><span class="p">.</span><span class="na">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">StringUtils</span><span class="p">.</span><span class="na">getSHA1</span><span class="p">(</span><span class="n">created</span><span class="p">.</span><span class="na">toString</span><span class="p">()</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">author</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">text</span><span class="p">);</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">hasAttachments</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="o">!</span><span class="n">ArrayUtils</span><span class="p">.</span><span class="na">isEmpty</span><span class="p">(</span><span class="n">attachments</span><span class="p">);</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">addAttachment</span><span class="p">(</span><span class="n">Attachment</span><span class="w"> </span><span class="n">attachment</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">attachments</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="kc">null</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="n">attachments</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">LinkedHashSet</span><span class="o">&lt;</span><span class="n">Attachment</span><span class="o">&gt;</span><span class="p">();</span>
<span class="w">			</span><span class="p">}</span>
<span class="w">			</span><span class="n">attachments</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="n">attachment</span><span class="p">);</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="n">Attachment</span><span class="w"> </span><span class="nf">getAttachment</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">name</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">Attachment</span><span class="w"> </span><span class="n">attachment</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">attachments</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">attachment</span><span class="p">.</span><span class="na">name</span><span class="p">.</span><span class="na">equalsIgnoreCase</span><span class="p">(</span><span class="n">name</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w">					</span><span class="k">return</span><span class="w"> </span><span class="n">attachment</span><span class="p">;</span>
<span class="w">				</span><span class="p">}</span>
<span class="w">			</span><span class="p">}</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">hasField</span><span class="p">(</span><span class="n">Field</span><span class="w"> </span><span class="n">field</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="o">!</span><span class="n">StringUtils</span><span class="p">.</span><span class="na">isEmpty</span><span class="p">(</span><span class="n">getString</span><span class="p">(</span><span class="n">field</span><span class="p">));</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">hasFieldChanges</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="o">!</span><span class="n">ArrayUtils</span><span class="p">.</span><span class="na">isEmpty</span><span class="p">(</span><span class="n">fieldChanges</span><span class="p">);</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="n">Object</span><span class="w"> </span><span class="nf">getField</span><span class="p">(</span><span class="n">Field</span><span class="w"> </span><span class="n">field</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">fieldChanges</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="kc">null</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">FieldChange</span><span class="w"> </span><span class="n">fieldChange</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">fieldChanges</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">					</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">fieldChange</span><span class="p">.</span><span class="na">field</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">field</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">						</span><span class="k">return</span><span class="w"> </span><span class="n">fieldChange</span><span class="p">.</span><span class="na">value</span><span class="p">;</span>
<span class="w">					</span><span class="p">}</span>
<span class="w">				</span><span class="p">}</span>
<span class="w">			</span><span class="p">}</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">setField</span><span class="p">(</span><span class="n">Field</span><span class="w"> </span><span class="n">field</span><span class="p">,</span><span class="w"> </span><span class="n">Object</span><span class="w"> </span><span class="n">value</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="n">FieldChange</span><span class="w"> </span><span class="n">fieldChange</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">FieldChange</span><span class="p">(</span><span class="n">field</span><span class="p">,</span><span class="w"> </span><span class="n">value</span><span class="p">);</span>
<span class="w">			</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">fieldChanges</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="kc">null</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="n">fieldChanges</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">LinkedHashSet</span><span class="o">&lt;</span><span class="n">FieldChange</span><span class="o">&gt;</span><span class="p">();</span>
<span class="w">			</span><span class="p">}</span>
<span class="w">			</span><span class="n">fieldChanges</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="n">fieldChange</span><span class="p">);</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">getString</span><span class="p">(</span><span class="n">Field</span><span class="w"> </span><span class="n">field</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="n">Object</span><span class="w"> </span><span class="n">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">getField</span><span class="p">(</span><span class="n">field</span><span class="p">);</span>
<span class="w">			</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">value</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="kc">null</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="k">return</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<span class="w">			</span><span class="p">}</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="n">value</span><span class="p">.</span><span class="na">toString</span><span class="p">();</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="nd">@Override</span>
<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">compareTo</span><span class="p">(</span><span class="n">Change</span><span class="w"> </span><span class="n">c</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="n">created</span><span class="p">.</span><span class="na">compareTo</span><span class="p">(</span><span class="n">c</span><span class="p">.</span><span class="na">created</span><span class="p">);</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="nd">@Override</span>
<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">hashCode</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="n">id</span><span class="p">.</span><span class="na">hashCode</span><span class="p">();</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="nd">@Override</span>
<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">equals</span><span class="p">(</span><span class="n">Object</span><span class="w"> </span><span class="n">o</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">o</span><span class="w"> </span><span class="k">instanceof</span><span class="w"> </span><span class="n">Change</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="k">return</span><span class="w"> </span><span class="n">id</span><span class="p">.</span><span class="na">equals</span><span class="p">(((</span><span class="n">Change</span><span class="p">)</span><span class="w"> </span><span class="n">o</span><span class="p">).</span><span class="na">id</span><span class="p">);</span>
<span class="w">			</span><span class="p">}</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="nd">@Override</span>
<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">toString</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="n">StringBuilder</span><span class="w"> </span><span class="n">sb</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">StringBuilder</span><span class="p">();</span>
<span class="w">			</span><span class="n">sb</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="n">TimeUtils</span><span class="p">.</span><span class="na">timeAgo</span><span class="p">(</span><span class="n">created</span><span class="p">));</span>
<span class="w">			</span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">code</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">case</span><span class="w"> </span><span class="sc">&#39;+&#39;</span><span class="p">:</span>
<span class="w">				</span><span class="n">sb</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="s">&quot; created by &quot;</span><span class="p">);</span>
<span class="w">				</span><span class="k">break</span><span class="p">;</span>
<span class="w">			</span><span class="k">default</span><span class="p">:</span>
<span class="w">				</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">hasComment</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w">					</span><span class="n">sb</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="s">&quot; commented on by &quot;</span><span class="p">);</span>
<span class="w">				</span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
<span class="w">					</span><span class="n">sb</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="s">&quot; changed by &quot;</span><span class="p">);</span>
<span class="w">				</span><span class="p">}</span>
<span class="w">			</span><span class="p">}</span>
<span class="w">			</span><span class="n">sb</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="n">author</span><span class="p">).</span><span class="na">append</span><span class="p">(</span><span class="s">&quot; - &quot;</span><span class="p">);</span>
<span class="w">			</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">hasComment</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">comment</span><span class="p">.</span><span class="na">deleted</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">					</span><span class="n">sb</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="s">&quot;(deleted) &quot;</span><span class="p">);</span>
<span class="w">				</span><span class="p">}</span>
<span class="w">				</span><span class="n">sb</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="n">comment</span><span class="p">.</span><span class="na">text</span><span class="p">).</span><span class="na">append</span><span class="p">(</span><span class="s">&quot; &quot;</span><span class="p">);</span>
<span class="w">			</span><span class="p">}</span>
<span class="w">			</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">hasFieldChanges</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">code</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="k">case</span><span class="w"> </span><span class="sc">&#39;+&#39;</span><span class="p">:</span>
<span class="w">					</span><span class="k">break</span><span class="p">;</span>
<span class="w">				</span><span class="k">default</span><span class="p">:</span>
<span class="w">					</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">FieldChange</span><span class="w"> </span><span class="n">fieldChange</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">fieldChanges</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">						</span><span class="n">sb</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="s">&quot;\n  &quot;</span><span class="p">);</span>
<span class="w">						</span><span class="n">sb</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="n">fieldChange</span><span class="p">);</span>
<span class="w">					</span><span class="p">}</span>
<span class="w">					</span><span class="k">break</span><span class="p">;</span>
<span class="w">				</span><span class="p">}</span>
<span class="w">			</span><span class="p">}</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="n">sb</span><span class="p">.</span><span class="na">toString</span><span class="p">();</span>
<span class="w">		</span><span class="p">}</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Comment</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">Serializable</span><span class="w"> </span><span class="p">{</span>

<span class="w">		</span><span class="kd">private</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="n">serialVersionUID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1L</span><span class="p">;</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">text</span><span class="p">;</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">id</span><span class="p">;</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="n">deleted</span><span class="p">;</span>

<span class="w">		</span><span class="n">Comment</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">text</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">this</span><span class="p">.</span><span class="na">text</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">text</span><span class="p">;</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="nd">@Override</span>
<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">toString</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="n">text</span><span class="p">;</span>
<span class="w">		</span><span class="p">}</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">class</span> <span class="nc">FieldChange</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">Serializable</span><span class="w"> </span><span class="p">{</span>

<span class="w">		</span><span class="kd">private</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="n">serialVersionUID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1L</span><span class="p">;</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">Field</span><span class="w"> </span><span class="n">field</span><span class="p">;</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">Object</span><span class="w"> </span><span class="n">value</span><span class="p">;</span>

<span class="w">		</span><span class="n">FieldChange</span><span class="p">(</span><span class="n">Field</span><span class="w"> </span><span class="n">field</span><span class="p">,</span><span class="w"> </span><span class="n">Object</span><span class="w"> </span><span class="n">value</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">this</span><span class="p">.</span><span class="na">field</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">field</span><span class="p">;</span>
<span class="w">			</span><span class="k">this</span><span class="p">.</span><span class="na">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">value</span><span class="p">;</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="nd">@Override</span>
<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">hashCode</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="n">field</span><span class="p">.</span><span class="na">hashCode</span><span class="p">();</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="nd">@Override</span>
<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">equals</span><span class="p">(</span><span class="n">Object</span><span class="w"> </span><span class="n">o</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">o</span><span class="w"> </span><span class="k">instanceof</span><span class="w"> </span><span class="n">FieldChange</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="k">return</span><span class="w"> </span><span class="n">field</span><span class="p">.</span><span class="na">equals</span><span class="p">(((</span><span class="n">FieldChange</span><span class="p">)</span><span class="w"> </span><span class="n">o</span><span class="p">).</span><span class="na">field</span><span class="p">);</span>
<span class="w">			</span><span class="p">}</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="nd">@Override</span>
<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">toString</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="n">field</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">&quot;: &quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">value</span><span class="p">;</span>
<span class="w">		</span><span class="p">}</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">class</span> <span class="nc">Attachment</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">Serializable</span><span class="w"> </span><span class="p">{</span>

<span class="w">		</span><span class="kd">private</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="n">serialVersionUID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1L</span><span class="p">;</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">name</span><span class="p">;</span>
<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="n">id</span><span class="p">;</span>
<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="n">size</span><span class="p">;</span>
<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">byte</span><span class="o">[]</span><span class="w"> </span><span class="n">content</span><span class="p">;</span>
<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="n">deleted</span><span class="p">;</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="nf">Attachment</span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">name</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">this</span><span class="p">.</span><span class="na">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">name</span><span class="p">;</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="nd">@Override</span>
<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">hashCode</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="n">name</span><span class="p">.</span><span class="na">hashCode</span><span class="p">();</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="nd">@Override</span>
<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">equals</span><span class="p">(</span><span class="n">Object</span><span class="w"> </span><span class="n">o</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">o</span><span class="w"> </span><span class="k">instanceof</span><span class="w"> </span><span class="n">Attachment</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="k">return</span><span class="w"> </span><span class="n">name</span><span class="p">.</span><span class="na">equalsIgnoreCase</span><span class="p">(((</span><span class="n">Attachment</span><span class="p">)</span><span class="w"> </span><span class="n">o</span><span class="p">).</span><span class="na">name</span><span class="p">);</span>
<span class="w">			</span><span class="p">}</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="nd">@Override</span>
<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">toString</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="n">name</span><span class="p">;</span>
<span class="w">		</span><span class="p">}</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">enum</span><span class="w"> </span><span class="n">Field</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="n">Id</span><span class="p">,</span><span class="w"> </span><span class="n">Summary</span><span class="p">,</span><span class="w"> </span><span class="n">Description</span><span class="p">,</span><span class="w"> </span><span class="n">Reporter</span><span class="p">,</span><span class="w"> </span><span class="n">Owner</span><span class="p">,</span><span class="w"> </span><span class="n">Type</span><span class="p">,</span><span class="w"> </span><span class="n">Status</span><span class="p">,</span><span class="w"> </span><span class="n">Priority</span><span class="p">,</span><span class="w"> </span><span class="n">Milestone</span><span class="p">,</span><span class="w"> </span><span class="n">Component</span><span class="p">,</span><span class="w"> </span><span class="n">Labels</span><span class="p">;</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">enum</span><span class="w"> </span><span class="n">Type</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="n">Defect</span><span class="p">,</span><span class="w"> </span><span class="n">Enhancement</span><span class="p">,</span><span class="w"> </span><span class="n">Task</span><span class="p">,</span><span class="w"> </span><span class="n">Review</span><span class="p">,</span><span class="w"> </span><span class="n">Other</span><span class="p">;</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="n">Type</span><span class="w"> </span><span class="nf">fromObject</span><span class="p">(</span><span class="n">Object</span><span class="w"> </span><span class="n">o</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">o</span><span class="w"> </span><span class="k">instanceof</span><span class="w"> </span><span class="n">Type</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="c1">// cast and return</span>
<span class="w">				</span><span class="k">return</span><span class="w"> </span><span class="p">(</span><span class="n">Type</span><span class="p">)</span><span class="w"> </span><span class="n">o</span><span class="p">;</span>
<span class="w">			</span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">o</span><span class="w"> </span><span class="k">instanceof</span><span class="w"> </span><span class="n">String</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="c1">// find by name</span>
<span class="w">				</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">Type</span><span class="w"> </span><span class="n">type</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">values</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w">					</span><span class="n">String</span><span class="w"> </span><span class="n">str</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">o</span><span class="p">.</span><span class="na">toString</span><span class="p">();</span>
<span class="w">					</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">type</span><span class="p">.</span><span class="na">toString</span><span class="p">().</span><span class="na">equalsIgnoreCase</span><span class="p">(</span><span class="n">str</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w">						</span><span class="k">return</span><span class="w"> </span><span class="n">type</span><span class="p">;</span>
<span class="w">					</span><span class="p">}</span>
<span class="w">				</span><span class="p">}</span>
<span class="w">			</span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">o</span><span class="w"> </span><span class="k">instanceof</span><span class="w"> </span><span class="n">Number</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="c1">// by ordinal</span>
<span class="w">				</span><span class="kt">int</span><span class="w"> </span><span class="n">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">((</span><span class="n">Number</span><span class="p">)</span><span class="w"> </span><span class="n">o</span><span class="p">).</span><span class="na">intValue</span><span class="p">();</span>
<span class="w">				</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">id</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">id</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">values</span><span class="p">().</span><span class="na">length</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">					</span><span class="k">return</span><span class="w"> </span><span class="n">values</span><span class="p">()</span><span class="o">[</span><span class="n">id</span><span class="o">]</span><span class="p">;</span>
<span class="w">				</span><span class="p">}</span>
<span class="w">			</span><span class="p">}</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<span class="w">		</span><span class="p">}</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">enum</span><span class="w"> </span><span class="n">Priority</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="n">Low</span><span class="p">,</span><span class="w"> </span><span class="n">Medium</span><span class="p">,</span><span class="w"> </span><span class="n">High</span><span class="p">,</span><span class="w"> </span><span class="n">Critical</span><span class="p">;</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="n">Priority</span><span class="w"> </span><span class="nf">fromObject</span><span class="p">(</span><span class="n">Object</span><span class="w"> </span><span class="n">o</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">o</span><span class="w"> </span><span class="k">instanceof</span><span class="w"> </span><span class="n">Priority</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="c1">// cast and return</span>
<span class="w">				</span><span class="k">return</span><span class="w"> </span><span class="p">(</span><span class="n">Priority</span><span class="p">)</span><span class="w"> </span><span class="n">o</span><span class="p">;</span>
<span class="w">			</span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">o</span><span class="w"> </span><span class="k">instanceof</span><span class="w"> </span><span class="n">String</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="c1">// find by name</span>
<span class="w">				</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">Priority</span><span class="w"> </span><span class="n">priority</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">values</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w">					</span><span class="n">String</span><span class="w"> </span><span class="n">str</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">o</span><span class="p">.</span><span class="na">toString</span><span class="p">();</span>
<span class="w">					</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">priority</span><span class="p">.</span><span class="na">toString</span><span class="p">().</span><span class="na">equalsIgnoreCase</span><span class="p">(</span><span class="n">str</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w">						</span><span class="k">return</span><span class="w"> </span><span class="n">priority</span><span class="p">;</span>
<span class="w">					</span><span class="p">}</span>
<span class="w">				</span><span class="p">}</span>
<span class="w">			</span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">o</span><span class="w"> </span><span class="k">instanceof</span><span class="w"> </span><span class="n">Number</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="c1">// by ordinal</span>
<span class="w">				</span><span class="kt">int</span><span class="w"> </span><span class="n">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">((</span><span class="n">Number</span><span class="p">)</span><span class="w"> </span><span class="n">o</span><span class="p">).</span><span class="na">intValue</span><span class="p">();</span>
<span class="w">				</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">id</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">id</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">values</span><span class="p">().</span><span class="na">length</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">					</span><span class="k">return</span><span class="w"> </span><span class="n">values</span><span class="p">()</span><span class="o">[</span><span class="n">id</span><span class="o">]</span><span class="p">;</span>
<span class="w">				</span><span class="p">}</span>
<span class="w">			</span><span class="p">}</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<span class="w">		</span><span class="p">}</span>
<span class="w">	</span><span class="p">}</span>

<span class="w">	</span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kd">enum</span><span class="w"> </span><span class="n">Status</span><span class="w"> </span><span class="p">{</span>
<span class="w">		</span><span class="n">New</span><span class="p">,</span><span class="w"> </span><span class="n">Accepted</span><span class="p">,</span><span class="w"> </span><span class="n">Started</span><span class="p">,</span><span class="w"> </span><span class="n">Review</span><span class="p">,</span><span class="w"> </span><span class="n">Queued</span><span class="p">,</span><span class="w"> </span><span class="n">Testing</span><span class="p">,</span><span class="w"> </span><span class="n">Done</span><span class="p">,</span><span class="w"> </span><span class="n">Fixed</span><span class="p">,</span><span class="w"> </span><span class="n">WontFix</span><span class="p">,</span><span class="w"> </span><span class="n">Duplicate</span><span class="p">,</span><span class="w"> </span><span class="n">Invalid</span><span class="p">;</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="n">Status</span><span class="w"> </span><span class="nf">fromObject</span><span class="p">(</span><span class="n">Object</span><span class="w"> </span><span class="n">o</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">o</span><span class="w"> </span><span class="k">instanceof</span><span class="w"> </span><span class="n">Status</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="c1">// cast and return</span>
<span class="w">				</span><span class="k">return</span><span class="w"> </span><span class="p">(</span><span class="n">Status</span><span class="p">)</span><span class="w"> </span><span class="n">o</span><span class="p">;</span>
<span class="w">			</span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">o</span><span class="w"> </span><span class="k">instanceof</span><span class="w"> </span><span class="n">String</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="c1">// find by name</span>
<span class="w">				</span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">Status</span><span class="w"> </span><span class="n">status</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">values</span><span class="p">())</span><span class="w"> </span><span class="p">{</span>
<span class="w">					</span><span class="n">String</span><span class="w"> </span><span class="n">str</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">o</span><span class="p">.</span><span class="na">toString</span><span class="p">();</span>
<span class="w">					</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">status</span><span class="p">.</span><span class="na">toString</span><span class="p">().</span><span class="na">equalsIgnoreCase</span><span class="p">(</span><span class="n">str</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w">						</span><span class="k">return</span><span class="w"> </span><span class="n">status</span><span class="p">;</span>
<span class="w">					</span><span class="p">}</span>
<span class="w">				</span><span class="p">}</span>
<span class="w">			</span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">o</span><span class="w"> </span><span class="k">instanceof</span><span class="w"> </span><span class="n">Number</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">				</span><span class="c1">// by ordinal</span>
<span class="w">				</span><span class="kt">int</span><span class="w"> </span><span class="n">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">((</span><span class="n">Number</span><span class="p">)</span><span class="w"> </span><span class="n">o</span><span class="p">).</span><span class="na">intValue</span><span class="p">();</span>
<span class="w">				</span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">id</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">id</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">values</span><span class="p">().</span><span class="na">length</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">					</span><span class="k">return</span><span class="w"> </span><span class="n">values</span><span class="p">()</span><span class="o">[</span><span class="n">id</span><span class="o">]</span><span class="p">;</span>
<span class="w">				</span><span class="p">}</span>
<span class="w">			</span><span class="p">}</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">atLeast</span><span class="p">(</span><span class="n">Status</span><span class="w"> </span><span class="n">status</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="n">ordinal</span><span class="p">()</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">status</span><span class="p">.</span><span class="na">ordinal</span><span class="p">();</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">exceeds</span><span class="p">(</span><span class="n">Status</span><span class="w"> </span><span class="n">status</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="n">ordinal</span><span class="p">()</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">status</span><span class="p">.</span><span class="na">ordinal</span><span class="p">();</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="kt">boolean</span><span class="w"> </span><span class="nf">isClosed</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="n">ordinal</span><span class="p">()</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">Done</span><span class="p">.</span><span class="na">ordinal</span><span class="p">();</span>
<span class="w">		</span><span class="p">}</span>

<span class="w">		</span><span class="kd">public</span><span class="w"> </span><span class="n">Status</span><span class="w"> </span><span class="nf">next</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w">			</span><span class="k">case</span><span class="w"> </span><span class="n">New</span><span class="p">:</span>
<span class="w">				</span><span class="k">return</span><span class="w"> </span><span class="n">Started</span><span class="p">;</span>
<span class="w">			</span><span class="k">case</span><span class="w"> </span><span class="n">Accepted</span><span class="p">:</span>
<span class="w">				</span><span class="k">return</span><span class="w"> </span><span class="n">Started</span><span class="p">;</span>
<span class="w">			</span><span class="k">case</span><span class="w"> </span><span class="n">Started</span><span class="p">:</span>
<span class="w">				</span><span class="k">return</span><span class="w"> </span><span class="n">Testing</span><span class="p">;</span>
<span class="w">			</span><span class="k">case</span><span class="w"> </span><span class="n">Review</span><span class="p">:</span>
<span class="w">				</span><span class="k">return</span><span class="w"> </span><span class="n">Testing</span><span class="p">;</span>
<span class="w">			</span><span class="k">case</span><span class="w"> </span><span class="n">Queued</span><span class="p">:</span>
<span class="w">				</span><span class="k">return</span><span class="w"> </span><span class="n">Testing</span><span class="p">;</span>
<span class="w">			</span><span class="k">case</span><span class="w"> </span><span class="n">Testing</span><span class="p">:</span>
<span class="w">				</span><span class="k">return</span><span class="w"> </span><span class="n">Done</span><span class="p">;</span>
<span class="w">			</span><span class="p">}</span>
<span class="w">			</span><span class="k">return</span><span class="w"> </span><span class="n">Accepted</span><span class="p">;</span>
<span class="w">		</span><span class="p">}</span>
<span class="w">	</span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
</code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.3</a> (<a href='https://git-scm.com/'>git 2.39.1</a>) at 2025-08-12 14:19:03 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
