Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  
  package bpiwowar.argparser.handlers;
  
  import java.util.Map;
  import java.util.Set;
  import java.util.TreeMap;
 
 

Author(s):
bpiwowar
 
 @HandlerInformation(value = Enum.class)
 public class EnumHandler extends GenericObjectsHandler {
 	TreeMap<StringEnum<?>> enums = new TreeMap<StringEnum<?>>();
 
 	private Map<Enum<?>, String[]> activateGroups = new TreeMap<Enum<?>, String[]>();
 
 	final static private Logger LOGGER = Logger.getLogger(EnumHandler.class);
 
 	@SuppressWarnings("unchecked")
 	public EnumHandler(Object objectField field) {
 		super(objectfield);
 
 		// handle a default value (if the field has an EnumValue annotation)
 		EnumValue enumValue = field.getAnnotation(EnumValue.class);
 		if (enumValue != null) {
 			for (String key : enumValue.value())
 				.put(key, (Enum<?>) get());
 		}
 
 		Class<Enumc = (Class<Enum>) field.getType();
 		for (Field f : c.getDeclaredFields()) {
 			if (field.getType() == f.getType()) {
 				enumValue = f.getAnnotation(EnumValue.class);
 				Enum<?> x;
 				try {
 					boolean a = f.isAccessible();
 					if (!a)
 						f.setAccessible(true);
 					x = (Enumf.get(null);
 					if (!a)
 						f.setAccessible(false);
 				} catch (Exception e) {
 					throw new RuntimeException(e);
 				}
 				if (enumValue == null)
 					.put(x.name(), x);
 				else
 					for (String key : enumValue.value())
 						.put(keyx);
 
 				ArgumentGroupActivator activateGroups = f
 				if (activateGroups != null) {
 					this..put(xactivateGroups.value());
 				}
 			}
 		}
 	}
 
 	public Set<StringgetNames() {
 		return .keySet();
 	}
 
 	public String toString() {
 		return "EnumHandler of " + .getType();
 	}
 
 	/*
 	 * (non-Javadoc)
 	 * 
 	 * @see yrla.argparser.holders.Holder#scan(yrla.argparser.StringScanner)
 	 */
 	public Object process(ArgParser argParserStringScanner scanner)
 			throws StringScanException {
 		final String s = scanner.scanString();
 		setValue(argParsers);
 		return s;
 	}
 
 	public void setValue(ArgParser argParserString value) {
 		try {
 			final Enum<?> v = .get(value);
 			if (v == null && !.containsKey(value))
 				throw new StringScanException("Enum value '" + value
 						+ "' is not valid");
			if ( == null || v == null)
				return;
			String[] groups = this..get(v);
			if (groups != null)
				for (String group : groups)
					argParser.activate(group);
catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
New to GrepCode? Check out our FAQ X