package com.venky.swf.plugins.bugs.extensions; import java.io.IOException; import com.venky.core.string.StringUtil; import com.venky.core.util.ObjectUtil; import com.venky.swf.db.Database; import com.venky.swf.db.extensions.AfterModelSaveExtension; import com.venky.swf.plugins.bugs.db.model.Issue; import com.venky.swf.plugins.bugs.db.model.Note; import com.venky.swf.plugins.mail.db.model.User; public class IssueAfterSaveExtension extends AfterModelSaveExtension<Issue>{ static { registerExtension(new IssueAfterSaveExtension()); } @Override public void afterSave(Issue model) { Note note = Database.getTable(Note.class).newRecord(); note.setIssueId(model.getId()); boolean persistNote = false; String description = null; if (!ObjectUtil.isVoid(model.getDescription())){ description = StringUtil.read(model.getDescription()); if (!ObjectUtil.isVoid(description)){ note.setNotes(model.getDescription()); persistNote = true; } } try { if (!ObjectUtil.isVoid(model.getAttachment()) && model.getAttachment().available() > 0 ){ note.setAttachment(model.getAttachment()); note.setAttachmentContentName(model.getAttachmentContentName()); note.setAttachmentContentType(model.getAttachmentContentType()); persistNote = true; } } catch (IOException e) { throw new RuntimeException(e); } if (persistNote){ note.save(); User admin = Database.getTable(User.class).get(1); if (admin != null && !admin.getUserEmails().isEmpty()){ String resolution = model.getResolution(); admin.sendMail("Issue: " + model.getId() + " " + model.getTitle() + (resolution == null ? "" : " (" + resolution + ")") , description == null ? "" : description); } User creator = (User)model.getCreatorUser(); if (creator != null && !creator.getUserEmails().isEmpty()) { if (admin == null || admin.getId() != creator.getId()) { String resolution = model.getResolution(); creator.sendMail("Issue: " + model.getId() + " " + model.getTitle() + (resolution == null ? "" : " (" + resolution + ")" ) , description == null ? "" : description); } } } } }