Search in sources :

Example 21 with Node

use of org.codice.alliance.nsili.common.UCO.Node in project alliance by codice.

the class DAGConverter method parseGraph.

private MetacardImpl parseGraph(DirectedAcyclicGraph<Node, Edge> graph, boolean swapCoordinates) {
    MetacardImpl metacard = new MetacardImpl(nsiliMetacardType);
    List<Serializable> associatedCards = new ArrayList<>();
    // Traverse the graph
    DepthFirstIterator<Node, Edge> depthFirstIterator = new DepthFirstIterator<>(graph);
    Node parentEntity = null;
    Node assocNode = null;
    while (depthFirstIterator.hasNext()) {
        Node node = depthFirstIterator.next();
        if (node.node_type == NodeType.ROOT_NODE && node.attribute_name.equals(NsiliConstants.NSIL_PRODUCT)) {
        // Nothing to process from root node
        } else if (node.node_type == NodeType.ENTITY_NODE) {
            parentEntity = node;
            assocNode = getAssocNode(graph, assocNode, node);
        } else if (node.node_type == NodeType.RECORD_NODE) {
        // Nothing to process from record node
        } else if (parentEntity != null && node.node_type == NodeType.ATTRIBUTE_NODE && node.value != null) {
            addNsiliAttribute(swapCoordinates, metacard, associatedCards, parentEntity, assocNode, node);
        }
    }
    // Add associated data
    if (!associatedCards.isEmpty()) {
        boolean firstAssoc = true;
        AttributeImpl attribute = null;
        for (Serializable association : associatedCards) {
            if (firstAssoc) {
                attribute = new AttributeImpl(Associations.RELATED, association);
                metacard.setAttribute(attribute);
                firstAssoc = false;
            } else {
                attribute.addValue(association);
            }
        }
    }
    return metacard;
}
Also used : DepthFirstIterator(org.jgrapht.traverse.DepthFirstIterator) Serializable(java.io.Serializable) Node(org.codice.alliance.nsili.common.UCO.Node) AttributeImpl(ddf.catalog.data.impl.AttributeImpl) ArrayList(java.util.ArrayList) Edge(org.codice.alliance.nsili.common.UCO.Edge) MetacardImpl(ddf.catalog.data.impl.MetacardImpl)

Example 22 with Node

use of org.codice.alliance.nsili.common.UCO.Node in project alliance by codice.

the class DAGConverter method convertDAG.

public MetacardImpl convertDAG(DAG dag, boolean swapCoordinates, String logSourceId) {
    MetacardImpl metacard = null;
    sourceId = logSourceId;
    String metadata;
    // Need to have at least 2 nodes and an edge for anything useful
    if (dag.nodes != null && dag.edges != null) {
        Map<Integer, Node> nodeMap = ResultDAGConverter.createNodeMap(dag.nodes);
        DirectedAcyclicGraph<Node, Edge> graph = getNodeEdgeDirectedAcyclicGraph(dag, nodeMap);
        metacard = parseGraph(graph, swapCoordinates);
        metacard.setSourceId(sourceId);
        metadata = dagToXML(dag);
        metacard.setMetadata(metadata);
    }
    return metacard;
}
Also used : Node(org.codice.alliance.nsili.common.UCO.Node) Edge(org.codice.alliance.nsili.common.UCO.Edge) MetacardImpl(ddf.catalog.data.impl.MetacardImpl)

Example 23 with Node

use of org.codice.alliance.nsili.common.UCO.Node in project alliance by codice.

the class DAGConverter method getNodeEdgeDirectedAcyclicGraph.

private static DirectedAcyclicGraph<Node, Edge> getNodeEdgeDirectedAcyclicGraph(DAG dag, Map<Integer, Node> nodeMap) {
    DirectedAcyclicGraph<Node, Edge> graph = new DirectedAcyclicGraph<>(Edge.class);
    for (Node node : dag.nodes) {
        graph.addVertex(node);
    }
    for (Edge edge : dag.edges) {
        Node node1 = nodeMap.get(edge.start_node);
        Node node2 = nodeMap.get(edge.end_node);
        if (node1 != null && node2 != null) {
            graph.addEdge(node1, node2);
        }
    }
    return graph;
}
Also used : Node(org.codice.alliance.nsili.common.UCO.Node) Edge(org.codice.alliance.nsili.common.UCO.Edge) DirectedAcyclicGraph(org.jgrapht.experimental.dag.DirectedAcyclicGraph)

Example 24 with Node

use of org.codice.alliance.nsili.common.UCO.Node in project alliance by codice.

the class DAGConverterTest method addBadVideoPart.

private void addBadVideoPart(DirectedAcyclicGraph<Node, Edge> graph, Node productNode) {
    Node partNode1 = addPartNode(graph, productNode);
    addSecurityNode(graph, partNode1);
    addBadCommonNode(graph, partNode1);
    addCoverageNode(graph, partNode1);
    Node partNode2 = addPartNode(graph, productNode);
    addSecurityNode(graph, partNode2);
    addCommonNode(graph, partNode2);
    addExpoloitationInfoNode(graph, partNode2);
    Node partNode3 = addPartNode(graph, productNode);
    addSecurityNode(graph, partNode3);
    addCommonNode(graph, partNode3);
    addBadVideoNode(graph, partNode3);
}
Also used : Node(org.codice.alliance.nsili.common.UCO.Node)

Example 25 with Node

use of org.codice.alliance.nsili.common.UCO.Node in project alliance by codice.

the class DAGConverterTest method addBadReportNode.

private void addBadReportNode(DirectedAcyclicGraph<Node, Edge> graph, Node parentNode) {
    Any reportAny = orb.create_any();
    Node reportNode = new Node(0, NodeType.ENTITY_NODE, NsiliConstants.NSIL_REPORT, reportAny);
    graph.addVertex(reportNode);
    graph.addEdge(parentNode, reportNode);
    ResultDAGConverter.addStringAttribute(graph, reportNode, NsiliConstants.PRIORITY, BAD_ENUM_VALUE, orb);
    ResultDAGConverter.addStringAttribute(graph, reportNode, NsiliConstants.TYPE, BAD_ENUM_VALUE, orb);
}
Also used : Node(org.codice.alliance.nsili.common.UCO.Node) Any(org.omg.CORBA.Any)

Aggregations

Node (org.codice.alliance.nsili.common.UCO.Node)109 Any (org.omg.CORBA.Any)61 Edge (org.codice.alliance.nsili.common.UCO.Edge)31 ArrayList (java.util.ArrayList)23 DirectedAcyclicGraph (org.jgrapht.experimental.dag.DirectedAcyclicGraph)23 MetacardImpl (ddf.catalog.data.impl.MetacardImpl)21 DAG (org.codice.alliance.nsili.common.UCO.DAG)21 Test (org.junit.Test)20 File (java.io.File)12 IOException (java.io.IOException)12 PrintStream (java.io.PrintStream)11 DepthFirstIterator (org.jgrapht.traverse.DepthFirstIterator)6 Attribute (ddf.catalog.data.Attribute)5 URI (java.net.URI)2 URISyntaxException (java.net.URISyntaxException)2 Metacard (ddf.catalog.data.Metacard)1 AttributeImpl (ddf.catalog.data.impl.AttributeImpl)1 BufferedInputStream (java.io.BufferedInputStream)1 FileOutputStream (java.io.FileOutputStream)1 Serializable (java.io.Serializable)1