| /******************************************************************************* |
| * 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); |
| } |
| } |
| |
| } |