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