Search in sources :

Example 1 with FieldBuilder

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;
}
Also used : SolrInputDocument(org.apache.solr.common.SolrInputDocument) Fields(org.nextprot.api.solr.index.EntryIndex.Fields) FieldBuilder(org.nextprot.api.tasks.solr.indexer.entry.FieldBuilder) EntryFieldBuilder(org.nextprot.api.tasks.solr.indexer.entry.EntryFieldBuilder)

Example 2 with FieldBuilder

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());
    }
}
Also used : Fields(org.nextprot.api.solr.index.EntryIndex.Fields) HashMap(java.util.HashMap) FieldBuilder(org.nextprot.api.tasks.solr.indexer.entry.FieldBuilder) AbstractUnitBaseTest(org.nextprot.api.commons.dbunit.AbstractUnitBaseTest) Test(org.junit.Test)

Example 3 with FieldBuilder

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();
        }
    }
}
Also used : Fields(org.nextprot.api.solr.index.EntryIndex.Fields) FieldBuilder(org.nextprot.api.tasks.solr.indexer.entry.FieldBuilder) EntryFieldBuilder(org.nextprot.api.tasks.solr.indexer.entry.EntryFieldBuilder) Reflections(org.reflections.Reflections)

Aggregations

Fields (org.nextprot.api.solr.index.EntryIndex.Fields)3 FieldBuilder (org.nextprot.api.tasks.solr.indexer.entry.FieldBuilder)3 EntryFieldBuilder (org.nextprot.api.tasks.solr.indexer.entry.EntryFieldBuilder)2 HashMap (java.util.HashMap)1 SolrInputDocument (org.apache.solr.common.SolrInputDocument)1 Test (org.junit.Test)1 AbstractUnitBaseTest (org.nextprot.api.commons.dbunit.AbstractUnitBaseTest)1 Reflections (org.reflections.Reflections)1