/* See LICENSE for licensing and NOTICE for copyright. */
package org.ldaptive.ad.io;
import org.ldaptive.io.AbstractStringValueTranscoder;
/**
* Decodes and encodes an active directory delta time value for use in an ldap attribute value.
*
* @author Middleware Services
*/
public class DeltaTimeValueTranscoder extends AbstractStringValueTranscoder<Long>
{
/** Delta time uses 100-nanosecond intervals. For conversion purposes this is 1x10^6 / 100. */
private static final long ONE_HUNDRED_NANOSECOND_INTERVAL = 10000L;
@Override
public Long decodeStringValue(final String value)
{
return -Long.parseLong(value) / ONE_HUNDRED_NANOSECOND_INTERVAL;
}
@Override
public String encodeStringValue(final Long value)
{
return String.valueOf(-value * ONE_HUNDRED_NANOSECOND_INTERVAL);
}
@Override
public Class<Long> getType()
{
return Long.class;
}
}