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}