1
2
3
4
5
6
7
8
9
10
11
12
13
14 package ch.qos.logback.core.pattern;
15
16
17
18
19
20
21
22 public class FormatInfo {
23 private int min = Integer.MIN_VALUE;
24 private int max = Integer.MAX_VALUE;
25 private boolean leftPad = true;
26 private boolean leftTruncate = true;
27
28 public FormatInfo() {
29 }
30
31 public FormatInfo(int min, int max) {
32 this.min = min;
33 this.max = max;
34 }
35
36 public FormatInfo(int min, int max, boolean leftPad, boolean leftTruncate) {
37 this.min = min;
38 this.max = max;
39 this.leftPad = leftPad;
40 this.leftTruncate = leftTruncate;
41 }
42
43
44
45
46
47
48
49
50
51 public static FormatInfo valueOf(String str) throws IllegalArgumentException {
52 if (str == null) {
53 throw new NullPointerException("Argument cannot be null");
54 }
55
56 FormatInfo fi = new FormatInfo();
57
58 int indexOfDot = str.indexOf('.');
59 String minPart = null;
60 String maxPart = null;
61 if (indexOfDot != -1) {
62 minPart = str.substring(0, indexOfDot);
63 if (indexOfDot + 1 == str.length()) {
64 throw new IllegalArgumentException("Formatting string [" + str + "] should not end with '.'");
65 } else {
66 maxPart = str.substring(indexOfDot + 1);
67 }
68 } else {
69 minPart = str;
70 }
71
72 if (minPart != null && minPart.length() > 0) {
73 int min = Integer.parseInt(minPart);
74 if (min >= 0) {
75 fi.min = min;
76 } else {
77 fi.min = -min;
78 fi.leftPad = false;
79 }
80 }
81
82 if (maxPart != null && maxPart.length() > 0) {
83 int max = Integer.parseInt(maxPart);
84 if (max >= 0) {
85 fi.max = max;
86 } else {
87 fi.max = -max;
88 fi.leftTruncate = false;
89 }
90 }
91
92 return fi;
93
94 }
95
96 public boolean isLeftPad() {
97 return leftPad;
98 }
99
100 public void setLeftPad(boolean leftAlign) {
101 this.leftPad = leftAlign;
102 }
103
104 public int getMax() {
105 return max;
106 }
107
108 public void setMax(int max) {
109 this.max = max;
110 }
111
112 public int getMin() {
113 return min;
114 }
115
116 public void setMin(int min) {
117 this.min = min;
118 }
119
120 public boolean isLeftTruncate() {
121 return leftTruncate;
122 }
123
124 public void setLeftTruncate(boolean leftTruncate) {
125 this.leftTruncate = leftTruncate;
126 }
127
128 public boolean equals(Object o) {
129 if (this == o) {
130 return true;
131 }
132 if (!(o instanceof FormatInfo)) {
133 return false;
134 }
135 FormatInfo r = (FormatInfo) o;
136
137 return (min == r.min) && (max == r.max) && (leftPad == r.leftPad) && (leftTruncate == r.leftTruncate);
138 }
139
140 @Override
141 public int hashCode() {
142 int result = min;
143 result = 31 * result + max;
144 result = 31 * result + (leftPad ? 1 : 0);
145 result = 31 * result + (leftTruncate ? 1 : 0);
146 return result;
147 }
148
149 public String toString() {
150 return "FormatInfo(" + min + ", " + max + ", " + leftPad + ", " + leftTruncate + ")";
151 }
152 }