View Javadoc
1   package fr.inrae.agroclim.indicators.exception.type;
2   
3   import java.util.StringJoiner;
4   
5   import fr.inrae.agroclim.indicators.exception.ErrorType;
6   
7   /**
8    * Common methods to implements ErrorType.
9    *
10   * @author Olivier Maury
11   */
12  public interface CommonErrorType extends ErrorType {
13      /**
14       * @return partial I18n key for messages.properties
15       */
16      private String getShortKey() {
17          return getName().toLowerCase().replace("_", ".");
18      }
19  
20      /**
21       * @return parent error
22       */
23      CommonErrorType getParent();
24  
25      /**
26       * @return error name (as {@link Enum#name()}).
27       */
28      String name();
29  
30      /**
31       * @return Key for Resource/I18nResource.
32       */
33      @Override
34      default String getI18nKey() {
35          final String cat = getCategory().getName().toLowerCase();
36          final StringJoiner sj = new StringJoiner(".", "error.", "");
37          if (!getShortKey().startsWith(cat)) {
38              sj.add(cat);
39          }
40          if (getParent() != null && !getShortKey().startsWith(getParent().getShortKey())) {
41              sj.add(getParent().getShortKey());
42          }
43          sj.add(getShortKey());
44          return sj.toString();
45      }
46  
47      @Override
48      default String getName() {
49          return name();
50      }
51  }