-
Notifications
You must be signed in to change notification settings - Fork 0
/
Member.java
120 lines (97 loc) · 2.73 KB
/
Member.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/*
* Student name: Johnson Zhou
* Student ID: 1302442
* LMS username: zhoujj
*/
/**
* Representing a member and associated information
*/
public class Member implements CommaSeparated {
/** regex expression for non-empty string */
public static final String NON_EMPTY = "(.+)";
/** id must not be empty string */
public static final String ID_FORMAT = NON_EMPTY;
/** csv has 3 columns */
private static final int COL_NUMBER = 3;
/** the Member ID */
private String id;
/** the Member name */
private String name;
/** the Member email */
private String email;
/**
* Constructor for creating a new Member object
* @param csv comma separate data from csv file, invokes parseCsv
* @throws DataFormatException if the CSV data format is incorrect
*/
public Member(String csv) throws DataFormatException {
this.parseCsv(csv);
}
/** public */
/**
* Parses member data from csv
* @param csv comma separate data from csv file
* @throws DataFormatException if the CSV data format is incorrect
*/
public void parseCsv(String csv) throws DataFormatException {
// 111111,John,john@abc.com
String[] values = csv.split(",");
// validate columns
if (values.length != Member.COL_NUMBER) {
throw new DataFormatException("Member data column number incorrect");
}
// validate id
if (!values[0].matches(Member.ID_FORMAT)) {
throw new DataFormatException("Member ID must not be empty");
}
// validate name
if (!values[1].matches(Member.NON_EMPTY)) {
throw new DataFormatException("Member name not provided");
}
// valid email
if (!values[2].matches(Member.NON_EMPTY)) {
throw new DataFormatException("Member email not provided");
}
this.id = values[0];
this.name = values[1];
this.email = values[2];
}
/**
* Converts the class data into a CSV string
* @return member info as csv
*/
public String toCsv() {
return String.format("%s,%s,%s", this.id, this.name, this.email);
}
/**
* Checks whether member ID matches test string
* @param test the string to test against
* @return <code>True</code> if test string matches
*/
public boolean equals(String test) {
return this.id.equals(test);
}
/**
* Gets the member ID
* @return member ID
*/
public String getId() {
return this.id;
}
/**
* Gets the mmember name
* @return member name
*/
public String getName() {
return this.name;
}
/** overrides */
/**
* Object to string conversion by invoking the toCsv() method
* @return member info as csv by invoking toCsv() method
*/
@Override
public String toString() {
return this.toCsv();
}
}