package com.fasterxml.jackson.datatype.joda.cfg;
import java.io.IOException;
import java.util.Locale;
import org.joda.time.Period;
import org.joda.time.format.PeriodFormatter;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.SerializerProvider;
Simple container used to encapsulate (some of) gory details of
customizations related to date/time formatting.
/**
* Simple container used to encapsulate (some of) gory details of
* customizations related to date/time formatting.
*/
public class JacksonJodaPeriodFormat extends JacksonJodaFormatBase
{
protected final PeriodFormatter _formatter;
// Constructor called by FormatConfig for baseline defaults
public JacksonJodaPeriodFormat(PeriodFormatter defaultFormatter) {
super();
_formatter = defaultFormatter;
}
public JacksonJodaPeriodFormat(JacksonJodaPeriodFormat base, Locale locale)
{
super(base, locale);
PeriodFormatter f = base._formatter;
if (locale != null) {
f = f.withLocale(locale);
}
_formatter = f;
}
public JacksonJodaPeriodFormat(JacksonJodaPeriodFormat base, Boolean useTimestamp)
{
super(base, useTimestamp);
_formatter = base._formatter;
}
Since: 2.9
/**
* @since 2.9
*/
public PeriodFormatter nativeFormatter() {
return _formatter;
}
/*
/**********************************************************
/* Factory methods
/**********************************************************
*/
// 30-Jun-2015, tatu: not 100% it's needed, but support for now...
public JacksonJodaPeriodFormat withUseTimestamp(Boolean useTimestamp) {
if (_useTimestamp != null && _useTimestamp.equals(useTimestamp)) {
return this;
}
return new JacksonJodaPeriodFormat(this, useTimestamp);
}
public JacksonJodaPeriodFormat withFormat(String format) {
/* 17-Nov-2014, tatu: Does not look like there is all that much
* that can be customized... At most we might be able to
* use "alternate" variant?
*/
return this;
}
public JacksonJodaPeriodFormat withLocale(Locale locale) {
if ((locale == null) || (_locale != null && _locale.equals(locale))) {
return this;
}
return new JacksonJodaPeriodFormat(this, locale);
}
/*
/**********************************************************
/* Factory methods for other types
/**********************************************************
*/
public PeriodFormatter createFormatter(SerializerProvider provider)
{
PeriodFormatter formatter = _formatter;
if (!_explicitLocale) {
Locale loc = provider.getLocale();
if (loc != null && !loc.equals(_locale)) {
formatter = formatter.withLocale(loc);
}
}
return formatter;
}
Since: 2.9
/**
* @since 2.9
*/
public Period parsePeriod(DeserializationContext ctxt, String str) throws IOException
{
return _formatter.parsePeriod(str);
}
}