diff --git a/src/main/java/edu/tamu/scholars/middleware/discovery/service/component/jena/TriplestoreHarvester.java b/src/main/java/edu/tamu/scholars/middleware/discovery/service/component/jena/TriplestoreHarvester.java index b7112436a..407d037d5 100644 --- a/src/main/java/edu/tamu/scholars/middleware/discovery/service/component/jena/TriplestoreHarvester.java +++ b/src/main/java/edu/tamu/scholars/middleware/discovery/service/component/jena/TriplestoreHarvester.java @@ -145,19 +145,16 @@ private AbstractIndexDocument createDocument(String subject) throws Instantiatio AbstractIndexDocument document = construct(); Field field = FieldUtils.getField(type, ID, true); field.set(document, parse(subject)); - lookupProperties(document, subject); + lookupProperties(document, field, subject); lookupSyncIds(document); return document; } - private void lookupProperties(AbstractIndexDocument document, String subject) { + private void lookupProperties(AbstractIndexDocument document, Field field, String subject) { propertySourceTypeOps.parallelStream().forEach(typeOp -> { try { FieldSource source = typeOp.getPropertySource(); - Model model = queryForModel(source, subject); - - - + Model model = queryForModel(field, source, subject); List values = lookupProperty(typeOp, source, model); @@ -172,8 +169,11 @@ private void lookupProperties(AbstractIndexDocument document, String subject) { }); } - private Model queryForModel(FieldSource source, String subject) { - String query = templateService.templateSparql(source.template(), subject); + // clean code author recommends avoiding triadic methods + private Model queryForModel(Field field, FieldSource source, String subject) { + String key = field.getName(); // property name or class member same as solr document field name + // what property from domain model + String query = templateService.templateSparql(source.template(), key, subject); if (logger.isDebugEnabled()) { logger.debug(String.format("%s:\n%s", source.template(), query)); } diff --git a/src/main/java/edu/tamu/scholars/middleware/service/TemplateService.java b/src/main/java/edu/tamu/scholars/middleware/service/TemplateService.java index e71459f7e..f8df05e56 100644 --- a/src/main/java/edu/tamu/scholars/middleware/service/TemplateService.java +++ b/src/main/java/edu/tamu/scholars/middleware/service/TemplateService.java @@ -56,12 +56,25 @@ public String template(String template, Object data) { } } + // clean code author recommends avoiding triadic methods public String templateSparql(String name, String value) { String path = String.format("templates/sparql/%s.sparql", name); Map data = new HashMap(); - // cost of increasing context variables? data.put("uri", value); - data.put("subject", value); + Context context = Context.newBuilder(data).build(); + try { + return handlebars.compileInline(resourceService.getTemplate(path)).apply(context); + } catch (IOException e) { + throw new RuntimeException(String.format("Unable to template %s sparql", name), e); + } + } + + // clean code author recommends avoiding triadic methods + public String templateSparql(String name, String key, String value) { + String path = String.format("templates/sparql/%s.sparql", name); + Map data = new HashMap(); + data.put("uri", value); + data.put("subject", key); Context context = Context.newBuilder(data).build(); try { return handlebars.compileInline(resourceService.getTemplate(path)).apply(context);