/**
* 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.homematic.internal.common;
import java.util.Collection;
import org.openhab.binding.homematic.HomematicBindingProvider;
import org.openhab.binding.homematic.internal.communicator.StateHolder;
import org.openhab.binding.homematic.internal.communicator.client.ServerId;
import org.openhab.binding.homematic.internal.communicator.client.interfaces.HomematicClient;
import org.openhab.binding.homematic.internal.converter.ConverterFactory;
import org.openhab.core.events.EventPublisher;
/**
* Singleton with the important objects for this binding.
*
* @author Gerhard Riegler
* @since 1.5.0
*/
public class HomematicContext {
private EventPublisher eventPublisher;
private Collection<HomematicBindingProvider> providers;
private HomematicConfig config = new HomematicConfig();
private ConverterFactory converterFactory = new ConverterFactory();
private HomematicClient homematicClient;
private StateHolder stateHolder;
private ServerId serverId;
private static HomematicContext instance;
private HomematicContext() {
}
/**
* Create or returns the instance of this class.
*/
public static HomematicContext getInstance() {
if (instance == null) {
instance = new HomematicContext();
instance.stateHolder = new StateHolder(instance);
}
return instance;
}
/**
* Returns the HomematicConfig.
*/
public HomematicConfig getConfig() {
return config;
}
/**
* Returns the EventPublisher.
*/
public EventPublisher getEventPublisher() {
return eventPublisher;
}
/**
* Sets the EventPublisher for use in the binding.
*/
public void setEventPublisher(EventPublisher eventPublisher) {
this.eventPublisher = eventPublisher;
}
/**
* Returns all HomematicBindingProviders.
*/
public Collection<HomematicBindingProvider> getProviders() {
return providers;
}
/**
* Sets all HomematicBindingProviders for use in the binding.
*/
public void setProviders(Collection<HomematicBindingProvider> providers) {
this.providers = providers;
}
/**
* Returns the CoverterFactory.
*/
public ConverterFactory getConverterFactory() {
return converterFactory;
}
/**
* Returns the HomematicClient.
*/
public HomematicClient getHomematicClient() {
return homematicClient;
}
/**
* Sets the HomematicClient.
*/
public void setHomematicClient(HomematicClient homematicClient) {
this.homematicClient = homematicClient;
}
/**
* Returns the StateHolder.
*/
public StateHolder getStateHolder() {
return stateHolder;
}
/**
* Returns the serverId.
*/
public ServerId getServerId() {
return serverId;
}
/**
* Sets the serverId.
*/
public void setServerId(ServerId serverId) {
this.serverId = serverId;
}
}