Java
My Java experience includes developing apps using object-oriented programming, using SQL to integrate with databases, and working with JUnit to create automated tests. While my user interfaces are spartan, I think you will find I have a solid understanding of the language. I also exhibit the ability to learn and use new libraries, including for multi-threading and web scraping.
Inventory App
This is a simple inventory tracker. There is a login screen that connects to an SQLite database where each user’s data and preferences are stored. Items associated with the user are retrieved and shown in a Recycler View. They can be edited or deleted by clicking on an individual item. As you can see, this involved making several different classes, from an SQLite database to notification manager and the different activities.
Full repository and individual classes:
- Full repository
- AuthenticatedUser.java
- AuthenticatedUserManager.java
- DetailFragment.java
- Inventory.java
- Item.java
- ListFragment.java
- LoginActivity.java
- MainActivity.java
- NotificationsManager.java
- SettingsActivity.java
- UserCredentials.java
- UserDatabase.java
JUnit Testing
For this project, I had to create classes for tracking contacts, tasks, and appointments for a fictional company. Each object class stores data, while the associated service class handles the objects. I tested each class against pre-defined requirements using JUnit testing. Each class and associated test class was written from scratch.
For the service classes – AppointmentService, ContactService, and TaskService – there were requirements for adding, removing, and updating objects. I created passing and failing test cases for each of these scenarios. I also handled assigning unique ids to each object within the service classes, so I tested the adding of multiple objects to ensure the ids were unique and incremented properly. Finally, I included tests for the service classes to handle null pointer and null HashMap cases.
Within the objects – Appointment, Contact, and Task – the requirements included various fields that couldn’t be null and were restricted in length. I created my tests to ensure that each of those fields would pass with valid input and fail with invalid input. This included testing passing and failing cases for both constructors and setters.
I think my JUnit tests were very effective. I did a static review of each class to make sure all requirements were met, as well as a review of my tests to ensure all requirements were being tested for. Additionally, all my tests achieved 100% coverage for their associated classes:
Full repository and individual classes:
- Full repository
- Appointment.java
- AppointmentTest.java
- AppointmentService.java
- AppointmentServiceTest.java
- Contact.java
- ContactTest.java
- ContactService.java
- ContactServiceTest.java
- Task.java
- TaskTest.java
- TaskService.java
- TaskServiceTest.java
Lottery Checker App
This is a personal project I created to track lottery results for Powerball and Megamillions. While gambling is legal in Nevada, the lottery is surprisingly not. Because my wife and I enjoy the fantasy of winning millions of dollars the lottery is one of our indulgences. The closest store is across the border in California, allowing us to buy ten drawings at a time. Rather than check our tickets against ten different drawings, I thought it would be fun to create an app that stores our numbers, downloads results from the web, and calculates winnings.
Creating this app led to me learning how to use ExecutorService for multi-threading and Jsoup for pulling data from HTML on lottery sites. I also used SQLite to store data. In true Agile fashion, I was able to get this app to working, then moved on to other projects. The result is a functioning app that I use on a regular basis, with an appearance of something that has been hastily thrown together. In the future I may clean it up, but since it serves my purposes at the moment, I haven’t gotten to that yet.