private ChangeHistoryItem fixInitialChangeItem(ChangeHistoryItem initialChangeItem, Map<String, String> values, Timestamp created) { if (values.isEmpty()) { values = Maps.newHashMap(); values.put(emptyValue, ""); } return new ChangeHistoryItem.Builder().fromChangeItemWithoutPreservingChanges(initialChangeItem). withTos(values).nextChangeOn(created).build(); }
/** * * @param items The list of {@link com.atlassian.jira.issue.changehistory.ChangeHistoryItem}'s that represent all chnages in the current issue * @param initialChangeItem The synthetic ChangeHistoryItem previously built * @param created Timestamp of the first itrem in the list * @return The ChangeHistoryItem that accurately reflects the initial state of the issue * * The algorithm is pretty straightforward, revers the list and then iterate through reversing each change from the initial list. What is left is the * original state. */ private ChangeHistoryItem fixInitialChangeItemToValue(List <ChangeHistoryItem> items, ChangeHistoryItem initialChangeItem, Timestamp created) { Map<String, String> newToValues = Maps.newHashMap(initialChangeItem.getTos()); newToValues.remove(emptyValue); for (ChangeHistoryItem item : Lists.reverse(items)) { newToValues.putAll(item.getFroms()); for (String key: item.getTos().keySet()) { newToValues.remove(key); } } if (newToValues.isEmpty()) { newToValues.put(emptyValue, EMPTY_STRING); } return new ChangeHistoryItem.Builder().fromChangeItemWithoutPreservingChanges(initialChangeItem). withTos(newToValues).nextChangeOn(created).build(); }
@Override protected ChangeHistoryItem createInitialChangeItem(Issue issue) { Collection<Version> currentVersions = ref.get().get(fieldName).getVersions(issue); ChangeHistoryItem.Builder builder = changeItemBuilder(issue); if (currentVersions.isEmpty()) { builder.to(EMPTY_STRING , emptyValue); } else { for (Version version : currentVersions) { builder.to(version.getName(), version.getId().toString()); } } return builder.build(); }
protected ChangeHistoryItem createChangeItem(ChangeHistoryItem changeItem, Timestamp nextChange) { ChangeHistoryItem.Builder builder = new ChangeHistoryItem.Builder().fromChangeItem(changeItem). nextChangeOn(nextChange); if (changeItem.getTos().isEmpty()) { builder.to("", emptyValue); } if (changeItem.getFroms().isEmpty()) { builder.changedFrom("", emptyValue); } return builder.build(); }
@Override protected ChangeHistoryItem createInitialChangeItem(Issue issue) { final Resolution resolution = issue.getResolutionObject(); final String resolutionName = resolution == null ? null : resolution.getName(); final String resolutionValue = resolution == null ? EMPTY_VALUE : resolution.getId(); return changeItemBuilder(issue).to(resolutionName, resolutionValue).build(); } }
@Override protected ChangeHistoryItem createInitialChangeItem(Issue issue) { final ApplicationUser reporter = issue.getReporter(); final String reporterName = reporter == null ? "" : issue.getReporter().getDisplayName(); final String reporterValue = issue.getReporterId() == null ? EMPTY_VALUE : issue.getReporterId(); return changeItemBuilder(issue).to(reporterName, reporterValue).build(); } }
@Override protected ChangeHistoryItem createInitialChangeItem(Issue issue) { final Priority priority = issue.getPriorityObject(); final String priorityName = priority == null ? EMPTY_VALUE : priority.getName(); final String priorityValue = priority == null ? EMPTY_VALUE : priority.getId(); return changeItemBuilder(issue).to(priorityName, priorityValue).build(); } }
@Override protected ChangeHistoryItem createInitialChangeItem(Issue issue) { final Status status = issue.getStatusObject(); final String statusName = status == null ? null : status.getName(); final String statusValue = status == null ? EMPTY_VALUE : status.getId(); return changeItemBuilder(issue).to(statusName, statusValue).build(); } }
@Override protected ChangeHistoryItem createInitialChangeItem(Issue issue) { final ApplicationUser assignee = issue.getAssignee(); final String assigneeName = (assignee == null) ? "" : assignee.getName(); final String assigneeValue = issue.getAssigneeId() == null ? EMPTY_VALUE : issue.getAssigneeId(); return changeItemBuilder(issue).to(assigneeName, assigneeValue).build(); } }
@Override public ChangeHistoryItem apply(ChangeHistoryItem.Builder builder) { return builder.build(); } }));