package hudson.plugins.bazaar; import hudson.model.User; import hudson.scm.ChangeLogSet; import hudson.scm.EditType; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; import org.kohsuke.stapler.export.Exported; /** * Represents a change set. * * <p> * The object should be treated like an immutable object. * </p> * * @author Trond Norbye */ public class BazaarChangeSet extends ChangeLogSet.Entry { private String author; private String revno; private String revid; private String date; private String msg; private List<String> added = new ArrayList<String>(); private List<String> deleted = new ArrayList<String>(); private List<String> modified = new ArrayList<String>(); /** * Lazily computed. */ private volatile List<String> affectedPaths; /** * Commit message. */ @Exported public String getMsg() { return msg; } /** * Gets the user who made this change. */ @Exported public User getAuthor() { return User.get(author); } /** * Gets repository revision number, which is local in the current repository. */ @Exported public String getRevno() { return revno; } @Exported public String getRevid() { return revid; } @Exported public String getDate() { return date; } @Override public Collection<String> getAffectedPaths() { if (affectedPaths == null) { List<String> r = new ArrayList<String>(added.size() + modified.size() + deleted.size()); r.addAll(added); r.addAll(modified); r.addAll(deleted); affectedPaths = r; } return affectedPaths; } /** * Gets all the files that were added. */ @Exported public List<String> getAddedPaths() { return added; } /** * Gets all the files that were deleted. */ @Exported public List<String> getDeletedPaths() { return deleted; } /** * Gets all the files that were modified. */ @Exported public List<String> getModifiedPaths() { return modified; } public List<String> getPaths(EditType kind) { if (kind == EditType.ADD) { return getAddedPaths(); } if (kind == EditType.EDIT) { return getModifiedPaths(); } if (kind == EditType.DELETE) { return getDeletedPaths(); } return null; } /** * Returns all three variations of {@link EditType}. * Placed here to simplify access from views. */ public List<EditType> getEditTypes() { // return EditType.ALL; return Arrays.asList(EditType.ADD, EditType.EDIT, EditType.DELETE); } @Override protected void setParent(ChangeLogSet parent) { super.setParent(parent); } public void setMsg(String msg) { this.msg = msg; } public void setUser(String author) { this.author = author; } public String getUser() { return author; } public void setAuthor(String author) { this.author = author; } public void setRevno(String revno) { this.revno = revno; } public void setRevid(String revid) { this.revid = revid; } public void setDate(String date) { this.date = date; } }