Version | Date | Description |
---|---|---|
1.06.31 | 2022-02-08 | djunits update |
1.06.30 | 2022-01-22 | Throw.throwUnchecked() method added |
1.06.29 | 2022-01-10 | csv reading / writing; expanded test coverage in djutils-draw |
1.06.28 | 2021-09-16 | Additions to djutils-draw |
1.06.27 | 2021-08-17 | Fix and add in djutils-stats |
1.06.26 | 2021-07-19 | Surface3d class in djutils-draw, FixedBinsAccumulator in djutils-stats |
1.06.26 | 2021-06-22 | Better precondition checking in djutils-draw |
1.06.25 | 2021-06-14 | Added 2d convex hull implementation to djutils-draw |
1.06.24 | 2021-04-08 | Java generic hierarchy of draw classes modified |
1.06.23 | 2021-03-21 | Changed filtering instantiate method into a constructor |
1.06.22 | 2021-03-14 | wrote Complex class and PolynomialRoots class |
1.06.21 | 2021-03-05 | replaced all DrawExceptions by DrawRuntimeExceptions |
1.06.20 | 2021-03-03 | new methods in line package |
1.06.19 | 2021-02-23 | Javadoc of Ray, Bezier create controlPoints fix |
1.06.18 | 2021-02-22 | ToString methods, Ray3d epsilonEquals getPoints, Bounds from arrays and collections |
1.06.17 | 2021-02-20 | Bounds reverted to original behavior |
1.06.16 | 2021-02-18 | Project error in Polygon3d and error in Ray3d.flip |
1.06.15 | 2021-02-16 | Rounding error in PolyLine3d |
1.06.14 | 2021-02-16 | Rounding error in PolyLine3d |
1.06.13 | 2021-02-15 | Project now implemented in all line types |
1.06.12 | 2021-02-11 | Project now implemented in all line types |
1.06.11 | 2021-02-08 | Fixed rounding problem in PolyLine3d.getLocation |
1.06.10 | 2021-02-05 | Made phi and theta public in the Ray classes |
1.06.09 | 2021-02-04 | Centralized projection methods, more flexible toString methods |
1.06.08 | 2021-01-28 | Polygon2d and Polygon3d added |
1.06.07 | 2021-01-23 | Fixed rounding problem in AngleUtil; Ray; OrientedPoint |
1.06.06 | 2021-01-02 | Fixed ulp-error in time weighed statistics |
1.06.05 | 2020-12-29 | Added methods to Point and Bounds interfaces in djutils-draw |
1.06.04 | 2020-12-28 | Added midPoint methods to Bounds objects in djutils-draw |
1.06.03 | 2020-12-24 | Added circleIntersections and directionTo methods to djutils-draw |
1.06.02 | 2020-12-22 | Added intersectionOfLines method to djutils-draw |
1.06.01 | 2020-12-21 | Made .x, .y and .z of Point accessible in djutils-draw |
1.06.00 | 2020-12-20 | Additional way to interpolate angles; djutils-draw first version |
1.05.04 | 2020-08-22 | EventInterface and EventTypeInterface used in a consequent manner |
1.05.03 | 2020-07-27 | TraceVerifier added |
1.05.02 | 2020-05-16 | Changed CSVReader/Writer |
1.05.01 | 2020-05-05 | EventType and TimedEventType separated |
1.04.21 | 2020-05-05 | MetaData construction with varargs |
1.04.20 | 2020-05-03 | Added float and char payload for the fireEvent method |
1.04.19 | 2020-04-19 | Metadata and ObjectDescriptor updates |
1.04.18 | 2020-04-18 | Metadata expansions and fixes |
1.04.17 | 2020-04-06 | Metadata fixes |
1.04.16 | 2020-04-06 | Metadata fixes and expanded use |
1.04.15 | 2020-04-03 | Metadata and Java-8 compatibility |
1.04.14 | 2020-03-08 | timed events for timestamped statistics |
1.04.13 | 2020-03-07 | extra events in djutils-stats; statistics formulas |
1.04.12 | 2020-03-03 | several fixes in djutils-stats |
1.04.11 | 2020-03-03 | djutils-data project added; Immutable.of() methods |
1.04.10 | 2020-02-29 | djutils-stats project added; djutils-parent project for pom |
1.04.09 | 2020-02-10 | MultiKeyMap added; EventType equals() and hashCode() |
1.04.08 | 2020-02-08 | EventProducer access to listeners |
1.04.07 | 2020-02-07 | EventProducerImpl; RemoteEventProducer; Profile class |
1.04.06 | 2020-02-04 | CliUtil for subclasses |
1.04.05 | 2020-01-24 | Comparator immutableTreeset; new units for serialization |
1.04.04 | 2020-01-19 | EventProducer uses Serializable sourceId |
1.04.03 | 2020-01-17 | RMIUtils, RMIObject and RemoteEvent updates |
1.04.02 | 2020-01-05 | EventProducer cleanup; Logger updates |
1.04.01 | 2019-12-31 | EventProducer serializability |
1.04.00 | 2019-12-30 | DSOL Event package added to DJUTILS |
1.03.02 | 2019-10-31 | SpotBugs instead of FindBugs in Maven |
1.03.01 | 2019-10-25 | Updated DJUTILS to version 4 |
1.03.00 | 2019-10-19 | @Generated annotations in code in djutils-cli |
1.03.00 | 2019-10-19 | Little Endian (de)serialization; use of djunits v4 |
1.02.03 | 2019-09-14 | CliUtil.execute with CommandLine object; unit tests |
1.02.02 | 2019-08-16 | Resolving annotations |
1.02.01 | 2019-08-13 | CLI helper methods, ClassFileDescriptor |
1.02.00 | 2019-08-11 | djutils-ext project added; CLI code |
1.01.03 | 2019-07-04 | byte[][] serialization repaired |
1.01.02 | 2019-07-02 | ImmutableLinkedHashMap.values() repaired |
1.01.01 | 2019-07-01 | ImmutableLinkedHashMap repaired; serialization of UTF-8, UTF-16 |
1.01.00 | 2019-06-21 | djutils-serialization project added |
1.00.06 | 2019-05-10 | EntrySets added; caching of keySet, values in Map |
1.00.05 | 2019-02-26 | ImmutableCollections class added |
1.00.04 | 2019-01-29 | Removed logger Cat class |
1.00.03 | 2018-12-18 | DecoderDumper package |
1.00.02 | 2019-01-17 | ConditionalLogger, HexDump |
1.00.01 | 2018-12-15 | Means package |
1.00.00 | 2018-11-17 | Initial release |
Type | Changes | By |
---|---|---|
![]() |
Bumped djunits version to 4.01.08, and picocli to 4.6.2. Changed picocli javadoc location to github. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
The Throw.throwUnchecked() method has been added to throw exceptions in case these exceptions cannot be part of the signature of the method, e.g., because the class of the method extends a method that does not have the exception in its signature and cannot be changed. | averbraeck |
![]() |
The float128 package has been removed as it is still unfinished. It might get its own djutils project in the end. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
The Transform2d and Transform3d were only partially tested because it was rather hard to set individual elements of the internal matrix. The new tests work around that problem using reflection. | pknoppers |
![]() |
Version 2 of the fastcsv utility has been used in djutils-data. This version makes a difference between csv files with (using named columns) and without (using numbered columns) headers. | averbraeck |
![]() |
pom file updated with pluginRepositories tag. | averbraeck |
![]() |
Copyright year updated to 2022. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
PolyLine2d and PolyLine3d now have additional constructors that allow construction of a one-point PolyLine that has a sense of direction at that point. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
DistNormalTable getCumulativeProbability ran into problems when sigma == 0 and x very close to mu. | pknoppers |
![]() |
All accumulators now implement getCumulativeProbability, | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
Initial version of FixedBinsAccumulator (and unit test) in djutils-stats. | pknoppers |
![]() |
Initial version of a 3D surface encoding class (and unit test). | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
Various constructors now have explicit tests for null pointers (and the unit tests verify that these exceptions happen when expected). | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
The new class contains only static methods that return a Polygon2d object on success. If the result would be a single point; the implementations throw a DrawRuntimeException because a single point does not make a valid Polygon2d. | pknoppers |
The Complex class now implements its own hypot function which uses Math.fma. On CPUs not implementing that in hardware this will be horribly slow. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
Major change in the djutils-draw generics hierarchy. There is no longer a Space interface and not longer a Space2d, or Space3d class. What was in there has been moved to the Drawable interfaces. | pknoppers |
![]() |
Fixed a small issues in the Try.testFail() method, where it would not catch an exception that is thrown when no allowed exception was specified. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
The PolyLine2d and PolyLine3d classes had static methods to construct a new instance while filtering out successive identical points. These have been replaced by constructors that take a boolean parameter that controls whether such filtering will take place. The Polygon2 and Polygon3d classes have new, similar constructors. | pknoppers |
![]() |
Several other polynomial root solvers have been added to the PolynomialRoots2 class. Examples are the methods of Cardano, Aberth-Ehrlich, and Durand-Kerner. The latter two methods are applicable for any n-th order polynomial, and also work with complex factors. | averbraeck |
![]() |
Preliminary code to work with floating point variables of higher precision than the double has been added to the djutils class. This code for the Float128 and DoubleDouble class is untested and in a very early development stage. Don't use yet! | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
Converted the PolynomialRoots code of ACM 954 from Fortran to java. Wrote unit test that test about 86% of the code. Wrote Complex class to store the results of the solvers in PolynomialRoots. With unit tests that cover 100%. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
Replaced all DrawExceptions by DrawRuntimeExceptions. | pknoppers |
![]() |
The DrawException class has been removed | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
Many cases where a DrawException was thrown now throw a DrawRuntimException. | pknoppers |
![]() |
New method to gradually transition from one PolyLine to another PolyLine: transitionLine. | pknoppers |
![]() |
Moved OTS offsetLine methods into PolyLine classes. | pknoppers |
![]() |
Lambda approach replaces makeX, makeY, etc. in constructors of PolyLine and Polygon objects. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
Javadoc of Ray used wrong wording. | pknoppers |
![]() |
Bezier.createControlPoints wrongly used closestPointOnRay, now uses projectOrthogonalextended. | pknoppers |
![]() |
Removed unneeded methods from Point2d and Point3d classes. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
Bounds are a bit more versatile and more of the functionality is specified in the interface. | pknoppers |
![]() |
All toString methods now format floating point values using Locale.US to ensure use of a consistent radix symbol. | pknoppers |
![]() |
The Ray3d.epsilonEquals method failed to allow a family of alternative ways to express effectively the same Ray3d. | pknoppers |
![]() |
Bounds objects can now also be constructed using a varargs constructor or a Collection. | pknoppers |
![]() |
The toString method of a Ray3d only printed x, and y (not z). | pknoppers |
![]() |
The getPoints of Ray2d and Ray3d returned only one point and did not override size(). | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
Bounds report absolute extent again with the getMin[XYZ] and getMax[XYZ] methods. getDelta[XYZ]() report the relative extent. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
Bounds now report relative extend with the getMin[XYZ] and getMax[XYZ] methods. | pknoppers |
![]() |
Polygon3d must override project, or the result is a PolyLine2d. | pknoppers |
![]() |
Ray3d.flip sets the theta to the complement of the original theta; not increment it by pi. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
This is the 2nd attempt at fixing the rounding error in PolyLine3d. | pknoppers |
![]() |
Fixed typo in error message. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
Fixed a problem (that was already fixed in PolyLine2d) in getLocation where the position was an ULP before the length of the line, or the position of an intermediate point. | pknoppers |
![]() |
Fixed typo in error message. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
Made the projectOrthogonal methods more consistent. There were many cases where the behavior was not logical. The LineSegment classes not implement toExcel; the lineSegment2d class implements toPlot. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
LineSegment, PolyLine and Ray types now implement the project interface. | pknoppers |
![]() |
More centralized implementation of code that finds closest point on a line(segment). Replaced lots of getX() calls by this.x; etc. to make debugging easier. Fixes in javadoc where class names were not correct after earlier rename operations. PolyLine3d.createAndCleanLine3d is now named PolyLine3d.createAndCleanPolyLine3d. Fixed error in computation of theta in Ray3d (and corresponding errors in the unit tests). | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
The getLocation method could fail to construct a ray when the position is exactly at one of the points of the line. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
The internal values of theta (Ray3d) and phi (Ray2d and Ray3d) are now public. (Like the rotations in the OrientedPoint classes). | pknoppers |
![]() |
The Ray classes now implements a flip method that inverts the direction, but does not change the location. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
Fixed lots of code duplication that determined the closest point on a line, line segment, or ray. The toString methods now have a systematic way to provide a format argument and to suppress printing the class name (for extra compact output). | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
Closed Polylines aka Polygons in 2d and 3d have been added to djutils-draw. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
AngleUtil.normalizeAroundZero mapped Math.PI to -Math.PI. The fix ensures that Math.PI is mapped to Math.PI (and -Math.PI is now mapped to Math.PI). This implementation makes slightly more sense considering that Math.cos(Math.PI) > 0. | pknoppers |
![]() |
In djutils-draw, DirectedPoint has been replaced by OrientedPoint since a direction (vector) does not include rotating around the x (or longitudinal) axis. The Oriented interface replaces the Directed interface. | pknoppers |
![]() |
In djutils-draw, in order to indicate different lines, the LineSegment (bound by 2 points), Ray (bound by one point), and Line (stretching infinitely in both directions) have been introduced. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
Some of the time weighed statistics in djutils-stats indicated wrongly that the next observation was before the previous observation. The problem was in the following statement in TimestampWeightedTally: <br>Throw.when(timestampDouble < (this.elapsedTime + this.startTime), IllegalArgumentException.class,<br> "times not offered in ascending order. Last time was " + (this.elapsedTime + this.startTime)<br> + ", new timestamp was " + timestampDouble);<br> The problem is that the addition can be one ulp off as compared to the timestamp that might have been calculated in another way. It has been repaired by using: timestampDouble < this.lastTimestamp. | averbraeck |
![]() |
Made checkstyle more strict on javadoc to comply with JDK8+ compiler settings. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
Added getX(), getY(), and several other methods to the Point interface. Added getMinX(), getMinY(), getMaxX(), getMaxY(), and several other methods to the Bounds interface. Added getRotZ() method to the Directed interface. These changes make it easier to use the Point<?, ?> and Bounds<?, ?> interfaces in other projects such as DSOL. | averbraeck |
![]() |
Added getter with safe copy of the affine transformation matrix in Transform2d and Transform3d in djutils-draw. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
Added midPoint method to Bounds2d and Bounds3d classes. | pknoppers |
![]() |
Added Bounds interface for Bounds2d and Bounds3d classes, to be able to check if an objects is a Bounds. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
Added circleIntersections to Point2d class. | pknoppers |
![]() |
Added directionTo method to Point2d class. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
Added intersectionOfLines to Point2d class. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
Made the fields x, y (and z) accessible in Point2d and Point3d to make code that use the Point look cleaner. The methods getX(), getY() (and getZ()) also stay available. | averbraeck |
![]() |
Turned on checkstyle for the djutils-draw project. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
Interpolating (and extrapolating) angles could only be one with clockwise interpolation. A new method interpolateShortest is now available that takes the shortest way around. | pknoppers |
![]() |
Filled most of the classes for Point, PolyLine and Bounds in 2d and 3d in djutils-draw. | pknoppers |
![]() |
Added neutral project for drawing: djutils-draw. | averbraeck |
![]() |
Added a class AngleUtil to normalize angles around zero or around pi in the package org.djutils.base. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
The EventInterface and Event were used in a mixed way in the event package. Same for EventType and EventTypeInterface. For TimedEvent and TimedEventType, no interfaces were present, leading to a further asymmetry. All event methods now act on the interface, and return interfaces instead of implementations of the Events and EventTypes. | averbraeck |
![]() |
The TraceVerifier class threw a java.util.FormatFlagsConversionMismatchException for the error string instead of a regular RunTimeException showing the mismatch. This has been repaired. | averbraeck |
![]() |
The TraceVerifier class now throws a TraceVerifierException instead of a generic RunTimeException. | averbraeck |
![]() |
Javadoc comments updated to contain correct types of parameters. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
The TraceVerifier creates or verifies a file containing a series of traced events. When the file does not exist, it is created and each traced event is written to the file. If the file does exist, it is read and each traced event is compared to the corresponding event in the file. On a mismatch a RuntimeException is thrown. To use, create a TraceVerifier object in the class that is to be traced. In a method where you expect a fixed sequence of events, but suspect that this may not be true ()due to, e.g., a race condition), add a call to the sample method of the TraceVerifier. Then run the program repeatedly. The first run will create the trace file, all subsequent runs will compare what happens to the contents of the trace file. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
The OpenCSV package had over 5 MB of imports, such as commons-lang3, commons-text, commons-beanutils, commons-collections, commons-collections4, and commons-logging. Instead, the very small and faster fastcsv package has been used, which has no further dependencies and is only 16 kB. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
The EventType and TimedEventType are now two SEPARATE classes, both extending from AbstractEventType and implementing the EventTypeInterface. This allows for the fireTimedEvent(...) methods to ONLY accept TimedEvents of type TimedEventType. A TimedEvent is not a subclass anymore of Event. This breaks compatibility, but ensures a much stricter compliance to the fact that TimedEvents and ordinary Events are different and have a different signature. | averbraeck |
![]() |
The AbstractEventType constructor accepts an optional argument specifying the valid Event type for the event to be fired. As an example: when a TimedEvent is expected, the fire(Event) method of an EventProducer should fail when the argument is not a TimedEvent or a subclass of TimedEvent. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
The MetaData constructor has changed to a varargs parameter for the object descriptors, making it easier to construct metaData objects with zero or one descriptor. The construction with new ObjectDescriptor[] {...} of course remains possible. | averbraeck |
![]() |
The MetaData constructor now fires a NullPointerException if one of the ObjectDescriptors is null. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
The float and char primitive types were missing as allowed payloads for the fireEvent and fireTimedEvent methods. Methods have been added to the classes EventProducer, EventProducerImpl and RemoteEventProducer. | averbraeck |
![]() |
It is now possible to turn off verification of the fields of each individual event, which can be useful for high-frequency events. The method to verify uses the isAssignableFrom(...) method that could be quite expensive. The fireEvent methods in EventProducerImpl have an extra boolean for verification (true by default). | averbraeck |
![]() |
The EventProducer, EventProducerImpl and RemoteEventProducer got extra methods to be able to fire unverified events as well. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
An extra EventType constructor has been added to not have to duplicate the event type name in the metaData object. | averbraeck |
![]() |
MetaData and ObjectDescriptor have equals() and hashCode() methods. | averbraeck |
![]() |
MetaData has a getObjectDescriptors() method that returns a clone of the object descriptors. | averbraeck |
![]() |
The NO_META_DATA static constant has been moved to the MetaData class. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
MetaData and ObjectDescriptor are now serializable. EventType constructor with no metaData argument is now deprecated. The constructor with a metadata argument no longer takes a null pointer for that argument. There is a NO_META_DATA value that can be used in case no meta data can be provided. This should only be used in case the payload has a varying composition, but it can also be abused in case the program writer is too lazy to provide decent meta data (as is the case in many of our unit tests). EventProducing collections now put the (unchanged) size of the collection in the OBJECT_CHANGED_EVENT events. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
MetaData now permits null pointers for the arguments that it verifies. Renamed some methods (Field is now Object). | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
MetaData was not 100% correct in the previous version. Some methods were not public (and should have been). Metadata can now also handle single object payload (not requiring an Object[]). The stats package now uses MetaData verification of the payload of the events. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
Added package metadata. Events can now verify their payload using the metadata. Specification of metadata is done in the constructor of EventType. For now a null pointer is permitted for the MetaData argument, but that is only during the transition phase. | pknoppers |
![]() |
Unit tests of djutils are made compatible again with Java-8. Several functions of Java-9 and Java-11 were used. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
The timestamped statistics now fire TimedEvents rather than normal events. | averbraeck |
![]() |
In case an class extending one of the EventBased statistics wants to fire its own events, or fire the events in a different way, it can override the protected method 'fireEvents()'. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
Changed the package structure of the events a bit by moving the generic classes to the 'stats' package, and the event-based classes to a separate 'summarizers.event' package. | averbraeck |
![]() |
Created a generic StatisticsEvents class for the 'OBSERVATION_ADDED_EVENT' and 'STATISTIC_INITIALIZED_EVENT'. Added more specific events for 'WEIGTHED_OBSERVATION_ADDED_EVENT' and 'TIMESTAMPED_OBSERVATION_ADDED_EVENT'. | averbraeck |
![]() |
Ensured that specific events about every statistics value can be fired by the EventBased statistics. This can be used to, e.g., create a graph of the observed (weighted) sample mean over time, or to update a specific statistics value on the screen. | averbraeck |
![]() |
Made a number of small changes to the calculation of the kurtosis and skewness. Separated excess kurtosis from regular kurtosis and added formulas for both. | averbraeck |
![]() |
Added the term 'Population' to the calculation of the (biased) statistics that work on the basis of the full population of values. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
Renamed getWeightedSampleStdDev to getWeightedSampleStDev in EventBasedTimeStampWeightedTally and EventBasedTimestampWeightedTally. Added getSampleMean to TimestampTallyInterface. Added getWeightedMean to TimeStampTallyInterface. Added getWeightedStDev and getWeightedVariance to EventBasedTimestampWeightedTally and TimeStampWeightedTally. Fixed error in getWeightedSampleMean in WeightedTally. Augmented unit test to re-achieve 100% coverage. | pknoppers |
![]() |
Removed some 'final' qualifiers for methods so they can be extended, e.g. in the dsol project. Made the various TallyInterfaces public so they can be used outside of the djutils-stats project. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
The djutils-data project contains classes for sampling, storing and retrieving statistics data. For now, the main data type is a data table with column heading information and records. | wjschakel |
![]() |
Separate packages to read/write the tables from the djutils-data project have been added for: JSON, XML, and csv/tsv. Specific (de)serializers have been added for primitive types, Number types, String, DoubleScalar types and FloatScalar types. | averbraeck |
![]() |
static 'of' methods have been added to the Immutable collections, to have an easy instantiation method for the collections. Example: ImmutableMap<Integer, String> map = ImmutableMap.of(1, "value1", 2, "value2"); These static methods have been added to: ImmutableList, ImmutableSet, ImmutableSortedSet, ImmutableMap, and ImmutableSortedMap. The maps can take up to 8 key-value parameters, whereas the sets and lists can take an unlimited number. | averbraeck |
![]() |
The Tally now has methods to request the skewness and kurtosis of the provided data. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
The djutils-stats project contains data summarizers such as the Counter, the Tally, and the WeighedTally. The original classes Counter, Tally and Persistent from dsol-core have been generalized and improved. | pknoppers |
![]() |
A class called DistNormalTable has been added to calculate the cumulative values of the cumulative normal distribution. This replaces an older and less precise table from dsol-core. A project called djutils-generator has been added that contains a class to generate this table. | pknoppers |
![]() |
For the new classes in djutils-stats, EventBased versions have been created that can receive the data via a notify() method. | averbraeck |
![]() |
Because of the increasing number of sub-projects in djutils, a parent pom project has been added called djutils-pom. This project contains all version numbers, dependencies and definitions for the derived djutils projects. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
Added the MultiKeyMap to djutils (comes from ots.core.gtu.NestedCache in a less generic form). MultiKeyMap implements a map with multiple keys. | pknoppers |
![]() |
In order to prevent name clashes for the EventType, the full name of the class from which the EventType was defined (usually in the clinit method) is added to the equals() and hashCode() methods of the EventType. In that way, EventTypes that are the same will be unique, but EventTypes with just the same name but defined in different classes will be different. The reason why this is important is because remote events that use EventTypes can have multiple versions of the same public static final EventType: one the is defined in the client, and one that is defined via the network. These will have different addresses in memory but they share the same class and name info, so equals() will yield true. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
Added a protected method to the EventProducer to return a safe copy of the list of (strong or weak) references to the registered listeners for a provided event type, rather than exposing the internal 'listener' object. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
The EventProducer classes uses a helper class EventProducerImpl to do the real work, to avoid code duplication. | averbraeck |
![]() |
The RemoteEventProducer class lacked implementation of the fireEvent and fireTimedEvent protected methods. These have been added and linked to the EventProducerImpl class to do the work. | averbraeck |
![]() |
Added the Profile class to DJUTILS (moved it out of the ots-core project). Contains profiler code for methods or parts of methods. | pknoppers |
![]() |
More extensive tests of the Try class and the URLResource class added. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
CliUtil in djutils-ext had problems with changing the default option values for subclasses, where the options were defined in a superclass. The key under which the overrides are stored in CliUtil have been changed to the actual class where the option was defined, both in storing and in retrieving the override. Tests in the TestCLI unit tests check the new behavior. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
Added the three new DJUNITS units AngularAcceleration, AngularVelocity and Momentum to djutils-serialization. | pknoppers |
![]() |
The subSet, headSet and tailSet methods of ImmutableTreeSet would use the default comparator of the data type instead of inheriting the comparator of the underlying set. This bug was discovered while writing thorough unit tests. The documentation of (non-immutable) TreeSet is not clear about whether the subSet and friends should inherit the comparator, but the implementations in the java Collections framework do inherit the comparator. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
In contrast with earlier implementations of the Event package, a sourceId is sent over the network rather than a pointer to the source itself. This has several advantages: <ol><li>The object extending the EventProducer does not have to be Serializable itself</li> <li>There is no risk that the entire EventProducer object gets serialized (including subclasses) and is sent over the network</li> <li>The receiver of an event does not get a pointer to the sending object</li> <li>The receiver of an event is still able to identify the sending object</li></ol> | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
New version of generated code in TestCLIUnitConverters.java. New units in CliUnitConverters. | pknoppers |
![]() |
The classes RMIUtils and RMIObject have been added to make it easier to work with remote objects. | averbraeck |
![]() |
RemoteEventProducer and RemoteEventListener extend RMIObject to select the host and port of the RMI registry. Therewith the remote event handling has become a lot more flexible. | averbraeck |
![]() |
EventProducer is not an abstract class anymore, as it does not contain any unimplemented methods and because it is used as an embedded class in the RemoteEventProducer. | averbraeck |
![]() |
Demanded that the fields of the Event and TimedEvent are serializable, so they can be sent over the network or stored on disk by serialization. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
Removed various redundant synchronized blocks from EventProducer.java (method was already synchronized). | pknoppers |
![]() |
More complete nullPointer checks in EventProducer.java; Javadoc cleanup in EventProducer.java | pknoppers |
![]() |
Removed the ConditionalLogger from the CategoryLogger and transfered the when(...) functions to both the static Logger and the DelegateLogger class. | pknoppers |
![]() |
DelegateLogger did not consider the LogLevel correctly in deciding whether a message needed to be logged. This has been repaired. Every logging method now first checks whether the indicated log level is included in the log levels that need to be shown. | pknoppers |
![]() |
CategoryLogger now has methods for adding and removing Writers, and listing which writers are available. | pknoppers |
![]() |
Expanded unit tests for CategoryLogger and EventProducer. | pknoppers |
![]() |
The explicit setting of log level and message formatter on individual writers in the CategoryLogger now works as intended. The setAllLogMessageFormat and setAllLogLevel methods in the CategoryWriter reset the values for each individual Writer, as well as the global standard for next writers to be registered. | averbraeck |
![]() |
ClassUtil had a method called changeAnnotationValue to change the value of an annotation field value. This method made changes to an internal data structure that is not intended to be altered. From Java-13 onwards a warning appears in the console for manipulating this data structure. Therefore the method has been removed. | averbraeck |
![]() |
The CliUtil class in djutils-ext used the changeAnnotationValue method from ClassUtil. Instead of changing the internal data structure of the annotations, an override map is now used to store the changes. This also ensures that the code structure is reentrant: no structural changes have been made to the appearance of the loaded code (which the changeAnnotationValue method did in a sense). | averbraeck |
![]() |
Methods to read the (overridden or original) program version, program name and program description in @Command have been added to CliUtil. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
The EventProducer had a non-transient semaphore object, rendering it non-serializable. The lock has been replaced by a lock on the listeners object instead. The lock has been applied more consistently in the code to avoid ConcurrentModificationExceptions. | averbraeck |
![]() |
All Dumper classes in DecoderDumper now use UTF-8 to dump the data, to ensure reproducibility of the code across platforms. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
The event package for pub/sub, originally the dsol-event package, has been added to DJUTILS and will be removed from the next version of DSOL. | averbraeck |
![]() |
Many open issues in the DSOL event package has been fixed in the port to DJUTILS. Examples are adding equals and hashCode methods for the TimedEvent, better writeObject and readObject methods for the EventListenerMap, repair of the failure to sometimes remove an EventListener from the EventProducer, etc. | averbraeck |
![]() |
Almost full unit test coverage has been added to the djunits event package. | averbraeck |
![]() |
The event producing collections in the event.util package now only fire events when additions or removals actually took place, not just when the add / remove / put methods are called. | averbraeck |
![]() |
The EventProducingCollection, EventProducingList, EventProducingMap and EventProducingSet in the event.util package also fire events when content in the collections has changed. In that case, a CHANGE_EVENT is fired. | averbraeck |
![]() |
The events of the event producing collections in the event.util package now have events that carry a payload. The payload is the new number of entries in the collection for the ADD_EVENT and REMOVE_EVENT. The event's content is equal to null for the CHANGE_EVENT. | averbraeck |
![]() |
Since the boolean for strong versus weak references in the EventProducer was always unclear (does true mean strong or weak?), it has been replaced by an enum. | averbraeck |
![]() |
Several of the underlying data structures of the djutils package have been changed from a HashMap to a LinkedHashMap and from a HashSet to a LinkedHashSet to guarantee reproducibility of results. As an exception the ImmutableHashSet and ImmutableHashMap are still backed by unlinked variants, as they explicitly are not reproducible. | averbraeck |
![]() |
DJUNITS updated to 4.01.03. | averbraeck |
![]() |
Extensive unit test coverage has been added for the ClassUtil class. Several errors have been repaired, and the signature of a number of methods has changed slightly (getAllMethods returns a List rather than an array, for example). | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
Ensured that "package-list" exists in apidocs for backward compatibility of javadoc linking. | averbraeck |
![]() |
Replaced FindBugs (which already had a problem supporting Java 8) with SpotBugs (supporting later Java versions as well). | averbraeck |
![]() |
DJUNITS updated to 4.01.01. | averbraeck |
![]() |
Included jakarta.annotation-api to be compatible with Java 11+. | averbraeck |
![]() |
tt-tag in javadoc replaced by code-tag to be compatible with HTML-5 and Java-11+. | averbraeck |
![]() |
javadoc source version 8 added to pom-file to be compatible with Java-11+. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
DJUNITS updated to 4.01.00. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
CliUnitConverters in djutils-ext have been regenerated. A @Generated tag has been added to each generated method. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
Little-Endian types have been removed as FieldTypes in djutils-serialization. Instead, messages that need to be decoded can indicate whether they want to (de)code as Little-Endian or Big-Endian. By default, following Java standards, djutils-serialization encodes in Big Endian (network byte order). | averbraeck |
![]() |
DJUNITS has been updated to version 4.00.04, bringing major changes to the way vectors and matrices are stored and processed. | averbraeck |
![]() |
As a result of moving to DJUNITS-4, the Money units with their special encoding have been removed temporarily. This also holds for the MoneyPerUnit types. | averbraeck |
![]() |
As a result of moving to DJUNITS-4, several new types have been added to the possible units to use: AbsorbedDose, AmountOfSubstance, CatalyticActivity, ElectricalCapacitance, ElectricalConductance, ElectricalInductance, EquivalentDose, Illuminance, LuminousFlux, LuminousIntensity, MagneticFluxDensity, MagneticFlux, and RadioActivity. | averbraeck |
![]() |
The package structure for djutils-serialization has been updated. Complex (de)serializers have been coded in their own classes rather than in an inline class. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
CliUtil in djutils-ext now has a method call with a CommandLine object. This enables e.g., the registration of custom parameter converters. An example and test is provided in TestCLIRegisterConverters.java in the test package. | averbraeck |
![]() |
Added unit tests for djunits converters for the CLI package. Dimensionless can also parse just a number. | averbraeck |
![]() |
Unit tests with System.exit() were failing in Maven surefire. Surefire documents that System.exit() calls cannot be tested. Therefore a Security Manager has been implemented in the test class ExitHelper for these tests that catches the System.Exit and turns it into an ExitException. | averbraeck |
![]() |
Repaired the code for the ClassFileDescriptor for paths with spaces. | averbraeck |
![]() |
Added a unit test to see if folders with spaces can be found for the ClassFileDescriptor. | averbraeck |
![]() |
Repaired a bug for folders with spaces for the ClassFileDescriptor. | averbraeck |
![]() |
Added unit tests for ClassUtil. | averbraeck |
![]() |
Repaired a number of bugs and changed some code in ClassUtil. It does not make sense to resolve constructors of superclasses, as only constructors of a class to be instantiated can be called. Therefore all code that deals with constructors in superclasses has been removed. | averbraeck |
![]() |
The methods in ClassUtil that deal with visibility from a callerClass now throw an IllegalAccessException when the method/field/constructor is not visible from the callerClass and a NoSuchMethodException or NoSuchFieldException when the method/constructor/field cannot be found. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
ClassUtil has resolveAnnotation methods. | averbraeck |
![]() |
CliUtil also resolved @Command and @Option annotations in a superclass. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
ClassUtil got extra methods to retrieve information about a class file, e.g. the last changed date. | averbraeck |
![]() |
CliIUtil has been renamed to the correct CliUtil. | averbraeck |
![]() |
Several helper methods have been added to CliUtil to change some of the @Options and @Command settings. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
A project for more utility classes that require more dependencies called djutils-ext has been added. | averbraeck |
![]() |
Classes for Command Line Interface parsing have been added. The classes are based on picocli. | averbraeck |
![]() |
A utility class with converters for DJUTILS command line arguments has been added. With these converters, it is possible to e.g. specify --timeout=30s on the command line and convert the timeout to a DJUNITS Duration scalar. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
The byte[][] serialization destroyed the underlying data -- this has been repaired. | averbraeck |
![]() |
The serializers have all been made strongly typed, avoiding casting. Or actually, the casting has been shifted to the encode method on a higher level. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
The ImmutableLinkedHashMap.values() was overriding a non-reproducible values() method from the ImmutableAbstractMap. The ImmutableLinkedHashMap now has its own values() method. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
The ImmutableLinkedHashMap returned a non-linked HashSet as EntrySet and as KeySet. This has been repaired. | averbraeck |
![]() |
The UTF-8 Strings in djutils-serialization have been improved. The UTF-8 String can now handle 1-byte, 2-byte, 3-byte and 4-byte characters. The length of the UTF-8 serialized bytes indicates the number of bytes. The length does not say anything about the number of characters. | averbraeck |
![]() |
The UTF-16 Strings in djutils-serialization have been improved. The UTF-16 String can now handle 2-byte and 4-byte characters. The length of the UTF-16 String indicates the number of 2-byte shorts in the array. The length does not say anything about the number of characters. | averbraeck |
![]() |
The byte array in djutils-serialization has been repaired. The underlying byte array was nulled during serialization. | pknoppers |
![]() |
ObjectArraySerializer and ObjectMatrixSerializer added. | pknoppers |
![]() |
SerialDataDumper added to provide insight into structure of the serialized data. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
The djunits-serialization project has been added to serialize and deserialize different classes including djunits scalars, vectors and matrices in a strongly typed manner. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
EntrySets have been added to the ImmutableMap classes. | averbraeck |
![]() |
The keySet(), values() and entrySet() methods cache the results as these are often called. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
The ImmutableCollections class has been added, which takes care of those functions of the Collections class that do not update the (immutable) collections that the methods receive as arguments. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
Cat class in the logger package belongs in dsol, not in djutils, so removed it. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
The 'decoderdumper' package has been added to the djutils project, extending and replacing HexDump. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
The CategoryLogger has been extended with a 'when(condition)' static method. A call like CategoryLogger.when(ok).always().info("Ok"); is now possible. | averbraeck |
![]() |
The HexDump class has been added to djutils to create hexadecimal dumps of data. | pknoppers |
![]() |
Copyright message changed to 2019. | averbraeck |
Type | Changes | By |
---|---|---|
![]() |
The 'means' package has been added to the djutils project. | pknoppers |
Type | Changes | By |
---|---|---|
![]() |
Several classes from other projects that are heavily shared between the projects, but not specific for one of the projects have been transferred to the djutils project. | averbraeck |