Completed

Write some Software

develop a stand-alone application in Java that allows its users to get the up-to-date currency exchange rates for those currencies Israeli Bank provides a daily update via its REStful web service ([url removed, login to view]). If Bank Israel server side doesn’t function propertly feel free to use the XML at [url removed, login to view] The application should be able to display the up-to-date rates (in table.. you should use the JTable class) and it should be capable of converting any sum in any currency into any other currency based on those rates.

The Model

The model part should include an interface (in Java) that defines the methods and a class (can be in Scala) that implements them. The model part should include a separated component (1) responsible for a continuous checking the up-to-date XML data and storing the parsed data to file. The functions that return the up-to-date data back to the view should use that file.

The View

The user interface part of the application should be developed using Swing. The implementation of the view should be in Java. The view should allow the user to convert any sum of money from any of the supported currencies to any of the other ones. The view should allow the user to get a table (You can use the JTable class) that shows all currency exchange rates. The view should show the date of the currency exchange rates in use.

Your project should include api documentation for the code written in Java (for the public part only). Both the model part and the view should include logging messages (write to Log file). Your code should include detailed documentation (comments etc.)

Use Log4J - as a framework for log writing [5 points]

The model should be tested using JUnit or one of its alternatives [5 points]

Save data history and add Graph to show progress specific currency rate over time [10 points]

[url removed, login to view]

Simulate server side that will hold currency data and will send it over network (through xml data, or object serialization - object output stream) [10 points]

Add keyword search text box - that will filter your table to show you specific currency [5 points]

Add refresh button - manual update of model , request by user [5 points]

Insert data manual to the table - let the user add manual currency to the table [5 points]

Split the view into multiple windows (2 jframes: one for table - as the main window , second for calculator - calculator can be pop up by a button from the main frame) [5 points]

Comments:

1. You should place javadoc comments for every class, every interface, every enum, every exception, every method and every variable (excludling local variables).

/**

*

*

*/

You can take example for proper usage of javadoc comments browsing the source code in src.zip. You can find a tutorial that explains how to write javadoc comments at http://www.oracle.com/technetwork/articles/java/index-137868.html.

2. You can (where appropriate) place c styled comment in the begining of the function in order to provide detailed information about the algorithm or the way you chose to implement the function.

public void doSomething()

{

/*

*

*

*/

...

}

3. You should place c++ styled comments before every bunch of code (group of lines) in order to keep the code organized and clear.

//creating gui components

bt = new JButton("ok");

tf = new JTextField(10);

//adding events listeners

bt.addActionListener(...);

Identifiers:

1. Variables and Methods names should be composed of small letters only. If the variable name includes more than one word then every word (starting with the second word) will start with a capital letter

int numOfStudents=12;

If the variable/method name includes abbreviation, each letter should be capitalized (except for those cases in which the entire name is an abbreviation).

2. Class/Enum/Exception/Interface names should start with a capital letter. If the name includes more than one word then every word will start with a capital letter

public class SportCar {}

If the class/enum/exception/interface name includes abbreviation, each letter should be capitalized.

3. names of packages should start with the domain name (opposite direction) of the company that develops the package. in addition, the package name should include small letters only.

e.g. com.lifemichael.samples, il.ac.hit.samples...

Classes:

1. Make sure your class included the definition for a primary constructor. Make sure all other constructors use the primary one.

2. Make sure to include validation tests inside the setters. Make sure the constructor uses the setters. Avoid direct assignments to the variables. The validation tests should be inside the setters only. Avoid duplicate code in the constructors.

3. Make sure the code of your class is organized properly: first we declare the variables.. then the constructors... and the methods come right after. Make sure you follow the common order we know from the java api.

4. Make sure that whenever you override the equals method you also override hashCode and make sure each one of the two methods works according to the other one.

5. it is a good practice to verride the toString method.

6. When implementing Cloneable make sure you override the clone method.

7. The access modifier for each and every variable you declare should be private unless there is a good reason for something else.

8. make sure each method starts with validating the arguments it received.

9. When overriding a method make sure you use the @Override annotation.

Interfaces:

1. Make sure you declare an interface and a separated clas that implements it.

2. Wherever you need a variable that should hold a reference for a specific object the variable type should be an interface (not a class) where possible.

List<Currency> currencies = new LinkedList<Currency>();

3. Prefet using interface over abstract class.

Exceptions Handling:

1. Make sure you avoid a catch statement that refers the type Exception.

2. Declate a specific exception type for your project and make sure wherever an exception is thrown the exception is replace with a new exception instantiated from your project specific type.

class CurrenciesPlatformException extends Exception

{

CurrenciesPlatformException(String msg, Throwable rootcause)

{
super(msg,rootcause);

}

The interface that lists the methods we should implement should use the project specific exception type in the methods declaraiton

public interface ICurrenciesModel

{

public abstract double convert(double sum, Currency c1, Currency c2)
throws CurrenciesPlatformException;

...

}
or another sample:
public interface ICouponsPlatformDAO
{
public Coupon getCoupon(int id) throws CouponPlatformException;
public Business getBusiness(int id) throws CouponPlatformException;
...
}

3. when dealing with a code segment that performs a specific task... and when it is a code segment that in case of exception there is no point trying to complete it... place the entier code segment in one big try & catch.

4. When getting runtime exceptions we should fix our code (instead of trying to handle it) - except for very specific cases such as calling the Double.parseDouble method.

5. When you define a new exception type (when you define a class that extends one of the available exceptions classes) make sure there is a constructor that is capable of getting the message that describes the malfunction as well as a constructor that is capable of getting both the message, that describes the malfunction, and the root cause (should be of the Throwable type).

Separation of Concerns:

1. Make sure to keep a clear separation between the project parts. Make sure each part doesn't interfere with other parts responsibility.

e.g. If you include in your model code that responsible to the ui it would be a violation of the clear separation we look for.

Generics:

1. Whenever you use a generic class make sure you write your code accordingly.

2. Prefer using bounded wildcard when possible

Primitive Types:

1. When dealing with finance applications pay attention to the fact that holding sum as double type values might be a problem.

IOStreams:

1. Avoid objects serialization. Prefer saving data in XML.

Strings:

1. When relevant prefer using StringBuffer/StringBuilder.

2. Prefer using strings by writing them explicitly... e.g. "abc" (it is better than doing new String("abc"))

Memory Management:

1. When there is no need in a specific object make sure you assign null to every variable that holds its reference.... so the garbage collector will be able to clearn the memory been used by the object.

2. Don't count on finalize()

Enum:

1. Prefer declaring enum over using static int variables (when possible)

Threads:

1. Avoid using the synchronization mechanism when it is not relevant.... avoid synchronizing code we don't need to.

2. Prefer using Executors over creating new Thread objects.

User Interface:

1. Each and every interaction with the user interface should be within the EDT thread.

Skills: Java

See more: writing to a file java, writing to a file in java, writing software free, writing calculator, some one drawing, Restful API java, points of view in writing, part of graph, java writing to a file, java api table, graph using java, graph search methods, graph search java, graph on java, graph in java, graph implementation in c, graph implementation c, graph class java, framework java 2016, exchange currency rates table

About the Employer:
( 2 reviews ) tel aviv, Israel

Project ID: #11066164

Awarded to:

liangjongai

Hi. I have a close look to your project. I have a good skill in java programming. If you award this project to me, i'll complete it in time. My budget may be negotiable. Thanks.

$250 USD in 10 days
(73 Reviews)
5.5

26 freelancers are bidding on average $475 for this job

eperfections

I am TOP RANKED java programmer with 10+ years of experience. Interested in this project. Will start ASAP.

$450 USD in 3 days
(441 Reviews)
7.4
aazc5aazc

Hi, I'm a Java expert and have done many projects. I've read the description and I can handle it with quality.

$555 USD in 10 days
(156 Reviews)
6.6
$736 USD in 10 days
(73 Reviews)
6.7
lovinagarwal21

A proposal has not yet been provided

$444 USD in 5 days
(121 Reviews)
6.5
rhkchathuranga

Dear sir, I'm an Oracle Certified Java Programmer. I have both theoretical knowledge and 6 years+ hands-on experience in Java programming. Already completed 40+ standalone applications with databases and other with More

$433 USD in 10 days
(54 Reviews)
6.4
buzzcoder

Hello, Have some questions for you: 1. When I got data from [login to view URL], so what is based currency here? For example USD rate for Jul-21 = 3.858, but USD compare to which currency? 2. Becaus More

$666 USD in 3 days
(56 Reviews)
6.3
koustav2006

Hi, I am good at core OO programming in Java along with GUI design using Swings. I can help you develop the Currency Software as per details. Please contact me as soon as possible for a discussion. With Regards, More

$277 USD in 4 days
(49 Reviews)
5.1
dipakjadhav08

Hello,k hv 7 +years of experience in Java.i will do it

$388 USD in 3 days
(66 Reviews)
5.1
imanolie

Hi, This is a nice project (I guess assignment) with quite a lot features. I have experience in java field more than 3 years within enterprise domain. I would be more than happy to help you with this. I would bui More

$500 USD in 7 days
(14 Reviews)
5.0
IFI91

award me will do best software engineer here group of 5 developers experts with penalty of experience can provide you quality work in given time inbox me asap so we can start waiting Thanks

$277 USD in 7 days
(41 Reviews)
5.0
johnykoshy

I am an experienced in Scala/Java/Javascript programmer with an engineering degree in Information Technology. With my experience in IT products and services I will be able to provide professional help for you. From More

$1000 USD in 15 days
(8 Reviews)
4.2
anuragiitk

I am an IITK graduate, 9 year experienced software professional and I have got top notch developers in my team, who have got experience across a span of technologies. The members in my team have worked with top notch t More

$555 USD in 10 days
(18 Reviews)
5.1
$350 USD in 9 days
(3 Reviews)
3.4
anoopvn007

I have 6 plus years of experience in Java j2ee spring web applications. i am interested to do this and Need more details about the project and hope we can work together.

$500 USD in 10 days
(4 Reviews)
3.2
GGlad

Hello, I will gladly help you with this project. All described requirments will be met. An IDE of your choice will be used. Any questions about work of app will be answered.

$555 USD in 15 days
(12 Reviews)
3.5
samdagba

Hi sir i am an advanced java developer and i have been developping beautifull apps for more than 7 years using both eclipse and netbeans, I read what you want and i can do it for you with no much stress. Contact me fo More

$350 USD in 10 days
(2 Reviews)
2.6
$500 USD in 10 days
(0 Reviews)
0.0
imranonthenet

I have experience in developing enterprise Java applications. I have passed the Java certification exam on Freelancer.

$555 USD in 10 days
(0 Reviews)
0.0
vamsi1257

HI, This project is very interesting and i'm having experience in rest based server side programming i already built similar kind of app in c language and java script with json. if you give me an opportunity i can do More

$444 USD in 10 days
(0 Reviews)
0.0
$333 USD in 10 days
(0 Reviews)
0.0