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 org.apache.directory.api.i18n.I18n;
24 import org.apache.directory.api.ldap.model.constants.SchemaConstants;
25 import org.apache.directory.api.ldap.model.schema.SyntaxChecker;
26 import org.apache.directory.api.util.Strings;
27
28
29
30
31
32
33
34
35 @SuppressWarnings("serial")
36 public final class ObjectClassTypeSyntaxChecker extends SyntaxChecker
37 {
38
39
40
41 public static final ObjectClassTypeSyntaxChecker INSTANCE =
42 new ObjectClassTypeSyntaxChecker( SchemaConstants.OBJECT_CLASS_TYPE_SYNTAX );
43
44
45
46
47 public static final class Builder extends SCBuilder<ObjectClassTypeSyntaxChecker>
48 {
49
50
51
52 private Builder()
53 {
54 super( SchemaConstants.OBJECT_CLASS_TYPE_SYNTAX );
55 }
56
57
58
59
60
61
62 @Override
63 public ObjectClassTypeSyntaxChecker build()
64 {
65 return new ObjectClassTypeSyntaxChecker( oid );
66 }
67 }
68
69
70
71
72
73
74
75 private ObjectClassTypeSyntaxChecker( String oid )
76 {
77 super( oid );
78 }
79
80
81
82
83
84 public static Builder builder()
85 {
86 return new Builder();
87 }
88
89
90
91
92
93 @Override
94 public boolean isValidSyntax( Object value )
95 {
96 String strValue;
97
98 if ( value == null )
99 {
100 if ( LOG.isDebugEnabled() )
101 {
102 LOG.debug( I18n.err( I18n.ERR_04488_SYNTAX_INVALID, "null" ) );
103 }
104
105 return false;
106 }
107
108 if ( value instanceof String )
109 {
110 strValue = ( String ) value;
111 }
112 else if ( value instanceof byte[] )
113 {
114 strValue = Strings.utf8ToString( ( byte[] ) value );
115 }
116 else
117 {
118 strValue = value.toString();
119 }
120
121 if ( strValue.length() < 8 || strValue.length() > 10 )
122 {
123 if ( LOG.isDebugEnabled() )
124 {
125 LOG.debug( I18n.err( I18n.ERR_04488_SYNTAX_INVALID, value ) );
126 }
127
128 return false;
129 }
130
131 switch ( strValue )
132 {
133 case "AUXILIARY" :
134 case "ABSTRACT" :
135 case "STRUCTURAL" :
136 if ( LOG.isDebugEnabled() )
137 {
138 LOG.debug( I18n.msg( I18n.MSG_04489_SYNTAX_VALID, value ) );
139 }
140
141 return true;
142
143 default :
144 if ( LOG.isDebugEnabled() )
145 {
146 LOG.debug( I18n.err( I18n.ERR_04488_SYNTAX_INVALID, value ) );
147 }
148
149 return false;
150 }
151 }
152 }