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 public Value<?> normalize( Value<?> value ) throws LdapException
69 {
70 try
71 {
72 String normalized = PrepareString.normalize( value.getString(), PrepareString.StringType.DIRECTORY_STRING );
73
74 return new StringValue( normalized );
75 }
76 catch ( IOException ioe )
77 {
78 throw new LdapInvalidAttributeValueException( ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX, I18n.err(
79 I18n.ERR_04224, value ), ioe );
80 }
81 }
82
83
84
85
86
87 public String normalize( String value ) throws LdapException
88 {
89 try
90 {
91 String prepared = PrepareString.normalize( value, PrepareString.StringType.DIRECTORY_STRING );
92
93 GeneralizedTime time = new GeneralizedTime( prepared );
94 String normalized = time.toGeneralizedTime( Format.YEAR_MONTH_DAY_HOUR_MIN_SEC_FRACTION,
95 FractionDelimiter.DOT, 3, TimeZoneFormat.Z );
96
97 return normalized;
98 }
99 catch ( IOException ioe )
100 {
101 throw new LdapInvalidAttributeValueException( ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX, I18n.err(
102 I18n.ERR_04224, value ), ioe );
103 }
104 catch ( ParseException pe )
105 {
106 throw new LdapInvalidAttributeValueException( ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX, I18n.err(
107 I18n.ERR_04224, value ), pe );
108 }
109 }
110 }