Code for Example 7 Catalog class

package tut;
import com.ibm.telephony.beans.media.*;
import com.ibm.telephony.wvr.*;
/**
 * Subcomponent that allows the caller to order an item from a catalog
 */
class Catalog {
	//Define the category for all the voice segments in this class.
	private static final String CATEGORY = "Tutorials";
	// Define the menu items
	private static final String ITEM1_YES = "Yes";
	private static final String ITEM2_NO  = "No";
	
	// Create an array to store the menu items
	private static final String[] MENU_ITEMS = { ITEM1_YES, ITEM2_NO };
	
	// Define the keys used to make the menu selections, and store them in an array
	private static final String[] MENU_KEYS = { "1", "2" };
	// Create a number of Voice Segment objects
	// Create the segment objects for the menu items, and store them in an array
	private static final MediaType[]  MENU_PROMPTS = {
		new VoiceSegment(CATEGORY, "ForYesPress1"),
		new VoiceSegment(CATEGORY, "ForNoPress2")
	};
	
	// Create the segment objects for taking the order
	private static final VoiceSegment VS_PRODUCT_NUMBER = new VoiceSegment(CATEGORY, "ProductNumber");
	private static final VoiceSegment VS_QUANTITY       = new VoiceSegment(CATEGORY, "Quantity");
	private static final VoiceSegment VS_YOU_ORDERED    = new VoiceSegment(CATEGORY, "YouOrdered");
	private static final VoiceSegment VS_ITEMS          = new VoiceSegment(CATEGORY, "Items");
	
	// Create the segment objects for the verifying the order menu
	private static final VoiceSegment VS_IS_THIS_OK = new VoiceSegment(CATEGORY, "IsThisOK");
	
	// Create the segment objects for the result
	private static final VoiceSegment VS_MAIL_ORDER = new VoiceSegment(CATEGORY, "MailOrder");
	private static final VoiceSegment VS_SORRY = new VoiceSegment(CATEGORY, "Sorry");
	
	// Create AudioNumber objects to play the caller's order back to them
	private AudioNumber prodNumValue  = new AudioNumber();
	private AudioNumber quantityValue = new AudioNumber();
	
	// Create a media sequence of the caller's order
	private MediaType[] order = { VS_YOU_ORDERED, quantityValue, VS_ITEMS, prodNumValue };	
	
	// Create some attribute objects for getting the product number from the caller
	private PlayAttributes prodNumPlayAtts   = new PlayAttributes();
	private InputAttributes prodNumInputAtts = new InputAttributes();
	private DTMFAttributes prodNumDTMFAtts   = new DTMFAttributes();
	private RecoAttributes prodNumRecoAtts   = null;
	// Create some attribute objects for getting the quantity from the caller
	private PlayAttributes quantityPlayAtts   = new PlayAttributes();	
	private InputAttributes quantityInputAtts = new InputAttributes();
	private DTMFAttributes quantityDTMFAtts   = new DTMFAttributes();
	private RecoAttributes quantityRecoAtts   = null;
	
	// Create some attribute objects for the verify order menu
	private PlayAttributes menuPlayAtts  = new PlayAttributes();
	private MenuAttributes menuAtts      = new MenuAttributes(MENU_PROMPTS, MENU_ITEMS, MENU_KEYS, null); 	
	private DTMFAttributes menuDTMFAtts  = new DTMFAttributes();
	private RecoAttributes menuRecoAtts  = null;
	private CardChecker cardChecker = new CardChecker();
	
	// Create a constructor method to set up various attributes
	public Catalog() {
		// Set the style of the product number AudioNumber object to digits
		prodNumValue.setStyle("Digits");
		
		// Set the attributes for getting the product number
		prodNumInputAtts.setMessage(VS_PRODUCT_NUMBER);
		prodNumInputAtts.setTimeout(10);
		prodNumDTMFAtts.setMaximumKeys(4);
		prodNumDTMFAtts.setDelimiterKeys("");
		
		// Set the attributes for getting the quantity
		quantityInputAtts.setMessage(VS_QUANTITY);
		quantityInputAtts.setTimeout(10);
		
		// Set the attributes for the verify order menu
		menuAtts.setHeaderMessage(VS_IS_THIS_OK);
		menuAtts.setTimeout(10);
		menuDTMFAtts.setMaximumKeys(1);
		menuDTMFAtts.setDelimiterKeys("");
	}//Catalog()
		
	public void takeOrder(Call call) throws WVRException {
		// Create variables to store the product number and quantity of the order.
		double prodNum  = 0;
		double quantity = 0;
		while (true) {
			// Get the product number from the caller
			InputResult prodNumResult = call.playAndGetInput(prodNumPlayAtts, prodNumInputAtts,
                                                       prodNumDTMFAtts, prodNumRecoAtts);
			prodNum = Double.parseDouble(prodNumResult.getValue());
			prodNumValue.setValue(prodNum);
	
			// Get the quantity from the caller
			InputResult quantityResult = call.playAndGetInput(quantityPlayAtts, quantityInputAtts,
                                                        quantityDTMFAtts, quantityRecoAtts);
			quantity = Double.parseDouble(quantityResult.getValue());
			quantityValue.setValue(quantity);	
			
			// Play the order back to the caller
			call.play(order); 	
			
			// Verifies with the caller that the choice is correct, if yes, breaks out of loop
			InputResult input = call.playAndGetInput(menuPlayAtts, menuAtts, menuDTMFAtts, menuRecoAtts);
			String answer = input.getValue();
			if (answer.equals(ITEM1_YES)) break;	
		}//while
		if (cardChecker.takeCardDetails(call)) {
			// Confirm to the caller that their order has gone through
			call.play(VS_MAIL_ORDER);
		}
		else {
			call.play(VS_SORRY);
		} //if
	}//takeOrder()
}