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;
}
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;
}
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;
}
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);
}
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);
}
Aggregations