This repository has been archived on 2021-12-05. You can view files and clone it, but cannot push or open issues or pull requests.
envoy/common/src/main/java/envoy/event/IssueProposal.java

79 lines
2.4 KiB
Java

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<String> {
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("<br>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", "<br>");
}
/**
* 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; }
}