View Javadoc

1   package eu.ehri.project.definitions;
2   
3   import com.google.common.collect.Lists;
4   
5   import java.util.Map;
6   import java.util.MissingResourceException;
7   import java.util.ResourceBundle;
8   import java.util.stream.Collectors;
9   
10  public interface DefinitionList {
11  
12      Boolean isMultiValued();
13      String name();
14  
15      static ResourceBundle bundle = ResourceBundle.getBundle("eu.ehri.project.definitions.messages");
16  
17      static Map<String,String> getMap(DefinitionList[] items, Boolean multivalued) {
18          return Lists.newArrayList(items).stream()
19                  .filter(i -> multivalued == null || i.isMultiValued() == multivalued)
20                  .map(i -> Lists.newArrayList(i.getName(), i.getDescription()))
21                  .collect(Collectors.toMap(i -> i.get(0), i -> i.get(1)));
22      }
23  
24      static Map<String,String> getMap(DefinitionList[] items) {
25          return getMap(items, null);
26      }
27  
28      default String getResourceKey(String key) {
29          try {
30              return bundle.getString(key);
31          } catch (MissingResourceException e) {
32              return "!" + key + "!";
33          }
34      }
35  
36      default String messageKey() {
37          return String.format("%s.%s", getClass().getSimpleName(), name());
38      }
39  
40      default String getName() {
41          return getResourceKey(messageKey());
42      }
43  
44      default String getDescription() {
45          return getResourceKey(String.format("%s.description", messageKey()));
46      }
47  }