/** * Copyright (c) 2009 Bestsolution.at and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html * * Contributors: * Tom Schindl<tom.schindl@bestsolution.at> - Initial API and implementation */ package org.eclipse.emf.example.databinding.project.ui.rcp.databinding; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.eclipse.core.databinding.conversion.Converter; import org.eclipse.core.databinding.validation.IValidator; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.emf.example.databinding.project.ui.rcp.Activator; /** * Convert a String to a date */ public class StringToDateConverter extends Converter implements IValidator { private List<DateFormat> formats = new ArrayList<DateFormat>(); private String message; /** * New converter * @param message message when conversion fails */ public StringToDateConverter(String message) { super(String.class, Date.class); this.message = message; formats.add(DateFormat.getDateInstance(DateFormat.SHORT)); formats.add(new SimpleDateFormat("yyyy-MM-dd")); } public Object convert(Object fromObject) { if (fromObject == null || fromObject.toString().trim().length() == 0) { return null; } for (DateFormat f : formats) { try { return f.parse(fromObject.toString()); } catch (ParseException e) { // Ignore } } throw new RuntimeException(message); } public IStatus validate(Object value) { try { convert(value); } catch (Exception e) { return new Status(IStatus.ERROR, Activator.PLUGIN_ID, message); } return Status.OK_STATUS; } }