The code for a sample implementation of the Send USSD Menu state produces a menu with four options: Option 1, Option 2, Option 3, and Option 4.
com.sybase365.mobiliser.brand.plugins.ussd.impl.SmappStateSendUssdMenuSmappStateSendUssdMenu is a subclass of the AbstractDynamicUssdMenu abstract class.
package com.sybase365.mobiliser.brand.plugins.ussd.impl; import com.sybase365.mobiliser.brand.dao.DBException; import com.sybase365.mobiliser.brand.jpa.SmappState; import com.sybase365.mobiliser.brand.plugins.api.smapp.SmappStateProcessingAction; import com.sybase365.mobiliser.brand.plugins.smapp.controls.Attribute; import com.sybase365.mobiliser.brand.plugins.useful.KeyValuePair; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Loads all available languages and puts them into a menu * */ public class SmappStateSendUssdMenu extends AbstractDynamicUssdMenu { protected static final Logger LOG = LoggerFactory.getLogger(SmappStateSendUssdMenu.class); private static final String[] OPTIONS = { "Option 1", "Option 2", "Option 3", "Option 4" }; private List<String> listOfOptions = Arrays.asList(OPTIONS); private static Attribute[] stateAttr; static { stateAttr = new Attribute[]{}; } @Override protected Attribute[] getStateAttributeList() { return stateAttr.clone(); } @Override public long getStateId() { return 485002; } @Override public String getStateName() { return "Send USSD Menu"; } @Override public String getStateNotes() { return "This state generates a sample USSD Menu.\n" + "Use these follow-up states:\n" + "- OK: If user selected a menu item.\n" + "- FAIL: If an error occurs."; } @Override public boolean supportsOkTransition() { return true; } @Override public String getRevisionString() { return "$Revision:28128 $"; } @Override protected SmappState init(SmappStateProcessingAction action) throws DBException { if (listOfOptions == null) { return continueFail(); } return null; } @Override protected int getMaxMenuItems() { return this.listOfOptions.size(); } @Override protected List<KeyValuePair<String, String>> constructMenuList() throws DBException { List<KeyValuePair<String, String>> list = new ArrayList<KeyValuePair<String, String>>(); int optionNumber = 1; for (String option : listOfOptions) { KeyValuePair<String, String> keyVal = new KeyValuePair<String, String>(); keyVal.setKey(Integer.toString(optionNumber)); keyVal.setValue(option); list.add(keyVal); optionNumber++; } return list; } @Override protected SmappState saveSessionVariables(SmappStateProcessingContext context, String key, String value) throws MwizProcessingException, DBException, RequiredParameterMissingException { return null; } }