1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.api.ldap.model.schema.syntaxCheckers;
21
22
23 import java.util.ArrayList;
24 import java.util.List;
25
26 import org.apache.directory.api.ldap.model.schema.SyntaxChecker;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
29
30
31
32
33
34
35
36
37 @SuppressWarnings("serial")
38 public class RegexSyntaxChecker extends SyntaxChecker
39 {
40
41 private static final Logger LOG = LoggerFactory.getLogger( RegexSyntaxChecker.class );
42
43
44 private List<String> expressions;
45
46
47
48
49
50
51
52
53
54
55
56 public RegexSyntaxChecker( String oid, String[] matchExprArray )
57 {
58 super( oid );
59
60 if ( ( matchExprArray != null ) && ( matchExprArray.length != 0 ) )
61 {
62 expressions = new ArrayList<String>( matchExprArray.length );
63
64 for ( String regexp : matchExprArray )
65 {
66 expressions.add( regexp );
67 }
68 }
69 else
70 {
71 expressions = new ArrayList<String>();
72 }
73 }
74
75
76
77
78
79
80
81
82
83 public RegexSyntaxChecker( String oid )
84 {
85 super( oid );
86 expressions = new ArrayList<String>();
87 }
88
89
90
91
92
93 public boolean isValidSyntax( Object value )
94 {
95 String str = null;
96 boolean match = true;
97
98 if ( value instanceof String )
99 {
100 str = ( String ) value;
101
102 for ( String regexp : expressions )
103 {
104 match = match && str.matches( regexp );
105
106 if ( !match )
107 {
108 break;
109 }
110 }
111 }
112
113 if ( match )
114 {
115 LOG.debug( "Syntax valid for '{}'", value );
116 }
117 else
118 {
119 LOG.debug( "Syntax invalid for '{}'", value );
120 }
121
122 return match;
123 }
124
125
126
127
128
129
130
131 public String[] getExpressions()
132 {
133 String[] exprs = new String[expressions.size()];
134 return expressions.toArray( exprs );
135 }
136
137
138
139
140
141
142
143 public void setExpressions( String[] expressions )
144 {
145 for ( String regexp : expressions )
146 {
147 this.expressions.add( regexp );
148 }
149 }
150 }