forked from openhab/openhab-addons
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
8ee625d
commit 8ede0bc
Showing
32 changed files
with
620 additions
and
842 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file modified
BIN
-12 Bytes
(100%)
addons/io/org.openhab.io.homekit/lib/com.beowulfe.hap.hap-1.1.5-SNAPSHOT.jar
Binary file not shown.
53 changes: 0 additions & 53 deletions
53
...penhab.io.homekit/src/main/java/org/openhab/io/homekit/accessory/TaggedItemDiscovery.java
This file was deleted.
Oops, something went wrong.
2 changes: 1 addition & 1 deletion
2
...enhab/io/homekit/accessory/Accessory.java → ...homekit/accessory/registry/Accessory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
7 changes: 7 additions & 0 deletions
7
...hab.io.homekit/src/main/java/org/openhab/io/homekit/accessory/registry/DiscoveryType.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package org.openhab.io.homekit.accessory.registry; | ||
|
||
public enum DiscoveryType { | ||
|
||
METADATA, | ||
TAGS | ||
} |
86 changes: 86 additions & 0 deletions
86
...hab.io.homekit/src/main/java/org/openhab/io/homekit/accessory/registry/ItemDiscovery.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
package org.openhab.io.homekit.accessory.registry; | ||
|
||
import java.util.function.Predicate; | ||
|
||
import org.eclipse.jdt.annotation.Nullable; | ||
import org.eclipse.smarthome.core.common.registry.RegistryChangeListener; | ||
import org.eclipse.smarthome.core.items.Item; | ||
import org.eclipse.smarthome.core.items.ItemRegistry; | ||
import org.eclipse.smarthome.core.items.Metadata; | ||
import org.eclipse.smarthome.core.items.MetadataKey; | ||
import org.eclipse.smarthome.core.items.MetadataRegistry; | ||
|
||
public class ItemDiscovery implements RegistryChangeListener<Item> { | ||
|
||
private final Predicate<String> tagFilter; | ||
private final AccessoryRegistry accessoryRegistry; | ||
private final MetadataRegistry metadataRegistry; | ||
private final String metadataNamespace; | ||
|
||
public ItemDiscovery(ItemRegistry itemRegistry, String metadataNamespace, MetadataRegistry metadataRegistry, | ||
Predicate<String> tagFilter, AccessoryRegistry accessoryRegistry) { | ||
this.tagFilter = tagFilter; | ||
this.accessoryRegistry = accessoryRegistry; | ||
this.metadataNamespace = metadataNamespace; | ||
this.metadataRegistry = metadataRegistry; | ||
itemRegistry.addRegistryChangeListener(this); | ||
} | ||
|
||
@Override | ||
public void added(Item element) { | ||
Metadata metadata = getMetadata(element); | ||
if (metadata != null && isCorrectNamespace(metadata)) { | ||
accessoryRegistry.add(element, metadata); | ||
} else if (tagMatches(element)) { | ||
accessoryRegistry.add(element, metadata); | ||
} | ||
} | ||
|
||
@Override | ||
public void removed(Item element) { | ||
Metadata metadata = getMetadata(element); | ||
if (metadata != null && isCorrectNamespace(metadata)) { | ||
accessoryRegistry.remove(element.getName()); | ||
} else if (tagMatches(element)) { | ||
accessoryRegistry.remove(element.getName()); | ||
} | ||
} | ||
|
||
@Override | ||
public void updated(Item oldElement, @Nullable Item element) { | ||
Metadata oldMetadata = getMetadata(oldElement); | ||
Metadata metadata = getMetadata(element); | ||
if (oldMetadata != null && isCorrectNamespace(oldMetadata)) { | ||
if (metadata != null && isCorrectNamespace(metadata)) { | ||
accessoryRegistry.itemUpdated(oldElement, element); | ||
} else { | ||
accessoryRegistry.remove(oldElement.getName()); | ||
} | ||
} else if (isCorrectNamespace(metadata)) { | ||
accessoryRegistry.add(element, metadata); | ||
} else if (tagMatches(oldElement)) { | ||
if (tagMatches(element)) { | ||
accessoryRegistry.itemUpdated(oldElement, element); | ||
} else { | ||
accessoryRegistry.remove(oldElement.getName()); | ||
} | ||
} else if (tagMatches(element)) { | ||
accessoryRegistry.add(element, metadata); | ||
} | ||
} | ||
|
||
private boolean tagMatches(Item item) { | ||
return item.getTags().stream().anyMatch(tagFilter) | ||
&& metadataRegistry.get(new MetadataKey(metadataNamespace, item.getName())) == null; | ||
} | ||
|
||
private Metadata getMetadata(Item item) { | ||
return metadataRegistry.get(new MetadataKey(metadataNamespace, item.getName())); | ||
} | ||
|
||
private boolean isCorrectNamespace(Metadata element) { | ||
MetadataKey key = element.getUID(); | ||
return key.getNamespace().equals(metadataNamespace); | ||
} | ||
|
||
} |
33 changes: 22 additions & 11 deletions
33
...essory/MetadataRegistryItemDiscovery.java → ...gistry/MetadataRegistryItemDiscovery.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,54 +1,65 @@ | ||
package org.openhab.io.homekit.accessory; | ||
|
||
import java.util.function.Predicate; | ||
package org.openhab.io.homekit.accessory.registry; | ||
|
||
import org.eclipse.smarthome.core.common.registry.RegistryChangeListener; | ||
import org.eclipse.smarthome.core.items.Item; | ||
import org.eclipse.smarthome.core.items.ItemRegistry; | ||
import org.eclipse.smarthome.core.items.Metadata; | ||
import org.eclipse.smarthome.core.items.MetadataKey; | ||
import org.eclipse.smarthome.core.items.MetadataRegistry; | ||
import org.slf4j.Logger; | ||
import org.slf4j.LoggerFactory; | ||
|
||
public class MetadataRegistryItemDiscovery implements RegistryChangeListener<Metadata> { | ||
|
||
private final ItemRegistry itemRegistry; | ||
private final Predicate<Metadata> metadataFilter; | ||
private final AccessoryRegistry accessoryRegistry; | ||
private final String metadataNamespace; | ||
private final Logger logger = LoggerFactory.getLogger(MetadataRegistryItemDiscovery.class); | ||
|
||
public MetadataRegistryItemDiscovery(MetadataRegistry metadataRegistry, ItemRegistry itemRegistry, | ||
Predicate<Metadata> metadataFilter, AccessoryRegistry accessoryRegistry) { | ||
String metadataNamespace, AccessoryRegistry accessoryRegistry) { | ||
this.itemRegistry = itemRegistry; | ||
this.metadataFilter = metadataFilter; | ||
this.metadataNamespace = metadataNamespace; | ||
this.accessoryRegistry = accessoryRegistry; | ||
metadataRegistry.addRegistryChangeListener(this); | ||
} | ||
|
||
@Override | ||
public void added(Metadata element) { | ||
if (metadataFilter.test(element)) { | ||
if (isCorrectNamepsace(element)) { | ||
Item item = itemRegistry.get(element.getUID().getItemName()); | ||
if (item == null) { | ||
logger.warn("Could not find tagged item: " + element.getUID()); | ||
return; | ||
} | ||
accessoryRegistry.add(item, element); | ||
} | ||
} | ||
|
||
@Override | ||
public void removed(Metadata element) { | ||
if (metadataFilter.test(element)) { | ||
if (isCorrectNamepsace(element)) { | ||
accessoryRegistry.remove(element.getUID().getItemName()); | ||
} | ||
} | ||
|
||
@Override | ||
public void updated(Metadata oldElement, Metadata element) { | ||
Item item = itemRegistry.get(element.getUID().getItemName()); | ||
if (metadataFilter.test(oldElement)) { | ||
if (metadataFilter.test(element)) { | ||
if (isCorrectNamepsace(oldElement)) { | ||
if (isCorrectNamepsace(element)) { | ||
accessoryRegistry.metadataUpdated(item, oldElement, element); | ||
} else { | ||
accessoryRegistry.remove(oldElement.getUID().getItemName()); | ||
} | ||
} else if (metadataFilter.test(element)) { | ||
} else if (isCorrectNamepsace(element)) { | ||
accessoryRegistry.add(item, element); | ||
} | ||
} | ||
|
||
private boolean isCorrectNamepsace(Metadata element) { | ||
MetadataKey key = element.getUID(); | ||
return key.getNamespace().equals(metadataNamespace); | ||
} | ||
|
||
} |
Oops, something went wrong.