1 package org.bremersee.ldaptive.transcoder;
2
3 import java.time.OffsetDateTime;
4 import java.time.ZonedDateTime;
5 import java.util.Optional;
6 import org.ldaptive.transcode.AbstractStringValueTranscoder;
7 import org.ldaptive.transcode.GeneralizedTimeValueTranscoder;
8
9
10
11
12
13
14 public class GeneralizedTimeToOffsetDateTimeValueTranscoder
15 extends AbstractStringValueTranscoder<OffsetDateTime> {
16
17 private static final GeneralizedTimeValueTranscoder transcoder
18 = new GeneralizedTimeValueTranscoder();
19
20
21
22
23 public GeneralizedTimeToOffsetDateTimeValueTranscoder() {
24 super();
25 }
26
27 @Override
28 public OffsetDateTime decodeStringValue(String value) {
29 return Optional.ofNullable(value)
30 .filter(timeStr -> !timeStr.isEmpty())
31 .map(transcoder::decodeStringValue)
32 .map(ZonedDateTime::toOffsetDateTime)
33 .orElse(null);
34 }
35
36 @Override
37 public String encodeStringValue(OffsetDateTime value) {
38 return Optional.ofNullable(value)
39 .map(OffsetDateTime::toZonedDateTime)
40 .map(transcoder::encodeStringValue)
41 .orElse(null);
42 }
43
44 @Override
45 public Class<OffsetDateTime> getType() {
46 return OffsetDateTime.class;
47 }
48 }