Search in sources :

Example 1 with FENode

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

the class FrontEndConceptBuilder method createCTRoot.

private static FENode createCTRoot(Concept<?> c, StructureNode[] structureNodes) {
    MatchingStats matchingStats = c.getMatchingStats();
    StructureNodeId structureParent = Arrays.stream(structureNodes).filter(sn -> sn.getContainedRoots().contains(c.getId())).findAny().map(StructureNode::getId).orElse(null);
    FENode n = FENode.builder().active(true).description(c.getDescription()).label(c.getLabel()).additionalInfos(c.getAdditionalInfos()).matchingEntries(matchingStats.countEvents()).matchingEntities(matchingStats.countEntities()).dateRange(matchingStats.spanEvents() != null ? matchingStats.spanEvents().toSimpleRange() : null).detailsAvailable(Boolean.TRUE).codeListResolvable(c.countElements() > 1).parent(structureParent).selects(c.getSelects().stream().map(FrontEndConceptBuilder::createSelect).collect(Collectors.toList())).tables(c.getConnectors().stream().map(FrontEndConceptBuilder::createTable).collect(Collectors.toList())).build();
    if (c instanceof ConceptTreeNode) {
        ConceptTreeNode<?> tree = (ConceptTreeNode<?>) c;
        if (tree.getChildren() != null) {
            n.setChildren(tree.getChildren().stream().map(ConceptTreeChild::getId).toArray(ConceptTreeChildId[]::new));
        }
    }
    return n;
}
Also used : ConceptTreeChild(com.bakdata.conquery.models.datasets.concepts.tree.ConceptTreeChild) Arrays(java.util.Arrays) IdentifiableImpl(com.bakdata.conquery.models.identifiable.IdentifiableImpl) Subject(com.bakdata.conquery.models.auth.entities.Subject) ArrayUtils(org.apache.commons.lang3.ArrayUtils) ConceptTreeNode(com.bakdata.conquery.models.datasets.concepts.tree.ConceptTreeNode) IId(com.bakdata.conquery.models.identifiable.ids.IId) ArrayList(java.util.ArrayList) FEValidityDate(com.bakdata.conquery.apiv1.frontend.FEValidityDate) NamespaceStorage(com.bakdata.conquery.io.storage.NamespaceStorage) Select(com.bakdata.conquery.models.datasets.concepts.select.Select) FERoot(com.bakdata.conquery.apiv1.frontend.FERoot) StructureNodeId(com.bakdata.conquery.models.identifiable.ids.specific.StructureNodeId) Map(java.util.Map) ConceptId(com.bakdata.conquery.models.identifiable.ids.specific.ConceptId) Nullable(javax.annotation.Nullable) Identifiable(com.bakdata.conquery.models.identifiable.Identifiable) ConceptConfigurationException(com.bakdata.conquery.models.exceptions.ConceptConfigurationException) FEValue(com.bakdata.conquery.apiv1.frontend.FEValue) FESecondaryId(com.bakdata.conquery.apiv1.frontend.FESecondaryId) Collectors(java.util.stream.Collectors) FEList(com.bakdata.conquery.apiv1.frontend.FEList) Objects(java.util.Objects) List(java.util.List) Filter(com.bakdata.conquery.models.datasets.concepts.filters.Filter) Slf4j(lombok.extern.slf4j.Slf4j) FETable(com.bakdata.conquery.apiv1.frontend.FETable) FENode(com.bakdata.conquery.apiv1.frontend.FENode) Ability(com.bakdata.conquery.models.auth.permissions.Ability) FEFilter(com.bakdata.conquery.apiv1.frontend.FEFilter) ConceptTreeChildId(com.bakdata.conquery.models.identifiable.ids.specific.ConceptTreeChildId) AllArgsConstructor(lombok.AllArgsConstructor) FESelect(com.bakdata.conquery.apiv1.frontend.FESelect) Column(com.bakdata.conquery.models.datasets.Column) ConceptTreeNode(com.bakdata.conquery.models.datasets.concepts.tree.ConceptTreeNode) FENode(com.bakdata.conquery.apiv1.frontend.FENode) ConceptTreeChild(com.bakdata.conquery.models.datasets.concepts.tree.ConceptTreeChild) ConceptTreeChildId(com.bakdata.conquery.models.identifiable.ids.specific.ConceptTreeChildId) StructureNodeId(com.bakdata.conquery.models.identifiable.ids.specific.StructureNodeId)

Example 2 with FENode

use of com.bakdata.conquery.apiv1.frontend.FENode 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)

Example 3 with FENode

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

the class FrontEndConceptBuilder method createCTNode.

private static FENode createCTNode(ConceptElement<?> ce) {
    MatchingStats matchingStats = ce.getMatchingStats();
    FENode n = FENode.builder().active(null).description(ce.getDescription()).label(ce.getLabel()).additionalInfos(ce.getAdditionalInfos()).matchingEntries(matchingStats.countEvents()).matchingEntities(matchingStats.countEntities()).dateRange(matchingStats.spanEvents() != null ? matchingStats.spanEvents().toSimpleRange() : null).build();
    if (ce instanceof ConceptTreeNode) {
        ConceptTreeNode<?> tree = (ConceptTreeNode<?>) ce;
        if (tree.getChildren() != null) {
            n.setChildren(tree.getChildren().stream().map(IdentifiableImpl::getId).toArray(ConceptTreeChildId[]::new));
        }
        if (tree.getParent() != null) {
            n.setParent(tree.getParent().getId());
        }
    }
    return n;
}
Also used : ConceptTreeNode(com.bakdata.conquery.models.datasets.concepts.tree.ConceptTreeNode) FENode(com.bakdata.conquery.apiv1.frontend.FENode) IdentifiableImpl(com.bakdata.conquery.models.identifiable.IdentifiableImpl) ConceptTreeChildId(com.bakdata.conquery.models.identifiable.ids.specific.ConceptTreeChildId)

Aggregations

FENode (com.bakdata.conquery.apiv1.frontend.FENode)3 FERoot (com.bakdata.conquery.apiv1.frontend.FERoot)2 FESecondaryId (com.bakdata.conquery.apiv1.frontend.FESecondaryId)2 ConceptTreeNode (com.bakdata.conquery.models.datasets.concepts.tree.ConceptTreeNode)2 IdentifiableImpl (com.bakdata.conquery.models.identifiable.IdentifiableImpl)2 IId (com.bakdata.conquery.models.identifiable.ids.IId)2 ConceptTreeChildId (com.bakdata.conquery.models.identifiable.ids.specific.ConceptTreeChildId)2 ArrayList (java.util.ArrayList)2 FEFilter (com.bakdata.conquery.apiv1.frontend.FEFilter)1 FEList (com.bakdata.conquery.apiv1.frontend.FEList)1 FESelect (com.bakdata.conquery.apiv1.frontend.FESelect)1 FETable (com.bakdata.conquery.apiv1.frontend.FETable)1 FEValidityDate (com.bakdata.conquery.apiv1.frontend.FEValidityDate)1 FEValue (com.bakdata.conquery.apiv1.frontend.FEValue)1 NamespaceStorage (com.bakdata.conquery.io.storage.NamespaceStorage)1 Subject (com.bakdata.conquery.models.auth.entities.Subject)1 Ability (com.bakdata.conquery.models.auth.permissions.Ability)1 Column (com.bakdata.conquery.models.datasets.Column)1 Filter (com.bakdata.conquery.models.datasets.concepts.filters.Filter)1 Select (com.bakdata.conquery.models.datasets.concepts.select.Select)1