В моем проекте есть необходимость в 2 методах: один для добавления версии для объекта, другой для его удаления. Логика для этих двух методов почти одинакова: проверьте условия, и если все в порядке, добавьте/удалите версию для выпуска версии Collection
. У меня есть некоторые проблемы с использованием Collectiion::add
и Collection::remove
, поэтому я создал 2 статических метода removeVersion
и addVersion
. Как я могу обновить этот метод, поэтому не было бы необходимости в FixVersionServiceImpl::addVersion
и FixVersionServiceImpl::removeVersion
, где FixVersionServiceImpl - имя текущего класса?Метод обновления с Collection :: add и Collection :: remove
private boolean updateIssueVersion(User user,
IssuesVersionUpdateDescription issueVersionUpdate,
Version version,
BiFunction<Version, Collection<Version>, Boolean> function) {
boolean updated = false;
for (String issueKey : issueVersionUpdate.getIssueKeys()) {
IssueService.IssueResult issueResult = issueService.getIssue(user, issueKey);
MutableIssue issue = issueResult.getIssue();
if (issue == null) {
LOG.info("Issue was not found for user.");
continue;
}
if (issue.getProjectObject() == null
|| !issue.getProjectObject().getKey().equals(version.getProject().getKey())) {
LOG.error("Issue project doesn't contain this fix version.");
continue;
}
Collection<Version> fixVersions = issue.getFixVersions();
function.apply(version, fixVersions);
issue.setFixVersions(fixVersions);
issueManager.updateIssue(user, issue, EventDispatchOption.ISSUE_UPDATED, false);
updated = true;
}
return updated;
}
private static boolean addVersion(Version version, Collection<Version> fixVersions) {
return fixVersions.add(version);
}
private static boolean removeVersion(Version version, Collection<Version> fixVersions) {
return fixVersions.remove(version);
}