package org.jaudiotagger.tag.asf;
import org.jaudiotagger.audio.asf.data.AsfHeader;
import org.jaudiotagger.audio.asf.data.MetadataDescriptor;
import org.jaudiotagger.audio.asf.util.Utils;
import org.jaudiotagger.tag.TagTextField;
import org.jaudiotagger.tag.asf.AsfFieldKey;
import org.jaudiotagger.tag.asf.AsfTagField;
/**
* Represents a tag text field for ASF fields.<br>
*
* @author Christian Laireiter
*/
public class AsfTagTextField extends AsfTagField implements TagTextField {
/**
* Creates a tag text field and assigns the string value.
*
* @param field
* ASF field to represent.
* @param value
* the value to assign.
*/
public AsfTagTextField(final AsfFieldKey field, final String value) {
super(field);
toWrap.setString(value);
}
/**
* Creates an instance.
*
* @param source
* The metadata descriptor, whose content is published.<br>
* Must not be of type {@link MetadataDescriptor#TYPE_BINARY}.
*/
public AsfTagTextField(final MetadataDescriptor source) {
super(source);
if (source.getType() == MetadataDescriptor.TYPE_BINARY) {
throw new IllegalArgumentException(
"Cannot interpret binary as string.");
}
}
/**
* Creates a tag text field and assigns the string value.
*
* @param fieldKey
* The fields identifier.
* @param value
* the value to assign.
*/
public AsfTagTextField(final String fieldKey, final String value) {
super(fieldKey);
toWrap.setString(value);
}
/**
* {@inheritDoc}
*/
public String getContent() {
return getDescriptor().getString();
}
/**
* {@inheritDoc}
*/
public String getEncoding() {
return AsfHeader.ASF_CHARSET.name();
}
/**
* @return true if blank or only contains whitespace
*/
@Override
public boolean isEmpty() {
return Utils.isBlank(getContent());
}
/**
* {@inheritDoc}
*/
public void setContent(final String content) {
getDescriptor().setString(content);
}
/**
* {@inheritDoc}
*/
public void setEncoding(final String encoding) {
if (!AsfHeader.ASF_CHARSET.name().equals(encoding)) {
throw new IllegalArgumentException(
"Only UTF-16LE is possible with ASF.");
}
}
}
|