use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.
the class ItemEventFactory method createGroupStateChangedEvent.
private Event createGroupStateChangedEvent(String topic, String payload) {
String itemName = getItemName(topic);
String memberName = getMemberName(topic);
ItemStateChangedEventPayloadBean bean = deserializePayload(payload, ItemStateChangedEventPayloadBean.class);
State state = getState(bean.getType(), bean.getValue());
State oldState = getState(bean.getOldType(), bean.getOldValue());
return new GroupItemStateChangedEvent(topic, payload, itemName, memberName, state, oldState);
}
use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.
the class ItemEventFactory method createStateChangedEvent.
private Event createStateChangedEvent(String topic, String payload) {
String itemName = getItemName(topic);
ItemStateChangedEventPayloadBean bean = deserializePayload(payload, ItemStateChangedEventPayloadBean.class);
State state = getState(bean.getType(), bean.getValue());
State oldState = getState(bean.getOldType(), bean.getOldValue());
return new ItemStateChangedEvent(topic, payload, itemName, state, oldState);
}
use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.
the class RuleTriggerManager method internalGetUpdateRules.
private void internalGetUpdateRules(String name, Boolean isGroup, List<Class<? extends State>> acceptedDataTypes, State state, List<Rule> result) {
final String mapName = (isGroup) ? GROUP_NAME_PREFIX + name : name;
for (Rule rule : getAllRules(UPDATE, mapName)) {
for (EventTrigger t : rule.getEventtrigger()) {
String triggerStateString = null;
if ((!isGroup) && (t instanceof UpdateEventTrigger)) {
final UpdateEventTrigger ut = (UpdateEventTrigger) t;
if (ut.getItem().equals(name)) {
triggerStateString = ut.getState();
} else {
continue;
}
} else if ((isGroup) && (t instanceof GroupMemberUpdateEventTrigger)) {
final GroupMemberUpdateEventTrigger gmut = (GroupMemberUpdateEventTrigger) t;
if (gmut.getGroup().equals(name)) {
triggerStateString = gmut.getState();
} else {
continue;
}
} else {
continue;
}
if (triggerStateString != null) {
final State triggerState = TypeParser.parseState(acceptedDataTypes, triggerStateString);
if (!state.equals(triggerState)) {
continue;
}
}
result.add(rule);
}
}
}
use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.
the class NtpOSGiTest method getItemState.
private State getItemState(String acceptedItemType) {
final Item testItem = waitForAssert(() -> {
Item tmp;
try {
tmp = itemRegistry.getItem(TEST_ITEM_NAME);
} catch (ItemNotFoundException e) {
tmp = null;
}
assertNotNull(tmp);
return tmp;
});
return waitForAssert(() -> {
final State testItemState = testItem.getState();
if (acceptedItemType.equals(ACCEPTED_ITEM_TYPE_STRING)) {
assertThat(testItemState, is(instanceOf(StringType.class)));
} else if (acceptedItemType.equals(ACCEPTED_ITEM_TYPE_DATE_TIME)) {
assertThat(testItemState, is(instanceOf(DateTimeType.class)));
}
return testItemState;
}, 3 * DFL_TIMEOUT, 2 * DFL_SLEEP_TIME);
}
use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.
the class PersistenceExtensions method changedSince.
/**
* Checks if the state of a given <code>item</code> has changed since a certain point in time.
* The {@link PersistenceService} identified by the <code>serviceId</code> is used.
*
* @param item the item to check for state changes
* @param timestamp the point in time to start the check
* @param serviceId the name of the {@link PersistenceService} to use
* @return <code>true</code> if item state has changed, or <code>false</code> if it hasn't or if the given
* <code>serviceId</code> does not refer to an available {@link QueryablePersistenceService}
*/
public static Boolean changedSince(Item item, AbstractInstant timestamp, String serviceId) {
Iterable<HistoricItem> result = getAllStatesSince(item, timestamp, serviceId);
Iterator<HistoricItem> it = result.iterator();
HistoricItem itemThen = historicState(item, timestamp);
if (itemThen == null) {
// If we've got results more recent that this, it must have changed
return it.hasNext();
}
State state = itemThen.getState();
while (it.hasNext()) {
HistoricItem hItem = it.next();
if (state != null && !hItem.getState().equals(state)) {
return true;
}
state = hItem.getState();
}
return false;
}
Aggregations