package com.aperture_software.glados_wiki.markdown; import com.aperture_software.glados_wiki.entities.User; import com.aperture_software.glados_wiki.services.TimeZoneService; import com.google.common.base.Function; import com.google.common.base.Optional; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by jhyun on 14. 2. 27. * @author jhyun */ public class WikiSignatureExpandFunction implements Function<String, String> { private SigFunction sigFunction = null; private EscapableRegexReplaceFunction rrf = null; public WikiSignatureExpandFunction(TimeZoneService timeZoneService, Optional<User> user) { sigFunction = new SigFunction(timeZoneService, user); rrf = new EscapableRegexReplaceFunction(Pattern.compile("@@@@"), sigFunction, false); } private static class SigFunction implements Function<Matcher, String> { private SigFunction(TimeZoneService timeZoneService, Optional<User> user) { this.timeZoneService = timeZoneService; this.user = user; // sig = sig_(); } private TimeZoneService timeZoneService; private Optional<User> user; private String sig = null; private String sig_() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MMM/dd/EEE HH:mm:ss (z)"); TimeZone tz = timeZoneService.getDefaultTimeZone(); String username = "Anonymous"; if (user.isPresent()) { username = user.get().getUsername(); tz = timeZoneService.getTimeZoneByUsername(username); } // Date dt = Calendar.getInstance(tz).getTime(); // return String.format(" -- %s, %s", username, sdf.format(dt)); } @Override public String apply(Matcher input) { return sig; } } @Override public String apply(String input) { return rrf.apply(input); } }