blob: 4ca8a56f2de6dfe216e23987e49f78426a8bb8af [file] [log] [blame]
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;
}
}