package envoy.event; /** * This class allows envoy users to send an issue proposal to the server who, if not disabled by its * administrator, will forward it directly to Gitea. * * @author Leon Hofmeister * @since Envoy Common v0.2-beta */ public final class IssueProposal extends Event { private final String description; private final boolean bug; private static final long serialVersionUID = 1L; /** * @param title the title of the reported bug * @param description the description of this bug * @param isBug determines whether this {@code IssueProposal} is supposed to be a feature * or a bug (true = bug, false = feature) * @since Envoy Common v0.2-beta */ public IssueProposal(String title, String description, boolean isBug) { super(escape(title)); this.description = sanitizeDescription(description); bug = isBug; } /** * @param title the title of the reported bug * @param description the description of this bug * @param user the name of the user creating the issue * @param isBug determines whether this {@code IssueProposal} is supposed to be a feature * or a bug (true = bug, false = feature) * @since Envoy Common v0.2-beta */ public IssueProposal(String title, String description, String user, boolean isBug) { super(escape(title)); this.description = sanitizeDescription(description) + String.format("
Submitted by user %s.", user); bug = isBug; } /** * Escapes an issue description and normalizes its line breaks. * * @param description the description to normalize * @return the normalized description * @since Envoy Common v0.2-beta */ private static String sanitizeDescription(String description) { return escape(description).replaceAll("\r?\n", "
"); } /** * Escapes quotes and backslashes from a string. * * @param raw the string to escape * @return the escaped string * @since Envoy Client v0.2-beta */ private static String escape(String raw) { return raw.replace("\\", "\\\\").replace("\"", "\\\""); } /** * @return the description * @since Envoy Common v0.2-beta */ public String getDescription() { return description; } /** * @return whether this issue is supposed to be a bug - otherwise it is intended as a feature * @since Envoy Common v0.2-beta */ public boolean isBug() { return bug; } }