1
2
3
4
5
6
7
8
9
10
11
12
13
14 package ch.qos.logback.core.rolling.helper;
15
16 import java.text.SimpleDateFormat;
17 import java.util.ArrayList;
18 import java.util.List;
19
20
21
22
23
24
25
26
27 public class DatePatternToRegexUtil {
28
29 final String datePattern;
30 final int length;
31
32 DatePatternToRegexUtil(String datePattern) {
33 this.datePattern = datePattern;
34 length = datePattern.length();
35 }
36
37 String toRegex() {
38 List<SequenceToRegex4SDF> sequenceList = tokenize();
39 StringBuilder sb = new StringBuilder();
40 for (SequenceToRegex4SDF seq : sequenceList) {
41 sb.append(seq.toRegex());
42 }
43 return sb.toString();
44 }
45
46 private List<SequenceToRegex4SDF> tokenize() {
47 List<SequenceToRegex4SDF> sequenceList = new ArrayList<SequenceToRegex4SDF>();
48 SequenceToRegex4SDF sequence = null;
49 for (int i = 0; i < length; i++) {
50 char t = datePattern.charAt(i);
51 if (sequence == null || sequence.c != t) {
52 sequence = addNewSequence(sequenceList, t);
53 } else {
54 sequence.inc();
55 }
56 }
57 return sequenceList;
58 }
59
60 SequenceToRegex4SDF addNewSequence(List<SequenceToRegex4SDF> sequenceList,
61 char t) {
62 SequenceToRegex4SDF token = new SequenceToRegex4SDF(t);
63 sequenceList.add(token);
64 return token;
65 }
66 }