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(); }
changeItems.add(new ChangeHistoryItem.Builder().fromChangeItem(nextItem). nextChangeOn(iterator.peek().getCreated()).field(fieldName). withFroms(previousItemToValues).withTos(effectiveTos).build()); changeItems.add(new ChangeHistoryItem.Builder().fromChangeItem(nextItem). field(fieldName).withFroms(previousItemToValues).withTos(effectiveTos).build());
ChangeHistoryItem.Builder builder = new ChangeHistoryItem.Builder() .withId(changeItemGV.getLong("changeitemid")) .inChangeGroup(changeGroupId)
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(); }
protected ChangeHistoryItem.Builder changeItemBuilder(Issue issue) { return new ChangeHistoryItem.Builder() .withId(MINUS_1) .inChangeGroup(MINUS_1) .forIssue(issue.getId(), issue.getKey()) .inProject(issue.getProjectId()) .field(getField()) .on(issue.getCreated()) .byUser(issue.getReporterId() == null ? DocumentConstants.ISSUE_NO_AUTHOR : issue.getReporterId()); }