001/*
002 * Copyright (c) 2013 Nu Echo Inc. All rights reserved.
003 */
004
005package com.nuecho.rivr.voicexml.dialogue;
006
007import java.util.*;
008
009import org.slf4j.*;
010
011import com.nuecho.rivr.core.channel.*;
012import com.nuecho.rivr.core.dialogue.*;
013import com.nuecho.rivr.core.util.*;
014import com.nuecho.rivr.voicexml.rendering.voicexml.errorhandling.*;
015import com.nuecho.rivr.voicexml.turn.input.*;
016import com.nuecho.rivr.voicexml.turn.output.*;
017import com.nuecho.rivr.voicexml.turn.output.fetch.*;
018
019/**
020 * VoiceXML specialization of {@link DialogueContext}. In addition to properties
021 * provided by a {@link DialogueContext} (like <code>dialogueChannel</code>,
022 * <code>dialogueId</code>, and <code>logger</code>), the
023 * {@link VoiceXmlDialogueContext} exposes:
024 * <ul>
025 * <li>servlet information used to build URI of some resources:
026 * <ul>
027 * <li><code>servletPath</code>
028 * <li><code>contextPath</code>
029 * </ul>
030 * <li>VoiceXML properties (for each generated document)
031 * <li>VoiceXML default language (for each generated document)
032 * <li><code>turnIndex</code>
033 * </ul>
034 *
035 * @author Nu Echo Inc.
036 */
037public final class VoiceXmlDialogueContext implements DialogueContext<VoiceXmlInputTurn, VoiceXmlOutputTurn> {
038
039    private String mLanguage;
040
041    private DefaultFetchConfiguration mDefaultFetchConfiguration = new DefaultFetchConfiguration();
042    private final Map<String, String> mProperties = new HashMap<String, String>();
043
044    private String mDialogueId;
045
046    private final String mContextPath;
047    private final String mServletPath;
048    private int mTurnIndex;
049
050    private final DialogueChannel<VoiceXmlInputTurn, VoiceXmlOutputTurn> mDialogueChannel;
051
052    private final Logger mLogger;
053
054    private FatalErrorFormFactory mFatalErrorFormFactory = new ExitFatalErrorFormFactory();
055
056    public VoiceXmlDialogueContext(DialogueChannel<VoiceXmlInputTurn, VoiceXmlOutputTurn> dialogueChannel,
057                                   Logger logger,
058                                   String dialogueId,
059                                   String contextPath,
060                                   String servletPath) {
061        mDialogueChannel = dialogueChannel;
062        mLogger = logger;
063        mDialogueId = dialogueId;
064        mContextPath = contextPath;
065        mServletPath = servletPath;
066    }
067
068    public void setDialogueId(String dialogueId) {
069        mDialogueId = dialogueId;
070    }
071
072    @Override
073    public String getDialogueId() {
074        return mDialogueId;
075    }
076
077    public String getContextPath() {
078        return mContextPath;
079    }
080
081    public String getServletPath() {
082        return mServletPath;
083    }
084
085    public String getLanguage() {
086        return mLanguage;
087    }
088
089    public void setLanguage(String language) {
090        mLanguage = language;
091    }
092
093    public DefaultFetchConfiguration getFetchConfiguration() {
094        return mDefaultFetchConfiguration;
095    }
096
097    public void setFetchConfiguration(DefaultFetchConfiguration defaultFetchConfiguration) {
098        mDefaultFetchConfiguration = defaultFetchConfiguration;
099    }
100
101    public Map<String, String> getProperties() {
102        return mProperties;
103    }
104
105    public void incrementTurnIndex() {
106        mTurnIndex++;
107    }
108
109    public int getTurnIndex() {
110        return mTurnIndex;
111    }
112
113    @Override
114    public DialogueChannel<VoiceXmlInputTurn, VoiceXmlOutputTurn> getDialogueChannel() {
115        return mDialogueChannel;
116    }
117
118    @Override
119    public Logger getLogger() {
120        return mLogger;
121    }
122
123    public void setFatalErrorFormFactory(FatalErrorFormFactory fatalErrorFormFactory) {
124        mFatalErrorFormFactory = fatalErrorFormFactory;
125    }
126
127    public FatalErrorFormFactory getFatalErrorFormFactory() {
128        return mFatalErrorFormFactory;
129    }
130
131    @Override
132    public String toString() {
133        ToStringBuilder builder = new ToStringBuilder(this);
134        builder.appendItem("mLanguage", mLanguage);
135        builder.appendItem("mDefaultFetchConfiguration", mDefaultFetchConfiguration);
136        builder.appendItem("mProperties", mProperties);
137        builder.appendItem("mDialogueId", mDialogueId);
138        builder.appendItem("mContextPath", mContextPath);
139        builder.appendItem("mServletPath", mServletPath);
140        builder.appendItem("mTurnIndex", mTurnIndex);
141        builder.appendItem("mFatalErrorFormFactory", mFatalErrorFormFactory);
142        return builder.getString();
143    }
144
145}