This release (2.1.0) of JDecisiontable is now available via Sonatype Maven Central. Now you can include this library in you pom file as any other dependency.
I included the signature files in the zip file.
I just re-packed archive JDecisiontableLib_2.1.0 to match the requirements of Sonatype Central Maven Repository, http://central.sonatype.org/.
I am struggling only with a missing signature file yet. I plan to sign all program files in my releases but such a signature is quite expensive.
JDecisiontableLib will be continued using Java!
It should be possible to get the source code for any release by check out from the repository. This should be done by providing a branch for each release. For some earlier releases there were only tags, no branches.
So I added the missing branches i.e. version__1.1.0 for tag version1.1. Tags and branches can not have same names in git so I mainly added underscores. In this single case I added trailing ".0" too.
I removed the old branch checkNodeHasYesInValidRule.
The main reason to release JDecisiontableLib 2.1.0 is that I missed read-only interfaces for the mutable classes Decisiontable, Node and Rule (all in package de.mgmechanics.jdecisiontablelib.dt).
These interfaces, named IRo.* ("Interface for Read-Only access") provide access to all methods which do not alter the state of an object. So these interfaces provide a view to these objects. Using these interfaces you render instances of these classes immutable.... read more
Today I can release JDecisiontableLib 2.0.0!
There are some changes which breaks API compatibility, therefore the new major version. Changes affect the API (easier to use/less confusing now) and the code quality but not the domain-specific algorithms. These remains unchanged!
A major change is the remove of the facility to serialise instances of JDecisiontableLib to JSON. Now, I consider it a mistake to add this facility in a library. Because of some fields changed their names compatibilty to release 1.3.1 would be broken. But I added some interfaces ("ISer.*") and factory methods to enable you to write an adapter to read data serialised that way. You may have a look at JDecisiontable 2.1.0 to see how it could be done.
Recently I started to develop with Eclipse Kepler (version 4.2). I was quite astonished how much warnings it showed up for my code. Usually I trusted on the default configuration of Netbeans. Now I learned that for Netbeans I have to enable additional warnings. Like the javac compiler warnings which I found to be switched off.
I enabled these and moreover I checked my code with PMD and FindBugs. That brought more interesting hints. I improved one weakness after another. Now Findbugs doesn't show up weak points - in the default configuration. I have to learn about this.... read more
Merry and peaceful Christmas to you all!
The developing process in this project goes on. As you see in Code I already made first steps towards a Version 2.0.0.
So I refactored the classes Node, Rule and Decisiontable mostly to get rid of the non-obvious need to run the checks first and then request the recent results. Now these check methods always return a set (and never null). If the set is empty the check was successful.... read more
I decided to apply the MIT licence after reading this helpful article: Closing the Loophole: Open Source Licensing & the Implied Patent License written by Christian H. Nadan.
This release was necessary because of a bugfix. The bug was that it limited the number of decimal places for the probability in the string tables to 3. Becuase probability is measured in percent that means you got 12.3 % where a value of 12.34 % was provided. This doesn't affect the JSON strings. These keep the value with full precision.
Here is JDecisiontableLib 1.3.0.
Main reason for this release are useable facilities for internatinalization (abbr. I18N). This affects only the classes Decisiontable2Table and Testspecification2Table. They got constructors which take custom strings as parameters used as string representations for the objects i.e. "x" for boolean isCondition=true or "" for boolean isCondition=false. The idea behind is that the client application take these strings from property file and provide it via these constructors to JDecisiontableLib.... read more
Making JDecisiontableLib ready for I18N.
For this purpose I am adding some new constructors to provide strings to override default values used to display internal objects i.e. "Y" for Decision.Yes, ">" for Comparison.GT or just the "x" used for Node.isCondition.
The idea behind is, that the client application i.e JDecisiontable will read a property file with language-specific strings and give these strings via the new constructors to JDecisiontableLib.... read more
Delivered! Today I released version 1.2.2 of JDecsiontableLib. As promised in the last blog entry you may create a new decision table by providing a list of node names (= called description in JDecsiontable). Second argument for the new constructor is the number of rules you want.
Furthermore 2 of 3 constructors of class Decisiontable check their arguments before creating the new object and may throw an IllegalArgumentException if the values doesn't fit. The Exception is thrown in a safer way following The CERT Oracle Secure Coding Standard for Java in OBJ11-J.... read more
Currently I'm adding a facility to make creating decision tables from existing work easier.
There are only two options to get a decision table now: 1) create a blank decision table or 2) load a decision table made with this library. What about if you have already a decision table as spreadsheet or have at least the names/descriptions for the nodes a text in some document? Do you really need to copy-and-past each one?... read more
Today I released version 1.2.1 of de.mgmechanics.JDecsiontableLib. These are the improvements in brief:
checkFailed flag was not reset automatically for nodes
" 1) BUGFIX: Decisiontable.checkNoNodeWithDontcareOnly() did not reset checkFailed flag automatically before doing the check. This affected also Decisiontable.checkNumberOfRules() and Decisiontable.runAllChecks() because they call Decisiontable.checkNoNodeWithDontcareOnly()." Version 1.2.0 is - as an exception - still available in folder "Legacy" because some methode were deprecated in version 1.2.1.... read more
To keep things more obvious I removed the folder "Help" and created the folder "Legacy".
The folder Legacy will contain all versions but the last version and version which had bugs. There will be also documentation for this versions tagged with version number. Versions with bugs will be removed from download.
The root folder will contain always the latest version together with documentation and essential text files. Please note that there is much more documentation regarding this library in the project JDecisiontable!... read more
The most important change is change 5:
The flag Rule.isDisjunctCheckFailed is now transient, that means it will appear NO LONGER in the JSON string. Thus, the JSON strings generated by this library are - for same decision table - different to the JSON strings generated by version 1.1 and 1.1.1 of this library.
But you should get valid objects for any version this library using JSON strings prepared with any version of this library. This was successfully tested with JSON strings made with version 1.0, 1.1 and 1.2.0.... read more
Today I released version 1.1.1.
Main reason for this release is this bugfix:
Decisiontable.getRulesNotDisjunct() did not report - as expected the first two rules which are not unique (if such rules were found by Decisiontable.checkRulesForBeingDisjunct() - but the first two rules being disjunct! Was were no testcases to cover this usecase? - Of course there was (and still are)! But this bug would not discovered by this testcases because they was wrong. The author apologize for any inconvienance! This happened around inverting the meaning of the flag which is handled by Rule.getDisjunctCheckFailed() / Rule.setDisjunctCheckFailed(). The author apologizes for any inconvenience.... read more
Today I released version 1.1.
Main reason for this release is the ability to return the numbers of first two rules which are not disjunct after the check if all rules are disjunct was done.
This feature is used by JDecisiontable version 1.1 which uses this library in version 1.1.
Please not that this ability requires a new flag in the class Rule which necessarily results in a different JSON string which results in a different file format. But the Version 1.1 can deal with all files created by version 1.0 - I have tested this.... read more
There is a new release candidate because I made a change and a improvement. Both affects the class Rule.
Change: While playing with JDecisiontable application http://sourceforge.net/projects/jdecisiontable (which uses this library) I found that one would create invalid decision tables while using Rule.setLastYesToNo(). Use Case (RC-2):
JDecisiontableLib-1.0-RC-1 has a bug: It was possible to instantiate an object from class rule with less than zero decisions. I fixed it with JDecisiontableLib-1.0-RC-2.
Furthermore I fixed some bugs in the javadoc.