1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.logging.log4j.core.pattern;
19
20
21
22
23 public final class FormattingInfo {
24
25
26
27 private static final char[] SPACES = new char[] { ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' };
28
29
30
31
32 private static final FormattingInfo DEFAULT = new FormattingInfo(false, 0, Integer.MAX_VALUE);
33
34
35
36
37 private final int minLength;
38
39
40
41
42 private final int maxLength;
43
44
45
46
47 private final boolean leftAlign;
48
49
50
51
52
53
54
55
56
57
58
59 public FormattingInfo(final boolean leftAlign, final int minLength, final int maxLength) {
60 this.leftAlign = leftAlign;
61 this.minLength = minLength;
62 this.maxLength = maxLength;
63 }
64
65
66
67
68
69
70 public static FormattingInfo getDefault() {
71 return DEFAULT;
72 }
73
74
75
76
77
78
79 public boolean isLeftAligned() {
80 return leftAlign;
81 }
82
83
84
85
86
87
88 public int getMinLength() {
89 return minLength;
90 }
91
92
93
94
95
96
97 public int getMaxLength() {
98 return maxLength;
99 }
100
101
102
103
104
105
106
107
108
109 public void format(final int fieldStart, final StringBuilder buffer) {
110 final int rawLength = buffer.length() - fieldStart;
111
112 if (rawLength > maxLength) {
113 buffer.delete(fieldStart, buffer.length() - maxLength);
114 } else if (rawLength < minLength) {
115 if (leftAlign) {
116 final int fieldEnd = buffer.length();
117 buffer.setLength(fieldStart + minLength);
118
119 for (int i = fieldEnd; i < buffer.length(); i++) {
120 buffer.setCharAt(i, ' ');
121 }
122 } else {
123 int padLength = minLength - rawLength;
124
125 for (; padLength > SPACES.length; padLength -= SPACES.length) {
126 buffer.insert(fieldStart, SPACES);
127 }
128
129 buffer.insert(fieldStart, SPACES, 0, padLength);
130 }
131 }
132 }
133
134
135
136
137
138
139 @Override
140 public String toString() {
141 StringBuilder sb = new StringBuilder();
142 sb.append(super.toString());
143 sb.append("[leftAlign=");
144 sb.append(leftAlign);
145 sb.append(", maxLength=");
146 sb.append(maxLength);
147 sb.append(", minLength=");
148 sb.append(minLength);
149 sb.append("]");
150 return sb.toString();
151 }
152
153 }