use of nl.knaw.huygens.timbuctoo.v5.graphql.datafetchers.berkeleydb.datafetchers.RelationDataFetcher in project timbuctoo by HuygensING.
the class RdfWiringFactory method getDataFetcher.
@Override
public DataFetcher getDataFetcher(FieldWiringEnvironment environment) {
if (environment.getFieldDefinition().getDirective("passThrough") != null) {
return DataFetchingEnvironment::getSource;
} else if (environment.getFieldDefinition().getDirective("related") != null) {
final Directive directive = environment.getFieldDefinition().getDirective("related");
String source = ((StringValue) directive.getArgument("source").getValue()).getValue();
String predicate = ((StringValue) directive.getArgument("predicate").getValue()).getValue();
String direction = ((StringValue) directive.getArgument("direction").getValue()).getValue();
return new CollectionFetcherWrapper(argumentsHelper, new RelationsOfSubjectDataFetcher(source, predicate, Direction.valueOf(direction)));
} else if (environment.getFieldDefinition().getDirective("fromCollection") != null) {
final Directive directive = environment.getFieldDefinition().getDirective("fromCollection");
String uri = ((StringValue) directive.getArgument("uri").getValue()).getValue();
boolean listAll = ((BooleanValue) directive.getArgument("listAll").getValue()).isValue();
if (listAll) {
return new CollectionFetcherWrapper(argumentsHelper, new CollectionDataFetcher(uri));
} else {
return lookupFetcher;
}
} else if (environment.getFieldDefinition().getDirective("rdf") != null) {
final Directive directive = environment.getFieldDefinition().getDirective("rdf");
String uri = ((StringValue) directive.getArgument("predicate").getValue()).getValue();
Direction direction = valueOf(((StringValue) directive.getArgument("direction").getValue()).getValue());
boolean isList = ((BooleanValue) directive.getArgument("isList").getValue()).isValue();
boolean isObject = ((BooleanValue) directive.getArgument("isObject").getValue()).isValue();
boolean isValue = ((BooleanValue) directive.getArgument("isValue").getValue()).isValue();
if (isObject && isValue) {
return new DataFetcherWrapper(argumentsHelper, isList, new UnionDataFetcher(uri, direction));
} else {
if (isObject) {
return new DataFetcherWrapper(argumentsHelper, isList, new RelationDataFetcher(uri, direction));
} else {
return new DataFetcherWrapper(argumentsHelper, isList, new TypedLiteralDataFetcher(uri));
}
}
} else if (environment.getFieldDefinition().getDirective("uri") != null) {
return uriFetcher;
} else if (environment.getFieldDefinition().getDirective("dataSet") != null) {
final Directive directive = environment.getFieldDefinition().getDirective("dataSet");
String userId = ((StringValue) directive.getArgument("userId").getValue()).getValue();
String dataSetId = ((StringValue) directive.getArgument("dataSetId").getValue()).getValue();
final DataSet dataSet = dataSetRepository.unsafeGetDataSetWithoutCheckingPermissions(userId, dataSetId).orElse(null);
return dataFetchingEnvironment -> new DatabaseResult() {
@Override
public DataSet getDataSet() {
return dataSet;
}
};
} else if (environment.getFieldDefinition().getDirective("entityTitle") != null) {
return entityTitleFetcher;
} else if (environment.getFieldDefinition().getDirective("entityDescription") != null) {
return entityDescriptionFetcher;
} else if (environment.getFieldDefinition().getDirective("entityImage") != null) {
return entityImageFetcher;
}
return null;
}
Aggregations