View Javadoc
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   * The generalized time value transcoder.
11   *
12   * @author Christian Bremer
13   */
14  public class GeneralizedTimeToOffsetDateTimeValueTranscoder
15      extends AbstractStringValueTranscoder<OffsetDateTime> {
16  
17    private static final GeneralizedTimeValueTranscoder transcoder
18        = new GeneralizedTimeValueTranscoder();
19  
20    /**
21     * Instantiates a new generalized time to offset date time value transcoder.
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  }