org.xwiki.rendering.internal.macro.jira.displayer.field.AbstractDateJIRAFieldDisplayer.java Source code

Java tutorial

Introduction

Here is the source code for org.xwiki.rendering.internal.macro.jira.displayer.field.AbstractDateJIRAFieldDisplayer.java

Source

/*
 * See the NOTICE file distributed with this work for additional
 * information regarding copyright ownership.
 *
 * This is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This software 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this software; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */
package org.xwiki.rendering.internal.macro.jira.displayer.field;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.List;

import org.jdom2.Element;
import org.xwiki.rendering.block.Block;
import org.xwiki.rendering.block.VerbatimBlock;
import org.xwiki.rendering.macro.jira.JIRAFieldDisplayer;

/**
 * Common Field Displayer for Dates. Parses field in the JIRA date format and generates date the format
 * {@code dd-MMM-yyyy}.
 *
 * @version $Id: c9a011bfa4101cc256751ad0b8da85fd89799486 $
 * @since 4.2M1
 */
public abstract class AbstractDateJIRAFieldDisplayer implements JIRAFieldDisplayer {
    /**
     * JIRA Date format.
     */
    private DateFormat jiraDateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");

    /**
     * Date format for displaying.
     */
    private DateFormat displayDateFormat = new SimpleDateFormat("dd-MMM-yyyy");

    @Override
    public List<Block> displayField(String fieldName, Element issue) {
        List<Block> result;
        String date = issue.getChildText(fieldName);
        if (date != null) {
            try {
                Date parsedDate = this.jiraDateFormat.parse(date);
                result = Arrays.<Block>asList(new VerbatimBlock(this.displayDateFormat.format(parsedDate), true));
            } catch (ParseException e) {
                result = Arrays.<Block>asList(new VerbatimBlock(date, true));
            }
        } else {
            result = Collections.emptyList();
        }
        return result;
    }
}