blob: 0d77da8a36643bd8c0d1e6e4d10b1755c5479ad5 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012, 2020 Original authors and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Original authors and others - initial API and implementation
******************************************************************************/
package org.eclipse.nebula.widgets.nattable.data.convert;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.nebula.widgets.nattable.Messages;
import org.eclipse.nebula.widgets.nattable.util.ObjectUtils;
/**
* Converts a java.util.Date object to a given format and vice versa
*/
public class DefaultDateDisplayConverter extends DisplayConverter {
private static final Log log = LogFactory.getLog(DefaultDateDisplayConverter.class);
private SimpleDateFormat dateFormat;
/**
* Convert {@link Date} to {@link String} using the default format from
* {@link SimpleDateFormat}
*/
public DefaultDateDisplayConverter() {
this(null, null);
}
public DefaultDateDisplayConverter(TimeZone timeZone) {
this(null, timeZone);
}
/**
* @param dateFormat
* as specified in {@link SimpleDateFormat}
*/
public DefaultDateDisplayConverter(String dateFormat) {
this(dateFormat, null);
}
public DefaultDateDisplayConverter(String dateFormat, TimeZone timeZone) {
if (dateFormat != null) {
this.dateFormat = new SimpleDateFormat(dateFormat);
} else {
this.dateFormat = new SimpleDateFormat();
}
if (timeZone != null) {
this.dateFormat.setTimeZone(timeZone);
}
}
@Override
public Object canonicalToDisplayValue(Object canonicalValue) {
try {
if (ObjectUtils.isNotNull(canonicalValue)) {
return this.dateFormat.format(canonicalValue);
}
} catch (Exception e) {
log.warn(e);
}
return canonicalValue;
}
@Override
public Object displayToCanonicalValue(Object displayValue) {
try {
return this.dateFormat.parse(displayValue.toString());
} catch (Exception e) {
throw new ConversionFailedException(Messages.getString("DefaultDateDisplayConverter.failure", //$NON-NLS-1$
new Object[] { displayValue, this.dateFormat.toPattern() }), e);
}
}
}