Generified comparators, removing redundant casts

Change-Id: I266c7c45501f91c04577d572870e858d2140b171
Signed-off-by: Egon Willighagen <egonw@users.sourceforge.net>

Conflicts:
	src/main/org/openscience/cdk/smiles/SmilesGenerator.java
corrected handling of null value in the TreeNodeComparator. Previous if any node or atom were null the comparator would return '0' which is incorrect. If one is null and the other is not the objects are not equal.

Change-Id: I928a6832ec15cdf5fad67a9dec41bcec51b05db1
Signed-off-by: Egon Willighagen <egonw@users.sourceforge.net>

Conflicts:
	src/main/org/openscience/cdk/tools/HOSECodeGenerator.java
Corrected canonical label sorting in the SmilesGenerator. This canonical labels are long and thus when the difference between two values is taken the result may be larger then the largest possible integer. This in rare cases cause the value to overflow and thus make the comparator non-transitive.

Change-Id: Ibaba56bb5e559bbf250459689e6b0cc5b286fa03
Signed-off-by: Egon Willighagen <egonw@users.sourceforge.net>

Conflicts:
	src/main/org/openscience/cdk/smiles/SmilesGenerator.java
Make sure the tests are also run with JUnit4

Change-Id: Ie304f2f8ea4cba60e4f02f899b9ec70c236912aa
OK, simple fix: reset the test graph before each test method call

Change-Id: Ic581d65471ce29e55f9680a3345158970c346f4a
Replaced subtraction based comparison. When the difference (which is a double) is converted to an integer the result may overflow. This overflow can occur in rare cases but would cause the comparator to be non-transitive.

Change-Id: Ic7deea389f63273202288e6d11cc19af94f08d63
Signed-off-by: Egon Willighagen <egonw@users.sourceforge.net>
Replaced subtraction based comparator. This comparator is unlikely to overflow but the safety of using the equalities ensures the proper behaviour of this comparator.

Change-Id: I4cf311f327e53754e189c5734147a245446495ac
Signed-off-by: Egon Willighagen <egonw@users.sourceforge.net>
Corrected null handling on AtomContainer 2D centre comparison. Previous if either container was null the comparator would incorrectly return '0' indicating they were equal. The method was changed to always provide a minimum Point2d when an atom container is null. This will sort all null containers lower then non-null containers.

Change-Id: I49d919c7d0cf0ea17a65e2a031c1a827bdbbbb50
Signed-off-by: Egon Willighagen <egonw@users.sourceforge.net>
Added unit test for methods related to ShortestPathFingerprint. This include unit test for RandomNumber, SimpleAtomComparator, SimpleAtomCanonicalisation.
Move new classes from standard to fingerprint
Removed redundant cast on comparator
Removed new instance creation on RandomNumber generation. This also required the method was non-static.
Made ShortestPathWalker public and optimised/cleaned path iteration.

The clean path creation does not need to check 'contains' as it is a set and thus all entires are unique.
Optimisations to SimpleAtomComparator. The LinkedList isn't needed and has an added cost and was replaced with an ArrayList. The iterator was replaced with a foreach and the redundant counter was removed (the atoms were always added at their original index [they're also being sorted so order is not important]).
Updated documentation and removed SVN tags. Renamed variables to be more concise and reflect their use.
It is not clear why RandomNumber needs to be serialisable but as the RandomGenerator field is not it has been marked as transient so it is not serialised.
Unified spelling of Canonicalisation to the US spelling (z instead of s) and renamed the class name to be the noun instead of verb.
Updated comparator on AtomPlacer. The comparator now uses the built in Integer comparator. To avoid null pointer exceptions the access to the weight value is wrapped in a private method which return the minimum integer value when the weight is not set (i.e. null).
- Modified getTotalHydrogenCount(IAtomContainer) to actually provide the total hydrogen count. the only classes invoking this are AtomContainerSetManipulator and MoleculeSetManipulator the test on each of these were tested and worked as expected. - Added method to just count implicit hydrogens (as the pervious method actually did) - Modified existing unit test to reflect the change to total hydrogen count - Added three new unit tests for the new implicit method - Added null check and exception throw on new/existing methods

Change-Id: Ic96d8b7fea6546d46c0f8ea329a2cc5a3ba74093
Signed-off-by: Egon Willighagen <egonw@users.sourceforge.net>
Added type check for the atom-atom mapping property.

Change-Id: Iaa4fc3d4b89bb2314b162f9086471eb6cf17b135
Signed-off-by: Egon Willighagen <egonw@users.sourceforge.net>