/** * Change the MsProject and 'Close depends on' linkType's link direction to right to left For item * links of those types change the predecessor with successor and vice versa and change the link * direction */ public static void inverseLinkDirections(boolean linkPredSuccAlso) { // change the direction to inward for MsProjectLinkType and // CloseDependsOnLinkType List<Integer> linkTypeIDs = new LinkedList<Integer>(); List<TLinkTypeBean> msProjectlinkTypeBeans = LinkTypeBL.loadByLinkType(MsProjectLinkType.getInstance().getPluginID(), null); if (msProjectlinkTypeBeans != null) { for (TLinkTypeBean linkTypeBean : msProjectlinkTypeBeans) { linkTypeIDs.add(linkTypeBean.getObjectID()); Integer direction = linkTypeBean.getLinkDirection(); if (direction == null || direction.intValue() != LINK_DIRECTION.RIGHT_TO_LEFT) { linkTypeBean.setLinkDirection(LINK_DIRECTION.RIGHT_TO_LEFT); LinkTypeBL.save(linkTypeBean); LOGGER.info( "'MsProject' link type " + linkTypeBean.getName() + " set to unidirectional inward"); } } } List<TLinkTypeBean> closeDependsOnLinkBeans = LinkTypeBL.loadByLinkType(CloseDependsOnLinkType.getInstance().getPluginID(), null); if (closeDependsOnLinkBeans != null) { for (TLinkTypeBean linkTypeBean : closeDependsOnLinkBeans) { linkTypeIDs.add(linkTypeBean.getObjectID()); Integer direction = linkTypeBean.getLinkDirection(); if (direction == null || direction.intValue() != LINK_DIRECTION.RIGHT_TO_LEFT) { linkTypeBean.setLinkDirection(LINK_DIRECTION.RIGHT_TO_LEFT); LinkTypeBL.save(linkTypeBean); LOGGER.info( "'Closed depends on' link type " + linkTypeBean.getName() + "set to unidirectional inward"); } } } List<TWorkItemLinkBean> workItemLinks = ItemLinkBL.loadByLinkTypeAndDirection(linkTypeIDs, LINK_DIRECTION.LEFT_TO_RIGHT); if (workItemLinks != null) { LOGGER.info("Number of item links to reverse " + workItemLinks.size()); for (TWorkItemLinkBean workItemLinkBean : workItemLinks) { if (linkPredSuccAlso) { Integer predecessor = workItemLinkBean.getLinkPred(); Integer successor = workItemLinkBean.getLinkSucc(); workItemLinkBean.setLinkPred(successor); workItemLinkBean.setLinkSucc(predecessor); } workItemLinkBean.setLinkDirection(LINK_DIRECTION.RIGHT_TO_LEFT); ItemLinkBL.saveLink(workItemLinkBean); } } LOGGER.info("'MsProject' and 'Closed depends on' item links reversed"); }