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.normalizers;
21
22
23 import java.text.ParseException;
24
25 import org.apache.directory.api.i18n.I18n;
26 import org.apache.directory.api.ldap.model.constants.SchemaConstants;
27 import org.apache.directory.api.ldap.model.exception.LdapException;
28 import org.apache.directory.api.ldap.model.exception.LdapInvalidAttributeValueException;
29 import org.apache.directory.api.ldap.model.message.ResultCodeEnum;
30 import org.apache.directory.api.ldap.model.schema.Normalizer;
31 import org.apache.directory.api.ldap.model.schema.PrepareString;
32 import org.apache.directory.api.util.GeneralizedTime;
33 import org.apache.directory.api.util.GeneralizedTime.Format;
34 import org.apache.directory.api.util.GeneralizedTime.FractionDelimiter;
35 import org.apache.directory.api.util.GeneralizedTime.TimeZoneFormat;
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 @SuppressWarnings("serial")
53 public class GeneralizedTimeNormalizer extends Normalizer
54 {
55
56
57
58 public GeneralizedTimeNormalizer()
59 {
60 super( SchemaConstants.GENERALIZED_TIME_MATCH_MR_OID );
61 }
62
63
64
65
66
67 @Override
68 public String normalize( String value ) throws LdapException
69 {
70 return normalize( value, PrepareString.AssertionType.ATTRIBUTE_VALUE );
71 }
72
73
74
75
76
77 @Override
78 public String normalize( String value, PrepareString.AssertionType assertionType ) throws LdapException
79 {
80 if ( value == null )
81 {
82 throw new LdapInvalidAttributeValueException( ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX, I18n.err(
83 I18n.ERR_13724_INVALID_VALUE, value ) );
84 }
85
86
87 if ( "000001010000Z".equals( value ) )
88 {
89 return value;
90 }
91
92 try
93 {
94 GeneralizedTime time = new GeneralizedTime( value );
95 return time.toGeneralizedTime( Format.YEAR_MONTH_DAY_HOUR_MIN_SEC_FRACTION,
96 FractionDelimiter.DOT, 3, TimeZoneFormat.Z );
97 }
98 catch ( ParseException pe )
99 {
100 throw new LdapInvalidAttributeValueException( ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX, I18n.err(
101 I18n.ERR_13724_INVALID_VALUE, value ), pe );
102 }
103 }
104 }