Search in sources :

Example 6 with GraphmlType

use of org.graphdrawing.graphml.GraphmlType in project opennms by OpenNMS.

the class AssetGraphMLProvider method regenerateAssetTopology.

/**
 * Regenerates the AssetTopology defined by the providerId
 * @param providerId The providerId to regenerate.
 */
public synchronized void regenerateAssetTopology(String providerId) {
    Objects.requireNonNull(providerId);
    try {
        LOG.debug("Regenerating Asset Topology providerId: {}", providerId);
        if (!assetGraphDefinitionRepository.exists(providerId))
            throw new IllegalStateException(String.format("Asset Graph Definition with id '%s' cannot be regenerated, because it does not exist", providerId));
        GeneratorConfig config = assetGraphDefinitionRepository.getConfigDefinition(providerId);
        final GraphML graphML = transactionOperations.execute(status -> new AssetGraphGenerator(nodeProvider).generateGraphs(config));
        final GraphmlType graphmlType = GraphMLWriter.convert(graphML);
        if (graphmlRepository.exists(providerId))
            graphmlRepository.delete(providerId);
        graphmlRepository.save(config.getProviderId(), config.getLabel(), graphmlType);
    } catch (Exception ex) {
        LOG.error("problem regenerating asset topology ", ex);
        throw new RuntimeException(ex);
    }
}
Also used : GraphmlType(org.graphdrawing.graphml.GraphmlType) GraphML(org.opennms.features.graphml.model.GraphML)

Example 7 with GraphmlType

use of org.graphdrawing.graphml.GraphmlType in project opennms by OpenNMS.

the class GraphMLWriter method addProperties.

private static void addProperties(GraphmlType graphmlType, KeyForType keyForType, GraphMLElement element, DataTypeAddCallback callback) throws InvalidGraphException {
    for (Map.Entry<String, Object> eachEntry : element.getProperties().entrySet()) {
        if (eachEntry.getKey().equals(GraphMLElement.ID)) {
            // skip IDs
            continue;
        }
        List<KeyType> definedKeys = graphmlType.getKey().stream().filter(eachKey -> eachKey.getFor() == keyForType).filter(eachKey -> eachKey.getId().equals(eachEntry.getKey())).collect(Collectors.toList());
        if (definedKeys.isEmpty()) {
            KeyType keyType = new KeyType();
            keyType.setFor(keyForType);
            keyType.setId(eachEntry.getKey());
            keyType.setAttrName(eachEntry.getKey());
            keyType.setAttrType(parseType(eachEntry.getValue()));
            graphmlType.getKey().add(keyType);
        }
        if (definedKeys.size() > 1) {
            throw new InvalidGraphException("Duplicate key found for id " + eachEntry.getKey());
        }
        DataType dataType = new DataType();
        dataType.setKey(eachEntry.getKey());
        dataType.setContent(String.valueOf(eachEntry.getValue()));
        callback.addData(dataType);
    }
}
Also used : Logger(org.slf4j.Logger) LoggerFactory(org.slf4j.LoggerFactory) IOException(java.io.IOException) KeyTypeType(org.graphdrawing.graphml.KeyTypeType) Collectors(java.util.stream.Collectors) DataType(org.graphdrawing.graphml.DataType) File(java.io.File) List(java.util.List) NodeType(org.graphdrawing.graphml.NodeType) KeyForType(org.graphdrawing.graphml.KeyForType) Map(java.util.Map) GraphmlType(org.graphdrawing.graphml.GraphmlType) JaxbUtils(org.opennms.core.xml.JaxbUtils) KeyType(org.graphdrawing.graphml.KeyType) GraphType(org.graphdrawing.graphml.GraphType) EdgeType(org.graphdrawing.graphml.EdgeType) KeyType(org.graphdrawing.graphml.KeyType) DataType(org.graphdrawing.graphml.DataType) Map(java.util.Map)

Aggregations

GraphmlType (org.graphdrawing.graphml.GraphmlType)7 File (java.io.File)2 EdgeType (org.graphdrawing.graphml.EdgeType)2 GraphType (org.graphdrawing.graphml.GraphType)2 NodeType (org.graphdrawing.graphml.NodeType)2 GraphML (org.opennms.features.graphml.model.GraphML)2 FileInputStream (java.io.FileInputStream)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 List (java.util.List)1 Map (java.util.Map)1 NoSuchElementException (java.util.NoSuchElementException)1 Properties (java.util.Properties)1 Collectors (java.util.stream.Collectors)1 DataType (org.graphdrawing.graphml.DataType)1 KeyForType (org.graphdrawing.graphml.KeyForType)1 KeyType (org.graphdrawing.graphml.KeyType)1 KeyTypeType (org.graphdrawing.graphml.KeyTypeType)1 Test (org.junit.Test)1 XmlTest (org.opennms.core.test.xml.XmlTest)1