1 package net.sf.webmancer.db;
2
3 import java.util.regex.Pattern;
4
5 import net.sf.webmancer.util.ContractChecker;
6
7 public class RegexAttribute extends StringAttribute {
8
9
10
11
12 private Pattern validationPattern;
13
14
15
16
17 private Pattern internalToOutputPattern;
18
19
20
21
22 private String internalToOutputReplacement;
23
24
25
26
27 private Pattern internalToInputPattern;
28
29
30
31
32 private String internalToInputReplacement;
33
34
35
36
37 private Pattern inputToInternalPattern;
38
39
40
41
42 private String inputToInternalReplacement;
43
44
45
46
47 private String validationErrorMessage;
48
49
50
51
52
53
54 public RegexAttribute() {
55 super();
56 this.validationPattern = null;
57 this.internalToOutputPattern = null;
58 this.internalToOutputReplacement = "\\1";
59 this.internalToInputPattern = null;
60 this.internalToInputReplacement = "\\1";
61 this.inputToInternalPattern = null;
62 this.inputToInternalReplacement = "\\1";
63 this.validationErrorMessage = "invalid input";
64 }
65
66
67
68
69
70
71 public void setInputToInternalPattern(String patternString) {
72 ContractChecker.mustNotBeNull(patternString, "patternString");
73 this.inputToInternalPattern = Pattern.compile(patternString);
74 }
75
76
77
78
79
80
81 public void setInputToInternalReplacement(String replacementString) {
82 ContractChecker.mustNotBeNull(replacementString, "replacementString");
83 this.inputToInternalReplacement = replacementString;
84 }
85
86
87
88
89
90
91 public void setInternalToInputPattern(String patternString) {
92 ContractChecker.mustNotBeNull(patternString, "patternString");
93 this.internalToInputPattern = Pattern.compile(patternString);
94 }
95
96
97
98
99
100
101 public void setInternalToInputReplacement(String replacementString) {
102 ContractChecker.mustNotBeNull(replacementString, "replacementString");
103 this.internalToInputReplacement = replacementString;
104 }
105
106
107
108
109
110
111 public void setInternalToOutputPattern(String patternString) {
112 ContractChecker.mustNotBeNull(patternString, "patternString");
113 this.internalToOutputPattern = Pattern.compile(patternString);
114 }
115
116
117
118
119
120
121 public void setInternalToOutputReplacement(String replacementString) {
122 ContractChecker.mustNotBeNull(replacementString, "replacementString");
123 this.internalToOutputReplacement = replacementString;
124 }
125
126
127
128
129
130
131 public void setValidationErrorMessage(String message) {
132 this.validationErrorMessage = message;
133 }
134
135
136
137
138
139
140 public void setValidationPattern(String patternString) {
141 ContractChecker.mustNotBeNull(patternString, "patternString");
142 this.validationPattern = Pattern.compile(patternString);
143 }
144
145
146
147
148
149 public static RegexAttribute createPhoneRegexAttribute() {
150 RegexAttribute attr = new RegexAttribute();
151 attr.setValidationPattern("^\\+?\\d+([() 0-9-]*\\d+)*$");
152 attr.setValidationErrorMessage("invalid phone number");
153 return attr;
154 }
155
156
157
158
159
160 public static RegexAttribute createEmailRegexAttribute() {
161 RegexAttribute attr = new RegexAttribute();
162 attr.setValidationPattern("^[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+\\.[a-zA-Z]+");
163 attr.setValidationErrorMessage("invalid e-mail address");
164 return attr;
165 }
166 }