/**
* Copyright (c) 2010-2016 by the respective copyright holders.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.openhab.binding.insteonhub.internal.util;
import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import org.openhab.binding.insteonhub.InsteonHubBindingProvider;
import org.openhab.binding.insteonhub.internal.InsteonHubBindingConfig;
import org.openhab.binding.insteonhub.internal.InsteonHubBindingDeviceInfo;
/**
* Utility functions for dealing with hub/device configurations
*
* @author Eric Thill
* @since 1.4.0
*/
public class InsteonHubBindingConfigUtil {
public static InsteonHubBindingConfig getConfigForItem(Collection<InsteonHubBindingProvider> providers,
String itemName) {
// check each provider
for (InsteonHubBindingProvider provider : providers) {
// lookup item config in this provider
InsteonHubBindingConfig config = provider.getItemConfig(itemName);
// if configuration was found, return it
if (config != null) {
return config;
}
}
// configuration not found => return null
return null;
}
public static Collection<InsteonHubBindingConfig> getConfigsForDevice(
Collection<InsteonHubBindingProvider> providers, String hubId, String deviceId) {
// create deviceInfo object for lookup
InsteonHubBindingDeviceInfo deviceInfo = new InsteonHubBindingDeviceInfo(hubId, deviceId);
List<InsteonHubBindingConfig> configs = new LinkedList<InsteonHubBindingConfig>();
// check each provider
for (InsteonHubBindingProvider provider : providers) {
// lookup hubId+device itemNames for this provider
Set<String> itemNames = provider.getDeviceItemNames(deviceInfo);
// loop through found item names
for (String itemName : itemNames) {
// lookup configuration for item name
InsteonHubBindingConfig config = provider.getItemConfig(itemName);
// if configuration is found, add it to collection
if (config != null) {
configs.add(config);
}
}
}
return configs;
}
public static Set<InsteonHubBindingDeviceInfo> getConfiguredDevices(
Collection<InsteonHubBindingProvider> providers) {
Set<InsteonHubBindingDeviceInfo> ret = new HashSet<InsteonHubBindingDeviceInfo>();
// check each provider
for (InsteonHubBindingProvider provider : providers) {
ret.addAll(provider.getConfiguredDevices());
}
return ret;
}
}