package hudson.plugins.tfs.model; import java.text.ParseException; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.List; import org.kohsuke.stapler.export.Exported; import org.kohsuke.stapler.export.ExportedBean; import hudson.model.User; import hudson.plugins.tfs.util.DateUtil; import hudson.scm.EditType; @ExportedBean(defaultVisibility=999) public class ChangeSet extends hudson.scm.ChangeLogSet.Entry { private String version; private String user; private String domain; private Date date; private String comment; private List<Item> items; private String checkedInByUser; public ChangeSet() { this("", null, "", ""); } public ChangeSet(String version, Date date, String user, String comment) { this.version = version; this.date = date; this.comment = comment; items = new ArrayList<Item>(); setUser(user); } @Override public Collection<String> getAffectedPaths() { Collection<String> paths = new ArrayList<String>(items.size()); for (Item item : items) { paths.add(item.getPath()); } return paths; } @Override public ChangeLogSet getParent() { return (ChangeLogSet)super.getParent(); } @Override public User getAuthor() { return User.get(user); } @Override public String getMsg() { return comment; } @Exported public String getVersion() { return version; } public void setVersion(String version) { this.version = version; } @Exported public String getDomain() { return domain; } @Exported public String getUser() { return user; } public void setUser(String user) { String[] split = user.split("\\\\"); if (split.length == 2) { this.domain = split[0]; this.user = split[1]; } else { this.user = user; this.domain = null; } } @Exported public Date getDate() { return date; } public void setDateStr(String dateStr) throws ParseException { date = DateUtil.TFS_DATETIME_FORMATTER.get().parse(dateStr); } @Exported public String getComment() { return comment; } public void setComment(String comment) { this.comment = comment; } public void setCheckedInBy(String user) { checkedInByUser = user; } public String getCheckedInBy() { return checkedInByUser; } public User getCheckedInByUser() { return User.get(checkedInByUser); } @Exported public List<Item> getItems() { return items; } public void add(ChangeSet.Item item) { items.add(item); item.setParent(this); } @Override protected void setParent(hudson.scm.ChangeLogSet parent) { super.setParent(parent); } @ExportedBean(defaultVisibility=999) public static class Item { private String path; private String action; private ChangeSet parent; public Item() { this("",""); } public Item(String path, String action) { this.path = path; this.action = action; } public ChangeSet getParent() { return parent; } void setParent(ChangeSet parent) { this.parent = parent; } @Exported public String getPath() { return path; } public void setPath(String path) { this.path = path; } @Exported public String getAction() { return action; } public void setAction(String action) { this.action = action; } @Exported public EditType getEditType() { if (action.equalsIgnoreCase("delete")) { return EditType.DELETE; } if (action.equalsIgnoreCase("add")) { return EditType.ADD; } return EditType.EDIT; } } }