use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.
the class AbstractWidgetRenderer method getStateAsNumber.
protected String getStateAsNumber(Widget w) {
String itemName = w.getItem();
if (itemName != null) {
try {
Item item = itemUIRegistry.getItem(itemName);
State state = item.getState();
if (item.getAcceptedDataTypes().contains(PercentType.class)) {
state = item.getStateAs(PercentType.class);
} else {
state = item.getStateAs(DecimalType.class);
}
if (state != null) {
return escapeURLPath(state.toString());
} else {
logger.debug("State '{}' of item '{}' is not a number!", item.getState(), itemName);
}
} catch (ItemNotFoundException e) {
logger.error("Cannot retrieve item '{}' for widget {}", new Object[] { itemName, w.eClass().getInstanceTypeName() });
}
}
return "NULL";
}
use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.
the class GroupItemTest method assertThatGroupItemChangesDoNotAffectTheGroupStatusIfnoFunctionOrBaseItemAreDefined.
@SuppressWarnings("deprecation")
@Test
public void assertThatGroupItemChangesDoNotAffectTheGroupStatusIfnoFunctionOrBaseItemAreDefined() throws InterruptedException {
events.clear();
GroupItem groupItem = new GroupItem("root");
TestItem member = new TestItem("member1");
groupItem.addMember(member);
groupItem.setEventPublisher(publisher);
State oldGroupState = groupItem.getState();
// State changes -> NO change event should be fired
member.setState(new RawType());
// wait to see that the event doesn't fire
Thread.sleep(WAIT_EVENT_TO_BE_HANDLED);
assertThat(events.size(), is(0));
assertTrue(groupItem.getState().equals(oldGroupState));
}
use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.
the class GroupItemTest method assertThatGroupItemChangesRespectGroupFunctionORwithUNDEF.
@Test
public void assertThatGroupItemChangesRespectGroupFunctionORwithUNDEF() throws InterruptedException {
events.clear();
GroupItem groupItem = new GroupItem("root", new SwitchItem("mySwitch"), new ArithmeticGroupFunction.Or(OnOffType.ON, OnOffType.OFF));
groupItem.setItemStateConverter(itemStateConverter);
SwitchItem sw1 = new SwitchItem("switch1");
SwitchItem sw2 = new SwitchItem("switch2");
groupItem.addMember(sw1);
groupItem.addMember(sw2);
groupItem.setEventPublisher(publisher);
// State changes -> one change event is fired
sw1.setState(OnOffType.ON);
waitForAssert(() -> assertThat(events.size(), is(1)));
List<Event> changes = events.stream().filter(it -> it instanceof GroupItemStateChangedEvent).collect(Collectors.toList());
assertThat(changes.size(), is(1));
GroupItemStateChangedEvent change = (GroupItemStateChangedEvent) changes.get(0);
assertTrue(change.getItemName().equals(groupItem.getName()));
assertTrue(change.getOldItemState().equals(UnDefType.NULL));
assertTrue(change.getItemState().equals(OnOffType.ON));
events.clear();
sw2.setState(OnOffType.ON);
sw2.setState(UnDefType.UNDEF);
// wait to see that the event doesn't fire
Thread.sleep(WAIT_EVENT_TO_BE_HANDLED);
assertThat(events.size(), is(0));
assertTrue(groupItem.getState().equals(OnOffType.ON));
}
use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.
the class GroupItemTest method assertThatGroupItemWithDimmeritemBaseItemConversionWorks.
@Test
public void assertThatGroupItemWithDimmeritemBaseItemConversionWorks() {
// initially this group has State UndefType.NULL
GroupItem groupItem = new GroupItem("root", new DimmerItem("myDimmer"));
State groupStateAsPercent = groupItem.getStateAs(PercentType.class);
// a state conversion from NULL to PercentType should not be possible
assertNull(groupStateAsPercent);
// init group
groupItem.setState(new PercentType(80));
groupStateAsPercent = groupItem.getStateAs(PercentType.class);
assertTrue(groupStateAsPercent instanceof PercentType);
assertThat(((PercentType) groupStateAsPercent).intValue(), is(80));
}
use of org.eclipse.smarthome.core.types.State in project smarthome by eclipse.
the class GroupItemTest method assertThatGroupItemChangesRespectGroupFunctionOR.
@Test
public void assertThatGroupItemChangesRespectGroupFunctionOR() {
events.clear();
GroupItem groupItem = new GroupItem("root", new SwitchItem("mySwitch"), new ArithmeticGroupFunction.Or(OnOffType.ON, OnOffType.OFF));
groupItem.setItemStateConverter(itemStateConverter);
SwitchItem sw1 = new SwitchItem("switch1");
SwitchItem sw2 = new SwitchItem("switch2");
groupItem.addMember(sw1);
groupItem.addMember(sw2);
groupItem.setEventPublisher(publisher);
// State changes -> one change event is fired
sw1.setState(OnOffType.ON);
waitForAssert(() -> assertThat(events.size(), is(1)));
List<Event> changes = events.stream().filter(it -> it instanceof GroupItemStateChangedEvent).collect(Collectors.toList());
assertThat(changes.size(), is(1));
GroupItemStateChangedEvent change = (GroupItemStateChangedEvent) changes.get(0);
assertTrue(change.getItemName().equals(groupItem.getName()));
assertTrue(change.getOldItemState().equals(UnDefType.NULL));
assertTrue(change.getItemState().equals(OnOffType.ON));
assertTrue(groupItem.getState().equals(OnOffType.ON));
}
Aggregations