View Javadoc

1   /*
2    * Copyright (c) 2009 QOS.ch All rights reserved.
3    * 
4    * Permission is hereby granted, free of charge, to any person obtaining a copy
5    * of this software and associated documentation files (the "Software"), to deal
6    * in the Software without restriction, including without limitation the rights
7    * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8    * copies of the Software, and to permit persons to whom the Software is
9    * furnished to do so, subject to the following conditions:
10   * 
11   * The above copyright notice and this permission notice shall be included in
12   * all copies or substantial portions of the Software.
13   * 
14   * THE SOFTWARE IS PROVIDED "AS  IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  package ch.qos.cal10n.verifier;
23  
24  import java.util.Locale;
25  
26  /**
27   * 
28   * Aggregates various parameters of a verification error in a single place
29   * (class).
30   * 
31   * @author Ceki Gülcü
32   */
33  public class Cal10nError {
34  
35    enum ErrorType {
36      // MISSING_LOCALE_NAMES_ANNOTATION
37  
38      MISSING_BN_ANNOTATION, FAILED_TO_FIND_RB, EMPTY_RB, EMPTY_ENUM, ABSENT_IN_RB, ABSENT_IN_ENUM;
39    }
40  
41    final ErrorType errorType;
42    final String key;
43    final Locale locale;
44    final Class<?> enumClass;
45    final String enumClassName;
46    final String baseName;
47  
48    Cal10nError(ErrorType errorType, String key, Class<?> enumClass,
49        Locale locale, String baseName) {
50      this.errorType = errorType;
51      this.key = key;
52      this.enumClass = enumClass;
53      this.enumClassName = enumClass.getName();
54      this.locale = locale;
55      this.baseName = baseName;
56    }
57  
58    public ErrorType getErrorType() {
59      return errorType;
60    }
61  
62    public String getKey() {
63      return key;
64    }
65  
66    public Locale getLocale() {
67      return locale;
68    }
69  
70    public Class<?> getEnumClass() {
71      return enumClass;
72    }
73  
74    @Override
75    public String toString() {
76      switch (errorType) {
77      case MISSING_BN_ANNOTATION:
78        return "Missing @BaseName annotation in enum type ["
79            + enumClassName + "]";
80      case FAILED_TO_FIND_RB:
81        return "Failed to locate resource bundle [" + baseName
82            + "] for locale [" + locale + "] for enum type [" + enumClassName
83            + "]";
84      case EMPTY_RB:
85        return "Empty resource bundle named [" + baseName
86            + "] for locale [" + locale + "]";
87      case EMPTY_ENUM:
88        return "Empty enum type [" + enumClassName + "]";
89      case ABSENT_IN_ENUM:
90        return "Key [" + key + "] present in resource bundle named ["
91            + baseName + "] for locale [" + locale
92            + "] but absent in enum type [" + enumClassName + "]";
93      case ABSENT_IN_RB:
94        return "Key [" + key + "] present in enum type [" + enumClassName
95            + "] but absent in resource bundle named [" + baseName
96            + "] for locale [" + locale + "]";
97      default:
98        throw new IllegalStateException("Impossible to reach here");
99      }
100   }
101 }