package com.rayo.core.verb;
import java.util.List;
import javax.validation.constraints.AssertTrue;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import org.joda.time.Duration;
import com.rayo.core.validation.Messages;
import com.rayo.core.validation.ValidCPA;
import com.rayo.core.validation.ValidChoices;
@ValidChoices
public class Input extends BaseVerb {
private List<Choices> grammars;
private String recognizer;
private Duration initialTimeout;
private Duration interDigitTimeout;
private Float minConfidence = 0.3f;
private Float sensitivity;
private Character terminator;
private InputMode mode = InputMode.ANY;
@ValidCPA
private CpaData cpaData;
private Duration maxSilence;
public Duration getInitialTimeout() {
return initialTimeout;
}
public void setInitialTimeout(Duration initialTimeout) {
this.initialTimeout = initialTimeout;
}
public Duration getInterDigitTimeout() {
return interDigitTimeout;
}
public void setInterDigitTimeout(Duration interSigTimeout) {
this.interDigitTimeout = interSigTimeout;
}
public Float getMinConfidence() {
return minConfidence;
}
public void setMinConfidence(Float confidence) {
this.minConfidence = confidence;
}
public Float getSensitivity() {
return sensitivity;
}
public void setSensitivity(Float sensitivity) {
this.sensitivity = sensitivity;
}
public String getRecognizer() {
return recognizer;
}
public void setRecognizer(String recognizer) {
this.recognizer = recognizer;
}
public Character getTerminator() {
return terminator;
}
public void setTerminator(Character terminator) {
this.terminator = terminator;
}
public InputMode getMode() {
return mode;
}
public void setMode(InputMode inputMode) {
this.mode = inputMode;
}
public List<Choices> getGrammars() {
return grammars;
}
public void setGrammars(List<Choices> grammars) {
this.grammars = grammars;
}
@AssertTrue(message=Messages.INVALID_CONFIDENCE_RANGE)
public boolean isMinConfidenceWithinRange() {
return (minConfidence >= 0f && minConfidence <= 1f);
}
@AssertTrue(message=Messages.INVALID_SENSITIVITY_RANGE)
public boolean isSensitivityWithinRange() {
return sensitivity == null || (sensitivity >= 0f && sensitivity <= 1f);
}
@AssertTrue(message=Messages.INVALID_MAX_SILENCE)
public boolean isMaxSilenceWithinRange() {
return maxSilence == null || (maxSilence.getMillis() >= 0);
}
public Duration getMaxSilence() {
return maxSilence;
}
public void setMaxSilence(Duration maxSilence) {
this.maxSilence = maxSilence;
}
public CpaData getCpaData() {
return cpaData;
}
public void setCpaData(CpaData cpaData) {
this.cpaData = cpaData;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
.append("callId", getCallId()).append("verbId", getVerbId())
.append("minConfidence", getMinConfidence())
.append("initialTimeout", getInitialTimeout())
.append("mode", getMode())
.append("integerSigTimeout", getInterDigitTimeout())
.append("recognizer", getRecognizer())
.append("sensitivity", getSensitivity())
.append("terminator", getTerminator())
.append("maxSilence", getMaxSilence())
.append("grammars", grammars)
.append("cpaData", getCpaData()).toString();
}
}