tag:blogger.com,1999:blog-32189801232762564662024-02-20T07:22:49.315-08:00Strongermy scattered Development noteshoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.comBlogger27125tag:blogger.com,1999:blog-3218980123276256466.post-7708182247817195532015-10-23T06:28:00.000-07:002015-10-23T06:29:09.665-07:00Inject the value of an Static VariableAssuming you have a class like this:
<script src="https://gist.github.com/nicmon/578fce30c8316b95616d.js"></script>
Add these lines to your spring context file to inject the value of "staticTestValue"
<script src="https://gist.github.com/nicmon/6a34360804be2c3f2488.js"></script>hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-4766887322562087962014-12-10T04:08:00.000-08:002014-12-10T04:10:11.970-08:00Responsive Design: Include @media queries as mixins using LESSI have to includ the @media queries as a seperate file and sections before.<br />
That was very circumstantial and took a long time to find and redefine each elemnt to display properly on Mobile Devices.<br />
<br />
Since LESS has included the support of mixins, it is very comfortable to define such queries.<br />
<br />
All you need is:<br />
<br />
<ol>
<li>Define your preferred Breakpoints as Variables </li>
<li>Include the queries inside the main element </li>
</ol>
Sample:<br />
<br />
<br />
Step 1: Define your preferred Breakpoints as Variables<br />
<script src="https://gist.github.com/anonymous/32cc634033bb2f821eb3.js"></script>
<br />
<br />
Step 2: Include the queries inside the main element<br />
<script src="https://gist.github.com/anonymous/fdf82b56abbefb56d540.js"></script>
<br />
<br />hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-36315246498620433252014-01-08T03:57:00.004-08:002014-01-08T03:58:08.580-08:00nice HTML HR (horizontal rule) with CSShere is a sample of creating a horizontal rule with only CSS commands without using an Image. The point here is to define a DIV element with same settings as HR and rotate and put it over the HR<span style="font-family: Arial, sans-serif; font-size: x-small;">.</span><br />
<span style="font-family: Arial, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Arial, sans-serif; font-size: x-small;"><br /></span>
your page with look like here:
<style>
div.container {
width: 60%;
margin: 30px auto;
font-family: Verdana, Geneva, Tahoma, sans-serif;
font-size: 12px;
background-color: #888;
padding: 10px;
}
hr.style1 {
border: none;
border-top: 2px dashed #fff;
height: 2px;
width: 80%;
}
hr.style2 {
border: none;
border-top: 2px dashed #fff;
height: 2px;
margin: 30px auto;
width: 80%;
}
hr.style2:after {
content: "\00a0";
left: 50%;
position: absolute;
display: block;
width: 30px;
height: 30px;
background-color: #888;
margin-top: -16px;
pointer-events: none;
-webkit-transform: rotate(135deg);
-moz-transform: rotate(135deg);
-ms-transform: rotate(135deg);
-o-transform: rotate(135deg);
transform: rotate(135deg);
z-index: 1;
border: none;
border-top: 2px dashed #fff;
border-right: 2px dashed #fff;
}
</style>
<br />
<div class="container">
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
<br />
<hr class="style1" />
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
<br />
<hr class="style2" />
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
</div>
and here is the code:
<script src="https://gist.github.com/hoomb/8315792.js"></script>
hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-52356874513612876772013-06-26T01:44:00.000-07:002014-12-10T04:10:25.018-08:00Schedule a Method to run laterIf you do not want to run a method in the normal application process flow, you can use ScheduledExecutorService to run it later. This sample code executes the "myFunction" 5 Seconds later.<br />
<br />
<script src="https://gist.github.com/hoomb/5865813.js"></script>hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-77360555082869884952012-12-04T05:48:00.001-08:002014-12-10T04:10:32.599-08:00JAXB : IllegalAnnotationExceptions - Class has two properties of the same namejust developing a test jaxb application and wanted to let getters and setters be created automatically with <a href="http://projectlombok.org/" target="_blank">Lombok</a>.<br />
As I was attempting to assign annotations of private field members, got this exception:<br />
<br />
<br />
<span style="color: red; font-family: Courier New, Courier, monospace;">Exception in thread "main" com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions</span><br />
<span style="color: red; font-family: Courier New, Courier, monospace;">Class has two properties of the same name "name"</span><br />
<span style="color: red; font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>this problem is related to the following location:</span><br />
<span style="color: red; font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at public java.lang.String de.domain.jaxbtest.model.Book.getName()</span><br />
<span style="color: red; font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at de.domain.jaxbtest.model.Book</span><br />
<span style="color: red; font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at private java.util.List de.domain.jaxbtest.model.Bookstore.bookList</span><br />
<span style="color: red; font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>at de.domain.jaxbtest.model.Bookstore</span><br />
<div>
<br /></div>
<div>
the solution was easy as just adding <span style="font-family: Courier New, Courier, monospace;">@XmlAccessorType(XmlAccessType.FIELD)</span> to defined class:</div>
<div>
<br /></div>
<div>
<div>
<script src="https://gist.github.com/4215908.js?file=Book.java"></script>
</div>
</div>hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-61354481379577658522012-11-27T05:55:00.002-08:002014-12-10T04:09:47.526-08:00Wait for an AJAX call to complete with Selenium 2 WebDriver<style>pre {overflow: visible; border: none;}</style>
<br />
<script src="https://gist.github.com/4215919.js?file=gistfile1.java"></script>
<br />
here is a sample to use this method:
<br />
<br />
<script src="https://gist.github.com/4215923.js?file=SeleniumTest.java"></script>
hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-35062264346567073712012-11-23T00:35:00.000-08:002014-12-10T04:10:45.661-08:00JSF - Show content only if Messages is empty<span style="color: #38761d;"><h:panelgroup</span> <span style="color: purple;">rendered</span>=<i><span style="color: blue;">"#{facesContext.validationFailed or empty facesContext.messageList}"</span></i>>
<br />
<br />
<br />
<br />
.
.
.
<br />
<br />
<span style="color: #38761d;"></h:panelgroup></span>hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-84746961630773867602012-11-15T13:53:00.001-08:002014-12-10T04:09:30.754-08:00Import a UTF-8 SQL file into MySQL Serverimporting a SQLFile into MySQL works only if the .sql file itself is encoded with default (ISO-????) character set. But if you have file with UTF-8 encoding, it won't work. Saving the file in UTF-8 encoding will not work as well, since mysql doesn't know which encoding is enabled and interprets it as default encoding.
Using this command will tell to MySQL to use UTF-8 encoding while importing the Data:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">>> mysql -h host -u username -ppassword --default_character_set=utf8 database < myfile.sql
</span>hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-82130460533166197762012-05-29T09:29:00.000-07:002014-12-10T04:09:14.085-08:00Pretty animated Share buttons using JQuery and CSSI made this component very quickly today (< 10min) and it looks amazing noneless.
<br />
<br />
<b>Step 1: save these lines as index.html</b>
<br />
<br />
<!-- HTML generated using hilite.me --><div style="background: #ffffff; overflow:auto;width:auto;color:black;background:white;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"><pre style="margin: 0; line-height: 125%"><span style="color: #507090"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"></span>
<span style="color: #007000"><html></span>
<span style="color: #007000"><head></span>
<span style="color: #007000"><link</span> <span style="color: #0000C0">rel=</span><span style="background-color: #fff0f0">"stylesheet"</span> <span style="color: #0000C0">type=</span><span style="background-color: #fff0f0">"text/css"</span> <span style="color: #0000C0">href=</span><span style="background-color: #fff0f0">"css/style.css"</span> <span style="color: #0000C0">media=</span><span style="background-color: #fff0f0">"screen"</span> <span style="color: #007000">/></span>
<span style="color: #007000"><script </span><span style="color: #0000C0">type=</span><span style="background-color: #fff0f0">"text/javascript"</span> <span style="color: #0000C0">src=</span><span style="background-color: #fff0f0">"http://code.jquery.com/jquery-1.7.2.min.js"</span><span style="color: #007000">></script></span>
<span style="color: #007000"></head></span>
<span style="color: #007000"><body></span>
<span style="color: #007000"><ul</span> <span style="color: #0000C0">style=</span><span style="background-color: #fff0f0">"margin: 100px"</span><span style="color: #007000">></span>
<span style="color: #007000"><li</span> <span style="color: #0000C0">style=</span><span style="background-color: #fff0f0">"font-weight: bold; text-shadow: #c0c0c0 3px 3px 5px; margin-bottom: 10px; color: #000;"</span><span style="color: #007000">></span>
<span style="color: #007000"><span></span>Share this page<span style="color: #007000"></span><br</span> <span style="color: #007000">/></span>
<span style="color: #007000"></li></span>
<span style="color: #007000"><li></span>
<span style="color: #007000"><div</span> <span style="color: #0000C0">class=</span><span style="background-color: #fff0f0">"shareIconsContainer"</span><span style="color: #007000">></span>
<span style="color: #007000"><div></span>
<span style="color: #007000"><span</span> <span style="color: #0000C0">class=</span><span style="background-color: #fff0f0">"shareIcons emailShare"</span><span style="color: #007000">></span></span>
<span style="color: #007000"><span</span> <span style="color: #0000C0">class=</span><span style="background-color: #fff0f0">"shadow"</span> <span style="color: #007000">/></span>
<span style="color: #007000"></div></span>
<span style="color: #007000"><div></span>
<span style="color: #007000"><span</span> <span style="color: #0000C0">class=</span><span style="background-color: #fff0f0">"shareIcons facebookShare"</span><span style="color: #007000">></span></span>
<span style="color: #007000"><span</span> <span style="color: #0000C0">class=</span><span style="background-color: #fff0f0">"shadow"</span> <span style="color: #007000">/></span>
<span style="color: #007000"></div></span>
<span style="color: #007000"><div></span>
<span style="color: #007000"><span</span> <span style="color: #0000C0">class=</span><span style="background-color: #fff0f0">"shareIcons twitterShare"</span><span style="color: #007000">></span></span>
<span style="color: #007000"><span</span> <span style="color: #0000C0">class=</span><span style="background-color: #fff0f0">"shadow"</span> <span style="color: #007000">/></span>
<span style="color: #007000"></div></span>
<span style="color: #007000"><div></span>
<span style="color: #007000"><span</span> <span style="color: #0000C0">class=</span><span style="background-color: #fff0f0">"shareIcons googleplusShare"</span><span style="color: #007000">></span></span>
<span style="color: #007000"><span</span> <span style="color: #0000C0">class=</span><span style="background-color: #fff0f0">"shadow"</span> <span style="color: #007000">/></span>
<span style="color: #007000"></div></span>
<span style="color: #007000"></div></span>
<span style="color: #007000"></li></span>
<span style="color: #007000"></ul></span>
<span style="color: #007000"><script </span><span style="color: #0000C0">type=</span><span style="background-color: #fff0f0">"text/javascript"</span><span style="color: #007000">></span>
$(<span style="background-color: #fff0f0">'span.shareIcons'</span>).on({
mouseenter<span style="color: #303030">:</span> <span style="color: #008000; font-weight: bold">function</span>(){
$(<span style="color: #008000; font-weight: bold">this</span>).stop(<span style="color: #008000; font-weight: bold">false</span>, <span style="color: #008000; font-weight: bold">true</span>).animate({
<span style="background-color: #fff0f0">'height'</span> <span style="color: #303030">:</span> <span style="background-color: #fff0f0">'32px'</span>,
<span style="background-color: #fff0f0">'marginTop'</span> <span style="color: #303030">:</span> <span style="background-color: #fff0f0">'0px'</span>
}, <span style="color: #0000D0; font-weight: bold">150</span>);
},
mouseleave<span style="color: #303030">:</span> <span style="color: #008000; font-weight: bold">function</span>(){
$(<span style="color: #008000; font-weight: bold">this</span>).stop(<span style="color: #008000; font-weight: bold">false</span>, <span style="color: #008000; font-weight: bold">true</span>).animate({
<span style="background-color: #fff0f0">'height'</span> <span style="color: #303030">:</span> <span style="background-color: #fff0f0">'12px'</span>,
<span style="background-color: #fff0f0">'marginTop'</span> <span style="color: #303030">:</span> <span style="background-color: #fff0f0">'20px'</span>
}, <span style="color: #0000D0; font-weight: bold">150</span>);
}
});
<span style="color: #007000"></script></span>
<span style="color: #007000"></body></span>
<span style="color: #007000"></html></span>
</pre></div>
<br />
<br />
<b>Step 2: create a folder and name it "css", save these lines as style.css in it</b>
<br />
<br />
<div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;">
<pre style="line-height: 125%; margin: 0;"><span style="color: #007000;">body</span><span style="color: #303030;">,</span> <span style="color: #007000;">ul</span><span style="color: #303030;">,</span> <span style="color: #007000;">li</span><span style="color: #303030;">,</span> <span style="color: #007000;">h1</span><span style="color: #303030;">,</span> <span style="color: #007000;">h2</span><span style="color: #303030;">,</span> <span style="color: #007000;">h3</span>{
<span style="color: green; font-weight: bold;">margin</span><span style="color: #303030;">:</span><span style="color: #6000e0; font-weight: bold;">0</span>;
<span style="color: green; font-weight: bold;">padding</span><span style="color: #303030;">:</span><span style="color: #6000e0; font-weight: bold;">0</span>;
}
<span style="color: #007000;">body</span>{
<span style="color: green; font-weight: bold;">font-family</span><span style="color: #303030;">:</span>Arial<span style="color: #303030;">,</span> Helvetica<span style="color: #303030;">,</span> <span style="color: green; font-weight: bold;">sans-serif</span>;
<span style="color: green; font-weight: bold;">font-size</span><span style="color: #303030;">:</span><span style="color: #6000e0; font-weight: bold;">11px</span>;
<span style="color: green; font-weight: bold;">color</span><span style="color: #303030;">:</span><span style="color: #6000e0; font-weight: bold;">#fff</span>;
<span style="color: green; font-weight: bold;">overflow-x</span><span style="color: #303030;">:</span><span style="color: green; font-weight: bold;">hidden</span>;
}
<span style="color: #007000;">span</span><span style="color: #b00060; font-weight: bold;">.helpIcons</span> {
<span style="color: green; font-weight: bold;">width</span><span style="color: #303030;">:</span> <span style="color: #6000e0; font-weight: bold;">200px</span>;
<span style="color: green; font-weight: bold;">height</span><span style="color: #303030;">:</span> <span style="color: #6000e0; font-weight: bold;">32px</span>;
<span style="color: green; font-weight: bold;">display</span><span style="color: #303030;">:</span> <span style="color: green; font-weight: bold;">block</span>;
<span style="color: green; font-weight: bold;">float</span><span style="color: #303030;">:</span> <span style="color: green; font-weight: bold;">left</span>;
<span style="color: green; font-weight: bold;">margin-bottom</span><span style="color: #303030;">:</span> <span style="color: #6000e0; font-weight: bold;">10px</span>;
}
<span style="color: #007000;">span</span><span style="color: #b00060; font-weight: bold;">.helpIcons</span> <span style="color: #007000;">a</span> {
<span style="color: green; font-weight: bold;">margin-left</span><span style="color: #303030;">:</span> <span style="color: #6000e0; font-weight: bold;">36px</span>;
<span style="color: green; font-weight: bold;">margin-top</span><span style="color: #303030;">:</span> <span style="color: #6000e0; font-weight: bold;">32px</span>;
<span style="color: #303030;">-</span>moz<span style="color: #303030;">-</span>transition<span style="color: #303030;">:</span> all <span style="color: #6000e0; font-weight: bold;">0.5s</span> ease <span style="color: #6000e0; font-weight: bold;">0s</span>;
<span style="color: green; font-weight: bold;">opacity</span><span style="color: #303030;">:</span> <span style="color: #6000e0; font-weight: bold;">0</span><span style="color: #303030;">.</span><span style="color: #6000e0; font-weight: bold;">50</span>;
<span style="color: green; font-weight: bold;">text-decoration</span><span style="color: #303030;">:</span> <span style="color: green; font-weight: bold;">none</span>;
<span style="color: green; font-weight: bold;">font-size</span><span style="color: #303030;">:</span> <span style="color: #6000e0; font-weight: bold;">0.9em</span>;
<span style="color: green; font-weight: bold;">line-height</span><span style="color: #303030;">:</span> <span style="color: #6000e0; font-weight: bold;">4em</span>;
}
<span style="color: #007000;">span</span><span style="color: #b00060; font-weight: bold;">.helpIcons</span> <span style="color: #007000;">a</span><span style="color: #505050; font-weight: bold;">:hover</span> {
<span style="color: green; font-weight: bold;">opacity</span><span style="color: #303030;">:</span> <span style="color: #6000e0; font-weight: bold;">1</span>;
}
<span style="color: #007000;">div</span><span style="color: #b00060; font-weight: bold;">.shareIconsContainer</span> {
<span style="color: green; font-weight: bold;">width</span><span style="color: #303030;">:</span> <span style="color: #6000e0; font-weight: bold;">200px</span>;
<span style="color: green; font-weight: bold;">height</span><span style="color: #303030;">:</span> <span style="color: #6000e0; font-weight: bold;">32px</span>;
<span style="color: green; font-weight: bold;">display</span><span style="color: #303030;">:</span> <span style="color: green; font-weight: bold;">block</span>;
}
<span style="color: #007000;">span</span><span style="color: #b00060; font-weight: bold;">.shareIcons</span> {
<span style="color: green; font-weight: bold;">width</span><span style="color: #303030;">:</span> <span style="color: #6000e0; font-weight: bold;">32px</span>;
<span style="color: green; font-weight: bold;">height</span><span style="color: #303030;">:</span> <span style="color: #6000e0; font-weight: bold;">12px</span>;
<span style="color: green; font-weight: bold;">display</span><span style="color: #303030;">:</span> <span style="color: green; font-weight: bold;">block</span>;
<span style="color: green; font-weight: bold;">float</span><span style="color: #303030;">:</span> <span style="color: green; font-weight: bold;">left</span>;
<span style="color: green; font-weight: bold;">margin-right</span><span style="color: #303030;">:</span> <span style="color: #6000e0; font-weight: bold;">10px</span>;
<span style="color: green; font-weight: bold;">margin-top</span><span style="color: #303030;">:</span> <span style="color: #6000e0; font-weight: bold;">20px</span>;
<span style="color: green; font-weight: bold;">cursor</span><span style="color: #303030;">:</span> <span style="color: green; font-weight: bold;">pointer</span>;
}
<span style="color: #007000;">span</span><span style="color: #b00060; font-weight: bold;">.shadow</span> {
<span style="color: green; font-weight: bold;">width</span><span style="color: #303030;">:</span> <span style="color: #6000e0; font-weight: bold;">42px</span>;
<span style="color: green; font-weight: bold;">height</span><span style="color: #303030;">:</span> <span style="color: #6000e0; font-weight: bold;">12px</span>;
<span style="color: green; font-weight: bold;">display</span><span style="color: #303030;">:</span> <span style="color: green; font-weight: bold;">block</span>;
<span style="color: green; font-weight: bold;">float</span><span style="color: #303030;">:</span> <span style="color: green; font-weight: bold;">left</span>;
<span style="color: green; font-weight: bold;">margin-left</span><span style="color: #303030;">:</span> <span style="color: #6000e0; font-weight: bold;">-47px</span>;
<span style="color: green; font-weight: bold;">margin-top</span><span style="color: #303030;">:</span> <span style="color: #6000e0; font-weight: bold;">27px</span>;
<span style="color: green; font-weight: bold;">background</span><span style="color: #303030;">:</span> <span style="background-color: #fff0f0; color: #d02000;">url("../images/shadow.png")</span> <span style="color: green; font-weight: bold;">no-repeat</span> <span style="color: green; font-weight: bold;">scroll</span> <span style="color: #6000e0; font-weight: bold;">0px</span> <span style="color: #6000e0; font-weight: bold;">0px</span> <span style="color: green; font-weight: bold;">transparent</span>;
}
<span style="color: #b00060; font-weight: bold;">.alertShare</span> {
<span style="color: green; font-weight: bold;">background</span><span style="color: #303030;">:</span> <span style="background-color: #fff0f0; color: #d02000;">url("../images/share_top.png")</span> <span style="color: green; font-weight: bold;">no-repeat</span> <span style="color: green; font-weight: bold;">scroll</span> <span style="color: #6000e0; font-weight: bold;">0px</span> <span style="color: #6000e0; font-weight: bold;">-160px</span> <span style="color: green; font-weight: bold;">transparent</span>;
}
<span style="color: #b00060; font-weight: bold;">.printShare</span> {
<span style="color: green; font-weight: bold;">background</span><span style="color: #303030;">:</span> <span style="background-color: #fff0f0; color: #d02000;">url("../images/share_top.png")</span> <span style="color: green; font-weight: bold;">no-repeat</span> <span style="color: green; font-weight: bold;">scroll</span> <span style="color: #6000e0; font-weight: bold;">0px</span> <span style="color: #6000e0; font-weight: bold;">-96px</span> <span style="color: green; font-weight: bold;">transparent</span>;
}
<span style="color: #b00060; font-weight: bold;">.emailShare</span> {
<span style="color: green; font-weight: bold;">background</span><span style="color: #303030;">:</span> <span style="background-color: #fff0f0; color: #d02000;">url("../images/share_top.png")</span> <span style="color: green; font-weight: bold;">no-repeat</span> <span style="color: green; font-weight: bold;">scroll</span> <span style="color: #6000e0; font-weight: bold;">0px</span> <span style="color: #6000e0; font-weight: bold;">-0px</span> <span style="color: green; font-weight: bold;">transparent</span>;
}
<span style="color: #b00060; font-weight: bold;">.facebookShare</span> {
<span style="color: green; font-weight: bold;">background</span><span style="color: #303030;">:</span> <span style="background-color: #fff0f0; color: #d02000;">url("../images/share_top.png")</span> <span style="color: green; font-weight: bold;">no-repeat</span> <span style="color: green; font-weight: bold;">scroll</span> <span style="color: #6000e0; font-weight: bold;">0px</span> <span style="color: #6000e0; font-weight: bold;">-32px</span> <span style="color: green; font-weight: bold;">transparent</span>;
}
<span style="color: #b00060; font-weight: bold;">.twitterShare</span> {
<span style="color: green; font-weight: bold;">background</span><span style="color: #303030;">:</span> <span style="background-color: #fff0f0; color: #d02000;">url("../images/share_top.png")</span> <span style="color: green; font-weight: bold;">no-repeat</span> <span style="color: green; font-weight: bold;">scroll</span> <span style="color: #6000e0; font-weight: bold;">0px</span> <span style="color: #6000e0; font-weight: bold;">-128px</span> <span style="color: green; font-weight: bold;">transparent</span>;
}
<span style="color: #b00060; font-weight: bold;">.googleplusShare</span> {
<span style="color: green; font-weight: bold;">background</span><span style="color: #303030;">:</span> <span style="background-color: #fff0f0; color: #d02000;">url("../images/share_top.png")</span> <span style="color: green; font-weight: bold;">no-repeat</span> <span style="color: green; font-weight: bold;">scroll</span> <span style="color: #6000e0; font-weight: bold;">0px</span> <span style="color: #6000e0; font-weight: bold;">-64px</span> <span style="color: green; font-weight: bold;">transparent</span>;
}
</pre>
</div>
<br />
<br />
<b>Step 3: Use these 2 Images as Shadow and Icons (Right-Click -> Save as):</b>
<br />
<br />
<b>Sprite:</b>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQkgOjDg8L6cTDebEHPIcxWsjZyXweF6dW-Mhj6vz4luHLwzQteNgFA049p3RQ-FxUb9B8lyWpkU87shvTiA-oRQxGdNNgMRCd0xHaFw6hmRfAbOj8VrQyKMf7fPRMv3jFU_d6uxjBYwU/s1600/share_top.png" imageanchor="1"><img border="0" height="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQkgOjDg8L6cTDebEHPIcxWsjZyXweF6dW-Mhj6vz4luHLwzQteNgFA049p3RQ-FxUb9B8lyWpkU87shvTiA-oRQxGdNNgMRCd0xHaFw6hmRfAbOj8VrQyKMf7fPRMv3jFU_d6uxjBYwU/s320/share_top.png" width="32" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<b>Shadow:</b>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK5S1a-GUsQVurjpRXFmgvlcmDxYkwzTcvt0xQuiKr4r82ZYaTbxQ-cvJc-j6xqkY12a9pHNkL4ICvaCBgoWLkDc8D7LeCqQI-2RgTG62mHZnlPrbG5DQEAvSVyuKRVPBDPAuhbaeIaLI/s1600/shadow.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK5S1a-GUsQVurjpRXFmgvlcmDxYkwzTcvt0xQuiKr4r82ZYaTbxQ-cvJc-j6xqkY12a9pHNkL4ICvaCBgoWLkDc8D7LeCqQI-2RgTG62mHZnlPrbG5DQEAvSVyuKRVPBDPAuhbaeIaLI/s1600/shadow.png" /></a></div>
<br />
<br />
<br />
<b>Preview:</b>
<br />
<br />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<style>
span.helpIcons {
width: 200px;
height: 32px;
display: block;
float: left;
margin-bottom: 10px;
}
span.helpIcons a {
margin-left: 36px;
margin-top: 32px;
-moz-transition: all 0.5s ease 0s;
opacity: 0.50;
text-decoration: none;
font-size: 0.9em;
line-height: 4em;
}
span.helpIcons a:hover {
opacity: 1;
}
div.shareIconsContainer {
width: 200px;
height: 32px;
display: block;
}
span.shareIcons {
width: 32px;
height: 12px;
display: block;
float: left;
margin-right: 10px;
margin-top: 20px;
cursor: pointer;
}
span.shadow {
width: 42px;
height: 12px;
display: block;
float: left;
margin-left: -47px;
margin-top: 27px;
background: url("https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK5S1a-GUsQVurjpRXFmgvlcmDxYkwzTcvt0xQuiKr4r82ZYaTbxQ-cvJc-j6xqkY12a9pHNkL4ICvaCBgoWLkDc8D7LeCqQI-2RgTG62mHZnlPrbG5DQEAvSVyuKRVPBDPAuhbaeIaLI/s1600/shadow.png") no-repeat scroll 0px 0px transparent;
}
.alertShare {
background: url("https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQkgOjDg8L6cTDebEHPIcxWsjZyXweF6dW-Mhj6vz4luHLwzQteNgFA049p3RQ-FxUb9B8lyWpkU87shvTiA-oRQxGdNNgMRCd0xHaFw6hmRfAbOj8VrQyKMf7fPRMv3jFU_d6uxjBYwU/s1600/share_top.png") no-repeat scroll 0px -160px transparent;
}
.printShare {
background: url("https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQkgOjDg8L6cTDebEHPIcxWsjZyXweF6dW-Mhj6vz4luHLwzQteNgFA049p3RQ-FxUb9B8lyWpkU87shvTiA-oRQxGdNNgMRCd0xHaFw6hmRfAbOj8VrQyKMf7fPRMv3jFU_d6uxjBYwU/s1600/share_top.png") no-repeat scroll 0px -96px transparent;
}
.emailShare {
background: url("https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQkgOjDg8L6cTDebEHPIcxWsjZyXweF6dW-Mhj6vz4luHLwzQteNgFA049p3RQ-FxUb9B8lyWpkU87shvTiA-oRQxGdNNgMRCd0xHaFw6hmRfAbOj8VrQyKMf7fPRMv3jFU_d6uxjBYwU/s1600/share_top.png") no-repeat scroll 0px -0px transparent;
}
.facebookShare {
background: url("https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQkgOjDg8L6cTDebEHPIcxWsjZyXweF6dW-Mhj6vz4luHLwzQteNgFA049p3RQ-FxUb9B8lyWpkU87shvTiA-oRQxGdNNgMRCd0xHaFw6hmRfAbOj8VrQyKMf7fPRMv3jFU_d6uxjBYwU/s1600/share_top.png") no-repeat scroll 0px -32px transparent;
}
.twitterShare {
background: url("https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQkgOjDg8L6cTDebEHPIcxWsjZyXweF6dW-Mhj6vz4luHLwzQteNgFA049p3RQ-FxUb9B8lyWpkU87shvTiA-oRQxGdNNgMRCd0xHaFw6hmRfAbOj8VrQyKMf7fPRMv3jFU_d6uxjBYwU/s1600/share_top.png") no-repeat scroll 0px -128px transparent;
}
.googleplusShare {
background: url("https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQkgOjDg8L6cTDebEHPIcxWsjZyXweF6dW-Mhj6vz4luHLwzQteNgFA049p3RQ-FxUb9B8lyWpkU87shvTiA-oRQxGdNNgMRCd0xHaFw6hmRfAbOj8VrQyKMf7fPRMv3jFU_d6uxjBYwU/s1600/share_top.png") no-repeat scroll 0px -64px transparent;
}
</style>
<ul style="margin: 100px; list-style-type: none">
<li style="font-weight: bold; text-shadow: #c0c0c0 3px 3px 5px; margin-bottom: 10px; color: #000;">
<span>Share this page</span><br />
</li>
<li>
<div class="shareIconsContainer">
<div>
<span class="shareIcons emailShare"></span>
<span class="shadow"></span>
</div>
<div>
<span class="shareIcons facebookShare"></span>
<span class="shadow"></span>
</div>
<div>
<span class="shareIcons twitterShare"></span>
<span class="shadow"></span>
</div>
<div>
<span class="shareIcons googleplusShare"></span>
<span class="shadow"></span>
</div>
</div>
</li>
</ul>
<script type="text/javascript">
$('span.shareIcons').on({
mouseenter: function(){
$(this).stop(false, true).animate({
'height' : '32px',
'marginTop' : '0px'
}, 150);
},
mouseleave: function(){
$(this).stop(false, true).animate({
'height' : '12px',
'marginTop' : '20px'
}, 150);
}
});
</script>hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-82993806807156499432011-09-14T02:30:00.000-07:002011-09-14T02:30:59.679-07:00Desolder an SMDI've added 2 new Videos to show how simple desoldering an SMD from a XBox360 Motherboard is. Course you can use this method on every Board.<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/iwgSSAlNJdo?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<p> </p>
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/3ZTOkKDQ3Y0?feature=player_embedded' frameborder='0'></iframe></div>
hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-11150786492167663072011-07-22T06:30:00.000-07:002011-07-22T06:31:15.500-07:00Run a code on exitSometimes you would like to run a code at close point of your application. The implementing is very easy and is just by adding a ShutdownHook to your application.<br />
<br />
hier is the example:<br />
<br />
<div align="left" class="java"><table border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff"> <tr>
<!-- start source code -->
<td nowrap="nowrap" valign="top" align="left"><br />
<code><br />
<font color="#7f0055"><b>public class </b></font><font color="#000000">RunAtEnd </font><font color="#000000">{</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public static </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">main</font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">String</font><font color="#000000">[] </font><font color="#000000">args</font><font color="#000000">) {</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#000000">System.out.println</font><font color="#000000">(</font><font color="#2a00ff">"Starting the program"</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#000000">Runtime.getRuntime</font><font color="#000000">()</font><font color="#000000">.addShutdownHook</font><font color="#000000">(</font><font color="#7f0055"><b>new </b></font><font color="#000000">Thread</font><font color="#000000">(</font><font color="#7f0055"><b>new </b></font><font color="#000000">Runnable</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#646464">@Override</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">run</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#000000">System.out.println</font><font color="#000000">(</font><font color="#2a00ff">"You've closed your program"</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#000000">}))</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><br />
<font color="#ffffff"> </font><font color="#000000">System.out.print</font><font color="#000000">(</font><font color="#2a00ff">"Waiting 5 seconds "</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#7f0055"><b>int </b></font><font color="#000000">i = </font><font color="#990000">0</font><font color="#000000">; i < </font><font color="#990000">5</font><font color="#000000">; i ++</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#000000">System.out.print</font><font color="#000000">(</font><font color="#2a00ff">"."</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>try </b></font><font color="#000000">{</font><br />
<font color="#ffffff"> </font><font color="#000000">Thread.sleep</font><font color="#000000">(</font><font color="#990000">1000</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>catch </b></font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">InterruptedException e</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#000000">e.printStackTrace</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#000000">System.out.println</font><font color="#000000">(</font><font color="#2a00ff">""</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#000000">}</font></code><br />
<br />
</td>
<!-- end source code -->
</tr>
</table></div>hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-9998616435873104042011-05-16T03:24:00.000-07:002011-07-22T06:31:30.590-07:00Reballing Profile ToolI used a normal Stop Watch to do reflowing/reballing and found it very hard to use, So I decided to write a little tool with C# to manage the Reballing and Reflowing profiles.<br />
this tool, has a section to define your profiles which you can freely select them from main window.<br />
after selecting a Profile and clicking on Start button, a timer will start and shows the specifications defined for that Step. <br />
It will automatically jump to next step if you didn't select the "Pause" in your profile definition.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://www.abload.de/img/reballingprofileq7ew.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="264" src="http://www.abload.de/img/reballingprofileq7ew.jpg" width="640" /></a></div><br />
<a href="http://www.multiupload.com/CNYN5SHUT6">Download It Here</a><br />
<br />
<b>Change History:</b><br />
<br />
1.0 first Public version<br />
<br />
<br />
<form name="versionChecker"><input id="inpVersionChecker" type="hidden" value="1.1.0.0" /></form>hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-64008175584009041702011-04-08T06:44:00.000-07:002011-07-22T06:31:35.711-07:00Java HTTP ProxyI've found this very useful and smart, although you cannot use it in a StressTest with many connections.<br />
<br />
<a href="http://www.nsftools.com/tips/JavaTips.htm#javaproxy">Link to Main Source</a><br />
<br />
This is a multi-threaded HTTP proxy server implementation in Java. Ideally you'll just run it on your local workstation so you can watch HTTP requests going back and forth (because of the way the threading works in this code, I wouldn't recommend running it as a proxy server that serves multiple clients -- see the comments in the code for more detail).<br />
<br />
You can either point this proxy to a direct network/Internet connection, or you can point it to another proxy server (if that's how you're set up). Even though the jProxy class has a 'main' method that allows you to run it all by itself, I also tried to structure the methods in the class so you can easily call it from other classes. I didn't spend the time to javadoc any of the comments, but the code should be commented well enough that you can understand what's going on by reading through it. <br />
<br />
<a href="http://www.nsftools.com/tips/jProxy.java">jProxy.java</a>hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com1tag:blogger.com,1999:blog-3218980123276256466.post-56018395643214985082011-02-24T08:11:00.000-08:002011-02-24T08:12:15.720-08:00Maven Quick Reference CardI use normally the Content Assist in M2Eclipse Plugin to enter the maven commands, but if you use your own xml editor, a new Maven Quick Reference Card directly from Apache makes the life much easier. it contains the most basic items.<br />
<br />
<a href="http://maven.apache.org/guides/MavenQuickReferenceCard.pdf">http://maven.apache.org/guides/MavenQuickReferenceCard.pdf</a><br />
<br />
hope you enjoy using it.hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-11849044304277070292011-02-16T07:14:00.000-08:002012-12-07T06:38:53.305-08:00Convert JUnit3 Tests modules to JUnit4I needed to convert many test files to JUnit4, after a while, I considered that is a really painful task to do it manually. So I wrote a little program to automate the process.<br />
I tested this application on a huge number of files wrote by various Persons and having various formats, therefore I hope that I works on every possible JUnit module.<br />
Please send me a short comment if you found a case, that I didn't included in it.<br />
<br />
you can call the application by entering this command on Command Line:<br />
<br />
<div align="left"><table border="0" cellpadding="5" cellspacing="0" class="javascript"><tbody>
<tr> <td align="left"><br />
java -jar JUnit4Converter.jar -f <your JUnit3 Java file><br />
</td> </tr>
</tbody></table></div><br />
this will printout the converted file to Console, if you wanted to do an Inplace Conversion, add "-i" to commands.<br />
<br />
<div align="left"><table border="0" cellpadding="5" cellspacing="0" class="javascript"><tbody>
<tr> <td align="left"><br />
java -jar JUnit4Converter.jar -i -f <your JUnit3 Java file><br />
</td> </tr>
</tbody></table></div><br />
You can access the application on <a href="https://github.com/hoomb/JUnit4Converter">Github</a>hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-72272456241639033002011-02-14T02:29:00.000-08:002011-02-14T02:29:25.973-08:00Read multiple files from Resource JAR or Diskfollowing to my further Post about loading one file from a JAR file or Disk, here is a method which loads directly multiple files. it will decide base of given URL, if it must load those files from Disk or a Resource JAR file.<br />
In my sample, I wanted to be more detailed and load just XML files.<br />
<br />
<div align="left" class="java"><table border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff"> <tr>
<!-- start source code -->
<td nowrap="nowrap" valign="top" align="left"><br />
<code><br />
<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* Loads multiple xml files from Disk or Resource JAR file.</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">*</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@param </font><font color="#3f5fbf">clazz current class</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@param </font><font color="#3f5fbf">path package path of resources</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@return </font><font color="#3f5fbf">the resource listing</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@throws </font><font color="#3f5fbf">URISyntaxException the URI syntax exception</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@throws </font><font color="#3f5fbf">IOException Signals that an I/O exception has occurred.</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br />
<font color="#ffffff"> </font><font color="#000000">List<InputStream> loadMultipleResources</font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">Class<?> clazz, </font><font color="#7f0055"><b>final </b></font><font color="#000000">String path</font><font color="#000000">) </font><font color="#7f0055"><b>throws </b></font><font color="#000000">URISyntaxException, IOException </font><font color="#000000">{</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">List<InputStream> listOfFiles = </font><font color="#7f0055"><b>new </b></font><font color="#000000">ArrayList<InputStream></font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f7f5f">// it is a normal directory, so just find and list files with XML extension</font><br />
<font color="#ffffff"> </font><font color="#000000">URL directoryUrl = clazz.getClassLoader</font><font color="#000000">()</font><font color="#000000">.getResource</font><font color="#000000">(</font><font color="#000000">path</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">directoryUrl != </font><font color="#7f0055"><b>null </b></font><font color="#000000">&& directoryUrl.getProtocol</font><font color="#000000">()</font><font color="#000000">.equals</font><font color="#000000">(</font><font color="#2a00ff">"file"</font><font color="#000000">)) {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">File</font><font color="#000000">[] </font><font color="#000000">files = </font><font color="#7f0055"><b>new </b></font><font color="#000000">File</font><font color="#000000">(</font><font color="#000000">directoryUrl.toURI</font><font color="#000000">())</font><font color="#000000">.listFiles</font><font color="#000000">(</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>new </b></font><font color="#000000">FilenameFilter</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#646464">@Override</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#7f0055"><b>boolean </b></font><font color="#000000">accept</font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">File dir, </font><font color="#7f0055"><b>final </b></font><font color="#000000">String name</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">name.endsWith</font><font color="#000000">(</font><font color="#2a00ff">".xml"</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#000000">})</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">File f : files</font><font color="#000000">)</font><br />
<font color="#ffffff"> </font><font color="#000000">listOfFiles.add</font><font color="#000000">(</font><font color="#7f0055"><b>new </b></font><font color="#000000">FileInputStream</font><font color="#000000">(</font><font color="#000000">f</font><font color="#000000">))</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">listOfFiles;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">directoryUrl == </font><font color="#7f0055"><b>null</b></font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">String packageName = clazz.getPackage</font><font color="#000000">()</font><font color="#000000">.getName</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">directoryUrl = clazz.getResource</font><font color="#000000">(</font><font color="#000000">packageName</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f7f5f">// the given path is a JAR file, so extract all XML Files from classpath and return their content as stream</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">directoryUrl.getProtocol</font><font color="#000000">()</font><font color="#000000">.equals</font><font color="#000000">(</font><font color="#2a00ff">"jar"</font><font color="#000000">)) {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">String jarPath = directoryUrl.getPath</font><font color="#000000">()</font><font color="#000000">.substring</font><font color="#000000">(</font><font color="#990000">5</font><font color="#000000">, directoryUrl.getPath</font><font color="#000000">()</font><font color="#000000">.indexOf</font><font color="#000000">(</font><font color="#2a00ff">"!"</font><font color="#000000">))</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">JarFile jar = </font><font color="#7f0055"><b>new </b></font><font color="#000000">JarFile</font><font color="#000000">(</font><font color="#000000">URLDecoder.decode</font><font color="#000000">(</font><font color="#000000">jarPath, </font><font color="#2a00ff">"UTF-8"</font><font color="#000000">))</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">Enumeration<JarEntry> entries = jar.entries</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>while </b></font><font color="#000000">(</font><font color="#000000">entries.hasMoreElements</font><font color="#000000">()) {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">String name = entries.nextElement</font><font color="#000000">()</font><font color="#000000">.getName</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">name.startsWith</font><font color="#000000">(</font><font color="#000000">path</font><font color="#000000">) </font><font color="#000000">&& name.endsWith</font><font color="#000000">(</font><font color="#2a00ff">".xml"</font><font color="#000000">)) { </font><font color="#3f7f5f">// filter according to the path</font><br />
<font color="#ffffff"> </font><font color="#000000">String entry = name.substring</font><font color="#000000">(</font><font color="#000000">path.length</font><font color="#000000">())</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#7f0055"><b>int </b></font><font color="#000000">checkSubdir = entry.indexOf</font><font color="#000000">(</font><font color="#2a00ff">"/"</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">checkSubdir >= </font><font color="#990000">0</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#000000">entry = entry.substring</font><font color="#000000">(</font><font color="#990000">0</font><font color="#000000">, checkSubdir</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">InputStream inputStream = clazz.getClassLoader</font><font color="#000000">()</font><font color="#000000">.getResourceAsStream</font><font color="#000000">(</font><font color="#000000">name</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><br />
<font color="#ffffff"> </font><font color="#000000">listOfFiles.add</font><font color="#000000">(</font><font color="#000000">inputStream</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">listOfFiles;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>throw new </b></font><font color="#000000">UnsupportedOperationException</font><font color="#000000">(</font><font color="#2a00ff">"Cannot list files for URL " </font><font color="#000000">+ directoryUrl</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font></code><br />
<br />
</td>
<!-- end source code -->
</tr>
</table></div>hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-35349939302398276192011-01-12T06:01:00.000-08:002011-01-12T06:01:43.165-08:00Printing the Objects which has no toString method using Reflectiononce you want to use toString method in your classes, you will quickly see that all Object without defined toString method, will just showed by their memory address.<br />
Although you can walk through your classes and add a proper toString method to each of them, you will be stopped once you use a thirdparty or generated object.<br />
I will show you here how you can simply printout your object none less. this method uses Reflection to iterate through attributes of a class and prints out its value.<br />
I found later, using <a href="http://commons.apache.org/lang/api-2.4/org/apache/commons/lang/builder/ReflectionToStringBuilder.html">ReflectionToStringBuilder</a> is more comfortable to write my own.<br />
so here is the solution:<br />
<br />
first write a class which extends <a href="http://commons.apache.org/lang/api-2.4/org/apache/commons/lang/builder/ToStringStyle.html">ToStringStyle</a> to customize appearance of fields (e.g. use Tabs, how to printout Array and so on)<br />
<br />
<div align="left" class="java"><table border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff"> <tr>
<!-- start source code -->
<td nowrap="nowrap" valign="top" align="left"><br />
<code><br />
<font color="#7f0055"><b>public class </b></font><font color="#000000">PrintObjectStyle </font><font color="#7f0055"><b>extends </b></font><font color="#000000">ToStringStyle </font><font color="#000000">{</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>private final static </b></font><font color="#000000">ToStringStyle instance = </font><font color="#7f0055"><b>new </b></font><font color="#000000">PrintObjectStyle</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">PrintObjectStyle</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#000000">setArrayContentDetail</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">setUseShortClassName</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">setUseClassName</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">setUseIdentityHashCode</font><font color="#000000">(</font><font color="#7f0055"><b>false</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">setArrayStart</font><font color="#000000">(</font><font color="#2a00ff">"\n\t{"</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">setArrayEnd</font><font color="#000000">(</font><font color="#2a00ff">"\n\t}"</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">setArraySeparator</font><font color="#000000">(</font><font color="#2a00ff">"\n\t"</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">setFieldSeparator</font><font color="#000000">(</font><font color="#2a00ff">", " </font><font color="#000000">+ SystemUtils.LINE_SEPARATOR + </font><font color="#2a00ff">" "</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public static </b></font><font color="#000000">ToStringStyle getInstance</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">instance;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#646464">@Override</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">appendDetail</font><font color="#000000">(</font><font color="#000000">StringBuffer buffer, String fieldName, Object value</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">!value.getClass</font><font color="#000000">()</font><font color="#000000">.getName</font><font color="#000000">()</font><font color="#000000">.startsWith</font><font color="#000000">(</font><font color="#2a00ff">"java"</font><font color="#000000">)) {</font><br />
<font color="#ffffff"> </font><font color="#000000">buffer.append</font><font color="#000000">(</font><font color="#000000">ReflectionToStringBuilder.toString</font><font color="#000000">(</font><font color="#000000">value, instance</font><font color="#000000">))</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>else </b></font><font color="#000000">{</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>super</b></font><font color="#000000">.appendDetail</font><font color="#000000">(</font><font color="#000000">buffer, fieldName, value</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#646464">@Override</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">appendDetail</font><font color="#000000">(</font><font color="#000000">StringBuffer buffer, String fieldName, Collection value</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#000000">appendDetail</font><font color="#000000">(</font><font color="#000000">buffer, fieldName, value.toArray</font><font color="#000000">())</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#000000">}</font></code><br />
<br />
</td>
<!-- end source code -->
</tr>
</table></div><br />
now you can call this line everywhere that you want to printout an Object.<br />
<br />
<div align="left" class="java"><table border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff"> <tr>
<!-- start source code -->
<td nowrap="nowrap" valign="top" align="left"><br />
<code><br />
<font color="#000000">System.out.println</font><font color="#000000">(</font><font color="#000000">ReflectionToStringBuilder.toString</font><font color="#000000">(</font><font color="#000000">myObject, PrintObjectStyle.getInstance</font><font color="#000000">()))</font><font color="#000000">;</font></code><br />
<br />
</td>
<!-- end source code -->
</tr>
</table></div>hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-53157823076362389222011-01-06T05:02:00.000-08:002011-01-12T05:46:01.762-08:00Desoldering a XBox 360 CapacitorIf you want to reflow your XBox360 using a Hotair Gun, you have to protect all capacitors, otherwise they will blow out and must be renewed:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs4mGJhqw0Zkja6BBYcxHNW-uosd5MoKDPpiMBv-YhnXuw4RaQBgEFjkG1JC7OJmUvoxBCfrGVmaEBJbDm17qLPlYKimCfmGYkmtxYEQVzE1RB90VtYL5ErSpIztz4xwilfdMnhN67QIs/s1600/badcapsepox21ct.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="141" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs4mGJhqw0Zkja6BBYcxHNW-uosd5MoKDPpiMBv-YhnXuw4RaQBgEFjkG1JC7OJmUvoxBCfrGVmaEBJbDm17qLPlYKimCfmGYkmtxYEQVzE1RB90VtYL5ErSpIztz4xwilfdMnhN67QIs/s320/badcapsepox21ct.jpg" width="320" /></a></div><br />
I show you in this film how easy you can desolder them.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/UJVs8y6jcBw?feature=player_embedded' frameborder='0'></iframe></div>hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-10586941600575574312010-12-29T01:27:00.000-08:002012-12-07T06:41:11.981-08:00Parsing and Standardizing an Address using GeoGoogle APIGoogle provides an API to address standardization. It standardizes addresses by utilizing google's geocoding service.<br />
GeoGoogle is a client API to google's geocoding service, if you are looking for a offline solution (which has no usage limit), take a look at <a href="http://jgeocoder.sourceforge.net/">http://jgeocoder.sourceforge.net</a><br />
<br />
To use geocoding web service, you need sign-up for your own API key at <a class="externalLink" href="http://www.google.com/apis/maps/signup.html">http://www.google.com/apis/maps/signup.html</a><br />
<br />
more information on <a href="http://geo-google.sourceforge.net/usage.html">http://geo-google.sourceforge.net/usage.html</a><br />
<br />
here is a sample:<br />
<br />
<div align="left" class="java">
<table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr> <td align="left" nowrap="nowrap" valign="top"><script src="https://gist.github.com/4233665.js?file=GeoGoogleTest.java"></script></td></tr>
</tbody></table>
<span style="color: #7f0055; font-family: monospace;"><span style="white-space: nowrap;"><b><br /></b></span></span></div>
hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-9256133245443370512010-12-24T02:20:00.000-08:002010-12-24T02:26:30.622-08:00Read a Text File from Resource JAR or Disk (Override resources with a custom file)this sample shows how to implement a read text file in Java, the Program will first try to load file from resource jar (classes in path) and if it could not find it, then load it from given path on disk.<br />
this is very useful if you want to implement a solution to override a resource with a customized one.<br />
<br />
here is the program:<br />
<br />
<div align="left" class="java"><table border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff"> <tr>
<!-- start source code -->
<td nowrap="nowrap" valign="top" align="left"><br />
<code><br />
<font color="#7f0055"><b>public class </b></font><font color="#000000">LoadFile </font><font color="#000000">{</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">doLoadFile</font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">String fileName</font><font color="#000000">) </font><font color="#7f0055"><b>throws </b></font><font color="#000000">IOException </font><font color="#000000">{</font><br />
<font color="#ffffff"> </font><font color="#000000">InputStream inputStream;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f7f5f">//try to load file from disk</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>try </b></font><font color="#000000">{</font><br />
<font color="#ffffff"> </font><font color="#000000">inputStream = </font><font color="#7f0055"><b>new </b></font><font color="#000000">FileInputStream</font><font color="#000000">(</font><font color="#000000">fileName</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>catch </b></font><font color="#000000">(</font><font color="#000000">FileNotFoundException fe</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#3f7f5f">//failed, so try to load it from resources in class path</font><br />
<font color="#ffffff"> </font><font color="#000000">inputStream = LoadFile.</font><font color="#7f0055"><b>class</b></font><font color="#000000">.getClassLoader</font><font color="#000000">()</font><font color="#000000">.getResourceAsStream</font><font color="#000000">(</font><font color="#000000">fileName</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">inputStream == </font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>throw new </b></font><font color="#000000">FileNotFoundException</font><font color="#000000">(</font><font color="#2a00ff">"could not find file: " </font><font color="#000000">+ fileName</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f7f5f">// Get the object of InputStreamReader</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">InputStreamReader inputStreamReader = </font><font color="#7f0055"><b>new </b></font><font color="#000000">InputStreamReader</font><font color="#000000">(</font><font color="#000000">inputStream</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">BufferedReader bufferReader = </font><font color="#7f0055"><b>new </b></font><font color="#000000">BufferedReader</font><font color="#000000">(</font><font color="#000000">inputStreamReader</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#000000">String strLine;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>while </b></font><font color="#000000">((</font><font color="#000000">strLine = bufferReader.readLine</font><font color="#000000">()) </font><font color="#000000">!= </font><font color="#7f0055"><b>null</b></font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#3f7f5f">// Print the content on the console</font><br />
<font color="#ffffff"> </font><font color="#000000">System.out.println</font><font color="#000000">(</font><font color="#000000">strLine</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f7f5f">// Close the input stream</font><br />
<font color="#ffffff"> </font><font color="#000000">inputStreamReader.close</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#000000">}</font></code><br />
<br />
</td>
<!-- end source code -->
</tr>
</table></div>hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com1tag:blogger.com,1999:blog-3218980123276256466.post-15932643328858453532010-12-15T08:59:00.000-08:002010-12-30T02:48:16.341-08:00Very simple Form submitting using AJAXI wrote this module very long time ago, but I find it very simple and useful for people that want to build ajax applications quickly in their application, so I decided to publish it.<br />
<br />
this module will be used mainly to post the content of a form and receive the response from server. it recognizes the fields and parses the server response automatically.<br />
<br />
all you need is to include the javascript code to your page:<br />
<br />
<div align="left"><table border="0" cellpadding="5" cellspacing="0" class="javascript"><tr>
<td align="left"><br />
<script language="javascript" src="js/ajaxClass.js"></script><br /><br />
</td>
</tr>
</table></div><br />
and call the function at the end of your page:<br />
<br />
<div align="left"><table border="0" cellpadding="5" cellspacing="0" class="javascript"><tbody>
<tr> <td align="left"><br />
function submitForm() {<br />
ajaxObject.submitForm('myForm', 'spanResponseContainer', 'ajax-loader.gif');<br />
}</td> </tr>
</tbody></table></div><br />
<b>myForm</b>: your Form's id or name<br />
<b>spanResponseContainer</b>: an Span as container for server response<br />
<b>ajax-loader.gif</b>: the path to an image to show while waiting for server response, see <a href="http://hoomb.blogspot.com/2009/12/create-easily-your-own-ajax-loader-icon.html">this post</a> if you don't know, where to get such an image.<br />
<br />
here is the whole sample:<br />
<br />
<div align="left"><table border="0" cellpadding="5" cellspacing="0" class="javascript"><tbody>
<tr> <td align="left"><br />
<html><br />
<br />
<head><br />
<title>.:: Simple Ajax Test ::.</title><br />
<script language="javascript" src="js/ajaxClass.js"></script><br />
</head><br />
<br />
<br />
<body><br />
<br />
<form action="/myserver/sayHello.jsp" name="myForm" method="post" onsubmit="submitForm(); return false;"><br />
<table><br />
<tr><br />
<td>Enter your name:</td><br />
<td align="left"><br />
<input type="text" name="textName" size="20" value="" /><br />
</td><br />
</tr><br />
</table><br />
<br />
<input type="submit" value="send"><br />
</form><br />
<br /><br />
<br /><br />
<span id="spanResponseContainer"></span><br />
<br />
<script language="JavaScript"><br />
function submitForm() {<br />
ajaxObject.submitForm('myForm', 'spanResponseContainer', 'ajax-loader.gif');<br />
}<br />
</script><br />
<br />
</body><br />
</html><br />
<br />
</td> </tr>
</tbody></table></div><br />
you can download the script from <a href="http://www.4shared.com/document/uBNwj6KB/ajaxClass.html">here</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div>hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-46243056587394416142010-12-06T04:01:00.000-08:002010-12-06T08:02:04.159-08:00Optimized search for enum lookup valuesif you are mirroring Database Lookup tables in Enums in your code, you must also have a mechanism to search for those values effectively.<br />
the first idea would be iterating the values and find the desired Enum value, but as you see below, you can optimize your code if you use a BidiMap to keep Enums and their lookup values.<br />
<b>Note</b> that it is still recommended to iterate members instead of using this method, if you have less than 5 elements in your Enum.<br />
to have a better time measurement, I used an Enum of Country names and their ISO2 Code.<br />
the first Enum uses Iteration to find our requested ISO2 Code:<br />
<br />
<div class="java"><table border="0" cellpadding="0" cellspacing="0" bgcolor="#ffffff"><tr> <!-- start source code --> <td nowrap="nowrap" valign="top" align="left"><br />
<code><br />
<font color="#7f0055"><b>public enum </b></font><font color="#000000">CountryEnum </font><font color="#000000">{</font><br />
</code><br />
<br />
<div style="margin: 5px 20px 10px;"><div style="margin-bottom: 2px;"><b>Click to expand:</b> <input type="button"
onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Hide'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Show'; }" style="font-family: Tahoma; width: 45px; font-size: 10px; margin: 0px; padding: 0px;" value="Show"></div><div style="margin: 0px; padding: 6px; border: 1px inset;"><div style="display: none;"><br />
<code><br />
<font color="#ffffff"> </font><font color="#000000">EGYPT</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">EQUATORIAL_GUINEA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ETHIOPIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">AFGHANISTAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ALBANIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ALGERIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ANGOLA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ANTIGUA_AND_BARBUDA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ARGENTINA</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">AUSTRALIA</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BAHAMAS</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BAHRAIN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BANGLADESH</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BARBADOS</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BELGIUM</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BELIZE</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BENIN</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BERMUDA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BHUTAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MYANMAR</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BOLIVIA</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BOTSWANA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BRAZIL</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BRUNEI_DARUSSALAM</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BULGARIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BURKINA_FASO</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BURUNDI</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CHILE</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CHINA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TAIWAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">COSTA_RICA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">DENMARK</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GERMANY</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">DOMINICA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">DOMINICAN_REPUBLIC</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">DJIBOUTI</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ECUADOR</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">COTE_D_IVOIRE</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">EL_SALVADOR</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">FALKLAND_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">FIJI</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">FINLAND</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">FRANCE</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GABON</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GAMBIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GHANA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GIBRALTAR</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GRENADA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GREECE</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GREAT_BRITAIN</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GUATEMALA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GUINEA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GUINEA_BISSAU</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GUYANA</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">HAITI</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">HONDURAS</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">INDIA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">INDONESIA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">IRAQ</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">IRAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">IRELAND</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ICELAND</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ISRAEL</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ITALY</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">JAMAICA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">JAPAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">YEMEN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TIMOR_LESTE</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">JORDAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CAYMAN_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CAMEROON</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CAMBODIA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CANADA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CAPE_VERDE</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">QATAR</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">KENYA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">COLOMBIA</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">COMOROS</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CONGO</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NORTH_KOREA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SOUTH_KOREA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CUBA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">KUWAIT</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">LAOS</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">LESOTHO</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">LEBANON</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">LIBERIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">LYBIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">LUXEMBOURG</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MACAO</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MADAGASCAR</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MALAWI</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MALAYSIA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MALDIVES</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MALI</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MALTA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MOROCCO</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MAURITANIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MAURITIUS</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MEXICO</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MONGOLIA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MOZAMBIQUE</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NEPAL</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NEW_CALEDONIA</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NEW_ZEALAND</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NICARAGUA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NETHERLANDS_ANTILLES</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NETHERLANDS</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NIGER</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NIGERIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NORWAY</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">AUSTRIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">OMAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PAKISTAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PANAMA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PAPUA_NEW_GUINEA</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PARAGUAY</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PERU</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PHILIPPINES</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">POLAND</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PORTUGAL</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">RWANDA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ROMANIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SOLOMON_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ZAMBIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SAMOA</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SAO_TOME_AND_PRINCIPE</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SAUDI_ARABIA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SWEDEN</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SWITZERLAND</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SENEGAL</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SEYCHELLES</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SIERRA_LEONE</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ZIMBABWE</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SINGAPORE</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SOMALIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MICRONESIA</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SPAIN</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SRI_LANKA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SAINT_KITTS_AND_NEVIS</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SAINT_LUCIA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SAINT_VINCENT_AND_THE_GRENADINES</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SUDAN</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SOUTH_AFRICA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SURINAME</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SWAZILAND</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SYRIAN_ARAB_REPUBLIC</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TANZANIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">THAILAND</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TOGO</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TONGA</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TRINIDAD_AND_TOBAGO</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CHAD</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CZECH_REPUBLIC</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TURKEY</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TUNISIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">UGANDA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">HUNGARY</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">URUGUAY</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">FAROE_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">VENEZUELA</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">UNITED_ARAB_EMIRATES</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">USA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">VIETNAM</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CENTRAL_AFRICAN_REPUBLIC</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CYPRUS</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">FRENCH_POLYNESIA</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SAN_MARINO</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">VATICAN</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">LIECHTENSTEIN</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MARTINIQUE</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GUADELOUPE</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ANDORRA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MONACO</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PUERTO_RICO</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">UNITED_STATES_VIRGIN_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">COOK_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">VANUATU</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NORTHERN_MARIANA_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">REUNION</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">FRENCH_GUIANA</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NAMIBIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">UKRAINE</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SLOVENIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CROATIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SLOVAKIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ESTONIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">RUSSIAN_FEDERATION</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">LATVIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">UZBEKISTAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ARMENIA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">AZERBAIJAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BELARUS</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BOSNIA_AND_HERZEGOVINA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ERITREA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GEORGIA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">KAZAKHSTAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">KYRGYZ_REPUBLIC</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">KIRIBATI</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">LITHUANIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MARSHALL_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MACEDONIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MOLDOVA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NAURU</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PALAU</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TAJIKISTAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TURKMENISTAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TUVALU</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ANGUILLA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MONTSERRAT</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ARUBA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TURKS_AND_CAICOS_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BRITISH_VIRGIN_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GREENLAND</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ALAND_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">AMERICAN_SAMOA</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">WESTERN_SAHARA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GUAM</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MONTENEGRO</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MAYOTTE</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NORFOLK_ISLAND</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NIUE</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PITCAIRN_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PALESTINIAN_TERRITORY</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SAINT_HELENA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SVALBARD_AND_JAN_MAYEN_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SAINT_PIERRE_AND_MIQUELON</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SERBIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TOKELAU</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">WALLIS_AND_FUTUNA</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ANTARCTICA</font><font color="#000000">(</font><font color="#2a00ff">"AN"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">COCOS_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">DEMOCRATIC_REPUBLIC_CONGO</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CHRISTMAS_ISLAND</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SOUTH_GEORGIA_AND_THE_SOUTH_SANDWICH_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"AN"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">FRENCH_SOUTHERN_TERRITORIES</font><font color="#000000">(</font><font color="#2a00ff">"AN"</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<br />
</code><br />
</div></div></div><br />
<code><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>private final </b></font><font color="#000000">String lookupValue;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">CountryEnum</font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">String idValue</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#000000">lookupValue = idValue;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">String getCountryValue</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">lookupValue;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public static </b></font><font color="#000000">CountryEnum getCountry</font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">String country</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">CountryEnum countryEnum : CountryEnum.values</font><font color="#000000">())</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">countryEnum.getCountryValue</font><font color="#000000">()</font><font color="#000000">.equalsIgnoreCase</font><font color="#000000">(</font><font color="#000000">country</font><font color="#000000">))</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">countryEnum;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>return null</b></font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#000000">}</font></code><br />
<br />
</td> <!-- end source code --> </tr>
</table></div><br />
here is the optimized Version which uses BidiMap to hold Enums and their lookup values:<br />
<br />
<div class="java"><table border="0" cellpadding="0" cellspacing="0" bgcolor="#ffffff"><tr> <!-- start source code --> <td nowrap="nowrap" valign="top" align="left"><br />
<code><br />
<font color="#7f0055"><b>public enum </b></font><font color="#000000">Country </font><font color="#000000">{</font><br />
</code><br />
<br />
<div style="margin: 5px 20px 10px;"><div style="margin-bottom: 2px;"><b>Click to expand:</b><br />
<input type="button"
onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Hide'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Show'; }" style="font-family: Tahoma; width: 45px; font-size: 10px; margin: 0px; padding: 0px;" value="Show"></div><div style="margin: 0px; padding: 6px; border: 1px inset;"><div style="display: none;"><br />
<code><br />
<font color="#ffffff"> </font><font color="#000000">EGYPT</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">EQUATORIAL_GUINEA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ETHIOPIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">AFGHANISTAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ALBANIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ALGERIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ANGOLA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ANTIGUA_AND_BARBUDA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ARGENTINA</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">AUSTRALIA</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BAHAMAS</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BAHRAIN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BANGLADESH</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BARBADOS</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BELGIUM</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BELIZE</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BENIN</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BERMUDA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BHUTAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MYANMAR</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BOLIVIA</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BOTSWANA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BRAZIL</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BRUNEI_DARUSSALAM</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BULGARIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BURKINA_FASO</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BURUNDI</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CHILE</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CHINA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TAIWAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">COSTA_RICA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">DENMARK</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GERMANY</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">DOMINICA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">DOMINICAN_REPUBLIC</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">DJIBOUTI</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ECUADOR</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">COTE_D_IVOIRE</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">EL_SALVADOR</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">FALKLAND_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">FIJI</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">FINLAND</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">FRANCE</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GABON</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GAMBIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GHANA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GIBRALTAR</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GRENADA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GREECE</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GREAT_BRITAIN</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GUATEMALA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GUINEA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GUINEA_BISSAU</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GUYANA</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">HAITI</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">HONDURAS</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">INDIA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">INDONESIA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">IRAQ</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">IRAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">IRELAND</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ICELAND</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ISRAEL</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ITALY</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">JAMAICA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">JAPAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">YEMEN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TIMOR_LESTE</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">JORDAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CAYMAN_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CAMEROON</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CAMBODIA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CANADA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CAPE_VERDE</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">QATAR</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">KENYA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">COLOMBIA</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">COMOROS</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CONGO</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NORTH_KOREA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SOUTH_KOREA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CUBA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">KUWAIT</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">LAOS</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">LESOTHO</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">LEBANON</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">LIBERIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">LYBIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">LUXEMBOURG</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MACAO</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MADAGASCAR</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MALAWI</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MALAYSIA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MALDIVES</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MALI</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MALTA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MOROCCO</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MAURITANIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MAURITIUS</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MEXICO</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MONGOLIA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MOZAMBIQUE</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NEPAL</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NEW_CALEDONIA</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NEW_ZEALAND</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NICARAGUA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NETHERLANDS_ANTILLES</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NETHERLANDS</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NIGER</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NIGERIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NORWAY</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">AUSTRIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">OMAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PAKISTAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PANAMA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PAPUA_NEW_GUINEA</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PARAGUAY</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PERU</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PHILIPPINES</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">POLAND</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PORTUGAL</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">RWANDA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ROMANIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SOLOMON_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ZAMBIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SAMOA</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SAO_TOME_AND_PRINCIPE</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SAUDI_ARABIA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SWEDEN</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SWITZERLAND</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SENEGAL</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SEYCHELLES</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SIERRA_LEONE</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ZIMBABWE</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SINGAPORE</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SOMALIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MICRONESIA</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SPAIN</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SRI_LANKA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SAINT_KITTS_AND_NEVIS</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SAINT_LUCIA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SAINT_VINCENT_AND_THE_GRENADINES</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SUDAN</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SOUTH_AFRICA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SURINAME</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SWAZILAND</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SYRIAN_ARAB_REPUBLIC</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TANZANIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">THAILAND</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TOGO</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TONGA</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TRINIDAD_AND_TOBAGO</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CHAD</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CZECH_REPUBLIC</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TURKEY</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TUNISIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">UGANDA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">HUNGARY</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">URUGUAY</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">FAROE_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">VENEZUELA</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">UNITED_ARAB_EMIRATES</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">USA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">VIETNAM</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CENTRAL_AFRICAN_REPUBLIC</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CYPRUS</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">FRENCH_POLYNESIA</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SAN_MARINO</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">VATICAN</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">LIECHTENSTEIN</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MARTINIQUE</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GUADELOUPE</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ANDORRA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MONACO</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PUERTO_RICO</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">UNITED_STATES_VIRGIN_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">COOK_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">VANUATU</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NORTHERN_MARIANA_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">REUNION</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">FRENCH_GUIANA</font><font color="#000000">(</font><font color="#2a00ff">"SA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NAMIBIA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">UKRAINE</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SLOVENIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CROATIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SLOVAKIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ESTONIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">RUSSIAN_FEDERATION</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">LATVIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">UZBEKISTAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ARMENIA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">AZERBAIJAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BELARUS</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BOSNIA_AND_HERZEGOVINA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ERITREA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GEORGIA</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">KAZAKHSTAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">KYRGYZ_REPUBLIC</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">KIRIBATI</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">LITHUANIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MARSHALL_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MACEDONIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MOLDOVA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NAURU</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PALAU</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TAJIKISTAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TURKMENISTAN</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TUVALU</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ANGUILLA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MONTSERRAT</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ARUBA</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TURKS_AND_CAICOS_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">BRITISH_VIRGIN_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GREENLAND</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ALAND_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">AMERICAN_SAMOA</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">WESTERN_SAHARA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">GUAM</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MONTENEGRO</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">MAYOTTE</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NORFOLK_ISLAND</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">NIUE</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PITCAIRN_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">PALESTINIAN_TERRITORY</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SAINT_HELENA</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SVALBARD_AND_JAN_MAYEN_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SAINT_PIERRE_AND_MIQUELON</font><font color="#000000">(</font><font color="#2a00ff">"NA"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SERBIA</font><font color="#000000">(</font><font color="#2a00ff">"EU"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">TOKELAU</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">WALLIS_AND_FUTUNA</font><font color="#000000">(</font><font color="#2a00ff">"OC"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">ANTARCTICA</font><font color="#000000">(</font><font color="#2a00ff">"AN"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">COCOS_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">DEMOCRATIC_REPUBLIC_CONGO</font><font color="#000000">(</font><font color="#2a00ff">"AF"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">CHRISTMAS_ISLAND</font><font color="#000000">(</font><font color="#2a00ff">"AS"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">SOUTH_GEORGIA_AND_THE_SOUTH_SANDWICH_ISLANDS</font><font color="#000000">(</font><font color="#2a00ff">"AN"</font><font color="#000000">)</font><font color="#000000">,</font><br />
<font color="#ffffff"> </font><font color="#000000">FRENCH_SOUTHERN_TERRITORIES</font><font color="#000000">(</font><font color="#2a00ff">"AN"</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><br />
</code><br />
</div></div></div><br />
<code><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>private final </b></font><font color="#000000">String lookupValue;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>private static final </b></font><font color="#000000">BidiMap VALUE_TYPE_MAPPING = </font><font color="#7f0055"><b>new </b></font><font color="#000000">DualHashBidiMap</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>static </b></font><font color="#000000">{</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">Country value : Country.values</font><font color="#000000">()) {</font><br />
<font color="#ffffff"> </font><font color="#000000">Country.VALUE_TYPE_MAPPING.put</font><font color="#000000">(</font><font color="#000000">Country.valueOf</font><font color="#000000">(</font><font color="#000000">value.name</font><font color="#000000">())</font><font color="#000000">, value.getCountryValue</font><font color="#000000">())</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">Country</font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">String idValue</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#000000">lookupValue = idValue;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">String getCountryValue</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">lookupValue;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public static </b></font><font color="#000000">Country getCountry</font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">String country</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">(</font><font color="#000000">Country</font><font color="#000000">) </font><font color="#000000">Country.VALUE_TYPE_MAPPING.getKey</font><font color="#000000">(</font><font color="#000000">country</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#000000">}</font><br />
</code><br />
<br />
</td> <!-- end source code --> </tr>
</table></div><br />
and here is a test to compare results:<br />
<br />
<div class="java"><table bgcolor="#ffffff" border="0" cellpadding="3" cellspacing="0"><tbody>
<tr> <td align="left" nowrap="nowrap" valign="top"><br />
<code><br />
<span style="color: #7f0055;"><b>public class </b></span><span style="color: black;">CountryEnumTest </span><span style="color: black;">{</span><br />
<span style="color: white;"></span><br />
<span style="color: white;"> </span><span style="color: #7f0055;"><b>private final static </b></span><span style="color: #7f0055;"><b>int </b></span><span style="color: black;">DATA_SIZE = </span><span style="color: #990000;">1000000</span><span style="color: black;">;</span><br />
<span style="color: white;"> </span><span style="color: #7f0055;"><b>private final static </b></span><span style="color: black;">List<String> testStrings = </span><span style="color: #7f0055;"><b>new </b></span><span style="color: black;">ArrayList<String></span><span style="color: black;">(</span><span style="color: black;">DATA_SIZE</span><span style="color: black;">)</span><span style="color: black;">;</span><br />
<span style="color: white;"> </span><br />
<span style="color: white;"> </span><span style="color: #646464;">@BeforeClass</span><br />
<span style="color: white;"> </span><span style="color: #7f0055;"><b>public static </b></span><span style="color: #7f0055;"><b>void </b></span><span style="color: black;">initMap</span><span style="color: black;">() {</span><br />
<span style="color: white;"> </span><span style="color: black;">System.out.println</span><span style="color: black;">(</span><span style="color: #2a00ff;">"Initializing test data ..."</span><span style="color: black;">)</span><span style="color: black;">;</span><br />
<span style="color: white;"> </span><br />
<span style="color: white;"> </span><span style="color: #7f0055;"><b>final </b></span><span style="color: black;">Random random = </span><span style="color: #7f0055;"><b>new </b></span><span style="color: black;">Random</span><span style="color: black;">()</span><span style="color: black;">;</span><br />
<span style="color: white;"> </span><span style="color: #7f0055;"><b>for </b></span><span style="color: black;">(</span><span style="color: #7f0055;"><b>int </b></span><span style="color: black;">i = </span><span style="color: #990000;">0</span><span style="color: black;">; i < DATA_SIZE; i ++</span><span style="color: black;">) {</span><br />
<span style="color: white;"> </span><span style="color: #7f0055;"><b>final </b></span><span style="color: #7f0055;"><b>int </b></span><span style="color: black;">index = random.nextInt</span><span style="color: black;">(</span><span style="color: black;">CountryEnum.values</span><span style="color: black;">()</span><span style="color: black;">.length</span><span style="color: black;">)</span><span style="color: black;">;</span><br />
<span style="color: white;"> </span><span style="color: #7f0055;"><b>final </b></span><span style="color: black;">CountryEnum randomEntry = CountryEnum.values</span><span style="color: black;">()[</span><span style="color: black;">index</span><span style="color: black;">]</span><span style="color: black;">;</span><br />
<span style="color: white;"> </span><br />
<span style="color: white;"> </span><span style="color: black;">testStrings.add</span><span style="color: black;">(</span><span style="color: black;">randomEntry.getCountryValue</span><span style="color: black;">())</span><span style="color: black;">;</span><br />
<span style="color: white;"> </span><span style="color: black;">}</span><br />
<span style="color: white;"> </span><span style="color: black;">}</span><br />
<span style="color: white;"> </span><br />
<span style="color: white;"> </span><span style="color: #646464;">@Test</span><br />
<span style="color: white;"> </span><span style="color: #7f0055;"><b>public </b></span><span style="color: #7f0055;"><b>void </b></span><span style="color: black;">testEnum</span><span style="color: black;">() {</span><br />
<span style="color: white;"> </span><span style="color: #7f0055;"><b>final </b></span><span style="color: #7f0055;"><b>long </b></span><span style="color: black;">startTime = System.currentTimeMillis</span><span style="color: black;">()</span><span style="color: black;">;</span><br />
<span style="color: white;"></span><br />
<span style="color: white;"> </span><span style="color: #3f7f5f;">//Search values using iteration</span><br />
<span style="color: white;"> </span><span style="color: #7f0055;"><b>for </b></span><span style="color: black;">(</span><span style="color: #7f0055;"><b>final </b></span><span style="color: black;">String entry : testStrings</span><span style="color: black;">)</span><br />
<span style="color: white;"> </span><span style="color: black;">CountryEnum.getCountry</span><span style="color: black;">(</span><span style="color: black;">entry</span><span style="color: black;">)</span><span style="color: black;">;</span><br />
<span style="color: white;"> </span><span style="color: #7f0055;"><b>final </b></span><span style="color: #7f0055;"><b>long </b></span><span style="color: black;">elapsedTime = System.currentTimeMillis</span><span style="color: black;">()</span><span style="color: black;">;</span><br />
<span style="color: white;"> </span><span style="color: black;">System.out.println</span><span style="color: black;">(</span><span style="color: #2a00ff;">"testEnum, search by strings -> Time elapsed: " </span><span style="color: black;">+ </span><span style="color: black;">(</span><span style="color: black;">System.currentTimeMillis</span><span style="color: black;">() </span><span style="color: black;">- startTime</span><span style="color: black;">))</span><span style="color: black;">;</span><br />
<span style="color: white;"></span><br />
<span style="color: white;"> </span><span style="color: #3f7f5f;">//Search values using map</span><br />
<span style="color: white;"> </span><span style="color: #7f0055;"><b>for </b></span><span style="color: black;">(</span><span style="color: #7f0055;"><b>final </b></span><span style="color: black;">String entry : testStrings</span><span style="color: black;">)</span><br />
<span style="color: white;"> </span><span style="color: black;">Country.getCountry</span><span style="color: black;">(</span><span style="color: black;">entry</span><span style="color: black;">)</span><span style="color: black;">;</span><br />
<span style="color: white;"> </span><span style="color: black;">System.out.println</span><span style="color: black;">(</span><span style="color: #2a00ff;">"testOptimizedEnum, search by strings -> Time elapsed: " </span><span style="color: black;">+ </span><span style="color: black;">(</span><span style="color: black;">System.currentTimeMillis</span><span style="color: black;">() </span><span style="color: black;">- elapsedTime</span><span style="color: black;">))</span><span style="color: black;">;</span><br />
<span style="color: white;"> </span><span style="color: black;">}</span><br />
<span style="color: black;">}</span></code><br />
<br />
</td> </tr>
</tbody></table></div><br />
<br />
the optimization difference is huge, 63 milliseconds against 1015 !!<br />
<br />
<hr /><div class="output">Initializing test data ...<br />
testEnum, search by strings -> Time elapsed: 1015<br />
testOptimizedEnum, search by strings -> Time elapsed: 63<br />
</div><br />
<p> </p><p> </p>hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-53978719856519263842010-12-03T06:07:00.000-08:002010-12-06T07:48:38.721-08:00Performance: use Map.Entry instead of itrating the KeySetusing Map.Entry shows more performace than KeySet, The reason is that, once you need to access every key (and its value), you don't need to call the <i>get()</i> function on each of them. Because keys and values in a Map are already stored internally as a Map.Entry instance in next pointer to each other. so that when you iterate an EntrySet, you're just accessing these elements directly.<br />
If you call get() function instead, you invoke the hashCode() function internally and causing the HashMap to do a lookup in its internal array.<br />
<br />
to prove this, I wrote this sample test, the first test uses KeySet and the seconds one, the Map.Entry method.<br />
As you see, using KeySet takes 110 miliseconds against 78 miliseconds that Map.Entry takes.<br />
<br />
<div align="left" class="java"><table border="0" cellpadding="0" cellspacing="0" bgcolor="#ffffff"><tr> <!-- start source code --> <td nowrap="nowrap" valign="top" align="left"><br />
<code><br />
<font color="#7f0055"><b>public class </b></font><font color="#000000">IterateMapTest </font><font color="#000000">{</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>private final static </b></font><font color="#000000">Map<Integer, Float> testMap = </font><font color="#7f0055"><b>new </b></font><font color="#000000">HashMap<Integer, Float></font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><br />
<font color="#ffffff"> </font><font color="#646464">@BeforeClass</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public static </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">initMap</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">Random random = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Random</font><font color="#000000">(</font><font color="#990000">100000</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#7f0055"><b>int </b></font><font color="#000000">i = </font><font color="#990000">0</font><font color="#000000">; i < </font><font color="#990000">1000000</font><font color="#000000">; i ++</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#000000">testMap.put</font><font color="#000000">(</font><font color="#000000">random.nextInt</font><font color="#000000">()</font><font color="#000000">, random.nextFloat</font><font color="#000000">())</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><br />
<font color="#ffffff"> </font><font color="#646464">@Test</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">testIterateMapKeySet</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#7f0055"><b>long </b></font><font color="#000000">startTime = System.currentTimeMillis</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#000000">Integer entry : testMap.keySet</font><font color="#000000">())</font><br />
<font color="#ffffff"> </font><font color="#000000">; </font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#000000">System.out.println</font><font color="#000000">(</font><font color="#2a00ff">"testIterateMapKeySet -> Time elapsed: " </font><font color="#000000">+ </font><font color="#000000">(</font><font color="#000000">System.currentTimeMillis</font><font color="#000000">() </font><font color="#000000">- startTime</font><font color="#000000">))</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#646464">@Test</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">testIterateMapEntry</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#7f0055"><b>long </b></font><font color="#000000">startTime = System.currentTimeMillis</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#000000">Map.Entry<Integer, Float> entry : testMap.entrySet</font><font color="#000000">())</font><br />
<font color="#ffffff"> </font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#000000">System.out.println</font><font color="#000000">(</font><font color="#2a00ff">"testIterateMapEntry -> Time elapsed: " </font><font color="#000000">+ </font><font color="#000000">(</font><font color="#000000">System.currentTimeMillis</font><font color="#000000">() </font><font color="#000000">- startTime</font><font color="#000000">))</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#000000">}</font></code><br />
<br />
</td> <!-- end source code --> </tr>
</table></div><br />
Output:<br />
<div class="output">testIterateMapKeySet -> Time elapsed: 110<br />
testIterateMapEntry -> Time elapsed: 78<br />
</div><br />
<hr><p> </p>hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-53183249667835776862010-11-30T09:04:00.000-08:002010-12-06T08:03:22.293-08:00a Custom Log4j appender to create a logfile for each Useryou don't want to have a cumulative log file for all usages of your client applications (e.g. Swing), but create a log file for each user? the answer is extend the <a href="http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/RollingFileAppender.html">RollingFileAppender</a> and inject your own filename handling to it.<br />
<br />
here is how you can do it:<br />
<br />
<hr><div class="java"><table border="0" cellpadding="0" cellspacing="0" bgcolor="#ffffff"><tr> <!-- start source code --> <td valign="top" align="left"><br />
<code><br />
<font color="#7f0055"><b>public class </b></font><font color="#000000">UserLog4jFileAppender </font><font color="#7f0055"><b>extends </b></font><font color="#000000">RollingFileAppender </font><font color="#000000">{</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* A default file path if no value is set in the log4j.xml.</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>private static final </b></font><font color="#000000">String defaultFilePath = </font><font color="#2a00ff">"."</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* A default date pattern if no value is set in the log4j.xml.</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>private static final </b></font><font color="#000000">String defaultDatePattern = </font><font color="#2a00ff">"yyMMdd"</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* This is the absolute path were the logger-structure should be created.</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">String filePath = </font><font color="#7f0055"><b>null</b></font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* This is the filename of the log-file.</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">String file = </font><font color="#7f0055"><b>null</b></font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* This is a date pattern used to create a directory for each day.</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* </font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@see </font><font color="#3f5fbf">SimpleDateFormat</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#000000">String datePattern = </font><font color="#7f0055"><b>null</b></font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* The default maximum file size is 10MB.</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#7f0055"><b>long </b></font><font color="#000000">maxFileSize;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* There is one backup file by default.</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#7f0055"><b>int </b></font><font color="#000000">maxBackupIndex;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* The default constructor does nothing.</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">UserLog4jFileAppender</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#000000">maxFileSize = </font><font color="#990000">10485760L</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">maxBackupIndex = </font><font color="#990000">1</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* {</font><font color="#7f9fbf">@inheritDoc</font><font color="#3f5fbf">}</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br />
<font color="#ffffff"> </font><font color="#646464">@Override</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">activateOptions</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#000000">setupLogFile</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>super</b></font><font color="#000000">.activateOptions</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* {</font><font color="#7f9fbf">@inheritDoc</font><font color="#3f5fbf">}</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br />
<font color="#ffffff"> </font><font color="#646464">@Override</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">setFile</font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">String file</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>this</b></font><font color="#000000">.file = file;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* Gets the date pattern.</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* </font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@return </font><font color="#3f5fbf">the date pattern.</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">String getDatePattern</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">datePattern;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* Sets the date pattern.</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* </font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@param </font><font color="#3f5fbf">datePattern</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* the date pattern to set.</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">setDatePattern</font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">String datePattern</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>this</b></font><font color="#000000">.datePattern = datePattern;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* Gets the file path.</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* </font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@return </font><font color="#3f5fbf">the file path.</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">String getFilePath</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">filePath;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* Sets the file path.</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* </font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@param </font><font color="#3f5fbf">filePath</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* the file path to set.</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">setFilePath</font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">String filePath</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>this</b></font><font color="#000000">.filePath = filePath;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* This method sets up the logfile structure. This method creates the needed</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* directories and builds the log-filename.</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">setupLogFile</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">file != </font><font color="#7f0055"><b>null</b></font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">filePath == </font><font color="#7f0055"><b>null</b></font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#000000">filePath = defaultFilePath;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">datePattern == </font><font color="#7f0055"><b>null</b></font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#000000">datePattern = defaultDatePattern;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f7f5f">// build logfile-path</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">String userName = System.getProperty</font><font color="#000000">(</font><font color="#2a00ff">"user.name"</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">String fileName = file.replace</font><font color="#000000">(</font><font color="#2a00ff">"@username@"</font><font color="#000000">, userName</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f7f5f">// create file if not exists</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">String parentName = </font><font color="#7f0055"><b>new </b></font><font color="#000000">File</font><font color="#000000">(</font><font color="#000000">fileName</font><font color="#000000">)</font><font color="#000000">.getParent</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">parentName != </font><font color="#7f0055"><b>null</b></font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">File parentDir = </font><font color="#7f0055"><b>new </b></font><font color="#000000">File</font><font color="#000000">(</font><font color="#000000">parentName</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">!parentDir.exists</font><font color="#000000">()) {</font><br />
<font color="#ffffff"> </font><font color="#000000">parentDir.mkdirs</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f7f5f">// find first not existing logfile</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">File f = </font><font color="#7f0055"><b>new </b></font><font color="#000000">File</font><font color="#000000">(</font><font color="#000000">fileName</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>super</b></font><font color="#000000">.setFile</font><font color="#000000">(</font><font color="#000000">f.getAbsoluteFile</font><font color="#000000">()</font><font color="#000000">.toString</font><font color="#000000">())</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">* {</font><font color="#7f9fbf">@inheritDoc</font><font color="#3f5fbf">}</font><br />
<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br />
<font color="#ffffff"> </font><font color="#646464">@Override</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">reset</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#000000">filePath = </font><font color="#7f0055"><b>null</b></font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">file = </font><font color="#7f0055"><b>null</b></font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">datePattern = </font><font color="#7f0055"><b>null</b></font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>super</b></font><font color="#000000">.reset</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#000000">}</font></code><br />
<br />
</td> </table></div><hr><br />
all we need now is to define this appender in our log4j.xml file:<br />
<br />
<hr><div class="java"><table border="0" cellpadding="0" cellspacing="0" bgcolor="#ffffff"><tr> <!-- start source code --> <td nowrap="nowrap" valign="top" align="left"><br />
<code><br />
<font color="#ffffff"> </font><font color="#000000"><appender name=</font><font color="#2a00ff">"file"</font><br />
<br />
<font color="#ffffff"> </font><font color="#7f0055"><b>class</b></font><font color="#000000">=</font><font color="#2a00ff">"com.xxx.UserLog4jFileAppender"</font><font color="#000000">></font><br />
<br />
<font color="#ffffff"> </font><font color="#000000"><param name=</font><font color="#2a00ff">"File"</font><br />
<br />
<font color="#ffffff"> </font><font color="#000000">value=</font><font color="#2a00ff">"logs/myapp-gui-@username@.log" </font><font color="#000000">/></font><br />
<br />
<font color="#ffffff"> </font><font color="#000000"><param name=</font><font color="#2a00ff">"MaxFileSize" </font><font color="#000000">value=</font><font color="#2a00ff">"100MB" </font><font color="#000000">/></font><br />
<br />
<font color="#ffffff"> </font><font color="#000000"><param name=</font><font color="#2a00ff">"MaxBackupIndex" </font><font color="#000000">value=</font><font color="#2a00ff">"10" </font><font color="#000000">/></font><br />
<br />
<font color="#ffffff"> </font><font color="#000000"><param name=</font><font color="#2a00ff">"Append" </font><font color="#000000">value=</font><font color="#2a00ff">"true" </font><font color="#000000">/></font><br />
<br />
<font color="#ffffff"> </font><font color="#000000"><layout </font><font color="#7f0055"><b>class</b></font><font color="#000000">=</font><font color="#2a00ff">"org.apache.log4j.PatternLayout"</font><font color="#000000">></font><br />
<br />
<font color="#ffffff"> </font><font color="#000000"><param name=</font><font color="#2a00ff">"ConversionPattern"</font><br />
<br />
<font color="#ffffff"> </font><font color="#000000">value=</font><font color="#2a00ff">"%d{yyMMdd HH\:mm\:ss.SSS} [%t] %-5p %c %x - %m%n" </font><font color="#000000">/></font><br />
<br />
<font color="#ffffff"> </font><font color="#000000"></layout></font><br />
<br />
<font color="#ffffff"> </font><font color="#000000"></appender></font></code><br />
<br />
</td> </tr>
</table></div>hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com0tag:blogger.com,1999:blog-3218980123276256466.post-70497085988783688172010-11-29T04:21:00.000-08:002010-12-02T05:12:22.540-08:00Parallel JUnit tests using a custom Concurrent Annotation<style type="text/css">
<!--code { font-family: Courier New, Courier; font-size: 10pt; margin: 0px; }-->
</style><br />
<br />
concurrent test runs in JUnit 4 are still in experimental phase, a very good alternative to running parallel tests is migrating to <a href="http://testng.org/">TestNG</a>, although if you don't like it or have no possibility to simply migrate to it, you can still use a custom runner by extending the <a href="http://junit.sourceforge.net/javadoc/org/junit/runners/BlockJUnit4ClassRunner.html">BlockJUnit4ClassRunner</a> class.<br />
<br />
first we parametrize the concurrency using an Annotation:<br />
<br />
<hr />Concurrent.java<br />
<hr /><table border="0" cellpadding="0" cellspacing="0" class="java"> <tr>
<!-- start source code -->
<td nowrap="nowrap" valign="top" align="left"><br />
<code><br />
<font color="#646464">@Retention</font><font color="#000000">(</font><font color="#000000">RetentionPolicy.RUNTIME</font><font color="#000000">)</font><br />
<font color="#646464">@Target</font><font color="#000000">({</font><font color="#000000">ElementType.METHOD</font><font color="#000000">})</font><br />
<font color="#7f0055"><b>public @interface </b></font><font color="#000000">Concurrent </font><font color="#000000">{</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>int </b></font><font color="#000000">threadPoolSize</font><font color="#000000">() </font><font color="#7f0055"><b>default </b></font><font color="#990000">3</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>int </b></font><font color="#000000">invocationCount</font><font color="#000000">() </font><font color="#7f0055"><b>default </b></font><font color="#990000">10</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>long </b></font><font color="#000000">timeOut</font><font color="#000000">() </font><font color="#7f0055"><b>default </b></font><font color="#990000">10000</font><font color="#000000">;</font><br />
<font color="#000000">}</font></code><br />
</td>
<!-- end source code -->
</table><hr /><br />
and here comes the actual runner which controls our parallel runs:<br />
<br />
<hr />ConcurrentRunner.java<br />
<hr /><div align="left" class="java"><table cellpadding="0" cellspacing="0" bgcolor="#ffffff" width="30%"> <tr>
<!-- start source code -->
<td valign="top" align="left"><br />
<code><br />
<font color="#7f0055"><b>public class </b></font><font color="#000000">ConcurrentRunner </font><font color="#7f0055"><b>extends </b></font><font color="#000000">BlockJUnit4ClassRunner </font><font color="#000000">{</font><br />
<br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">ConcurrentRunner</font><font color="#000000">(</font><font color="#000000">Class<?> klass</font><font color="#000000">) </font><font color="#7f0055"><b>throws </b></font><font color="#000000">InitializationError </font><font color="#000000">{</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>super</b></font><font color="#000000">(</font><font color="#000000">klass</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<br />
<font color="#ffffff"> </font><font color="#646464">@Override</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">run</font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">RunNotifier notifier</font><font color="#000000">) {</font><br />
<br />
<font color="#ffffff"> </font><font color="#3f7f5f">// run BeforeClass tests</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">List<FrameworkMethod> beforeClassMethods = getTestClass</font><font color="#000000">()</font><font color="#000000">.getAnnotatedMethods</font><font color="#000000">(</font><font color="#000000">BeforeClass.</font><font color="#7f0055"><b>class</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">FrameworkMethod frameworkMethod : beforeClassMethods</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#000000">notifier.fireTestStarted</font><font color="#000000">(</font><font color="#000000">getDescription</font><font color="#000000">())</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>try </b></font><font color="#000000">{</font><br />
<font color="#ffffff"> </font><font color="#000000">methodBlock</font><font color="#000000">(</font><font color="#000000">frameworkMethod</font><font color="#000000">)</font><font color="#000000">.evaluate</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>catch </b></font><font color="#000000">(</font><font color="#000000">Throwable e</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#000000">Exceptions.throwException</font><font color="#000000">(</font><font color="#000000">e</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<br />
<font color="#ffffff"> </font><font color="#3f7f5f">// run non-concurrent tests</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">List<FrameworkMethod> testMethods = getTestClass</font><font color="#000000">()</font><font color="#000000">.getAnnotatedMethods</font><font color="#000000">(</font><font color="#000000">Test.</font><font color="#7f0055"><b>class</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">FrameworkMethod frameworkMethod : testMethods</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">frameworkMethod.getAnnotation</font><font color="#000000">(</font><font color="#000000">Concurrent.</font><font color="#7f0055"><b>class</b></font><font color="#000000">) </font><font color="#000000">== </font><font color="#7f0055"><b>null</b></font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#000000">notifier.fireTestRunStarted</font><font color="#000000">(</font><font color="#000000">getDescription</font><font color="#000000">())</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">runChild</font><font color="#000000">(</font><font color="#000000">frameworkMethod, notifier</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<br />
<font color="#ffffff"> </font><font color="#3f7f5f">// run concurrent tests, Before and After tests will run automatically before and after each</font><br />
<font color="#ffffff"> </font><font color="#3f7f5f">// test</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">List<FrameworkMethod> concurrentMethods = getTestClass</font><font color="#000000">()</font><font color="#000000">.getAnnotatedMethods</font><font color="#000000">(</font><font color="#000000">Concurrent.</font><font color="#7f0055"><b>class</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">FrameworkMethod frameworkMethod : concurrentMethods</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">Concurrent concurrent = frameworkMethod.getAnnotation</font><font color="#000000">(</font><font color="#000000">Concurrent.</font><font color="#7f0055"><b>class</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">concurrent != </font><font color="#7f0055"><b>null</b></font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#7f0055"><b>int </b></font><font color="#000000">invocationCount = concurrent.invocationCount</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#7f0055"><b>int </b></font><font color="#000000">threadPoolSize = concurrent.threadPoolSize</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#7f0055"><b>long </b></font><font color="#000000">timeout = concurrent.timeOut</font><font color="#000000">()</font><font color="#000000">;</font><br />
<br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">ExecutorService executorService = Executors.newFixedThreadPool</font><font color="#000000">(</font><font color="#000000">threadPoolSize</font><font color="#000000">)</font><font color="#000000">;</font><br />
<br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">List<Callable<Object>> calls = </font><font color="#7f0055"><b>new </b></font><font color="#000000">ArrayList<Callable<Object>></font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#7f0055"><b>int </b></font><font color="#000000">i = </font><font color="#990000">0</font><font color="#000000">; i < invocationCount; i++</font><font color="#000000">)</font><br />
<font color="#ffffff"> </font><font color="#000000">calls.add</font><font color="#000000">(</font><font color="#7f0055"><b>new </b></font><font color="#000000">JUnitRunner</font><font color="#000000">(</font><font color="#000000">frameworkMethod, notifier</font><font color="#000000">))</font><font color="#000000">;</font><br />
<br />
<font color="#ffffff"> </font><font color="#7f0055"><b>try </b></font><font color="#000000">{</font><br />
<font color="#ffffff"> </font><font color="#000000">executorService.invokeAll</font><font color="#000000">(</font><font color="#000000">calls, timeout, TimeUnit.MILLISECONDS</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>catch </b></font><font color="#000000">(</font><font color="#000000">InterruptedException e</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#000000">Exceptions.throwException</font><font color="#000000">(</font><font color="#000000">e</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<br />
<font color="#ffffff"> </font><font color="#000000">executorService.shutdown</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<br />
<font color="#ffffff"> </font><font color="#3f7f5f">// run AfterClass tests</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#000000">List<FrameworkMethod> afterClassMethods = getTestClass</font><font color="#000000">()</font><font color="#000000">.getAnnotatedMethods</font><font color="#000000">(</font><font color="#000000">AfterClass.</font><font color="#7f0055"><b>class</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>for </b></font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">FrameworkMethod frameworkMethod : afterClassMethods</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>try </b></font><font color="#000000">{</font><br />
<font color="#ffffff"> </font><font color="#000000">methodBlock</font><font color="#000000">(</font><font color="#000000">frameworkMethod</font><font color="#000000">)</font><font color="#000000">.evaluate</font><font color="#000000">()</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>catch </b></font><font color="#000000">(</font><font color="#000000">Throwable e</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#000000">Exceptions.throwException</font><font color="#000000">(</font><font color="#000000">e</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<br />
<font color="#ffffff"> </font><font color="#7f0055"><b>private class </b></font><font color="#000000">JUnitRunner </font><font color="#7f0055"><b>implements </b></font><font color="#000000">Callable<Object> </font><font color="#000000">{</font><br />
<br />
<font color="#ffffff"> </font><font color="#7f0055"><b>private final </b></font><font color="#000000">FrameworkMethod method;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>private final </b></font><font color="#000000">RunNotifier notifier;</font><br />
<br />
<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">JUnitRunner</font><font color="#000000">(</font><font color="#7f0055"><b>final </b></font><font color="#000000">FrameworkMethod method, </font><font color="#7f0055"><b>final </b></font><font color="#000000">RunNotifier notifier</font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>this</b></font><font color="#000000">.method = method;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>this</b></font><font color="#000000">.notifier = notifier;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<br />
<font color="#ffffff"> </font><font color="#646464">@Override</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">Object call</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#000000">notifier.fireTestRunStarted</font><font color="#000000">(</font><font color="#000000">getDescription</font><font color="#000000">())</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">runChild</font><font color="#000000">(</font><font color="#000000">method, notifier</font><font color="#000000">)</font><font color="#000000">;</font><br />
<br />
<font color="#ffffff"> </font><font color="#7f0055"><b>return null</b></font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<br />
<font color="#000000">}</font></code><br />
</table></div><hr><br />
all we need is to test the stuff:<br />
<br />
<hr>ConcurrentRunnerTest.java<br />
<hr><div align="left" class="java"><table border="0" cellpadding="0" cellspacing="0"> <tr>
<!-- start source code -->
<td valign="top" align="left"><br />
<code><br />
<font color="#646464">@RunWith</font><font color="#000000">(</font><font color="#000000">ConcurrentRunner.</font><font color="#7f0055"><b>class</b></font><font color="#000000">)</font><br />
<font color="#7f0055"><b>public class </b></font><font color="#000000">ConcurrentRunnerTest </font><font color="#000000">{</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>private static </b></font><font color="#000000">Object aGlobalObject = </font><font color="#7f0055"><b>null</b></font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>private static </b></font><font color="#000000">Integer aGlobalInteger = </font><font color="#7f0055"><b>null</b></font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#646464">@BeforeClass</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public static </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">setUp</font><font color="#000000">() </font><font color="#7f0055"><b>throws </b></font><font color="#000000">Exception </font><font color="#000000">{</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">aGlobalObject == </font><font color="#7f0055"><b>null</b></font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#000000">aGlobalObject = </font><font color="#7f0055"><b>new </b></font><font color="#000000">String</font><font color="#000000">(</font><font color="#2a00ff">"aGlobalObject"</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">System.out.println</font><font color="#000000">(</font><font color="#2a00ff">"=========>> Setup test"</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#646464">@AfterClass</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public static </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">coolDown</font><font color="#000000">() </font><font color="#7f0055"><b>throws </b></font><font color="#000000">Exception </font><font color="#000000">{</font><br />
<font color="#ffffff"> </font><font color="#000000">assertNotNull</font><font color="#000000">(</font><font color="#000000">aGlobalObject</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">assertNotNull</font><font color="#000000">(</font><font color="#000000">aGlobalInteger</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#000000">assertEquals</font><font color="#000000">(</font><font color="#000000">aGlobalInteger.intValue</font><font color="#000000">()</font><font color="#000000">, </font><font color="#990000">591</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#000000">aGlobalObject = </font><font color="#7f0055"><b>null</b></font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">aGlobalInteger = </font><font color="#7f0055"><b>null</b></font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#000000">System.out.println</font><font color="#000000">(</font><font color="#2a00ff">"=========>> coolDown"</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#646464">@BeforeClass</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public static </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">setUpAgain</font><font color="#000000">() </font><font color="#7f0055"><b>throws </b></font><font color="#000000">Exception </font><font color="#000000">{</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">aGlobalInteger == </font><font color="#7f0055"><b>null</b></font><font color="#000000">) {</font><br />
<font color="#ffffff"> </font><font color="#000000">aGlobalInteger = </font><font color="#7f0055"><b>new </b></font><font color="#000000">Integer</font><font color="#000000">(</font><font color="#990000">4177</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#000000">System.out.println</font><font color="#000000">(</font><font color="#2a00ff">"=========>> Setup test 2"</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#646464">@Test</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">testOnce</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#000000">assertNotNull</font><font color="#000000">(</font><font color="#000000">aGlobalObject</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">assertNotNull</font><font color="#000000">(</font><font color="#000000">aGlobalInteger</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#000000">aGlobalInteger = </font><font color="#990000">591</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#000000">System.out.println</font><font color="#000000">(</font><font color="#2a00ff">"===> testOnce"</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#646464">@Test</font><br />
<font color="#ffffff"> </font><font color="#646464">@Concurrent</font><font color="#000000">(</font><font color="#000000">threadPoolSize = </font><font color="#990000">4</font><font color="#000000">, invocationCount = </font><font color="#990000">10</font><font color="#000000">, timeOut = </font><font color="#990000">60000</font><font color="#000000">)</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">testConcurrent</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#000000">assertNotNull</font><font color="#000000">(</font><font color="#000000">aGlobalObject</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">assertNotNull</font><font color="#000000">(</font><font color="#000000">aGlobalInteger</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#000000">System.out.println</font><font color="#000000">(</font><font color="#2a00ff">"===> testConcurrent: " </font><font color="#000000">+ Thread.currentThread</font><font color="#000000">())</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#646464">@Test</font><br />
<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">testOnceAgain</font><font color="#000000">() {</font><br />
<font color="#ffffff"> </font><font color="#000000">assertNotNull</font><font color="#000000">(</font><font color="#000000">aGlobalObject</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">assertNotNull</font><font color="#000000">(</font><font color="#000000">aGlobalInteger</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"></font><br />
<font color="#ffffff"> </font><font color="#000000">System.out.println</font><font color="#000000">(</font><font color="#2a00ff">"===> testOnceAgain"</font><font color="#000000">)</font><font color="#000000">;</font><br />
<font color="#ffffff"> </font><font color="#000000">}</font><br />
<font color="#ffffff"></font><br />
<font color="#000000">}</font></code><br />
<br />
</td>
<!-- end source code -->
</tr>
</table></div><hr><br />
and here is the Output:<br />
<br />
<hr><code><br />
=========>> Setup test 2<br />
=========>> Setup test<br />
===> testOnce<br />
===> testOnceAgain<br />
===> testConcurrent: Thread[pool-1-thread-2,5,main]<br />
===> testConcurrent: Thread[pool-1-thread-2,5,main]<br />
===> testConcurrent: Thread[pool-1-thread-1,5,main]<br />
===> testConcurrent: Thread[pool-1-thread-2,5,main]<br />
===> testConcurrent: Thread[pool-1-thread-3,5,main]<br />
===> testConcurrent: Thread[pool-1-thread-3,5,main]<br />
===> testConcurrent: Thread[pool-1-thread-3,5,main]<br />
===> testConcurrent: Thread[pool-1-thread-3,5,main]<br />
===> testConcurrent: Thread[pool-1-thread-2,5,main]<br />
===> testConcurrent: Thread[pool-1-thread-4,5,main]<br />
=========>> coolDown<br />
</code><br />
<hr>hoomhttp://www.blogger.com/profile/02842452187539107958noreply@blogger.com2