package hudson.plugins.mantis.changeset; import hudson.model.AbstractBuild; import hudson.model.User; import hudson.scm.ChangeLogSet.Entry; import hudson.scm.RepositoryBrowser; import hudson.scm.SCM; import java.io.IOException; import java.io.Serializable; import java.net.URL; /** * AbstractChangeSet * @author Seiji Sogabe * @since 0.7 */ public abstract class AbstractChangeSet<T extends Entry> implements ChangeSet, Serializable { protected int id; protected AbstractBuild<?, ?> build; protected T entry; public AbstractChangeSet(final int id, final AbstractBuild<?, ?> build, final T entry) { this.id = id; this.build = build; this.entry = entry; } public int getId() { return id; } public abstract String createChangeLog(); protected RepositoryBrowser getRepositoryBrowser() { if (build == null || build.getProject() == null) { return null; } final SCM scm = build.getProject().getScm(); return scm.getBrowser(); } protected String getChangeSetLink() { @SuppressWarnings("unchecked") final RepositoryBrowser<T> browser = getRepositoryBrowser(); if (browser == null) { return UNKNOWN_CHANGESETLINK; } String link = UNKNOWN_CHANGESETLINK; try { @SuppressWarnings("unchecked") final URL url = browser.getChangeSetLink(entry); if (url != null) { link = url.toString(); } } catch (final IOException e) { // OK } return link; } protected String getAuthor() { final User user = entry.getAuthor(); return (user == null) ? UNKNOWN_AUTHOR : user.getId(); } protected String getMsg() { return entry == null ? UNKNOWN_MSG : entry.getMsg(); } }