1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package net.sourceforge.javadpkg.control.impl;
20
21 import net.sourceforge.javadpkg.Context;
22 import net.sourceforge.javadpkg.ParseException;
23 import net.sourceforge.javadpkg.control.PackageMaintainer;
24 import net.sourceforge.javadpkg.control.PackageMaintainerParser;
25
26
27
28
29
30
31
32
33
34
35 public class PackageMaintainerParserImpl implements PackageMaintainerParser {
36
37
38
39
40
41
42
43 public PackageMaintainerParserImpl() {
44 super();
45 }
46
47
48 @Override
49 public PackageMaintainer parsePackageMaintainer(String value, Context context) throws ParseException {
50 PackageMaintainer maintainer;
51 String name, address;
52 int indexStart;
53
54
55 if (value == null)
56 throw new IllegalArgumentException("Argument value is null.");
57 if (context == null)
58 throw new IllegalArgumentException("Argument context is null.");
59
60 indexStart = value.indexOf('<');
61 if (indexStart == -1)
62 throw new ParseException(
63 "Can't parse maintainer |" + value + "|: Couldn't find bracket |<| for the start of the e-mail address.");
64 if (!value.endsWith(">"))
65 throw new ParseException("Can't parse maintainer |" + value
66 + "|: Value doesn't end with bracket |>| for the end of the e-mail address.");
67
68 name = value.substring(0, indexStart).trim();
69 address = value.substring(indexStart + 1, value.length() - 1);
70
71 maintainer = new PackageMaintainerImpl(name, address);
72 return maintainer;
73 }
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 private class PackageMaintainerImpl implements PackageMaintainer {
93
94
95
96 private String name;
97
98 private String address;
99
100
101
102
103
104
105
106
107
108
109
110
111 public PackageMaintainerImpl(String name, String address) {
112 super();
113
114 this.name = name;
115 this.address = address;
116 }
117
118
119 @Override
120 public String getName() {
121 return this.name;
122 }
123
124
125 @Override
126 public String getAddress() {
127 return this.address;
128 }
129
130
131 }
132
133
134 }