package nl.topicus.onderwijs.dashboard.datatypes; import java.io.IOException; import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; import nl.topicus.onderwijs.dashboard.keys.Key; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; import org.eclipse.egit.github.core.RepositoryCommit; import org.tmatesoft.svn.core.SVNLogEntry; public class Commit implements Serializable { private static final long serialVersionUID = 1L; private static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat( "dd-MM-yyyy HH:mm"); private Key project; private Date dateTime; private String revision; private String message; private String author; private int filesChanged; private String avatarUrl; public Commit() { } public Commit(Key project, RepositoryCommit commit) { this.project = project; this.dateTime = commit.getCommit().getAuthor().getDate(); this.revision = commit.getSha().substring(0, 8); this.message = commit.getCommit().getMessage(); this.author = commit.getCommit().getAuthor().getName(); this.filesChanged = commit.getFiles() == null ? 0 : commit.getFiles() .size(); this.avatarUrl = commit.getAuthor() == null ? "" : commit.getAuthor() .getAvatarUrl(); } public Commit(Key project, SVNLogEntry logEntry) { this.project = project; this.dateTime = logEntry.getDate(); this.revision = "r" + Long.toString(logEntry.getRevision()); this.message = logEntry.getMessage(); this.author = logEntry.getAuthor(); this.filesChanged = logEntry.getChangedPaths().size(); this.avatarUrl = ""; } public Key getProject() { return project; } public void setProject(Key project) { this.project = project; } public String getProjectName() { return getProject().getName(); } public Date getDateTime() { return dateTime; } public void setDateTime(Date dateTime) { this.dateTime = dateTime; } public String getTime() { return TIME_FORMAT.format(getDateTime()); } public String getRevision() { return revision; } public void setRevision(String revision) { this.revision = revision; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public int getFilesChanged() { return filesChanged; } public void setFilesChanged(int filesChanged) { this.filesChanged = filesChanged; } public String getAvatarUrl() { return avatarUrl; } public void setAvatarUrl(String avatarUrl) { this.avatarUrl = avatarUrl; } @Override public String toString() { ObjectMapper mapper = new ObjectMapper(); try { return mapper.writeValueAsString(this); } catch (JsonGenerationException e) { throw new RuntimeException(e); } catch (JsonMappingException e) { throw new RuntimeException(e); } catch (IOException e) { throw new RuntimeException(e); } } public String getKey() { return Long.toString(Long.MAX_VALUE - getDateTime().getTime()); } }