View Javadoc

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       * Constructs the RegexAttribute.
51       *
52       * @param id
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       * Sets the input-to-internal pattern
68       *
69       * @param patternString the input-to-internal pattern to set
70       */
71      public void setInputToInternalPattern(String patternString) {
72          ContractChecker.mustNotBeNull(patternString, "patternString");
73          this.inputToInternalPattern = Pattern.compile(patternString);
74      }
75  
76      /**
77       * Sets the input-to-internal replacement string.
78       *
79       * @param replacementString the input-to-internal replacement string to set
80       */
81      public void setInputToInternalReplacement(String replacementString) {
82          ContractChecker.mustNotBeNull(replacementString, "replacementString");
83          this.inputToInternalReplacement = replacementString;
84      }
85  
86      /**
87       * Sets the internal-to-input pattern
88       *
89       * @param patternString the internal-to-input pattern to set
90       */
91      public void setInternalToInputPattern(String patternString) {
92          ContractChecker.mustNotBeNull(patternString, "patternString");
93          this.internalToInputPattern = Pattern.compile(patternString);
94      }
95  
96      /**
97       * Sets the internal-to-input replacement string.
98       *
99       * @param replacementString the internal-to-input replacement string to set
100      */
101     public void setInternalToInputReplacement(String replacementString) {
102         ContractChecker.mustNotBeNull(replacementString, "replacementString");
103         this.internalToInputReplacement = replacementString;
104     }
105 
106     /**
107      * Sets the internal-to-output pattern
108      *
109      * @param patternString the internal-to-output pattern to set
110      */
111     public void setInternalToOutputPattern(String patternString) {
112         ContractChecker.mustNotBeNull(patternString, "patternString");
113         this.internalToOutputPattern = Pattern.compile(patternString);
114     }
115 
116     /**
117      * Sets the internal-to-output replacement string.
118      *
119      * @param replacementString the internal-to-output replacement string to set
120      */
121     public void setInternalToOutputReplacement(String replacementString) {
122         ContractChecker.mustNotBeNull(replacementString, "replacementString");
123         this.internalToOutputReplacement = replacementString;
124     }
125 
126     /**
127      * Sets the validation error message.
128      *
129      * @param message the validation error message to set
130      */
131     public void setValidationErrorMessage(String message) {
132         this.validationErrorMessage = message;
133     }
134 
135     /**
136      * Sets the validation pattern.
137      *
138      * @param patternString the validation pattern to set
139      */
140     public void setValidationPattern(String patternString) {
141         ContractChecker.mustNotBeNull(patternString, "patternString");
142         this.validationPattern = Pattern.compile(patternString);
143     }
144 
145     /**
146      * @param id
147      * @return
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      * @param id
158      * @return
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 }