Project 1.5: EncodingHelper Application

Due Monday 4/13 @ 10:45am 11:59pm, plus a minute. Do this portion with your partner.

Goals

This is the final phase of the EncodingHelper assignment. The goal is to create a bug-free, easy-to-use command-line developer utility, building on your existing back-end development.

Your Task

For this assignment, you will complete an implementation of the EncodingHelper application, as described below.

The EncodingHelperChar class from last time will be a big help, but you will now need to add facilities for parsing the command line arguments and, for some operations, converting strings (not just single characters) into various forms.

You must create at least one new class, EncodingHelper, that contains your main method. You may choose to write all the front-end functionality in this class, or to separate things out into separate classes as you see fit. Your work will be evaluated both on the bug-free behavior of your program, and also on the style and design of your methods.

For example, you might want to write a method that converts a character string into an array or list of EncodingHelper objects. As you design the methods you need, keep in mind the ideas articulated in Steve McConnell's “High-Quality Routines”.

Also, for each non-trivial method you add to your project, you should add at least one unit test method.

Your program should never crash or produce exceptions. Certain internal features of the program produce exceptions, but these should trigger helpful, user-friendly error messages in the program, not arcane stack traces.

Your program must support the baseline features described below, using exactly the command-line syntax given. In addition, your team must implement at least one additional feature, chosen from the list near the bottom of this page.

Example Calls to EncodingHelper

EncodingHelper's Command-Line Syntax

java EncodingHelper [-i type] [-o type] <data>

There are four different input/output types; defaults are marked in green:

typeInputOutput
string
utf8
codepoint
summary

To be clear, the default input type is string, the default output type is summary, and the summary type is not valid for input.

--input should be treated as a synonym for -i, and --output should be treated as a synonym for -o.

Note that your utility should run correctly when called from the command line; you should not rely on your user running this program from IntelliJ!

Challenge Features

In addition to the features described above, you must implement at least one extra feature:

Turning It In

Create a plaintext file called readme.txt in the root directory of your repository (not inside IntelliJ's src directory). In that file, state the names of both people in the pair, and also give a brief description (with explicit usage examples) of the additional feature that you implemented.

Like source-code files, plaintext files should have lines no longer than 80 characters, and should not have tab characters in them.

Submit your program (including the readme file) by committing (and pushing) it to your Bitbucket repository, tagged as phase4_final. Remember to double-check on Bitbucket that your push worked.

Have fun!