/** * Recursively find link to node given by path name * * @param pathname * @return node or null if not found */ public HDF5NodeLink findNodeLink(String pathname) { int i = pathname.indexOf(SEPARATOR); if (i == 0) { pathname = pathname.substring(1); i = pathname.indexOf(SEPARATOR); } String link = i < 0 ? pathname : pathname.substring(0, i); if (nodes.containsKey(link)) { HDF5NodeLink node = nodes.get(link); if (i < 0) { return node; } String path = pathname.substring(i + 1); if (node.isDestinationAGroup()) { return ((HDF5Group) node.getDestination()).findNodeLink(path); } } else { // is attribute? i = link.indexOf(ATTRIBUTE); if (i > 0) { link = pathname.substring(0, i); String attr = pathname.substring(i + 1); if (nodes.containsKey(link)) { HDF5NodeLink node = nodes.get(link); if (node.getDestination().containsAttribute(attr)) { return node; } } } } return null; }