Skip to content

Commit

Permalink
Merge pull request #201 from seime/item_metadata
Browse files Browse the repository at this point in the history
Add methods to access item Metadata registry
  • Loading branch information
seaside1 authored Jan 22, 2025
2 parents afd403d + d88d201 commit bf09d9e
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ public JRuleHandler(JRuleConfig config, ItemRegistry itemRegistry, ItemChannelLi
final JRuleItemHandler itemHandler = JRuleItemHandler.get();
itemHandler.setItemRegistry(itemRegistry);
itemHandler.setItemChannelLinkRegistry(itemChannelLinkRegistry);
itemHandler.setMetadataRegistry(metadataRegistry);
logDebug("JRuleHandler()");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,17 @@
package org.openhab.automation.jrule.internal.handler;

import java.util.Arrays;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

import org.openhab.core.items.GroupItem;
import org.openhab.core.items.Item;
import org.openhab.core.items.ItemRegistry;
import org.openhab.core.items.Metadata;
import org.openhab.core.items.MetadataKey;
import org.openhab.core.items.MetadataRegistry;
import org.openhab.core.library.items.NumberItem;
import org.openhab.core.library.items.StringItem;
import org.openhab.core.library.items.SwitchItem;
Expand All @@ -42,6 +49,12 @@ private JRuleItemHandler() {
private ItemRegistry itemRegistry;
private ItemChannelLinkRegistry itemChannelLinkRegistry;

private MetadataRegistry metadataRegistry;

public void setMetadataRegistry(MetadataRegistry metadataRegistry) {
this.metadataRegistry = metadataRegistry;
}

public void setItemRegistry(ItemRegistry itemRegistry) {
this.itemRegistry = itemRegistry;
}
Expand Down Expand Up @@ -161,4 +174,31 @@ public void linkItemWithChannel(String itemName, ChannelUID uid) {
ItemChannelLink link = new ItemChannelLink(itemName, uid);
itemChannelLinkRegistry.add(link);
}

public Collection<ItemChannelLink> getChannelLinks(String itemName) {
return itemChannelLinkRegistry.getLinks(itemName);
}

public void unlinkItemFromChannel(String itemName) {
itemChannelLinkRegistry.removeLinksForItem(itemName);
}

public Collection<Item> getItemsWithMetadata(String namespace, String value) {
Set<Item> itemsWithMatchingMetadata = itemRegistry.getItems().stream().filter(item -> {
MetadataKey key = new MetadataKey(namespace, item.getName());
Metadata metadata = metadataRegistry.get(key);
return metadata != null && metadata.getValue().equals(value);
}).collect(Collectors.toSet());
return itemsWithMatchingMetadata;
}

public Map<String, Object> getItemMetadataConfiguration(String namespace, String value, Item item) {
MetadataKey key = new MetadataKey(namespace, item.getName());
Metadata metadata = metadataRegistry.get(key);
if (metadata != null && metadata.getValue().equals(value)) {
return metadata.getConfiguration();
} else {
return null;
}
}
}

0 comments on commit bf09d9e

Please sign in to comment.