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