* Abort migration from real names when most tables have table name prefix
* Add missing checks for database connection from console commands
* Add additional documentation for check/fix schema
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Add console command for checking schema integrity
* Remove unneeded logging
* Add console command for fixing schema integrity
* Provide documentation
* Try to add support for Derby and PostgreSQL
* Sort alphabetically by item name
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Fix compiler info
Unsafe interpretation of method return type as '@NonNull' based on the receiver type 'java.util.Enumeration<java.net.@NonNull NetworkInterface>'. Type 'java.util.Enumeration<E>' doesn't seem to be designed with null type annotations in mind
* Improve robustness of job rescheduling and handler disposal
Handler tried updating thing although the handler was already disposed
Fixes#13701
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Add warning about using tableCaseSensitiveItemNames without dedicated schema
* Move warning to extended description
* Rephrase explanation
* Fix commands
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Add console command for listing tables
* Query row counts only when needed and while generating output
* Add cleanup command
* Add documentation
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Do not append number when using real item names
* Extract getTableName to separate class
* Add initial test coverage
* Extract migration logic to separate class
* Support migration from real names back to numbered
* Simplify zero-padding
* Fix NullPointerException
* Fix MySQL compatibility when CLIENT_MULTI_STATEMENTS option is not set
* Add option for case sensitive table names
* Add real name with suffix mode for backwards compatibility
* Remove real name in lower case without suffix mode
* Map directly from item name to table name
* Fix ambiguous table name scenario
* Add additional testcase
* Add migration path for changed table prefix
* Drop items table when using direct mapping
* Add configuration note
* Fix table alignment
* Extend description as more migration paths are now supported
* Do not stop halfway through a migration
* For clarity, do not use abbreviation for operating system
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Extract nested DTO's to separate classes
* Rename api to dto
* Move test classes into internal
* Finish moving of files and fix namespaces
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Migrate start/finish channels to full DateTime channels
* Unmark start and duration as advanced channels
* Add end channel
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
After upgrading mysql-connector to 8.0.30 this exception was thrown: class java.time.LocalDateTime cannot be cast to class java.sql.Timestamp
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Fix thing offline on invalid command
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Rename exception
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Go back to last thing status after temporary disruptions
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Increase call frequency after device being unreachable
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Optimize API calls for reduced load
* Add position tracking (on map)
* Provide faster updates when active
* Optimize state update after triggering commands
* Clean up duration variables
* Add initial test coverage for DeviceStatus
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Move test providers to dedicated folder
* Simplify resource loading
* Clarify what is being tested
* Extract online communication test to separate class
* Fix SAT findings
* Rename variable to comply with naming convention
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Refresh cutting times right after next planned cutting
* Cancel cutting time future unconditionally
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Fix communication error when no planned next cutting
* Provide targeted handling of missing cutting times
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Allow hostname as gateway network address
* Document configuration parameters for things
* Add message for bridge communication error
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Fix multiple authentications during initialization
* Fix cutting times being fetched twice during initialization
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Add missing specialized text for unreachable device
* Document IndegoUnreachableException on relevant paths
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Fix auto-update policy for stateless channel
* Reflect appliance state in switch channel state
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Fix compiler warning
* Add basic test coverage for DataItem deserialization
* Add full prefixes to attributes variables
* Add missing newlines at end of test payload files
* Add full prefix to attributes variable
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Treat HDPowerViewWebTargets as non-null since initialized by initialize()
* Simplify maintenance period logic slightly
* Improve response logging
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Add support for localization of textualstate texts
* Refactor state texts to eliminate redundancy
Fixes#12941
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Introduce algorithm for preventing excessive currentPower updates
* Increase calculation accuracy
* Rename currentPowerAccurate to currentPowerRaw
* Remove duplicated line
* Use interface when declaring double ended queue
* Reformat README to one sentence per line
* Rename constants for consistency and readability
Fixes#12460
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Refactor to use framework's Jetty HTTP client
* Do not try to parse HTML as JSON on failed HTTP calls
* Improve handler initialization log messages
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Update bridge status to UNKNOWN before scheduling polling job
* Reduced error log levels to warning
* Validate configuration and leave initialize() with status UNKNOWN
* Extract JSON-RPC handling to separate class
* Use already stored applianceId
* Keep listeners in Set to eliminate duplicates and improve performance
* Reduce access levels for variables exposed to subclasses unneededly
* Initialize translation provider with default language in constructor to avoid nullness
* Divide listener interface into two: discovery and appliance status
* Optimize communication between bridge and handlers
* Fix thing status transitions and support gone appliances
* Do not check/schedule jobs for each listener registration
* Optimize listener registration by using cached appliances
* Optimize state/property updates and reduce logging level for properties
* Fix concurrency issue during handler initialization
* Simplify online/offline transitions
* Use cached appliances for discovery listener callback
* Avoid unneeded call every 15 seconds receiving response with ~5.5 KB payload
* Fix devices being removed after failed RPC calls
* Fix method parameter descriptions
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Fix status transitions
Fixes#12415
* Fix integration tests
* Fix missing status update for some devices after HTTP call
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Extract thing descriptions into separate files
* Add missing channel categories
* Add semantic tags for temperature and humidity
* Fix typo
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
* Consolidate service subscriptions in base class.
* Remove unsynchronized and unneeded cache of subscriptions.
* Do not unregister participant when removing subscription.
* Fix status wrongly set to ONLINE when exception is thrown.
* Refactor error handling for WemoHttpCall.
* Adjust log level for communication errors.
* Add automatic subscription renewal.
* Fix more ONLINE/OFFLINE status transition issues.
* Adjust log level when getWemoURL fails because device is offline.
* Remove redundant logging.
Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>