Search in sources :

Example 1 with RecordStore

use of au.gov.asd.tac.constellation.graph.processing.RecordStore in project constellation by constellation-app.

the class FactAnalyticPlugin method copySubgraphToGraph.

protected final void copySubgraphToGraph(final GraphWriteMethods graph, final StoreGraph subgraph) {
    final RecordStore subgraphStore = GraphRecordStoreUtilities.getAll(subgraph, false, false);
    GraphRecordStoreUtilities.addRecordStoreToGraph(graph, subgraphStore, false, false, null);
}
Also used : RecordStore(au.gov.asd.tac.constellation.graph.processing.RecordStore)

Example 2 with RecordStore

use of au.gov.asd.tac.constellation.graph.processing.RecordStore in project constellation by constellation-app.

the class CompositeNodeState method createFromString.

/**
 * De-serialise this state from the String representation of a JSON Node.
 *
 * @param s The composite state string
 *
 * @return The De-serialised CompositeNodeState.
 * @throws IllegalArgumentException If there is an issue with reading the
 * JSON.
 */
public static CompositeNodeState createFromString(final String s) {
    if (StringUtils.isBlank(s)) {
        return null;
    }
    try (final JsonParser parser = new MappingJsonFactory().createParser(s)) {
        final JsonNode jn = parser.readValueAsTree();
        final int nodeId = jn.get(NODE_ID).asInt();
        final ExpandedCompositeNodeState expandedState;
        if (jn.hasNonNull(EXPANDED_STATE)) {
            final JsonNode expandedNode = jn.get(EXPANDED_STATE);
            final RecordStore compositeNodeStore = RecordStoreUtilities.fromJson(new ByteArrayInputStream(expandedNode.get(COMPOSITE_NODE_STORE).asText().getBytes(StandardCharsets.UTF_8.name())));
            final String compositeId = expandedNode.get(COMPOSITE_ID).asText();
            final boolean isAffecting = expandedNode.get(AFFECTING).asBoolean();
            final int numberOfNodes = expandedNode.get(NUMBER_OF_NODES).asInt();
            expandedState = new ExpandedCompositeNodeState(compositeNodeStore, compositeId, isAffecting, numberOfNodes);
        } else {
            expandedState = null;
        }
        final ContractedCompositeNodeState contractedState;
        if (jn.hasNonNull(CONTRACTED_STATE)) {
            final JsonNode contractedNode = jn.get(CONTRACTED_STATE);
            final RecordStore constituentNodeStore = RecordStoreUtilities.fromJson(new ByteArrayInputStream(contractedNode.get(CONSTITUENT_NODE_STORE).asText().getBytes(StandardCharsets.UTF_8.name())));
            final List<String> expandedIds = new ArrayList<>();
            final Iterator<JsonNode> expandedIdsIterator = contractedNode.get(EXPANDED_IDS).iterator();
            while (expandedIdsIterator.hasNext()) {
                expandedIds.add(expandedIdsIterator.next().asText());
            }
            final List<String> affectedExpandedIds = new ArrayList<>();
            final Iterator<JsonNode> affectedExpandedIdsIterator = contractedNode.get(AFFECTED_EXPANDED_IDS).iterator();
            while (affectedExpandedIdsIterator.hasNext()) {
                affectedExpandedIds.add(affectedExpandedIdsIterator.next().asText());
            }
            final float[] mean = new float[3];
            final Iterator<JsonNode> meanIterator = contractedNode.get(MEAN).iterator();
            int i = 0;
            while (meanIterator.hasNext() && i < 3) {
                mean[i++] = (float) meanIterator.next().asDouble();
            }
            contractedState = new ContractedCompositeNodeState(constituentNodeStore, expandedIds, affectedExpandedIds, mean);
        } else {
            contractedState = null;
        }
        return new CompositeNodeState(nodeId, expandedState, contractedState);
    } catch (final IOException ex) {
        throw new IllegalArgumentException("Error converting this string to a composite node state");
    }
}
Also used : MappingJsonFactory(com.fasterxml.jackson.databind.MappingJsonFactory) ArrayList(java.util.ArrayList) JsonNode(com.fasterxml.jackson.databind.JsonNode) IOException(java.io.IOException) ByteArrayInputStream(java.io.ByteArrayInputStream) RecordStore(au.gov.asd.tac.constellation.graph.processing.RecordStore) JsonParser(com.fasterxml.jackson.core.JsonParser)

Example 3 with RecordStore

use of au.gov.asd.tac.constellation.graph.processing.RecordStore in project constellation by constellation-app.

the class ScoreAnalyticPlugin method copySubgraphToGraph.

protected final void copySubgraphToGraph(final GraphWriteMethods graph, final StoreGraph subgraph) {
    final RecordStore subgraphStore = GraphRecordStoreUtilities.getAll(subgraph, false, false);
    GraphRecordStoreUtilities.addRecordStoreToGraph(graph, subgraphStore, false, false, null);
}
Also used : RecordStore(au.gov.asd.tac.constellation.graph.processing.RecordStore)

Example 4 with RecordStore

use of au.gov.asd.tac.constellation.graph.processing.RecordStore in project constellation by constellation-app.

the class TestParametersPlugin method query.

@Override
protected RecordStore query(final RecordStore query, final PluginInteraction interaction, final PluginParameters parameters) throws PluginException {
    final int sleep = parameters.getParameters().get(SLEEP_PARAMETER_ID).getIntegerValue();
    for (int i = 0; i < sleep; i++) {
        LOGGER.log(Level.INFO, "sleep {0}/{1}", new Object[] { i, sleep });
        try {
            Thread.sleep(1000);
        } catch (InterruptedException ex) {
            Exceptions.printStackTrace(ex);
            Thread.currentThread().interrupt();
        }
    }
    LOGGER.log(Level.INFO, "slept for {0} seconds", sleep);
    LOGGER.log(Level.INFO, "parameters: {0}", parameters);
    LOGGER.log(Level.INFO, "GraphElementType: {0}", parameters.getSingleChoice(ELEMENT_TYPE_PARAMETER_ID));
    final LocalDate localDate = parameters.getLocalDateValue(LOCAL_DATE_PARAMETER_ID);
    LOGGER.log(Level.INFO, "localdate: {0} ", localDate);
    if (localDate != null) {
        final Calendar cal = LocalDateParameterType.toCalendar(localDate);
        LOGGER.log(Level.INFO, String.format("toDate: [%s] [%04d-%02d-%02d]", cal, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH)));
        LOGGER.log(Level.INFO, String.format("fields: [%04d-%02d-%02d]", localDate.get(ChronoField.YEAR), localDate.get(ChronoField.MONTH_OF_YEAR), localDate.get(ChronoField.DAY_OF_MONTH)));
    }
    final MultiChoiceParameterValue planets = parameters.getMultiChoiceValue(PLANETS_PARAMETER_ID);
    planets.getChoices().stream().forEach(planet -> LOGGER.log(Level.INFO, "Planet: {0}", planet));
    LOGGER.log(Level.INFO, "==== begin string values");
    parameters.getParameters().values().stream().forEach(param -> LOGGER.log(Level.INFO, "String {0}: \"{1}\"", new Object[] { param.getName(), param.getStringValue() }));
    LOGGER.log(Level.INFO, "==== end string values");
    final File outputDir = DataAccessPreferenceUtilities.getDataAccessResultsDir();
    if (outputDir != null) {
        final String fnam = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmss")) + "-testChainer.txt";
        final File fout = new File(outputDir, fnam);
        try (final PrintWriter writer = new PrintWriter(fout, StandardCharsets.UTF_8.name())) {
            parameters.getParameters().values().stream().forEach(param -> writer.printf("%s: '%s'", param.getName(), param.getStringValue()));
        } catch (final FileNotFoundException | UnsupportedEncodingException ex) {
            Exceptions.printStackTrace(ex);
        }
    }
    final List<String> keys = query.keys();
    while (query.next()) {
        keys.stream().forEach(key -> LOGGER.log(Level.INFO, String.format("%-20s: %s", key, query.get(key))));
        LOGGER.log(Level.INFO, "--");
    }
    final boolean crash = parameters.getBooleanValue(CRASH_PARAMETER_ID);
    if (crash) {
        throw new RuntimeException("Simulated plugin failure");
    }
    try {
        interaction.setProgress(1, 0, String.format("Pretended to add %d node(s), modify %d node(s)", r.nextInt(100) + 1, r.nextInt(100) + 1), false);
    } catch (InterruptedException ex) {
        Exceptions.printStackTrace(ex);
        Thread.currentThread().interrupt();
    }
    final String queryName = parameters.getStringValue(CoreGlobalParameters.QUERY_NAME_PARAMETER_ID);
    LOGGER.log(Level.INFO, "query name: {0}", queryName);
    final DateTimeRange dtr = parameters.getDateTimeRangeValue(CoreGlobalParameters.DATETIME_RANGE_PARAMETER_ID);
    final ZonedDateTime[] dtrStartEnd = dtr.getZonedStartEnd();
    LOGGER.log(Level.INFO, "range: (zdt) {0} .. {1}", new Object[] { dtrStartEnd[0], dtrStartEnd[1] });
    LOGGER.log(Level.INFO, "range: (zdt) {0} .. {1}", new Object[] { DateTimeFormatter.ISO_INSTANT.format(dtrStartEnd[0]), DateTimeFormatter.ISO_INSTANT.format(dtrStartEnd[1]) });
    final String interactionLevel = parameters.getParameters().get(INTERACTION_PARAMETER_ID).getStringValue();
    final PluginNotificationLevel pnInteractionLevel;
    if (interactionLevel != null) {
        switch(interactionLevel) {
            case DEBUG:
                pnInteractionLevel = PluginNotificationLevel.DEBUG;
                break;
            case INFO:
                pnInteractionLevel = PluginNotificationLevel.INFO;
                break;
            case WARNING:
                pnInteractionLevel = PluginNotificationLevel.WARNING;
                break;
            case ERROR:
                pnInteractionLevel = PluginNotificationLevel.ERROR;
                break;
            case FATAL:
                pnInteractionLevel = PluginNotificationLevel.FATAL;
                break;
            default:
                pnInteractionLevel = null;
                break;
        }
        if (pnInteractionLevel != null) {
            interaction.notify(pnInteractionLevel, "Interaction from plugin");
        }
    }
    final String exceptionLevel = parameters.getParameters().get(LEVEL_PARAMETER_ID).getStringValue();
    final PluginNotificationLevel pnExceptionLevel;
    if (exceptionLevel != null) {
        switch(exceptionLevel) {
            case DEBUG:
                pnExceptionLevel = PluginNotificationLevel.DEBUG;
                break;
            case INFO:
                pnExceptionLevel = PluginNotificationLevel.INFO;
                break;
            case WARNING:
                pnExceptionLevel = PluginNotificationLevel.WARNING;
                break;
            case ERROR:
                pnExceptionLevel = PluginNotificationLevel.ERROR;
                break;
            case FATAL:
                pnExceptionLevel = PluginNotificationLevel.FATAL;
                break;
            default:
                pnExceptionLevel = null;
                break;
        }
        if (pnExceptionLevel != null) {
            throw new PluginException(pnExceptionLevel, "Exception thrown from plugin");
        }
    }
    // Add nodes containing global query parameters
    final RecordStore results = new GraphRecordStore();
    results.add();
    results.set(GraphRecordStoreUtilities.SOURCE + AnalyticConcept.VertexAttribute.RAW, "name1@domain1.com");
    results.set(GraphRecordStoreUtilities.SOURCE + AnalyticConcept.VertexAttribute.TYPE, "Email");
    results.set(GraphRecordStoreUtilities.SOURCE + AnalyticConcept.VertexAttribute.COMMENT, queryName);
    results.set(GraphRecordStoreUtilities.SOURCE + TemporalConcept.VertexAttribute.LAST_SEEN, DateTimeFormatter.ISO_INSTANT.format(dtrStartEnd[0]).replace("Z", ".000Z"));
    results.set(GraphRecordStoreUtilities.DESTINATION + AnalyticConcept.VertexAttribute.RAW, "name2@domain2.com");
    results.set(GraphRecordStoreUtilities.DESTINATION + AnalyticConcept.VertexAttribute.TYPE, "Email");
    results.set(GraphRecordStoreUtilities.DESTINATION + AnalyticConcept.VertexAttribute.COMMENT, queryName);
    results.set(GraphRecordStoreUtilities.DESTINATION + TemporalConcept.VertexAttribute.LAST_SEEN, DateTimeFormatter.ISO_INSTANT.format(dtrStartEnd[1]).replace("Z", ".000Z"));
    results.set(GraphRecordStoreUtilities.TRANSACTION + AnalyticConcept.TransactionAttribute.COMMENT, parameters.toString());
    return results;
}
Also used : Calendar(java.util.Calendar) MultiChoiceParameterValue(au.gov.asd.tac.constellation.plugins.parameters.types.MultiChoiceParameterType.MultiChoiceParameterValue) PluginNotificationLevel(au.gov.asd.tac.constellation.plugins.PluginNotificationLevel) PluginException(au.gov.asd.tac.constellation.plugins.PluginException) FileNotFoundException(java.io.FileNotFoundException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) LocalDate(java.time.LocalDate) ZonedDateTime(java.time.ZonedDateTime) RecordStore(au.gov.asd.tac.constellation.graph.processing.RecordStore) GraphRecordStore(au.gov.asd.tac.constellation.graph.processing.GraphRecordStore) GraphRecordStore(au.gov.asd.tac.constellation.graph.processing.GraphRecordStore) DateTimeRange(au.gov.asd.tac.constellation.plugins.parameters.types.DateTimeRange) File(java.io.File) PrintWriter(java.io.PrintWriter)

Example 5 with RecordStore

use of au.gov.asd.tac.constellation.graph.processing.RecordStore in project constellation by constellation-app.

the class ExtractTypesFromTextPluginNGTest method testRegexQuery.

/**
 * Test of query method in class ExtractTypesFromTextPlugin using a string
 * where a detection regex is picked up
 *
 * @throws Exception
 */
@Test
public void testRegexQuery() throws Exception {
    RecordStore query = new GraphRecordStore();
    ExtractTypesFromTextPlugin instance = new ExtractTypesFromTextPlugin();
    PluginInteraction interaction = new TextPluginInteraction();
    PluginParameters parameters = instance.createParameters();
    parameters.getParameters().get(ExtractTypesFromTextPlugin.TEXT_PARAMETER_ID).setStringValue("abc@def.ghi");
    RecordStore result = instance.query(query, interaction, parameters);
    RecordStore expResult = new GraphRecordStore();
    expResult.add();
    expResult.set(GraphRecordStoreUtilities.SOURCE + VisualConcept.VertexAttribute.IDENTIFIER, "abc@def.ghi");
    expResult.set(GraphRecordStoreUtilities.SOURCE + AnalyticConcept.VertexAttribute.TYPE, AnalyticConcept.VertexType.EMAIL_ADDRESS);
    expResult.set(GraphRecordStoreUtilities.SOURCE + AnalyticConcept.VertexAttribute.SEED, "true");
    assertEquals(result, expResult);
}
Also used : PluginInteraction(au.gov.asd.tac.constellation.plugins.PluginInteraction) TextPluginInteraction(au.gov.asd.tac.constellation.plugins.text.TextPluginInteraction) RecordStore(au.gov.asd.tac.constellation.graph.processing.RecordStore) GraphRecordStore(au.gov.asd.tac.constellation.graph.processing.GraphRecordStore) GraphRecordStore(au.gov.asd.tac.constellation.graph.processing.GraphRecordStore) PluginParameters(au.gov.asd.tac.constellation.plugins.parameters.PluginParameters) TextPluginInteraction(au.gov.asd.tac.constellation.plugins.text.TextPluginInteraction) Test(org.testng.annotations.Test)

Aggregations

RecordStore (au.gov.asd.tac.constellation.graph.processing.RecordStore)29 GraphRecordStore (au.gov.asd.tac.constellation.graph.processing.GraphRecordStore)20 Test (org.testng.annotations.Test)13 PluginParameters (au.gov.asd.tac.constellation.plugins.parameters.PluginParameters)10 PluginInteraction (au.gov.asd.tac.constellation.plugins.PluginInteraction)9 ArrayList (java.util.ArrayList)9 HashMap (java.util.HashMap)6 File (java.io.File)4 StoreGraph (au.gov.asd.tac.constellation.graph.StoreGraph)3 PluginException (au.gov.asd.tac.constellation.plugins.PluginException)3 UnsupportedFlavorException (java.awt.datatransfer.UnsupportedFlavorException)3 IOException (java.io.IOException)3 Graph (au.gov.asd.tac.constellation.graph.Graph)2 GraphAttribute (au.gov.asd.tac.constellation.graph.GraphAttribute)2 GraphReadMethods (au.gov.asd.tac.constellation.graph.GraphReadMethods)2 AnalyticSchemaFactory (au.gov.asd.tac.constellation.graph.schema.analytic.AnalyticSchemaFactory)2 CompositeNodeState (au.gov.asd.tac.constellation.graph.schema.analytic.attribute.objects.CompositeNodeState)2 ExpandedCompositeNodeState (au.gov.asd.tac.constellation.graph.schema.analytic.attribute.objects.ExpandedCompositeNodeState)2 SchemaTransactionType (au.gov.asd.tac.constellation.graph.schema.type.SchemaTransactionType)2 DateTimeRange (au.gov.asd.tac.constellation.plugins.parameters.types.DateTimeRange)2