package com.itranswarp.jsonstream.adapter;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

import com.itranswarp.jsonstream.TypeAdapter;

/**
 * Standard DateTime type adapter for conversion between String and LocalDateTime.
 * 
 * @author Michael Liao
 */
public class DateTimeTypeAdapter implements TypeAdapter<LocalDateTime> {

    DateTimeFormatter formatter;

    public DateTimeTypeAdapter() {
        this.formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
    }

    public DateTimeTypeAdapter(String pattern) {
        this.formatter = DateTimeFormatter.ofPattern(pattern);
    }

    public DateTimeTypeAdapter(DateTimeFormatter formatter) {
        this.formatter = formatter;
    }

    @Override
    public LocalDateTime deserialize(String s) {
        return LocalDateTime.parse(s, this.formatter);
    }

    @Override
    public String serialize(LocalDateTime t) {
        return t.format(this.formatter);
    }

}