1/*
2 * Copyright 2001-2004 The Apache Software Foundation.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17// Contributors:  Kitching Simon <Simon.Kitching@orange.ch>
18
19package org.apache.log4j;
20
21// Contributors:  Kitching Simon <Simon.Kitching@OOOrange.ch>
22
23/**
24   <font color="#AA4444">Refrain from using this class directly, use
25   the {@link Level} class instead</font>.
26
27   @author Ceki G&uuml;lc&uuml; */
28public class Priority {
29
30    transient int level;
31    transient String levelStr;
32    transient int syslogEquivalent;
33
34    public final static int OFF_INT = Integer.MAX_VALUE;
35    public final static int FATAL_INT = 50000;
36    public final static int ERROR_INT = 40000;
37    public final static int WARN_INT = 30000;
38    public final static int INFO_INT = 20000;
39    public final static int DEBUG_INT = 10000;
40    // public final static int FINE_INT = DEBUG_INT;
41    public final static int ALL_INT = Integer.MIN_VALUE;
42
43    /**
44     * @deprecated Use {@link Level#FATAL} instead.
45     */
46    final static public Priority FATAL = new Level(FATAL_INT, "FATAL", 0);
47
48    /**
49     * @deprecated Use {@link Level#ERROR} instead.
50     */
51    final static public Priority ERROR = new Level(ERROR_INT, "ERROR", 3);
52
53    /**
54     * @deprecated Use {@link Level#WARN} instead.
55     */
56    final static public Priority WARN = new Level(WARN_INT, "WARN", 4);
57
58    /**
59     * @deprecated Use {@link Level#INFO} instead.
60     */
61    final static public Priority INFO = new Level(INFO_INT, "INFO", 6);
62
63    /**
64     * @deprecated Use {@link Level#DEBUG} instead.
65     */
66    final static public Priority DEBUG = new Level(DEBUG_INT, "DEBUG", 7);
67
68    /**
69      * Default constructor for deserialization.
70      */
71    protected Priority() {
72        level = DEBUG_INT;
73        levelStr = "DEBUG";
74        syslogEquivalent = 7;
75    }
76
77    /**
78       Instantiate a level object.
79     */
80    protected Priority(int level, String levelStr, int syslogEquivalent) {
81        this.level = level;
82        this.levelStr = levelStr;
83        this.syslogEquivalent = syslogEquivalent;
84    }
85
86    /**
87       Two priorities are equal if their level fields are equal.
88       @since 1.2
89     */
90    public boolean equals(Object o) {
91        if (o instanceof Priority) {
92            Priority r = (Priority) o;
93            return (this.level == r.level);
94        } else {
95            return false;
96        }
97    }
98
99    /**
100       Return the syslog equivalent of this priority as an integer.
101     */
102    public final int getSyslogEquivalent() {
103        return syslogEquivalent;
104    }
105
106    /**
107       Returns <code>true</code> if this level has a higher or equal
108       level than the level passed as argument, <code>false</code>
109       otherwise.
110
111       <p>You should think twice before overriding the default
112       implementation of <code>isGreaterOrEqual</code> method.
113
114    */
115    public boolean isGreaterOrEqual(Priority r) {
116        return level >= r.level;
117    }
118
119    /**
120       Return all possible priorities as an array of Level objects in
121       descending order.
122
123       @deprecated This method will be removed with no replacement.
124    */
125    public static Priority[] getAllPossiblePriorities() {
126        return new Priority[] { Priority.FATAL, Priority.ERROR, Level.WARN, Priority.INFO, Priority.DEBUG };
127    }
128
129    /**
130       Returns the string representation of this priority.
131     */
132    final public String toString() {
133        return levelStr;
134    }
135
136    /**
137       Returns the integer representation of this level.
138     */
139    public final int toInt() {
140        return level;
141    }
142
143    /**
144     * @deprecated Please use the {@link Level#toLevel(String)} method instead.
145    */
146    public static Priority toPriority(String sArg) {
147        return Level.toLevel(sArg);
148    }
149
150    /**
151     * @deprecated Please use the {@link Level#toLevel(int)} method instead.
152     */
153    public static Priority toPriority(int val) {
154        return toPriority(val, Priority.DEBUG);
155    }
156
157    /**
158     * @deprecated Please use the {@link Level#toLevel(int, Level)} method instead.
159    */
160    public static Priority toPriority(int val, Priority defaultPriority) {
161        return Level.toLevel(val, (Level) defaultPriority);
162    }
163
164    /**
165     * @deprecated Please use the {@link Level#toLevel(String, Level)} method instead.
166     */
167    public static Priority toPriority(String sArg, Priority defaultPriority) {
168        return Level.toLevel(sArg, (Level) defaultPriority);
169    }
170}