csns.web.editor.CalendarPropertyEditor.java Source code

Java tutorial

Introduction

Here is the source code for csns.web.editor.CalendarPropertyEditor.java

Source

/*
 * This file is part of the CSNetwork Services (CSNS) project.
 * 
 * Copyright 2012, Chengyu Sun (csun@calstatela.edu).
 * 
 * CSNS is free software: you can redistribute it and/or modify it under the
 * terms of the GNU Affero General Public License as published by the Free
 * Software Foundation, either version 3 of the License, or (at your option)
 * any later version.
 * 
 * CSNS is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for
 * more details.
 * 
 * You should have received a copy of the GNU Affero General Public License
 * along with CSNS. If not, see http://www.gnu.org/licenses/agpl.html.
 */
package csns.web.editor;

import java.beans.PropertyEditorSupport;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;

public class CalendarPropertyEditor extends PropertyEditorSupport {

    private DateFormat dateFormat;

    private static final Logger logger = LoggerFactory.getLogger(CalendarPropertyEditor.class);

    public CalendarPropertyEditor() {
        this("MM/dd/yyyy HH:mm:ss");
    }

    public CalendarPropertyEditor(String format) {
        this.dateFormat = new SimpleDateFormat(format);
    }

    public void setAsText(String text) throws IllegalArgumentException {
        if (!StringUtils.hasText(text)) {
            setValue(null);
            return;
        }

        try {
            Calendar value = Calendar.getInstance();
            value.setTime(dateFormat.parse(text));
            setValue(value);
        } catch (ParseException ex) {
            logger.warn("Cannot parse date: " + text);
            throw new IllegalArgumentException("Cannot parse date: " + text);
        }
    }

    public String getAsText() {
        Calendar value = (Calendar) getValue();
        return value != null ? dateFormat.format(value.getTime()) : "";
    }

}