@Override public LinkCollection getLinkCollection(Issue issue, ApplicationUser remoteUser, boolean excludeSystemLinks) { return _getLinkCollection(issue, remoteUser, false, excludeSystemLinks); }
private List<IssueLink> buildIssueLinks(final Collection<GenericValue> issueLinkGVs) { List<IssueLink> issueLinks = new ArrayList<IssueLink>(issueLinkGVs.size()); for (final GenericValue issueLinkGV : issueLinkGVs) { issueLinks.add(buildIssueLink(issueLinkGV)); } return issueLinks; }
private List<IssueLink> getIssueLinks(final Map<String, ?> key) { List<GenericValue> result = delegator.findByAnd(OfBizDelegator.ISSUE_LINK, key); if (result == null) { result = Collections.emptyList(); } return buildIssueLinks(result); }
if (getIssueLink(sourceId, destinationId, issueLinkTypeId) != null) if (!validateIssueLinkType(issueLinkTypeId)) { String msg = String.format("There is no IssueLinkType with id: %s", issueLinkTypeId); log.error(msg); try issueLink = storeIssueLink(sourceId, destinationId, issueLinkTypeId, sequence); createCreateIssueLinkChangeItems(issueLink, issueLinkType, remoteUser); inwardLinkCache.remove(issueLink.getDestinationId()); reindexLinkedIssues(issueLink);
Map<String, List<Issue>> outwardLinkMap = new HashMap<String, List<Issue>>(); Long issueId = issue.getLong("id"); Collection<IssueLink> outwardLinks = getOutwardLinks(issueId); storeInLinkMap(outwardLinkMap, issueLinkType.getName(), linkedIssue); Collection<IssueLink> inwardLinks = getInwardLinks(issueId); Map<String, List<Issue>> inwardLinkMap = new HashMap<String, List<Issue>>(); storeInLinkMap(inwardLinkMap, issueLinkType.getName(), linkedIssue);
/** * Does the work. * * @param issue * @param remoteUser null if we do not log a change item * @param createChangeItem createChangeItem? * @return */ private int removeIssueLinksInternal(GenericValue issue, ApplicationUser remoteUser, boolean createChangeItem) { List<IssueLink> outwardLinks = getOutwardLinks(issue.getLong("id")); deleteIssueLinksFromIssue(outwardLinks, remoteUser, createChangeItem); int totalLinksDeleted = outwardLinks.size(); if (log.isDebugEnabled()) { log.debug("Deleted " + outwardLinks.size() + " outward links from issue " + issue.getString("key")); } List<IssueLink> inwardLinks = getInwardLinks(issue.getLong("id")); deleteIssueLinksFromIssue(inwardLinks, remoteUser, createChangeItem); totalLinksDeleted += inwardLinks.size(); if (log.isDebugEnabled()) { log.debug("Deleted " + inwardLinks.size() + " inward links from issue " + issue.getString("key")); } return totalLinksDeleted; }
public void changeIssueLinkType(IssueLink issueLink, IssueLinkType swapLinkType, ApplicationUser remoteUser) { final IssueLinkType oldIssueLinkType = issueLink.getIssueLinkType(); if (!oldIssueLinkType.isSystemLinkType() && swapLinkType.isSystemLinkType()) { log.warn("Changing non-system link type to a system link type."); } else if (oldIssueLinkType.isSystemLinkType() && !swapLinkType.isSystemLinkType()) { log.warn("Changing system link type to a non-system link type."); } updateIssueLinkType(issueLink, swapLinkType); outwardLinkCache.remove(issueLink.getSourceId()); inwardLinkCache.remove(issueLink.getDestinationId()); // If the link we are swapping from is not a system link type, it means its creation should have // been recorded in 'change history', so we should update change history here. if (!oldIssueLinkType.isSystemLinkType()) { createRemoveIssueLinkChangeItems(issueLink, oldIssueLinkType, remoteUser); createCreateIssueLinkChangeItems(issueLink, swapLinkType, remoteUser); } }
if (!issueLinkType.isSystemLinkType()) createRemoveIssueLinkChangeItems(issueLink, issueLinkType, remoteUser); reindexLinkedIssues(issueLink);
private void createCreateIssueLinkChangeItems(IssueLink issueLink, IssueLinkType issueLinkType, ApplicationUser remoteUser) { final Issue source = issueLink.getSourceObject(); final Issue destination = issueLink.getDestinationObject(); // Create change item for source issue ChangeItemBean cib = new ChangeItemBean(ChangeItemBean.STATIC_FIELD, "Link", null, null, destination.getKey(), "This issue " + issueLinkType.getOutward() + " " + destination.getKey()); createChangeItem(source, cib, remoteUser); // Create change item for destination issue cib = new ChangeItemBean(ChangeItemBean.STATIC_FIELD, "Link", null, null, source.getKey(), "This issue " + issueLinkType.getInward() + " " + source.getKey()); createChangeItem(destination, cib, remoteUser); }
@SuppressWarnings ("UnusedParameters") @EventListener public void onClearCache(final ClearCacheEvent event) { clearCache(); }
Collection<IssueLink> outwardLinks = getOutwardLinks(issue.getId()); storeInLinkMap(outwardLinkMap, issueLinkType.getName(), linkedIssue); Collection<IssueLink> inwardLinks = getInwardLinks(issue.getId()); Map<String, List<Issue>> inwardLinkMap = new HashMap<String, List<Issue>>(); storeInLinkMap(inwardLinkMap, issueLinkType.getName(), linkedIssue);
private void createRemoveIssueLinkChangeItems(IssueLink issueLink, IssueLinkType issueLinkType, ApplicationUser remoteUser) { final Issue source = issueLink.getSourceObject(); final Issue destination = issueLink.getDestinationObject(); // Create change item for source issue ChangeItemBean cib = new ChangeItemBean(ChangeItemBean.STATIC_FIELD, "Link", destination.getKey(), "This issue " + issueLinkType.getOutward() + " " + destination.getKey(), null, null); createChangeItem(source, cib, remoteUser); // Create change item for destination issue cib = new ChangeItemBean(ChangeItemBean.STATIC_FIELD, "Link", source.getKey(), "This issue " + issueLinkType.getInward() + " " + source.getKey(), null, null); createChangeItem(destination, cib, remoteUser); }
public LinkCollection getLinkCollection(final Issue issue, final ApplicationUser remoteUser) { return _getLinkCollection(issue, remoteUser, false, true); }
private IssueLink storeIssueLink(Long sourceId, Long destinationId, Long issueLinkTypeId, Long sequence) { // create the outward link from issue -> destination try { Map fields = FieldMap.build(SOURCE_ID_FIELD_NAME, sourceId, DESTINATION_ID_LINK_NAME, destinationId, LINK_TYPE_ID_FIELD_NAME, issueLinkTypeId, SEQUENCE_FIELD_NAME, sequence); return buildIssueLink(delegator.createValue(OfBizDelegator.ISSUE_LINK, fields)); } finally { outwardLinkCache.remove(sourceId); inwardLinkCache.remove(destinationId); } }
public LinkCollection getLinkCollectionOverrideSecurity(final Issue issue) { return _getLinkCollection(issue, null, true, true); }