File: LogLevel.java

package info (click to toggle)
libi18n-java 0.1.3a-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, lenny
  • size: 244 kB
  • ctags: 324
  • sloc: java: 1,652; sh: 44; xml: 34; makefile: 12
file content (142 lines) | stat: -rw-r--r-- 5,058 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package org.workingfrog.i18n.util;

import java.util.HashSet;
import java.util.Set;

public class LogLevel {
    
    /** logs.
     * levels :
     *  - NONE   : no output,
     *  - L10N   : find missing keys for current language,
     *  - I18N   : locate objects without i18n behavior,
     *  - NAMING : identify mispelled keys or values hard coded in objects,
     *  - ALL    : all previous levels, less NONE ;-})
     *
     * combinations of levels L10N, I18N and NAMING :
     *  - IL : I18N + L10N,
     *  - IN : I18N + NAMING,
     *  - LN : L10N + NAMING,
     *  - LIN <=> ALL (not provided, ALL more efficient)
     */
    public static final LogLevel NONE   = new LogLevel("NONE");
    public static final LogLevel L10N   = new LogLevel("L10N");
    public static final LogLevel I18N   = new LogLevel("I18N");
    public static final LogLevel NAMING = new LogLevel("NAMING");
    public static final LogLevel IL     = new LogLevel("IL");
    public static final LogLevel IN     = new LogLevel("IN");
    public static final LogLevel LN     = new LogLevel("LN");
    public static final LogLevel ALL    = new LogLevel("ALL");
    
    /** LogLevel used in project */
    private static LogLevel current = NONE;
    
    /** used in comparison with current LogLevel */
    private static Set defaults = new HashSet();
    
    static {
        defaults.add(NONE);
        defaults.add(L10N);
        defaults.add(I18N);
        defaults.add(NAMING);
        defaults.add(ALL);
    }
    
    /** instance name */
    private final String name;
    
    private LogLevel (String name) { this.name = name; }
    
    private static boolean compare (LogLevel level, LogLevel combination) {

        if (IL.equals(combination)) {
            return level.equals(I18N) || level.equals(L10N);
        } else if (IN.equals(combination)) {
            return level.equals(I18N) || level.equals(NAMING);
        } else {
            return level.equals(L10N) || level.equals(NAMING);
        }
    }

    private static boolean bothAreLevels (LogLevel current, LogLevel level) {
        return defaults.contains(current) && defaults.contains(level);
    }

    private static boolean bothAreCombinations
        (LogLevel current, LogLevel level) {
        return !defaults.contains(current) && !defaults.contains(level);
    }

    public static void setCurrent (LogLevel level) {
        current = level;
    }

    public static void setCurrent (String level) {
        String ucLevel = level.toUpperCase();

        if (NONE.toString().equals(ucLevel)) {
            setCurrent(NONE);
        } else if (L10N.toString().equals(ucLevel)) {
            setCurrent(L10N);
        } else if (I18N.toString().equals(ucLevel)) {
            setCurrent(I18N);
        } else if (NAMING.toString().equals(ucLevel)) {
            setCurrent(NAMING);
        } else if (ALL.toString().equals(ucLevel)) {
            setCurrent(ALL);
        } else if (IL.toString().equals(ucLevel)) {
            setCurrent(IL);
        } else if (IN.toString().equals(ucLevel)) {
            setCurrent(IN);
        } else if (LN.toString().equals(ucLevel)) {
            setCurrent(LN);
        } else {
            throw new IllegalArgumentException("\"" + level + "\" is not a "
                + "valid i18n level");
        }
    }

    public static boolean isChecking (LogLevel level) {

        if (current.equals(ALL)) {
            return true;
        }

        if (bothAreLevels(current, level)) {
            return current.equals(level);
        } else if (bothAreCombinations(current, level)) {
            if (current.equals(IL)) {
                return level.toString().indexOf('I') != -1
                    || level.toString().indexOf('L') != -1;
            } else if (current.equals(IN)) {
                return level.toString().indexOf('I') != -1
                    || level.toString().indexOf('N') != -1;
            } else {
                return level.toString().indexOf('L') != -1
                    || level.toString().indexOf('N') != -1;
            }
        } else if (defaults.contains(current)) {
            return compare(current, level);
        } else {
            return compare(level, current);
        }
    }
    
    public String toString () { return name; }
    
    public static void main (String[] args) {
        
        System.out.println("testing NONE");
        LogLevel.setCurrent(NONE);
        System.out.println("checking ALL ? " + LogLevel.isChecking(ALL));
        System.out.println("checking I18N ? " + LogLevel.isChecking(I18N));
        System.out.println("checking NONE ? " + LogLevel.isChecking(NONE));
        
        System.out.println("\ntesting IN");
        LogLevel.setCurrent(IN);
        System.out.println("checking ALL ? " + LogLevel.isChecking(ALL));
        System.out.println("checking L10N ? " + LogLevel.isChecking(L10N));
        System.out.println("checking NAMING ? " + LogLevel.isChecking(NAMING));
        System.out.println("checking I18N ? " + LogLevel.isChecking(I18N));
    }
}