Add list accessor that can return random elements
[Sone.git] / src / main / java / net / pterodactylus / sone / template / ListAccessor.java
1 package net.pterodactylus.sone.template;
2
3 import java.util.List;
4 import java.util.Random;
5
6 import net.pterodactylus.util.template.Accessor;
7 import net.pterodactylus.util.template.TemplateContext;
8
9 /**
10  * {@link Accessor} implementation for {@link List}s that can return a random value from the list.
11  *
12  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
13  */
14 public class ListAccessor extends net.pterodactylus.util.template.ListAccessor {
15
16         private Random random = new Random();
17
18         @Override
19         public Object get(TemplateContext templateContext, Object object, String member) {
20                 if ("random".equals(member)) {
21                         List<?> list = (List<?>) object;
22                         if (!list.isEmpty()) {
23                                 return list.get(random.nextInt(list.size()));
24                         }
25                         return null;
26                 }
27                 return super.get(templateContext, object, member);
28         }
29
30 }