package hudson.plugins.mantis.changeset; import hudson.model.AbstractBuild; import hudson.model.Hudson; import hudson.scm.CVSChangeLogSet; import hudson.scm.ChangeLogSet.Entry; import hudson.scm.SubversionChangeLogSet; /** * ChangeSet Factory. * @author Seiji Sogabe * @since 0.7 */ public final class ChangeSetFactory { private ChangeSetFactory() { // hide default constructor } public static ChangeSet newInstance(final int id) { return new CompatibleChangeSet(id); } public static ChangeSet newInstance(final int id, final AbstractBuild<?, ?> build, final Entry entry) { if (build == null || entry == null) { throw new IllegalArgumentException(); } final Hudson hudson = Hudson.getInstance(); // CVS if (hudson.getPlugin("cvs") != null && entry instanceof CVSChangeLogSet.CVSChangeLog) { return new CVSChangeSet(id, build, (CVSChangeLogSet.CVSChangeLog) entry); } // Subversion if (hudson.getPlugin("subversion") != null && entry instanceof SubversionChangeLogSet.LogEntry) { return new SubversionChangeSet(id, build, (SubversionChangeLogSet.LogEntry) entry); } // Mercurial if (hudson.getPlugin("mercurial") != null && entry instanceof hudson.plugins.mercurial.MercurialChangeSet) { return new MercurialChangeSet(id, build, (hudson.plugins.mercurial.MercurialChangeSet) entry); } // Git if (hudson.getPlugin("git") != null && entry instanceof hudson.plugins.git.GitChangeSet) { return new GitChangeSet(id, build, (hudson.plugins.git.GitChangeSet) entry); } // else return new DefaultChangeSet(id, build, entry); } }