package org.openslx.bwlp.sat.mail; import com.google.gson.annotations.SerializedName; public class MailTemplatePlain { public enum Template { LECTURE_UPDATED, LECTURE_DEACTIVATED, VM_CURRENT_VERSION_EXPIRING, VM_OLD_VERSION_EXPIRING, LECTURE_LINKED_VM_EXPIRING, LECTURE_EXPIRING, VM_DELETED_LAST_VERSION, VM_DELETED_OLD_VERSION, LECTURE_FORCED_UPDATE, TEST_MAIL, GENERAL_WRAPPER } private Template name; private String description; private String template; @SerializedName("optional_variables") private String[] optionalVariables; @SerializedName("mandatory_variables") private String[] mandatoryVariables; private int version; @SerializedName("edit_version") private int editVersion; private boolean original = false; @SerializedName("original_template") private String original_template; public MailTemplatePlain(Template name, String description, String template, String[] optionalVariables, String[] mandatoryVariables, int version) { this.name = name; this.description = description; this.original_template = this.template = template; this.optionalVariables = optionalVariables; this.mandatoryVariables = mandatoryVariables; this.version = version; this.original = true; } public Template getName() { return this.name; } public MailTemplate toMailTemplate() { return new MailTemplate(template); } public void mergeWithUpdatedVersion(MailTemplatePlain updated) { this.description = updated.description; this.optionalVariables = updated.optionalVariables; this.mandatoryVariables = updated.mandatoryVariables; if (this.original || this.template.trim().replace("\r\n", "\n").equals(updated.template.trim().replace("\r\n", "\n"))) { // they are the same or it has not been edited this.original = true; this.template = updated.template; this.editVersion = this.version = updated.version; this.original_template = ""; } else { // Just update what the latest version is this.version = updated.version; this.original_template = updated.template; } } }