use of org.nextprot.api.tasks.solr.indexer.entry.FieldBuilder in project nextprot-api by calipho-sib.
the class EntryBaseSolrIndexer method convertToSolrDocument.
@Override
public SolrInputDocument convertToSolrDocument(Entry entry) {
fieldsBuilderMap = new HashMap<>();
initializeFieldBuilders(fieldsBuilderMap);
SolrInputDocument doc = new SolrInputDocument();
for (Fields f : Fields.values()) {
// Directly computed by SOLR
if (f == Fields.TEXT || f == Fields.SCORE)
continue;
FieldBuilder fb = fieldsBuilderMap.get(f);
fb.setGold(isGold);
fb.setTerminologyService(terminologyservice);
fb.setEntryBuilderService(entryBuilderService);
fb.setPublicationService(publicationService);
fb.setEntryReportStatsService(entryReportStatsService);
fb.initializeBuilder(entry);
Object o = fb.getFieldValue(f, f.getClazz());
doc.addField(f.getName(), o);
}
// Reset all fields builders
for (Fields f : Fields.values()) {
// Directly computed by SOLR
if (f == Fields.TEXT || f == Fields.SCORE)
continue;
fieldsBuilderMap.get(f).reset();
}
return doc;
}
use of org.nextprot.api.tasks.solr.indexer.entry.FieldBuilder in project nextprot-api by calipho-sib.
the class BuildersTest method shouldCoverAllSolrFields.
@Test
public void shouldCoverAllSolrFields() {
Map<Fields, FieldBuilder> map = new HashMap<>();
EntrySolrIndexer.initializeFieldBuilders(map);
StringBuilder sb = new StringBuilder();
for (Fields f : Fields.values()) {
if (!f.equals(Fields.SCORE) && !f.equals(Fields.TEXT) && !map.containsKey(f)) {
sb.append(f + ",");
}
}
if (!sb.toString().isEmpty()) {
fail("Missing " + sb.toString().split(",").length + " fields " + " :" + sb.toString());
}
}
use of org.nextprot.api.tasks.solr.indexer.entry.FieldBuilder in project nextprot-api by calipho-sib.
the class EntryBaseSolrIndexer method initializeFieldBuilders.
static void initializeFieldBuilders(Map<Fields, FieldBuilder> fieldsBuilderMap) {
Reflections reflections = new Reflections("org.nextprot.api.tasks.solr.indexer.entry.impl");
Set<Class<?>> entryFieldBuilderClasses = reflections.getTypesAnnotatedWith(EntryFieldBuilder.class);
for (Class<?> c : entryFieldBuilderClasses) {
try {
FieldBuilder fb = (FieldBuilder) c.newInstance();
if (fb.getSupportedFields() != null) {
for (Fields f : fb.getSupportedFields()) {
NPreconditions.checkTrue(!(fieldsBuilderMap.containsKey(f)), "The field " + f.getName() + " is supported by several builders: " + fb.getClass() + ", " + fieldsBuilderMap.get(f));
fieldsBuilderMap.put(f, fb);
}
}
} catch (InstantiationException | IllegalAccessException e) {
e.printStackTrace();
}
}
}
Aggregations