package com.taskadapter.redmineapi.bean; import java.util.Date; public class TimeEntry implements Identifiable { private final PropertyStorage storage; /** * database numeric Id */ public final static Property<Integer> DATABASE_ID = new Property<>(Integer.class, "id"); /** * database Id of the Issue */ public final static Property<Integer> ISSUE_ID = new Property<>(Integer.class, "issueId"); /** * database Id of the project */ public final static Property<Integer> PROJECT_ID = new Property<>(Integer.class, "projectId"); public final static Property<String> PROJECT_NAME = new Property<>(String.class, "projectName"); public final static Property<String> USER_NAME = new Property<>(String.class, "userName"); public final static Property<Integer> USER_ID = new Property<>(Integer.class, "userId"); public final static Property<String> ACTIVITY_NAME = new Property<>(String.class, "activityName"); public final static Property<Integer> ACTIVITY_ID = new Property<>(Integer.class, "activityId"); public final static Property<Float> HOURS = new Property<>(Float.class, "hours"); public final static Property<String> COMMENT = new Property<>(String.class, "comment"); public final static Property<Date> SPENT_ON = new Property<>(Date.class, "spentOn"); public final static Property<Date> CREATED_ON = new Property<>(Date.class, "createdOn"); public final static Property<Date> UPDATED_ON = new Property<>(Date.class, "updatedOn"); /** * @param id database Id */ TimeEntry(Integer id) { storage = new PropertyStorage(); storage.set(DATABASE_ID, id); } public Integer getId() { return storage.get(DATABASE_ID); } public Integer getUserId() { return storage.get(USER_ID); } public void setUserId(Integer userId) { storage.set(USER_ID, userId); } public Integer getIssueId() { return storage.get(ISSUE_ID); } public void setIssueId(Integer issueId) { storage.set(ISSUE_ID, issueId); } public Integer getProjectId() { return storage.get(PROJECT_ID); } public void setProjectId(Integer projectId) { storage.set(PROJECT_ID, projectId); } public String getProjectName() { return storage.get(PROJECT_NAME); } public void setProjectName(String projectName) { storage.set(PROJECT_NAME, projectName); } public String getActivityName() { return storage.get(ACTIVITY_NAME); } public void setActivityName(String activityName) { storage.set(ACTIVITY_NAME, activityName); } public Integer getActivityId() { return storage.get(ACTIVITY_ID); } public void setActivityId(Integer activityId) { storage.set(ACTIVITY_ID, activityId); } public Float getHours() { return storage.get(HOURS); } public void setHours(Float hours) { storage.set(HOURS, hours); } public String getComment() { return storage.get(COMMENT); } public void setComment(String comment) { storage.set(COMMENT, comment); } public Date getSpentOn() { return storage.get(SPENT_ON); } public void setSpentOn(Date spentOn) { storage.set(SPENT_ON, spentOn); } public Date getCreatedOn() { return storage.get(CREATED_ON); } public void setCreatedOn(Date createdOn) { storage.set(CREATED_ON, createdOn); } public Date getUpdatedOn() { return storage.get(UPDATED_ON); } public void setUpdatedOn(Date updatedOn) { storage.set(UPDATED_ON, updatedOn); } public String getUserName() { return storage.get(USER_NAME); } public void setUserName(String userName) { storage.set(USER_NAME, userName); } @Override public String toString() { return "User \"" + getUserName() + "\" spent " + getHours() + " hours on task " + getIssueId() + " (project \"" + getProjectName() + "\") doing " + getActivityName(); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; TimeEntry timeEntry = (TimeEntry) o; if (getId() != null ? !getId().equals(timeEntry.getId()) : timeEntry.getId() != null) return false; return true; } @Override public int hashCode() { return getId() != null ? getId().hashCode() : 0; } public boolean isValid() { return (getHours() != null) && (getProjectId() != null || getIssueId() != null); } public PropertyStorage getStorage() { return storage; } }