Skip to content

Commit

Permalink
Issue #211: Initialize SparqlSelectToJson with List<String> as queries
Browse files Browse the repository at this point in the history
michielrogissart-cognizone committed Jul 26, 2023
1 parent 459d782 commit e0700ff
Showing 2 changed files with 44 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import java.util.stream.Stream;

@@ -40,15 +41,36 @@ public SparqlSelectToJson(Resource[] queryResources, TemplateService templateSer
}

public SparqlSelectToJson(Resource[] queryResources, TemplateService templateService, Map<String, String> context, ListExceptionHandling listExceptionHandling) {
this.queries = asQueries(queryResources, templateService, context);
this.listExceptionHandling = listExceptionHandling;
this(asQueries(templateService, queryResources, context), listExceptionHandling);
}

private static List<Query> asQueries(TemplateService templateService, Resource[] queryResources, Map<String, String> context) {
Stream<Supplier<String>> templateSuppliers = Arrays.stream(queryResources).map(TemplateService::fromResource);
return getQueries(templateService, context, templateSuppliers);
}

private static List<Query> getQueries(TemplateService templateService, Map<String, String> context, Stream<Supplier<String>> templateSuppliers) {
return templateService.processTemplates(templateSuppliers, context)
.map(QueryFactory::create)
.collect(Collectors.toList());
}

public SparqlSelectToJson(List<String> queries, TemplateService templateService, Map<String, String> context) {
this(queries, templateService, context, ListExceptionHandling.fail);
}

public SparqlSelectToJson(List<String> queries, TemplateService templateService, Map<String, String> context, ListExceptionHandling listExceptionHandling) {
this(asQueries(templateService, queries, context), listExceptionHandling);
}

private List<Query> asQueries(Resource[] queryResources, TemplateService templateService, Map<String, String> context) {
return Arrays.stream(queryResources)
.map(resource -> templateService.processTemplate(resource, context))
.map(QueryFactory::create)
.collect(Collectors.toList());
public static List<Query> asQueries(TemplateService templateService, List<String> templates, Map<String, String> context) {
Stream<Supplier<String>> templateSuppliers = templates.stream().map(string -> () -> string);
return getQueries(templateService, context, templateSuppliers);
}

public SparqlSelectToJson(List<Query> queries, ListExceptionHandling listExceptionHandling) {
this.queries = queries;
this.listExceptionHandling = listExceptionHandling;
}

public ObjectNode convert(Model model, Map<String, RDFNode> bindings) {
Original file line number Diff line number Diff line change
@@ -3,7 +3,13 @@
import org.springframework.core.io.Resource;
import zone.cogni.core.spring.ResourceHelper;

import java.util.function.Supplier;
import java.util.stream.Stream;

public interface TemplateService {
static Supplier<String> fromResource(Resource templateResource) {
return () -> ResourceHelper.toString(templateResource);
}

String processTemplate(String template, Object root);

@@ -20,7 +26,14 @@ default NamedTemplate getNewNamedTemplateCopy(NamedTemplate namedTemplate, Objec
}

default String processTemplate(Resource templateResource, Object root) {
String template = ResourceHelper.toString(templateResource);
return processTemplate(template, root);
return processTemplate(fromResource(templateResource), root);
}

default String processTemplate(Supplier<String> templateSupplier, Object root) {
return processTemplate(templateSupplier.get(), root);
}

default Stream<String> processTemplates(Stream<Supplier<String>> templateSuppliers, Object root) {
return templateSuppliers.map(supplier -> processTemplate(supplier, root));
}
}

0 comments on commit e0700ff

Please sign in to comment.