/**
* Copyright (c) 2016 Kai Kreuzer and others.
* 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.eclipse.smarthome.automation.module.media.internal;
import java.util.ArrayList;
import java.util.Collection;
import org.eclipse.smarthome.automation.Action;
import org.eclipse.smarthome.automation.Module;
import org.eclipse.smarthome.automation.handler.BaseModuleHandlerFactory;
import org.eclipse.smarthome.automation.handler.ModuleHandler;
import org.eclipse.smarthome.automation.module.media.handler.PlayActionHandler;
import org.eclipse.smarthome.automation.module.media.handler.SayActionHandler;
import org.eclipse.smarthome.core.audio.AudioManager;
import org.eclipse.smarthome.core.voice.VoiceManager;
import com.google.common.collect.ImmutableList;
public class MediaModuleHandlerFactory extends BaseModuleHandlerFactory {
private static final Collection<String> types = ImmutableList.of(SayActionHandler.TYPE_ID,
PlayActionHandler.TYPE_ID);
private VoiceManager voiceManager;
private AudioManager audioManager;
@Override
public Collection<String> getTypes() {
return new ArrayList<>(types);
}
@Override
protected ModuleHandler internalCreate(Module module, String ruleUID) {
if (module instanceof Action) {
switch (module.getTypeUID()) {
case SayActionHandler.TYPE_ID:
return new SayActionHandler((Action) module, voiceManager);
case PlayActionHandler.TYPE_ID:
return new PlayActionHandler((Action) module, audioManager);
default:
break;
}
}
return null;
}
protected void setAudioManager(AudioManager audioManager) {
this.audioManager = audioManager;
}
protected void unsetAudioManager(AudioManager audioManager) {
this.audioManager = null;
}
protected void setVoiceManager(VoiceManager voiceManager) {
this.voiceManager = voiceManager;
}
protected void unsetVoiceManager(VoiceManager voiceManager) {
this.voiceManager = null;
}
}