/** * Gets a set of related Entities for a given entity using navigation criteria. * @param navigationData * @returns Entity Collection of related (linked to) Entities */ function getRelatedEntityCollection(navigationData) { var HashMap = Java.type('java.util.HashMap'); var HashSet = Java.type('java.util.HashSet'); var ArrayList = Java.type('java.util.ArrayList'); var WTPart = Java.type('wt.part.WTPart'); var ObjectReference = Java.type('wt.fc.ObjectReference'); var Collections = Java.type('java.util.Collections'); var WTArrayList = Java.type('wt.fc.collections.WTArrayList'); var WTHashSet = Java.type('wt.fc.collections.WTHashSet'); var VersionControlHelper = Java.type("wt.vc.VersionControlHelper"); var StructureObjectsHelper = Java.type('com.ptc.odata.windchill.struct.StructureObjectsHelper'); var WcSumaFacade = Java.type('com.ptc.odata.windchill.domain.service.facade.WcSumaFacade'); var targetName = navigationData.getTargetSetName(); var sourceParts = new WTArrayList(navigationData.getSourceObjects()); if ("Uses".equals(targetName)) { var WTPartUsageLink = Java.type('wt.part.WTPartUsageLink'); var PersistenceHelper = Java.type('wt.fc.PersistenceHelper'); var map = new HashMap(); var links = new WTArrayList(PersistenceHelper.navigate(sourceParts, "uses", WTPartUsageLink.class, false)); for (var i = 0, l = links.size(); i < l; i++) { var link = links.getPersistable(i); var sourcePart = link.getUsedBy(); var sourcePartLinks = map.get(sourcePart); if (sourcePartLinks == null) { sourcePartLinks = new ArrayList(); map.put(sourcePart, sourcePartLinks); } sourcePartLinks.add(link); } return map; } else if ("UsedBy".equals(targetName)) { var WTPartUsageLink = Java.type('wt.part.WTPartUsageLink'); var StructHelper = Java.type('wt.vc.struct.StructHelper'); var map = new HashMap(); var sourcePartMasterReferences = new WTHashSet(); // Optimized logic for least amount of hits to the database var sourcePartMasterReferences = new WTHashSet(); for (var i = 0; i>>>>>>>>>>>>>>>>>>>>>"); for (var i = 0; i