Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jrule when refactoring #61

Merged
merged 24 commits into from
Oct 25, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
ac892ff
add event for channel and cleanup
querdenker2k Oct 5, 2022
d713fbd
add event trigger for channel
querdenker2k Oct 8, 2022
66916f7
Merge remote-tracking branch 'origin/add_event_for_channel' into jrul…
querdenker2k Oct 11, 2022
36f1e89
add addon action handler
querdenker2k Oct 13, 2022
6eb1398
Merge remote-tracking branch 'origin/main' into jrule_when_refactoring
querdenker2k Oct 15, 2022
a1dbaf1
merge manually QuantityType fix
querdenker2k Oct 15, 2022
ce7f0e0
update
querdenker2k Oct 16, 2022
a678061
update
querdenker2k Oct 17, 2022
c9515e0
updated some readme, add tests for test-project
querdenker2k Oct 18, 2022
24d6e91
merge
querdenker2k Oct 20, 2022
4e9413f
merge
querdenker2k Oct 20, 2022
ed49a07
update
querdenker2k Oct 20, 2022
dc9a5c3
Merge remote-tracking branch 'origin/main' into jrule_when_refactoring
querdenker2k Oct 21, 2022
28f64a0
bugfix, complete README change
querdenker2k Oct 21, 2022
392ca51
bugfix
querdenker2k Oct 21, 2022
009afdc
removed some unused class
querdenker2k Oct 22, 2022
be1bddf
removed some unused class
querdenker2k Oct 22, 2022
0197233
Corrected type of openhab event to check for
seime Oct 22, 2022
6aca138
Add some more checks on the rule methods. Renamed to() to command() i…
seime Oct 22, 2022
531cc29
Dispose JRuleEngine on shutdown
seime Oct 22, 2022
ad302c3
Fix trigger filter on rule parsing
seime Oct 22, 2022
956aeaf
one small change
querdenker2k Oct 24, 2022
d13888b
removed unused triggers, unify constructor calls, allow using concret…
querdenker2k Oct 25, 2022
a667107
add migration readme
querdenker2k Oct 25, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 87 additions & 0 deletions MIGRATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# Migrate JRule to JRuleXXX

## Triggers

### Item changed to ON
<code>@JRuleWhen(item = _MyTestSwitch.ITEM, trigger = _MyTestSwitch.TRIGGER_CHANGED_TO_ON)</code>

->

<code>@JRuleWhenItemChange(item = _MyTestSwitch.ITEM, to = JRuleSwitchItem.ON)</code>

### Item changed from OFF to ON
<code>@JRuleWhen(item = _MyTestSwitch2.ITEM, trigger = _MyTestSwitch2.TRIGGER_CHANGED_FROM_OFF_TO_ON)</code>

->

<code>@JRuleWhenItemChange(item = _MyTestSwitch2.ITEM, from = JRuleSwitchItem.OFF, to = JRuleSwitchItem.ON)</code>

### Item received command
<code>@JRuleWhen(item = __MyTestSwitch2.ITEM, trigger = __MyTestSwitch2.TRIGGER_RECEIVED_COMMAND)</code>

->

<code>@JRuleWhenItemReceivedCommand(item = _MyTestSwitch2.ITEM)</code>

### Item changed with conditional check
<code>@JRuleWhen(item = _MyTemperatureSensor.ITEM, trigger = _MyTemperatureSensor.TRIGGER_RECEIVED_UPDATE, lte = 20)</code>

->

<code>@JRuleWhenItemChange(item = _MyTemperatureSensor.ITEM, condition = @JRuleCondition(lte = 20))</code>

### Channel changed
<code>@JRuleWhen(channel = "binding:thing:buttonevent")</code>

->

<code>@JRuleWhenChannelTrigger(channel = "mqtt:topic:mqtt:generic:numberTrigger")</code>

### Cron
<code>@JRuleWhen(cron = "4 * * * * *")</code>

->

<code>@JRuleWhenCronTrigger(cron = "*/5 * * * * *")</code>

### Time
<code>@JRuleWhen(hours = 3)</code>

->

<code>@JRuleWhenTimeTrigger(hours=3)</code>

### Thing changed
<code>@JRuleWhen(thing = "*", trigger = JRuleThingStatusTrigger.TRIGGER_CHANGED, from = "ONLINE")</code>

->

<code>@JRuleWhenThingTrigger(from = JRuleThingStatus.ONLINE)</code>

## Precondition

### Item must be equal to
<code>@JRulePrecondition(item=_MyTestDisturbanceSwitch.ITEM, eq = "ON")</code>

->

<code>@JRulePrecondition(item = _MyTestDisturbanceSwitch.ITEM, condition = @JRuleCondition(eq = "ON"))</code>

## JRuleEvent
JRuleEvent is now abstract with 4 concrete implementations
- JRuleItemEvent
- JRuleChannelEvent
- JRuleTimerEvent
- JRuleThingEvent
Depending on the trigger that was fired, the respective event will be thrown.
You can use the abstract JRuleEvent as method parameter or a concrete one, but take care to be sure that just this event can be thrown.
Otherwise an exception will occur.

### Examples
#### Correct
Trigger for an Item will inject an JRuleItemEvent as method parameter
For the method you can use JRuleEvent (has to be cast to get the interesting information) or JRuleItemEvent

#### Incorrect
- Trigger for a Thing and use JRuleItemEvent as method parameter -> Exception
- Trigger for an Item and a Cron and use JRuleItemEvent -> Exception when the method will be trigger for cron
Loading