Search in sources :

Example 1 with FERoot

use of com.bakdata.conquery.apiv1.frontend.FERoot in project conquery by bakdata.

the class FrontEndConceptBuilder method createRoot.

public static FERoot createRoot(NamespaceStorage storage, Subject subject) {
    FERoot root = new FERoot();
    Map<IId<?>, FENode> roots = root.getConcepts();
    List<? extends Concept<?>> allConcepts = new ArrayList<>(storage.getAllConcepts());
    // Remove any hidden concepts
    allConcepts.removeIf(Concept::isHidden);
    if (allConcepts.isEmpty()) {
        log.warn("There are no displayable concepts in the dataset {}", storage.getDataset().getId());
    }
    // Submit all permissions to Shiro
    boolean[] isPermitted = subject.isPermitted(allConcepts, Ability.READ);
    for (int i = 0; i < allConcepts.size(); i++) {
        if (isPermitted[i]) {
            roots.put(allConcepts.get(i).getId(), createCTRoot(allConcepts.get(i), storage.getStructure()));
        }
    }
    if (roots.isEmpty()) {
        log.warn("No concepts could be collected for {} on dataset {}. The subject is possibly lacking the permission to use them.", subject.getId(), storage.getDataset().getId());
    } else {
        log.trace("Collected {} concepts for {} on dataset {}.", roots.size(), subject.getId(), storage.getDataset().getId());
    }
    // add the structure tree
    for (StructureNode sn : storage.getStructure()) {
        FENode node = createStructureNode(sn, roots);
        if (node == null) {
            log.trace("Did not create a structure node entry for {}. Contained no concepts.", sn.getId());
            continue;
        }
        roots.put(sn.getId(), node);
    }
    // add all secondary IDs
    root.getSecondaryIds().addAll(storage.getSecondaryIds().stream().map(sid -> new FESecondaryId(sid.getId().toString(), sid.getLabel(), sid.getDescription())).collect(Collectors.toSet()));
    return root;
}
Also used : IId(com.bakdata.conquery.models.identifiable.ids.IId) FENode(com.bakdata.conquery.apiv1.frontend.FENode) FERoot(com.bakdata.conquery.apiv1.frontend.FERoot) ArrayList(java.util.ArrayList) FESecondaryId(com.bakdata.conquery.apiv1.frontend.FESecondaryId)

Aggregations

FENode (com.bakdata.conquery.apiv1.frontend.FENode)1 FERoot (com.bakdata.conquery.apiv1.frontend.FERoot)1 FESecondaryId (com.bakdata.conquery.apiv1.frontend.FESecondaryId)1 IId (com.bakdata.conquery.models.identifiable.ids.IId)1 ArrayList (java.util.ArrayList)1