use of nl.knaw.huygens.timbuctoo.v5.graphql.mutations.dto.CustomProvenance in project timbuctoo by HuygensING.
the class ChangeLog method getProvenanceChanges.
protected Stream<Change> getProvenanceChanges(DataSet dataSet, String[] subjects, CustomProvenance provenance, Map<String, JsonNode> values) {
TypeNameStore typeNameStore = dataSet.getTypeNameStore();
Stream<Change> customProv = provenance.getFields().stream().filter(field -> field.getValueType() != null).flatMap(field -> {
String graphQlPred = typeNameStore.makeGraphQlnameForPredicate(field.getUri(), Direction.OUT, field.isList());
return Stream.of(subjects).map(subject -> new Change(subject, field.getUri(), getValues(dataSet, values.get(graphQlPred)), Stream.empty()));
});
Stream<Change> customProvNested = provenance.getFields().stream().filter(field -> field.getObject() != null).flatMap(field -> {
String graphQlPred = typeNameStore.makeGraphQlnameForPredicate(field.getUri(), Direction.OUT, field.isList());
JsonNode objectValues = values.get(graphQlPred);
if (objectValues.isArray()) {
Spliterator<JsonNode> spliterator = Spliterators.spliteratorUnknownSize(objectValues.iterator(), Spliterator.ORDERED);
return StreamSupport.stream(spliterator, false).flatMap(newObjectValues -> getChangesForProvObject(dataSet, newObjectValues, subjects, field));
}
return getChangesForProvObject(dataSet, objectValues, subjects, field);
});
return Stream.concat(customProv, customProvNested);
}
use of nl.knaw.huygens.timbuctoo.v5.graphql.mutations.dto.CustomProvenance in project timbuctoo by HuygensING.
the class DerivedInputTypeSchemaGeneratorTest method setUp.
@Before
public void setUp() throws Exception {
graphQlNameGenerator = mock(GraphQlNameGenerator.class);
when(graphQlNameGenerator.createObjectTypeName(ROOT_TYPE, TYPE_URI)).thenReturn(TYPE);
derivedSchemaContainer = mock(DerivedSchemaContainer.class);
when(derivedSchemaContainer.propertyInputType(anyList())).thenReturn("PropertyInput");
readOnlyChecker = new ReadOnlyChecker() {
@Override
public boolean isReadonlyPredicate(String predicateIri) {
return READ_ONLY_PRED.equals(predicateIri);
}
@Override
public boolean isReadonlyType(String typeUri) {
return READ_ONLY_TYPE.equals(typeUri);
}
};
instanceNoProv = new DerivedInputTypeSchemaGenerator(TYPE_URI, ROOT_TYPE, graphQlNameGenerator, derivedSchemaContainer, readOnlyChecker, new CustomProvenance(Collections.emptyList()));
instanceProv = new DerivedInputTypeSchemaGenerator(TYPE_URI, ROOT_TYPE, graphQlNameGenerator, derivedSchemaContainer, readOnlyChecker, CustomProvenance.getCustomProvenance(ImmutableMap.of("fields", Lists.newArrayList(ImmutableMap.of("uri", "http://example.org/name", "isList", false, "valueType", STRING)))));
}
use of nl.knaw.huygens.timbuctoo.v5.graphql.mutations.dto.CustomProvenance in project timbuctoo by HuygensING.
the class DerivedSchemaContainerTest method addsCustomProvenanceCreationMethod.
@Test
public void addsCustomProvenanceCreationMethod() {
DerivedSchemaContainer instance = createWithProvenance(new CustomProvenance(newArrayList()));
String schema = instance.getSchema();
assertThat(schema, containsString("type rootTypeMutations{\n" + " setCustomProvenance(customProvenance: CustomProvenanceInput!): Message!" + " @setCustomProvenanceMutation(dataSet: \"rootType\")\n"));
}
use of nl.knaw.huygens.timbuctoo.v5.graphql.mutations.dto.CustomProvenance in project timbuctoo by HuygensING.
the class ProvenanceChangeLogTest method getProvenanceForListField.
@Test
public void getProvenanceForListField() throws Exception {
CustomProvenance customProvenance = CustomProvenance.getCustomProvenance(ImmutableMap.of("fields", Lists.newArrayList(ImmutableMap.of("uri", NAME_URI, "isList", true, "valueType", STRING))));
when(dataSet.getCustomProvenance()).thenReturn(customProvenance);
String value1 = "value1";
String value2 = "value2";
Map<Object, Object> provenance = Maps.newHashMap();
provenance.put(NAME_FIELD, newArrayList(createPropertyInput(value1), createPropertyInput(value2)));
Map<Object, Object> entity = Maps.newHashMap();
entity.put("provenance", provenance);
ProvenanceChangeLog instance = new ProvenanceChangeLog(entity);
List<Change> provChanges = instance.getProvenance(dataSet, SUBJECT).collect(toList());
assertThat(provChanges.size(), is(1));
assertThat(provChanges.get(0), is(likeChange().withSubject(SUBJECT).withPredicate(NAME_URI).withValues(new Value(value1, STRING), new Value(value2, STRING)).oldValuesIsEmpty()));
}
use of nl.knaw.huygens.timbuctoo.v5.graphql.mutations.dto.CustomProvenance in project timbuctoo by HuygensING.
the class ProvenanceChangeLogTest method getProvenanceForObjectField.
@Test
public void getProvenanceForObjectField() throws Exception {
CustomProvenance customProvenance = CustomProvenance.getCustomProvenance(ImmutableMap.of("fields", Lists.newArrayList(ImmutableMap.of("uri", NAME_URI, "isList", false, "object", ImmutableMap.of("type", TYPE_URI, "fields", Lists.newArrayList(ImmutableMap.of("uri", FIRST_NAME_URI, "isList", false, "valueType", STRING)))))));
when(dataSet.getCustomProvenance()).thenReturn(customProvenance);
String value = "value";
Map<Object, Object> name = Maps.newHashMap();
name.put("uri", SUBJECT_NAME_1);
name.put(FIRST_NAME_FIELD, createPropertyInput(value));
Map<Object, Object> provenance = Maps.newHashMap();
provenance.put(NAME_FIELD, name);
Map<Object, Object> entity = Maps.newHashMap();
entity.put("provenance", provenance);
ProvenanceChangeLog instance = new ProvenanceChangeLog(entity);
List<Change> provChanges = instance.getProvenance(dataSet, SUBJECT).collect(toList());
assertThat(provChanges.size(), is(3));
assertThat(provChanges.get(0), is(likeChange().withSubject(SUBJECT).withPredicate(NAME_URI).withValues(new Value(SUBJECT_NAME_1, null)).oldValuesIsEmpty()));
assertThat(provChanges.get(1), is(likeChange().withSubject(SUBJECT_NAME_1).withPredicate(RDF_TYPE).withValues(new Value(TYPE_URI, null)).oldValuesIsEmpty()));
assertThat(provChanges.get(2), is(likeChange().withSubject(SUBJECT_NAME_1).withPredicate(FIRST_NAME_URI).withValues(new Value(value, STRING)).oldValuesIsEmpty()));
}
Aggregations