| package com.atlassian.uwc.converters.mediawiki; |
| |
| import java.text.DateFormat; |
| import java.text.ParseException; |
| import java.text.SimpleDateFormat; |
| import java.util.Date; |
| import java.util.regex.Matcher; |
| import java.util.regex.Pattern; |
| |
| import org.apache.log4j.Logger; |
| |
| import com.atlassian.uwc.converters.BaseConverter; |
| import com.atlassian.uwc.ui.Page; |
| |
| public class UserDateConverter extends BaseConverter { |
| |
| protected Logger log = Logger.getLogger(this.getClass()); |
| public void convert(Page page) { |
| log.debug("Adding User and Date metadata - Starting"); |
| String input = page.getOriginalText(); |
| String username = getUser(input); |
| Date timestamp = getDate(input); |
| String converted = cleanUserDate(input); |
| if (!getProperties().getProperty("userdate-disabled", "false").equals("true")) { |
| log.debug("author: " + username); |
| log.debug("timestamp: " + timestamp); |
| |
| if (username != null) page.setAuthor(username); |
| if (timestamp != null) page.setTimestamp(timestamp); |
| } |
| log.debug("page.getAuthor: " + page.getAuthor()); |
| page.setConvertedText(converted); |
| log.debug("Adding User and Date metadata - Complete"); |
| } |
| |
| Pattern username = Pattern.compile("^\\{user:([^}]*)\\}\r?\n"); |
| public String getUser(String input) { |
| Matcher userFinder = username.matcher(input); |
| if (userFinder.find()) { |
| return userFinder.group(1); |
| } |
| return null; |
| } |
| |
| protected Pattern date = Pattern.compile("(?:\n|^)\\{timestamp:([^}]*)\\}\r?\n"); |
| protected Date getDate(String input) { |
| Matcher dateFinder = date.matcher(input); |
| if (dateFinder.find()) { |
| String timestamp = dateFinder.group(1); |
| DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); |
| try { |
| return dateFormat.parse(timestamp); |
| } catch (ParseException e) { |
| log.error("Couldn't format date: " + timestamp); |
| e.printStackTrace(); |
| return null; |
| } |
| } |
| return null; |
| } |
| |
| protected String cleanUserDate(String input) { |
| Matcher userFinder = username.matcher(input); |
| if (userFinder.find()) { |
| input = userFinder.replaceFirst(""); |
| } |
| Matcher dateFinder = date.matcher(input); |
| if (dateFinder.find()) { |
| input = dateFinder.replaceFirst(""); |
| } |
| return input; |
| } |
| |
| |
| } |