about summary refs log tree commit diff
path: root/usth/ICT2.2/labwork/3/Java/NameCard.java
blob: 165d5f954194e1c5cde04af5725a2355fd75ecad (plain) (blame)
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
import java.util.regex.Pattern;

public class NameCard
{
  private static final Pattern namePattern = Pattern.compile("[ A-Za-z]+");
  private static final Pattern phonePattern = Pattern.compile("[-0-9]*");
  // I have not learnt regex properly
  private static final Pattern emailPattern = Pattern.compile(
    "(\\w+)(\\.|_)?(\\w*)@(\\w+)(\\.(\\w+))+");

  private String name;
  private String phone;
  private String email;

  public String getName()
  {
    return name;
  }

  public String getPhone()
  {
    return phone;
  }

  public String getEmail()
  {
    return email;
  }

  public void setName(String name)
  {
    if (!namePattern.matcher(name).matches())
      throw new IllegalArgumentException("invalid name: " + name);
    this.name = name;
  }

  public void setPhone(String phone)
  {
    if (!phonePattern.matcher(phone).matches())
      throw new IllegalArgumentException("invalid phone number: " + phone);
    this.phone = phone;
  }

  public void setEmail(String email)
  {
    if (!emailPattern.matcher(email).matches())
      throw new IllegalArgumentException("invalid email: " + email);
    this.email = email;
  }

  public NameCard(String name)
  {
    this(name, "", "");
  }

  public NameCard(String name, String phone)
  {
    this(name, phone, "");
  }

  public NameCard(String name, String phone, String email)
  {
    setName(name);
    setPhone(phone);
    setEmail(email);
  }
}