* New translations addons.properties (Hungarian)
* New translations scriptprofile.properties (Hungarian)
* New translations systemprofiles.properties (Hungarian)
* New translations chart.properties (Hungarian)
* New translations voice.properties (Hungarian)
* New translations magic.properties (Hungarian)
* New translations jsr223.properties (Hungarian)
* New translations defaultsystemchannels.properties (Danish)
* Speed up calculations in rules
* Add test for NumberExtensions.numberToBigDecimal
Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
Co-authored-by: Holger Friedrich <mail@holger-friedrich.de>
* Set a default presentation pattern for String/Number/Datetime items
A default state pattern was previously provided by ChannelStateDescriptionProvider only for String and Number items linked to a channel.
It is now the class DefaultStateDescriptionFragmentProvider which is responsible for providing the default state pattern for items, whether the item is linked to a channel or not.
This new class is the lowest ranked StateDescriptionFragmentProvider so that all other providers have priority in setting the state pattern.
Default pattern for string item: %s
Default pattern for datetime item or group with datetime state: %1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS
Default pattern for number item or group with number state: %.0f
Default pattern for number+dimension item or group with number+dimension state: %.0f %unit%
Closes#4071Closes#3835
Signed-off-by: Laurent Garnier <lg.hc@free.fr>
Between Java 17 and Java 21, serialization of DateTime has changed due to
CLDR 42 which uses a narrow non-breaking space.
To ease switching JDK versions, the seralization format is explicitly
set to the Java 17 format.
Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
* Support Java 17 and 21, default compilation to Java 17 class files,
use maven.compiler.release instead of source and target
* Add profile "j21" to compile to Java 21 class files
* Upgrade SAT to 0.16.0, adapt code which breaks build with new SAT
checks
* Use model-specific-profile to pin xtend to Java 17
Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
* Contact item: Fix command descriptions provided even though commands are not accepted
If a state description is set on a contact item, currently a command description is automatically created as well.
This is wrong as contact items do not accept commands (except refresh) and caused the UI to display a control for the default (list) widget for these contacts.
* Also fix Call and Image items & Allow explicitly setting command description
Signed-off-by: Florian Hotze <florianh_dev@icloud.com>
If the specified key is not already associated with a value (or is mapped to null), the given mapping function computes the value.
Signed-off-by: Wouter Born <github@maindrain.net>
* Replace Markdown backticks with JavaDoc code tags
The proper way to format code with JavaDoc is using code tags and not Markdown backticks.
Signed-off-by: Wouter Born <github@maindrain.net>
Abstract classes should not have public constructors.
Constructors of abstract classes can only be called in constructors of their subclasses.
So there is no point in making them public.
The protected modifier should be enough.
Signed-off-by: Wouter Born <github@maindrain.net>
* Simplify adding elements to Collections
This optimizes and simplifies the code that adds elements to Collections.
Signed-off-by: Wouter Born <github@maindrain.net>
A static inner class does not keep an implicit reference to its enclosing instance.
This prevents a common cause of memory leaks and uses less memory per instance of the class.
Signed-off-by: Wouter Born <github@maindrain.net>
* Simplify assertions
Using the appropriate assertion methods results in less and easier to read code as well as better error messages when assertions fail.
Signed-off-by: Wouter Born <github@maindrain.net>
Removes redundant modifiers from the code.
These modifiers redeclare the default modifiers that apply to interfaces, enums etc.
Signed-off-by: Wouter Born <github@maindrain.net>
These array creations are unnecessary because arrays are created automatically for methods using varargs.
Signed-off-by: Wouter Born <github@maindrain.net>
`isEmpty()` expresses the intent more clearly and is therefore preferred.
Counting the number of elements can also be an expensive operation e.g. when using linked lists.
Signed-off-by: Wouter Born <github@maindrain.net>
While cleaning up the code I found a some more code to cleanup:
* Remove unnecessary boxing
* Use `contains(..)` instead of `indexOf(..) != -1`
* Use `assertInstanceOf` in tests
* Make expensive trace logging conditional
* Remove redundant constructor
* Replace `collect(Collectors.toUnmodifiableList())` with `toList()`
* Replace `filter(..).count() == 0L` with `noneMatch(..)`
* Replace `filter(..).count() > 0` with `anyMatch(..)`
Signed-off-by: Wouter Born <github@maindrain.net>
* Use String.join instead of Collectors.joining
String.join results in less code when joining an Iterable or Array.
Signed-off-by: Wouter Born <github@maindrain.net>
Due to the way month, week and day are defined in Indriya their symbol is not added as alias. This is a bug in indriya, but their release cycles are quite long and we should provide a fix for our users.
This should be backported to 4.1.x
Signed-off-by: Jan N. Klug <github@klug.nrw>