001 package org.bukkit.conversations; 002 003 import org.apache.commons.lang.StringUtils; 004 005 import java.util.Arrays; 006 import java.util.List; 007 008 /** 009 * FixedSetPrompt is the base class for any prompt that requires a fixed set 010 * response from the user. 011 */ 012 public abstract class FixedSetPrompt extends ValidatingPrompt { 013 014 protected List<String> fixedSet; 015 016 /** 017 * Creates a FixedSetPrompt from a set of strings. 018 * <p> 019 * foo = new FixedSetPrompt("bar", "cheese", "panda"); 020 * 021 * @param fixedSet A fixed set of strings, one of which the user must 022 * type. 023 */ 024 public FixedSetPrompt(String... fixedSet) { 025 super(); 026 this.fixedSet = Arrays.asList(fixedSet); 027 } 028 029 private FixedSetPrompt() {} 030 031 @Override 032 protected boolean isInputValid(ConversationContext context, String input) { 033 return fixedSet.contains(input); 034 } 035 036 /** 037 * Utility function to create a formatted string containing all the 038 * options declared in the constructor. 039 * 040 * @return the options formatted like "[bar, cheese, panda]" if bar, 041 * cheese, and panda were the options used 042 */ 043 protected String formatFixedSet() { 044 return "[" + StringUtils.join(fixedSet, ", ") + "]"; 045 } 046 }