package core;
import de.skuzzle.polly.sdk.FormatManager;
import entities.RemindEntity;
public class PatternRemindFormatter extends RemindFormatter {
public static RemindFormatter forPattern(String pattern) {
return new PatternRemindFormatter(pattern, false);
}
public static RemindFormatter forPattern(String pattern, boolean escape) {
return new PatternRemindFormatter(pattern, escape);
}
private String pattern;
private boolean escape;
private PatternRemindFormatter(String pattern, boolean escape) {
this.pattern = pattern;
this.escape = escape;
}
/*
* %m = message
* %s = sender
* %r = receiver
* %dd = duedate
* %ld = leavedate
* %c = channel
* %id = id
*/
private String escape(String other) {
if (!this.escape) {
return other;
}
return other.replaceAll("%s%|%m%|%r%|%dd%|%ld%|%c%", ""); //$NON-NLS-1$ //$NON-NLS-2$
}
@Override
protected String formatMessage(RemindEntity remind, FormatManager formatter) {
return this.parse(remind, formatter);
}
@Override
protected String formatRemind(RemindEntity remind, FormatManager formatter) {
return this.parse(remind, formatter);
}
private String parse(RemindEntity remind, FormatManager formatter) {
String tmp = this.pattern.replaceAll("%m%", this.escape(remind.getMessage())); //$NON-NLS-1$
tmp = tmp.replaceAll("%s%", this.escape(remind.getFromUser())); //$NON-NLS-1$
tmp = tmp.replaceAll("%r%", this.escape(remind.getForUser())); //$NON-NLS-1$
tmp = tmp.replaceAll("%dd%", formatter.formatDate(remind.getDueDate())); //$NON-NLS-1$
tmp = tmp.replaceAll("%ld%", formatter.formatDate(remind.getLeaveDate())); //$NON-NLS-1$
tmp = tmp.replaceAll("%c%", this.escape(remind.getOnChannel())); //$NON-NLS-1$
tmp = tmp.replaceAll("%id%", "" + remind.getId()); //$NON-NLS-1$ //$NON-NLS-2$
return tmp;
}
}