/**
* 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.omnilink.internal.model;
import org.openhab.binding.omnilink.internal.OmniLinkBindingConfig;
import org.openhab.core.events.EventPublisher;
import org.openhab.core.items.Item;
import org.openhab.core.library.items.StringItem;
import org.openhab.core.library.types.StringType;
import com.digitaldan.jomnilinkII.MessageTypes.properties.AudioSourceProperties;
/**
* Audio Sources are the numbered input found in AudioZones
*
* @author Dan Cunningham
* @since 1.5.0
*/
public class AudioSource extends OmnilinkDevice {
private AudioSourceProperties properties;
private String[] audioText;
public AudioSource(AudioSourceProperties properties) {
this.properties = properties;
this.audioText = new String[0];
}
@Override
public AudioSourceProperties getProperties() {
return properties;
}
public void setProperties(AudioSourceProperties properties) {
this.properties = properties;
}
/**
* Returns the display text for this audio source.
*
* @return array of audio fields
*/
public String[] getAudioText() {
return audioText;
}
/**
* Sets the display text for this audio source.
*
* @param audioText
*/
public void setAudioText(String[] audioText) {
this.audioText = audioText;
}
@Override
public void updateItem(Item item, OmniLinkBindingConfig config, EventPublisher publisher) {
String str = " ";
switch (config.getObjectType()) {
case AUDIOSOURCE_TEXT:
str = formatAudioText();
break;
case AUDIOSOURCE_TEXT_FIELD1:
str = getAudioText(0);
break;
case AUDIOSOURCE_TEXT_FIELD2:
str = getAudioText(1);
break;
case AUDIOSOURCE_TEXT_FIELD3:
str = getAudioText(2);
break;
default:
return;
}
if (item instanceof StringItem) {
publisher.postUpdate(item.getName(), new StringType(str));
}
}
/**
* Formats the multiple lines of audio text into a single delimited string.
*
* @return pipe delimited audio text string.
*/
public String formatAudioText() {
StringBuilder sb = new StringBuilder();
for (String s : audioText) {
if (sb.length() > 0) {
sb.append(" | ");
}
sb.append(s);
}
if (sb.length() == 0) {
sb.append(" ");
}
return sb.toString();
}
public String getAudioText(int fieldNum) {
String ret = fieldNum < audioText.length ? audioText[fieldNum] : null;
return ret != null ? ret : " ";
}
}