* Fixed a bug in the option parsing. When no options (or unknown options) where
presented it was not properly defaulting.
* Fixed a bug when incorrect options where given. Apache Commons CLI fails
entirely when it is unable to parse an option. This means we cannot get the
`--dir` option and we default to the program's working directory. When running
on Nailgun this is not the desired behavior and can cause pit to look through
a very deep file heirarchy to find issues.
* Fixed the bug in FileIssue where it would append a blank line to the body of
an issue every time it wrote the issue to the file. Fixed by making the
parser consume a line break before the property section.
* Fixed PIT CLI -D option sorting of issues so that it will sort issues by
priority, then due date.
* The extended properties table was using the maxKeyLength for both keys and
values.
* FileIssue was not persisting the file when extended properties were updated.
* Added support for extended properties to `Filter`. Unlike the basic
properties, which allow the caller to specify a list of acceptable values, the
extended properties only supports a map of properties, all of which must be
available on the issue and match the given value.
* Made `Issue` a concrete class. There was no reason it could not be a concrete
object. The main difference is that the extending classes all add some sort of
persistence to the issue, but having an in-memory `Issue` in its most basic
form can be useful and should be allowed.
* Changed the default priority for new issues from 9 to 5.
* Bug fix on `FileIssue.formatIssue()`. If was not properly returning its
result leading to failure if no extended properties were given.
* Reworked `FileIssue.formatIssue()` to only print the horizontal rule
seperating the issue text from the extended properties if there are extended
properties to print as well.
* Changed the `FileProject.createNewIssue()` to handle extended properties and
handle the basic properties in a manner more consistent with `Issue`. It is
now creating an `Issue` object and using the `FileIssue.formatIssue()`
function to write that to a new issue file, then loading that file back in as
a `FileIssue`. This cuts down on code duplication and makes it so that the
options map that `FileProject.createNewIssue()` expects is the same as the
options to the `Issue` constructor.
* Fixed a bug in the common build. This bug is fixed in version 1.9, but I am
patching this bug locally in 1.6 until I have evaluated 1.9 with this project.
* Moved `ExtendedPropertyHelp` to `com.jdbernard.pit` from
`com.jdbernard.pit.file`.
* Added a number of property types to `ExtendedPropertyHelp`. New additions are:
* `java.util.Calendar` *object -> string value only*
* `java.util.Date` *object -> string value only*
* `java.lang.Long` *this replaces `java.util.Integer`*
* `java.lang.Float` *object -> string value only*
* `java.lang.Double`
* Cleaned up the `matches(String)` and `matches(Class)` functions of
`ExtendedPropertyHelp`
* Modified `Filter` sorter behaviours. The `issueSorter` and `projectSorter`
fields are now allowed to be either a closure or a list of closures. A single
closure works as it did before. The list of closures allows the caller to
specify multiple sort criteria. The individual criteria closures are applied
in reverse order, so that the first item in the sorter list is the most
significant criteria. For example, if the caller set the sorter to
`[{it.category},{it.priority}]` then the issues would be sorted first by
priority and then sorted again by category, meaning that the resulting data
would be ordered first by the category of the issue and then by the priority
for issues that share the same category.
* Modified the methods in `Project` that use `Filter` objects to conform to the
above behavior regarding sorting. It may be a better idea though to move the
sort code all into `Filter` so that it is in one place.
* Cleaned up the code in `Status` for matching status based on given symbols or
partial status names.
* Changed the `Issue` constructor to use an attribute map instead of an
increasingly long parameter list. Of course we lose some control over required
parameters.
* Added the Joda Time and SLF4J logging libraries.
* Implemented the `FileIssue` constructor for the new `Issue` refactor.
* `Issue` implementation is tentatively complete.
* Started ona direction for implementation with `FileIssue`.
* Revisiting the code for `XmlIssue` to polish it up. The XML code was never
really finished, but it should be for 3.0.x
* Major differences will be with `Issues`. The structure of issues will not be
as tied to the original `FileIssue` implementation and will support arbitrary
attributes.
* Removed 2.6.x files and updated versioning properties.
* Fixed a typo in pit-cli
* Temporarily removed the invocation of pit-swing's build file until I have that
sorted. It was not working.
* `FileRepository` was incorrectly returning the root project's first
set of subprojects for the `getRootProjects()` function, instead of the root
project itself.
* Implemented `walkProject` on `com.jdbernard.pit.Project`
* Updated several classes to fit the new interfaces/abstract classes.
* Still not finished with XML issue repository code.
0013: Hide a new issue after a delay if does not match the viewing criteria.
0022: New 'Bugs' created are not correctly categorized.
0019: Add the ability to change the Issue text size.
libpit - Personal Issue Tracker core libraries (Filter, Issue, Project, Category)
pit-cli - Command Line Interface (CLI) to libpit
pit-swing - Graphical, Swing interface to libpit (built using Griffon)
libpit and pit-swing both build, though pit-swing is just an empty griffon poject.