protected void addDeviceItem(ICpDeviceItem item, final String itemName, final int level) { IRteDeviceItem di = getChild(itemName); if (di == null) { di = new RteDeviceItem(itemName, level, this); addChild(di); } di.addDevice(item); }
@Override public IRteDeviceItem getVendorItem(String vendor) { if (getLevel() == EDeviceHierarchyLevel.ROOT.ordinal()) { return getChild(vendor); } IRteDeviceItem root = getRoot(); if (root != null) { return root.getVendorItem(vendor); } return null; }
/** * Creates device tree from list of Packs * * @param packs collection of packs to use * @return device tree as root IRteDeviceItem */ public static IRteDeviceItem createTree(Collection<ICpPack> packs) { IRteDeviceItem root = new RteDeviceItem(); if (packs == null || packs.isEmpty()) return root; for (ICpPack pack : packs) { Collection<? extends ICpItem> devices = pack.getChildren("devices"); if (devices == null) continue; for (ICpItem item : devices) { if (!(item instanceof ICpDeviceItem)) continue; ICpDeviceItem deviceItem = (ICpDeviceItem) item; root.addDevice(deviceItem); } } return root; }
@Override public IRteDeviceItem findItem(final String deviceName, final String vendor) { if (fLevel == EDeviceHierarchyLevel.ROOT.ordinal() && vendor != null && !vendor.isEmpty()) { String vendorName = Vendor.getOfficialVendorName(vendor); IRteDeviceItem dti = getChild(vendorName); if (dti != null) return dti.findItem(deviceName, vendorName); } else { // check if device item can be found directly on this level IRteDeviceItem dti = getChild(deviceName); if (dti != null && dti.getLevel() > EDeviceHierarchyLevel.SUBFAMILY.ordinal()) return dti; // search in children Collection<? extends IRteDeviceItem> children = getChildren(); if (children == null) return null; for (IRteDeviceItem child : children) { dti = child.findItem(deviceName, vendor); if (dti != null && dti.getLevel() > EDeviceHierarchyLevel.SUBFAMILY.ordinal()) return dti; } } return null; }