Search in sources :

Example 61 with Node

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

the class ResultDAGConverter method addVideoPart.

public static List<String> addVideoPart(DirectedAcyclicGraph<Node, Edge> graph, Node partNode, Metacard metacard, ORB orb, String parentAttrName, List<String> resultAttributes) {
    List<String> addedAttributes = new ArrayList<>();
    Any videoAny = orb.create_any();
    Node videoNode = new Node(0, NodeType.ENTITY_NODE, NsiliConstants.NSIL_VIDEO, videoAny);
    graph.addVertex(videoNode);
    graph.addEdge(partNode, videoNode);
    String attribute = parentAttrName + NsiliConstants.NSIL_VIDEO;
    addIntAttribute(graph, metacard.getAttribute(Media.HEIGHT), orb, resultAttributes, addedAttributes, videoNode, attribute, NsiliConstants.NUMBER_OF_ROWS);
    addIntAttribute(graph, metacard.getAttribute(Media.WIDTH), orb, resultAttributes, addedAttributes, videoNode, attribute, NsiliConstants.NUMBER_OF_COLS);
    addEncodingSchemeAttribute(graph, metacard, orb, resultAttributes, addedAttributes, videoNode, attribute);
    addDblAttribute(graph, metacard.getAttribute(Media.BITS_PER_SECOND), orb, resultAttributes, addedAttributes, videoNode, attribute, NsiliConstants.AVG_BIT_RATE);
    addDblAttribute(graph, metacard.getAttribute(Media.FRAMES_PER_SECOND), orb, resultAttributes, addedAttributes, videoNode, attribute, NsiliConstants.FRAME_RATE);
    addStrAttribute(graph, metacard.getAttribute(Media.SCANNING_MODE), orb, resultAttributes, addedAttributes, videoNode, attribute, NsiliConstants.SCANNING_MODE);
    addVmtiAttributes(graph, metacard, orb, resultAttributes, addedAttributes, videoNode, attribute);
    addCategoryAttribute(graph, metacard, orb, resultAttributes, addedAttributes, videoNode, attribute, false);
    addIntAttribute(graph, metacard.getAttribute(Isr.VIDEO_MOTION_IMAGERY_SYSTEMS_MATRIX_LEVEL), orb, resultAttributes, addedAttributes, videoNode, attribute, NsiliConstants.MISM_LEVEL);
    return addedAttributes;
}
Also used : Node(org.codice.alliance.nsili.common.UCO.Node) ArrayList(java.util.ArrayList) Any(org.omg.CORBA.Any)

Example 62 with Node

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

the class ResultDAGConverter method getAttributeMap.

public static Map<String, String> getAttributeMap(DAG dag) {
    Map<String, String> attributes = new HashMap<>();
    Map<Integer, Node> nodeMap = createNodeMap(dag.nodes);
    DirectedAcyclicGraph<Node, Edge> graph = getNodeEdgeDirectedAcyclicGraph(dag, nodeMap);
    DepthFirstIterator<Node, Edge> graphIT = new DepthFirstIterator<>(graph, nodeMap.get(0));
    List<String> nodeStack = new ArrayList<>();
    graphIT.addTraversalListener(new TraversalListener<Node, Edge>() {

        @Override
        public void connectedComponentFinished(ConnectedComponentTraversalEvent connectedComponentTraversalEvent) {
        // This method is not expected to be called
        }

        @Override
        public void connectedComponentStarted(ConnectedComponentTraversalEvent connectedComponentTraversalEvent) {
        // This method is not expected to be called
        }

        @Override
        public void edgeTraversed(EdgeTraversalEvent<Node, Edge> edgeTraversalEvent) {
        // This method is not expected to be called
        }

        @Override
        public void vertexTraversed(VertexTraversalEvent<Node> vertexTraversalEvent) {
            Node node = vertexTraversalEvent.getVertex();
            if (node.node_type != NodeType.ATTRIBUTE_NODE) {
                nodeStack.add(node.attribute_name);
            }
        }

        @Override
        public void vertexFinished(VertexTraversalEvent<Node> vertexTraversalEvent) {
            Node node = vertexTraversalEvent.getVertex();
            if (node.node_type == NodeType.ATTRIBUTE_NODE) {
                StringBuilder attribute = new StringBuilder();
                int currEntry = 0;
                int size = nodeStack.size();
                for (String nodeEntry : nodeStack) {
                    attribute.append(nodeEntry);
                    if (currEntry < (size - 1)) {
                        attribute.append(":");
                    } else {
                        attribute.append(".");
                    }
                    currEntry++;
                }
                attribute.append(node.attribute_name);
                attributes.put(attribute.toString(), CorbaUtils.getNodeValue(node.value));
            } else {
                int lastIdx = nodeStack.size() - 1;
                nodeStack.remove(lastIdx);
            }
        }
    });
    Node rootNode = null;
    while (graphIT.hasNext()) {
        graphIT.setCrossComponentTraversal(false);
        Node node = graphIT.next();
        if (rootNode == null) {
            rootNode = node;
        }
    }
    return attributes;
}
Also used : DepthFirstIterator(org.jgrapht.traverse.DepthFirstIterator) HashMap(java.util.HashMap) Node(org.codice.alliance.nsili.common.UCO.Node) ArrayList(java.util.ArrayList) ConnectedComponentTraversalEvent(org.jgrapht.event.ConnectedComponentTraversalEvent) Edge(org.codice.alliance.nsili.common.UCO.Edge)

Example 63 with Node

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

the class ResultDAGConverter method addDoubleAttribute.

public static void addDoubleAttribute(DirectedAcyclicGraph<Node, Edge> graph, Node parentNode, String key, Double doubleVal, ORB orb) {
    Any any = orb.create_any();
    any.insert_double(doubleVal);
    Node node = new Node(0, NodeType.ATTRIBUTE_NODE, key, any);
    graph.addVertex(node);
    graph.addEdge(parentNode, node);
}
Also used : Node(org.codice.alliance.nsili.common.UCO.Node) Any(org.omg.CORBA.Any)

Example 64 with Node

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

the class ResultDAGConverter method addCardNodeWithAttributes.

public static List<String> addCardNodeWithAttributes(DirectedAcyclicGraph<Node, Edge> graph, Node productNode, Metacard metacard, ORB orb, String parentAttrName, List<String> resultAttributes) {
    List<String> addedAttributes = new ArrayList<>();
    Any any = orb.create_any();
    Node cardNode = new Node(0, NodeType.ENTITY_NODE, NsiliConstants.NSIL_CARD, any);
    graph.addVertex(cardNode);
    graph.addEdge(productNode, cardNode);
    String attribute = parentAttrName + NsiliConstants.NSIL_CARD;
    if (shouldAdd(buildAttr(attribute, NsiliConstants.IDENTIFIER), resultAttributes) && metacard.getId() != null) {
        addStringAttribute(graph, cardNode, NsiliConstants.IDENTIFIER, metacard.getId(), orb);
        addedAttributes.add(buildAttr(attribute, NsiliConstants.IDENTIFIER));
    }
    addDateAttributes(graph, metacard, orb, resultAttributes, addedAttributes, cardNode, attribute);
    if (shouldAdd(buildAttr(attribute, NsiliConstants.SOURCE_LIBRARY), resultAttributes)) {
        if (StringUtils.isNotBlank(metacard.getSourceId())) {
            addStringAttribute(graph, cardNode, NsiliConstants.SOURCE_LIBRARY, metacard.getSourceId(), orb);
        } else {
            addStringAttribute(graph, cardNode, NsiliConstants.SOURCE_LIBRARY, NsiliConstants.UNKNOWN, orb);
        }
        addedAttributes.add(buildAttr(attribute, NsiliConstants.SOURCE_LIBRARY));
    }
    addStatusAttributes(graph, metacard, orb, resultAttributes, addedAttributes, cardNode, attribute);
    addStrAttribute(graph, metacard.getAttribute(Contact.PUBLISHER_NAME), orb, resultAttributes, addedAttributes, cardNode, attribute, NsiliConstants.PUBLISHER);
    return addedAttributes;
}
Also used : Node(org.codice.alliance.nsili.common.UCO.Node) ArrayList(java.util.ArrayList) Any(org.omg.CORBA.Any)

Example 65 with Node

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

the class ResultDAGConverter method addTaskPart.

public static List<String> addTaskPart(DirectedAcyclicGraph<Node, Edge> graph, Node partNode, Metacard metacard, ORB orb, String parentAttrName, List<String> resultAttributes) {
    List<String> addedAttributes = new ArrayList<>();
    Any taskAny = orb.create_any();
    Node taskNode = new Node(0, NodeType.ENTITY_NODE, NsiliConstants.NSIL_TASK, taskAny);
    graph.addVertex(taskNode);
    graph.addEdge(partNode, taskNode);
    String attribute = parentAttrName + NsiliConstants.NSIL_TASK;
    addValStrAttribute(graph, metacard.getAttribute(Isr.TASK_COMMENTS), orb, resultAttributes, addedAttributes, taskNode, attribute, NsiliConstants.COMMENTS);
    if (shouldAdd(buildAttr(attribute, NsiliConstants.STATUS), resultAttributes)) {
        Attribute taskStatusAttr = metacard.getAttribute(Isr.TASK_STATUS);
        if (taskStatusAttr != null) {
            String taskStatus = getTaskStatus(taskStatusAttr.getValue());
            if (taskStatus != null) {
                addStringAttribute(graph, taskNode, NsiliConstants.STATUS, taskStatus, orb);
                addedAttributes.add(buildAttr(attribute, NsiliConstants.STATUS));
            }
        }
    }
    return addedAttributes;
}
Also used : Attribute(ddf.catalog.data.Attribute) Node(org.codice.alliance.nsili.common.UCO.Node) ArrayList(java.util.ArrayList) 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