private Collection<NameSpaceContainer> traverseEntity(final NamespaceKey root) throws NamespaceException { final LinkedList<NameSpaceContainer> toBeTraversed = new LinkedList<>(listEntity(root)); final LinkedList<NameSpaceContainer> visited = new LinkedList<>(); while (!toBeTraversed.isEmpty()) { final NameSpaceContainer container = toBeTraversed.removeFirst(); if (NamespaceUtils.isListable(container.getType())) { toBeTraversed.addAll(listEntity(new NamespaceKey(container.getFullPathList()))); } visited.add(container); } return visited; }
private void populateNextFewKeys() { while (!stack.isEmpty()) { final NamespaceKey top = stack.pop(); final Iterable<NameSpaceContainer> children; try { children = iterateEntity(top); } catch (NamespaceException e) { throw new RuntimeException("failed during dataset listing of sub-tree under: " + root); } for (final NameSpaceContainer child : children) { final NamespaceKey childKey = new NamespaceKey(child.getFullPathList()); if (child.getType() == DATASET) { nextFewKeys.add(childKey); continue; } assert isListable(child.getType()) : "child container is not listable type"; stack.push(childKey); } if (!nextFewKeys.isEmpty()) { // suspend if few keys are loaded break; } } }
@GET @Path("parents") @Produces(APPLICATION_JSON) public List<ParentDatasetUI> getParents() throws DatasetNotFoundException, NamespaceException { final VirtualDatasetUI virtualDatasetUI = datasetService.get(datasetPath, version); final List<ParentDatasetUI> parentDatasetUIs = Lists.newArrayList(); final List<NamespaceKey> parentDatasetPaths = Lists.newArrayList(); for (ParentDataset parentDataset : virtualDatasetUI.getParentsList()) { parentDatasetPaths.add(new NamespaceKey(parentDataset.getDatasetPathList())); } for (NameSpaceContainer nameSpaceContainer : datasetService.getNamespaceService().getEntities(parentDatasetPaths)) { if (nameSpaceContainer != null && nameSpaceContainer.getType() == Type.DATASET) { parentDatasetUIs.add(new ParentDatasetUI(nameSpaceContainer.getFullPathList(), nameSpaceContainer.getDataset().getType())); } } return parentDatasetUIs; }
final NamespaceKey childKey = new NamespaceKey(child.getFullPathList()); if (child.getType() == DATASET) { count++;
@Override public void convert(KVStoreProvider.DocumentWriter writer, byte[] id, SearchContainer record) { final NameSpaceContainer namespaceContainer = record.getNamespaceContainer(); final List<String> fullPathList = namespaceContainer.getFullPathList(); writer.write(PATH_UNQUOTED_LC, fullPathList.stream() .map(String::toLowerCase) .toArray(String[]::new)); writer.write(NAME_LC, fullPathList.get(fullPathList.size() - 1).toLowerCase()); if (namespaceContainer.getType() == NameSpaceContainer.Type.DATASET) { String[] columns = NamespaceConverter.getColumnsLowerCase(namespaceContainer.getDataset()); if (columns.length > 0) { writer.write(DATASET_COLUMNS_LC, columns); } } // check if the namespace entity has any tags and index them final CollaborationTag collaborationTag = record.getCollaborationTag(); if (collaborationTag != null && collaborationTag.getTagsList() != null) { // store lowercase and all permutations writer.write(TAGS_LC, collaborationTag.getTagsList().stream() .map(String::toLowerCase).toArray(String[]::new)); } } }
public static Map<String, NameSpaceContainer> listHome(NamespaceService ns, String parent) throws Exception { Map<String, NameSpaceContainer> children = new HashMap<>(); for (NameSpaceContainer container : ns.list(new NamespaceKey(parent))) { children.put(PathUtils.constructFullPath(container.getFullPathList()), container); } return children; }
final NamespaceKey namespaceKey = new NamespaceKey(nameSpaceContainer.getFullPathList());
public static Map<String, NameSpaceContainer> listFolder(NamespaceService ns, String parent) throws Exception { Map<String, NameSpaceContainer> children = new HashMap<>(); for (NameSpaceContainer container : ns.list(new NamespaceKey(PathUtils.parseFullPath(parent)))) { children.put(PathUtils.constructFullPath(container.getFullPathList()), container); } return children; }
ProtobufIOUtil.mergeFrom(input.toByteArray(), nameSpaceContainer, NameSpaceContainer.getSchema()); return new AbstractMap.SimpleEntry<>( new NamespaceKey(nameSpaceContainer.getFullPathList()), nameSpaceContainer); }).collect(Collectors.toList());
protected void doTraverseAndDeleteChildren(final NameSpaceContainer child) throws NamespaceException { final NamespaceInternalKey childKey = new NamespaceInternalKey(new NamespaceKey(child.getFullPathList()), keyNormalization); traverseAndDeleteChildren(childKey, child); switch (child.getType()) { case FOLDER: namespace.delete(childKey.getKey(), child.getFolder().getTag()); break; case DATASET: namespace.delete(childKey.getKey(), child.getDataset().getTag()); break; default: // Only leaf level or intermediate namespace container types are expected here. throw new RuntimeException("Unexpected namespace container type: " + child.getType()); } }
case FOLDER: { if (rootEntityType == SOURCE) { tree.addFolder(new SourceFolderPath(container.getFullPathList()), container.getFolder(), null, rootEntityType); } else { tree.addFolder(new FolderPath(container.getFullPathList()), container.getFolder(), rootEntityType); final DatasetPath datasetPath = new DatasetPath(container.getFullPathList()); final DatasetConfig datasetConfig = container.getDataset(); switch (datasetConfig.getType()) { tree.addFile( fileDSId, new FilePath(container.getFullPathList()), fileFormat, datasetService.getJobsCount(datasetPath.toNamespaceKey()), false, true, PhysicalDatasetPath path = new PhysicalDatasetPath(datasetConfig.getFullPathList()); tree.addPhysicalDataset( new PhysicalDatasetResourcePath(new SourceName(container.getFullPathList().get(0)), path), new PhysicalDatasetName(path.getFileName().getName()), DatasetsUtil.toPhysicalDatasetConfig(container.getDataset()),
isPhysicalDataset(newOrUpdatedEntity.getContainer().getDataset().getType()) && existingContainer.getType() == FOLDER) { namespace.delete((new NamespaceInternalKey(new NamespaceKey(existingContainer.getFullPathList()), keyNormalization)).getKey(), existingContainer.getFolder().getTag()); return false;
writer.write(NamespaceIndexKeys.ENTITY_TYPE, container.getType().getNumber()); final NamespaceKey nkey = new NamespaceKey(container.getFullPathList()); NamespaceKey lkey = nkey.asLowerCase(); writer.write(NamespaceIndexKeys.UNQUOTED_LC_PATH, lkey.toUnescapedString()); writer.write(DatasetIndexKeys.DATASET_ID, new NamespaceKey(container.getFullPathList()).getSchemaPath());