1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.scm.provider.svn.svnexe.command.info;
20
21 import java.time.format.DateTimeFormatter;
22 import java.time.temporal.TemporalAccessor;
23 import java.util.ArrayList;
24 import java.util.List;
25
26 import org.apache.maven.scm.command.info.InfoItem;
27 import org.apache.maven.scm.util.AbstractConsumer;
28
29
30
31
32
33 public class SvnInfoConsumer extends AbstractConsumer {
34 private final List<InfoItem> infoItems = new ArrayList<>();
35
36 private InfoItem currentItem = new InfoItem();
37
38 private static final DateTimeFormatter DT_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss Z");
39
40
41 public void consumeLine(String s) {
42 if (s.equals("")) {
43 if (currentItem != null) {
44 infoItems.add(currentItem);
45 }
46
47 currentItem = new InfoItem();
48 } else if (s.startsWith("Path: ")) {
49 currentItem.setPath(getValue(s));
50 } else if (s.startsWith("URL: ")) {
51 currentItem.setURL(getValue(s));
52 } else if (s.startsWith("Repository Root: ")) {
53 currentItem.setRepositoryRoot(getValue(s));
54 } else if (s.startsWith("Repository UUID: ")) {
55 currentItem.setRepositoryUUID(getValue(s));
56 } else if (s.startsWith("Revision: ")) {
57 currentItem.setRevision(getValue(s));
58 } else if (s.startsWith("Node Kind: ")) {
59 currentItem.setNodeKind(getValue(s));
60 } else if (s.startsWith("Schedule: ")) {
61 currentItem.setSchedule(getValue(s));
62 } else if (s.startsWith("Last Changed Author: ")) {
63 currentItem.setLastChangedAuthor(getValue(s));
64 } else if (s.startsWith("Last Changed Rev: ")) {
65 currentItem.setLastChangedRevision(getValue(s));
66 } else if (s.startsWith("Last Changed Date: ")) {
67 currentItem.setLastChangedDateTime(parseDate(getValue(s)));
68 currentItem.setLastChangedDate(getValue(s));
69 }
70 }
71
72 private static String getValue(String s) {
73 int idx = s.indexOf(": ");
74
75 if (idx < 0) {
76
77 return null;
78 } else {
79 return s.substring(idx + 2);
80 }
81 }
82
83 public List<InfoItem> getInfoItems() {
84 return infoItems;
85 }
86
87 static TemporalAccessor parseDate(String dateText) {
88
89 int startSuffix = dateText.indexOf('(');
90 if (startSuffix != -1) {
91 dateText = dateText.substring(0, startSuffix);
92 }
93 return DT_FORMATTER.parse(dateText.trim());
94 }
95 }