use of au.gov.asd.tac.constellation.graph.GraphReadMethods in project constellation by constellation-app.
the class DateAttributeDescriptionNGTest method testCopy.
/**
* Test of copy method, of class DateAttributeDescription.
*/
@Test
public void testCopy() {
GraphReadMethods graph = new StoreGraph();
AttributeDescription expResult = instance;
AttributeDescription result = instance.copy(graph);
assertEquals(result.getObject(0), expResult.getObject(0));
}
use of au.gov.asd.tac.constellation.graph.GraphReadMethods in project constellation by constellation-app.
the class DefaultPluginEnvironmentNGTest method testExecuteReadPluginNow.
/**
* Test of executeReadPluginNow method, of class DefaultPluginEnvironment.
*/
@Test
public void testExecuteReadPluginNow() throws Exception {
System.out.println("executeReadPluginNow");
GraphReadMethods graph = mock(GraphReadMethods.class);
Plugin plugin = mock(Plugin.class);
PluginParameters parameters = mock(PluginParameters.class);
boolean interactive = false;
DefaultPluginEnvironment instance = new DefaultPluginEnvironment();
Object expResult = null;
Object result = instance.executeReadPluginNow(graph, plugin, parameters, interactive);
assertEquals(result, expResult);
}
use of au.gov.asd.tac.constellation.graph.GraphReadMethods in project constellation by constellation-app.
the class DefaultPluginEnvironmentNGTest method testExecuteReadPluginNowThrowsPluginException.
@Test(expectedExceptions = PluginException.class)
public void testExecuteReadPluginNowThrowsPluginException() throws Exception {
System.out.println("executeReadPluginNow");
GraphReadMethods graph = mock(GraphReadMethods.class);
Plugin plugin = mock(Plugin.class);
PluginParameters parameters = mock(PluginParameters.class);
PluginException pluginException = mock(PluginException.class);
boolean interactive = false;
DefaultPluginEnvironment instance = new DefaultPluginEnvironment();
doThrow(pluginException).when(plugin).run(any(GraphReadMethods.class), any(PluginInteraction.class), any(PluginParameters.class));
when(pluginException.getNotificationLevel()).thenReturn(PluginNotificationLevel.FATAL);
instance.executeReadPluginNow(graph, plugin, parameters, interactive);
}
use of au.gov.asd.tac.constellation.graph.GraphReadMethods in project constellation by constellation-app.
the class DefaultPluginEnvironmentNGTest method testExecuteReadPluginNowThrowsInterruptedException.
@Test(expectedExceptions = InterruptedException.class)
public void testExecuteReadPluginNowThrowsInterruptedException() throws Exception {
System.out.println("executeReadPluginNow");
GraphReadMethods graph = mock(GraphReadMethods.class);
Plugin plugin = mock(Plugin.class);
PluginParameters parameters = mock(PluginParameters.class);
InterruptedException interruptedException = mock(InterruptedException.class);
boolean interactive = false;
DefaultPluginEnvironment instance = new DefaultPluginEnvironment();
doThrow(interruptedException).when(plugin).run(any(GraphReadMethods.class), any(PluginInteraction.class), any(PluginParameters.class));
Object expResult = null;
Object result = instance.executeReadPluginNow(graph, plugin, parameters, interactive);
assertEquals(result, expResult);
}
use of au.gov.asd.tac.constellation.graph.GraphReadMethods in project constellation by constellation-app.
the class AbstractGeoExportPlugin method read.
@Override
public void read(final GraphReadMethods graph, final PluginInteraction interaction, final PluginParameters parameters) throws InterruptedException, PluginException {
if (parameters.getStringValue(OUTPUT_PARAMETER_ID) == null) {
NotifyDisplayer.display("Invalid output file provided, cannot be empty", NotifyDescriptor.ERROR_MESSAGE);
return;
}
if (parameters.getSingleChoice(ELEMENT_TYPE_PARAMETER_ID) == null) {
NotifyDisplayer.display("Invalid element type provided, cannot be empty", NotifyDescriptor.ERROR_MESSAGE);
return;
}
final File output = new File(parameters.getStringValue(OUTPUT_PARAMETER_ID));
final GraphElementType elementType = (GraphElementType) ((ElementTypeParameterValue) parameters.getSingleChoice(ELEMENT_TYPE_PARAMETER_ID)).getObjectValue();
final List<GraphAttribute> graphAttributes = parameters.getMultiChoiceValue(ATTRIBUTES_PARAMETER_ID).getChoicesData().stream().map(attributeChoice -> (GraphAttribute) ((GraphAttributeParameterValue) attributeChoice).getObjectValue()).collect(Collectors.toList());
final boolean selectedOnly = parameters.getBooleanValue(SELECTED_ONLY_PARAMETER_ID);
final int vertexIdentifierAttributeId = VisualConcept.VertexAttribute.IDENTIFIER.get(graph);
final int vertexSelectedAttributeId = VisualConcept.VertexAttribute.SELECTED.get(graph);
final int vertexLatitudeAttributeId = SpatialConcept.VertexAttribute.LATITUDE.get(graph);
final int vertexLongitudeAttributeId = SpatialConcept.VertexAttribute.LONGITUDE.get(graph);
final int vertexShapeAttributeId = SpatialConcept.VertexAttribute.SHAPE.get(graph);
final int transactionIdentifierAttributeId = VisualConcept.TransactionAttribute.IDENTIFIER.get(graph);
final int transactionSelectedAttributeId = VisualConcept.TransactionAttribute.SELECTED.get(graph);
final int transactionLatitudeAttributeId = SpatialConcept.TransactionAttribute.LATITUDE.get(graph);
final int transactionLongitudeAttributeId = SpatialConcept.TransactionAttribute.LONGITUDE.get(graph);
final int transactionShapeAttributeId = SpatialConcept.TransactionAttribute.SHAPE.get(graph);
final Map<String, String> shapes = new HashMap<>();
final Map<String, Map<String, Object>> attributes = new HashMap<>();
switch(elementType) {
case VERTEX:
final int vertexCount = graph.getVertexCount();
for (int vertexPosition = 0; vertexPosition < vertexCount; vertexPosition++) {
final int vertexId = graph.getVertex(vertexPosition);
final boolean vertexSelected = graph.getBooleanValue(vertexSelectedAttributeId, vertexId);
final String vertexIdentifier = graph.getStringValue(vertexIdentifierAttributeId, vertexId);
final Float vertexLatitude = vertexLatitudeAttributeId == GraphConstants.NOT_FOUND ? null : graph.getObjectValue(vertexLatitudeAttributeId, vertexId);
final Float vertexLongitude = vertexLongitudeAttributeId == GraphConstants.NOT_FOUND ? null : graph.getObjectValue(vertexLongitudeAttributeId, vertexId);
final String vertexShape = vertexShapeAttributeId == GraphConstants.NOT_FOUND ? null : graph.getStringValue(vertexShapeAttributeId, vertexId);
// if the vertex represents a valid geospatial shape, record it
boolean shapeFound = false;
if ((!selectedOnly || vertexSelected) && StringUtils.isNotBlank(vertexShape) && Shape.isValidGeoJson(vertexShape)) {
shapes.put(vertexIdentifier, vertexShape);
shapeFound = true;
} else if ((!selectedOnly || vertexSelected) && vertexLatitude != null && vertexLongitude != null) {
try {
final String vertexPoint = Shape.generateShape(vertexIdentifier, GeometryType.POINT, Arrays.asList(Tuple.create((double) vertexLongitude, (double) vertexLatitude)));
shapes.put(vertexIdentifier, vertexPoint);
shapeFound = true;
} catch (IOException ex) {
throw new PluginException(PluginNotificationLevel.ERROR, ex);
}
} else {
// Do nothing
}
// ... and record all its attributes
if (shapeFound) {
final Map<String, Object> attributeMap = new HashMap<>();
for (final GraphAttribute graphAttribute : graphAttributes) {
final Object attributeValue = graph.getObjectValue(graphAttribute.getId(), vertexId);
attributeMap.put(graphAttribute.getName(), attributeValue);
}
attributes.put(vertexIdentifier, attributeMap);
}
}
break;
case TRANSACTION:
final int transactionCount = graph.getTransactionCount();
for (int transactionPosition = 0; transactionPosition < transactionCount; transactionPosition++) {
final int transactionId = graph.getTransaction(transactionPosition);
final boolean transactionSelected = graph.getBooleanValue(transactionSelectedAttributeId, transactionId);
final String transactionIdentifier = graph.getStringValue(transactionIdentifierAttributeId, transactionId);
final Float transactionLatitude = transactionLatitudeAttributeId == GraphConstants.NOT_FOUND ? null : graph.getObjectValue(transactionLatitudeAttributeId, transactionId);
final Float transactionLongitude = transactionLongitudeAttributeId == GraphConstants.NOT_FOUND ? null : graph.getObjectValue(transactionLongitudeAttributeId, transactionId);
final String transactionShape = transactionShapeAttributeId == GraphConstants.NOT_FOUND ? null : graph.getStringValue(transactionShapeAttributeId, transactionId);
final int sourceVertexId = graph.getTransactionSourceVertex(transactionId);
final String sourceVertexIdentifier = graph.getStringValue(vertexIdentifierAttributeId, sourceVertexId);
final Float sourceVertexLatitude = vertexLatitudeAttributeId == GraphConstants.NOT_FOUND ? null : graph.getObjectValue(vertexLatitudeAttributeId, sourceVertexId);
final Float sourceVertexLongitude = vertexLongitudeAttributeId == GraphConstants.NOT_FOUND ? null : graph.getObjectValue(vertexLongitudeAttributeId, sourceVertexId);
final String sourceVertexShape = vertexShapeAttributeId == GraphConstants.NOT_FOUND ? null : graph.getStringValue(vertexShapeAttributeId, sourceVertexId);
final int destinationVertexId = graph.getTransactionDestinationVertex(transactionId);
final String destinationVertexIdentifier = graph.getStringValue(vertexIdentifierAttributeId, destinationVertexId);
final Float destinationVertexLatitude = vertexLatitudeAttributeId == GraphConstants.NOT_FOUND ? null : graph.getObjectValue(vertexLatitudeAttributeId, destinationVertexId);
final Float destinationVertexLongitude = vertexLongitudeAttributeId == GraphConstants.NOT_FOUND ? null : graph.getObjectValue(vertexLongitudeAttributeId, destinationVertexId);
final String destinationVertexShape = vertexShapeAttributeId == GraphConstants.NOT_FOUND ? null : graph.getStringValue(vertexShapeAttributeId, destinationVertexId);
// if the transaction represents a valid geospatial shape, record it
boolean shapeFound = false;
if ((!selectedOnly || transactionSelected) && StringUtils.isNotBlank(transactionShape) && Shape.isValidGeoJson(transactionShape)) {
shapes.put(transactionIdentifier, transactionShape);
shapeFound = true;
} else if ((!selectedOnly || transactionSelected) && transactionLatitude != null && transactionLongitude != null) {
try {
final String transactionPoint = Shape.generateShape(transactionIdentifier, GeometryType.POINT, Arrays.asList(Tuple.create((double) transactionLongitude, (double) transactionLatitude)));
shapes.put(transactionIdentifier, transactionPoint);
shapeFound = true;
} catch (IOException ex) {
throw new PluginException(PluginNotificationLevel.ERROR, ex);
}
} else {
// Do nothing
}
// ... and record all its attributes
if (shapeFound) {
final Map<String, Object> attributeMap = new HashMap<>();
final int transactionAttributeCount = graph.getAttributeCount(GraphElementType.TRANSACTION);
for (int transactionAttributePosition = 0; transactionAttributePosition < transactionAttributeCount; transactionAttributePosition++) {
final int transactionAttributeId = graph.getAttribute(GraphElementType.TRANSACTION, transactionAttributePosition);
final String transactionAttributeName = graph.getAttributeName(transactionAttributeId);
if (Character.isUpperCase(transactionAttributeName.charAt(0))) {
final Object transactionAttributeValue = graph.getObjectValue(transactionAttributeId, transactionId);
attributeMap.put(GraphRecordStoreUtilities.TRANSACTION + transactionAttributeName, transactionAttributeValue);
}
}
final int vertexAttributeCount = graph.getAttributeCount(GraphElementType.VERTEX);
for (int vertexAttributePosition = 0; vertexAttributePosition < vertexAttributeCount; vertexAttributePosition++) {
final int vertexAttributeId = graph.getAttribute(GraphElementType.VERTEX, vertexAttributePosition);
final String sourceVertexAttributeName = graph.getAttributeName(vertexAttributeId);
if (Character.isUpperCase(sourceVertexAttributeName.charAt(0))) {
final Object sourceVertexAttributeValue = graph.getObjectValue(vertexAttributeId, sourceVertexId);
attributeMap.put(GraphRecordStoreUtilities.SOURCE + sourceVertexAttributeName, sourceVertexAttributeValue);
}
final String destinationVertexAttributeName = graph.getAttributeName(vertexAttributeId);
if (Character.isUpperCase(destinationVertexAttributeName.charAt(0))) {
final Object destinationVertexAttributeValue = graph.getObjectValue(vertexAttributeId, destinationVertexId);
attributeMap.put(GraphRecordStoreUtilities.DESTINATION + destinationVertexAttributeName, destinationVertexAttributeValue);
}
}
attributes.put(transactionIdentifier, attributeMap);
}
// if the source vertex represents a valid geospatial shape, record it
shapeFound = false;
if ((!selectedOnly || transactionSelected) && StringUtils.isNotBlank(sourceVertexShape) && Shape.isValidGeoJson(sourceVertexShape)) {
shapes.put(sourceVertexIdentifier, sourceVertexShape);
shapeFound = true;
} else if ((!selectedOnly || transactionSelected) && sourceVertexLatitude != null && sourceVertexLongitude != null) {
try {
final String vertexPoint = Shape.generateShape(sourceVertexIdentifier, GeometryType.POINT, Arrays.asList(Tuple.create((double) sourceVertexLongitude, (double) sourceVertexLatitude)));
shapes.put(sourceVertexIdentifier, vertexPoint);
shapeFound = true;
} catch (IOException ex) {
throw new PluginException(PluginNotificationLevel.ERROR, ex);
}
} else {
// Do nothing
}
// ... and record all its attributes
if (shapeFound) {
final Map<String, Object> attributeMap = new HashMap<>();
final int transactionAttributeCount = graph.getAttributeCount(GraphElementType.TRANSACTION);
for (int transactionAttributePosition = 0; transactionAttributePosition < transactionAttributeCount; transactionAttributePosition++) {
final int transactionAttributeId = graph.getAttribute(GraphElementType.TRANSACTION, transactionAttributePosition);
final String transactionAttributeName = graph.getAttributeName(transactionAttributeId);
if (Character.isUpperCase(transactionAttributeName.charAt(0))) {
final Object transactionAttributeValue = graph.getObjectValue(transactionAttributeId, transactionId);
attributeMap.put(GraphRecordStoreUtilities.TRANSACTION + transactionAttributeName, transactionAttributeValue);
}
}
final int vertexAttributeCount = graph.getAttributeCount(GraphElementType.VERTEX);
for (int vertexAttributePosition = 0; vertexAttributePosition < vertexAttributeCount; vertexAttributePosition++) {
final int vertexAttributeId = graph.getAttribute(GraphElementType.VERTEX, vertexAttributePosition);
final String sourceVertexAttributeName = graph.getAttributeName(vertexAttributeId);
if (Character.isUpperCase(sourceVertexAttributeName.charAt(0))) {
final Object sourceVertexAttributeValue = graph.getObjectValue(vertexAttributeId, sourceVertexId);
attributeMap.put(GraphRecordStoreUtilities.SOURCE + sourceVertexAttributeName, sourceVertexAttributeValue);
}
final String destinationVertexAttributeName = graph.getAttributeName(vertexAttributeId);
if (Character.isUpperCase(destinationVertexAttributeName.charAt(0))) {
final Object destinationVertexAttributeValue = graph.getObjectValue(vertexAttributeId, destinationVertexId);
attributeMap.put(GraphRecordStoreUtilities.DESTINATION + destinationVertexAttributeName, destinationVertexAttributeValue);
}
}
attributes.put(sourceVertexIdentifier, attributeMap);
}
// if the destination vertex represents a valid geospatial shape, record it
shapeFound = false;
if ((!selectedOnly || transactionSelected) && StringUtils.isNotBlank(destinationVertexShape) && Shape.isValidGeoJson(destinationVertexShape)) {
shapes.put(destinationVertexIdentifier, destinationVertexShape);
shapeFound = true;
} else if ((!selectedOnly || transactionSelected) && destinationVertexLatitude != null && destinationVertexLongitude != null) {
try {
final String vertexPoint = Shape.generateShape(destinationVertexIdentifier, GeometryType.POINT, Arrays.asList(Tuple.create((double) destinationVertexLongitude, (double) destinationVertexLatitude)));
shapes.put(destinationVertexIdentifier, vertexPoint);
shapeFound = true;
} catch (IOException ex) {
throw new PluginException(PluginNotificationLevel.ERROR, ex);
}
} else {
// Do nothing
}
// ... and record all its attributes
if (shapeFound) {
final Map<String, Object> attributeMap = new HashMap<>();
final int transactionAttributeCount = graph.getAttributeCount(GraphElementType.TRANSACTION);
for (int transactionAttributePosition = 0; transactionAttributePosition < transactionAttributeCount; transactionAttributePosition++) {
final int transactionAttributeId = graph.getAttribute(GraphElementType.TRANSACTION, transactionAttributePosition);
final String transactionAttributeName = graph.getAttributeName(transactionAttributeId);
if (Character.isUpperCase(transactionAttributeName.charAt(0))) {
final Object transactionAttributeValue = graph.getObjectValue(transactionAttributeId, transactionId);
attributeMap.put(GraphRecordStoreUtilities.TRANSACTION + transactionAttributeName, transactionAttributeValue);
}
}
final int vertexAttributeCount = graph.getAttributeCount(GraphElementType.VERTEX);
for (int vertexAttributePosition = 0; vertexAttributePosition < vertexAttributeCount; vertexAttributePosition++) {
final int vertexAttributeId = graph.getAttribute(GraphElementType.VERTEX, vertexAttributePosition);
final String sourceVertexAttributeName = graph.getAttributeName(vertexAttributeId);
if (Character.isUpperCase(sourceVertexAttributeName.charAt(0))) {
final Object sourceVertexAttributeValue = graph.getObjectValue(vertexAttributeId, sourceVertexId);
attributeMap.put(GraphRecordStoreUtilities.SOURCE + sourceVertexAttributeName, sourceVertexAttributeValue);
}
final String destinationVertexAttributeName = graph.getAttributeName(vertexAttributeId);
if (Character.isUpperCase(destinationVertexAttributeName.charAt(0))) {
final Object destinationVertexAttributeValue = graph.getObjectValue(vertexAttributeId, destinationVertexId);
attributeMap.put(GraphRecordStoreUtilities.DESTINATION + destinationVertexAttributeName, destinationVertexAttributeValue);
}
}
attributes.put(destinationVertexIdentifier, attributeMap);
}
}
break;
default:
throw new PluginException(PluginNotificationLevel.ERROR, "Invalid element type");
}
try {
exportGeo(parameters, GraphNode.getGraphNode(graph.getId()).getDisplayName(), shapes, attributes, output);
} catch (IOException ex) {
throw new PluginException(PluginNotificationLevel.ERROR, ex);
}
ConstellationLoggerHelper.exportPropertyBuilder(this, GraphRecordStoreUtilities.getVertices(graph, false, false, false).getAll(GraphRecordStoreUtilities.SOURCE + VisualConcept.VertexAttribute.LABEL), output, ConstellationLoggerHelper.SUCCESS);
}
Aggregations