Package org.dspace.app.cris.discovery

Source Code of org.dspace.app.cris.discovery.RelationsPreferencesSolrIndexPlugin

/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* https://github.com/CILEA/dspace-cris/wiki/License
*/
package org.dspace.app.cris.discovery;

import it.cilea.osd.jdyna.model.ANestedPropertiesDefinition;
import it.cilea.osd.jdyna.model.ANestedProperty;
import it.cilea.osd.jdyna.model.ATypeNestedObject;
import it.cilea.osd.jdyna.model.PropertiesDefinition;
import it.cilea.osd.jdyna.model.Property;

import java.util.List;

import org.apache.log4j.Logger;
import org.apache.solr.common.SolrInputDocument;
import org.dspace.app.cris.model.ACrisObject;
import org.dspace.app.cris.model.RelationPreference;
import org.dspace.app.cris.model.jdyna.ACrisNestedObject;
import org.dspace.app.cris.service.ApplicationService;
import org.dspace.content.DSpaceObject;
import org.dspace.content.Item;
import org.dspace.core.Context;
import org.dspace.discovery.SolrServiceIndexPlugin;

public class RelationsPreferencesSolrIndexPlugin implements
        CrisServiceIndexPlugin, SolrServiceIndexPlugin
{
    private static final Logger log = Logger
            .getLogger(RelationsPreferencesSolrIndexPlugin.class);

    private ApplicationService applicationService;

    public void setApplicationService(ApplicationService applicationService)
    {
        this.applicationService = applicationService;
    }

    @Override
    public <P extends Property<TP>, TP extends PropertiesDefinition, NP extends ANestedProperty<NTP>, NTP extends ANestedPropertiesDefinition, ACNO extends ACrisNestedObject<NP, NTP, P, TP>, ATNO extends ATypeNestedObject<NTP>> void additionalIndex(
            ACrisObject<P, TP, NP, NTP, ACNO, ATNO> dso, SolrInputDocument document)
    {
        ACrisObject<P, TP, NP, NTP, ACNO, ATNO> item = dso;
        List<RelationPreference> preferences = applicationService
                .findRelationsPreferencesForUUID(item.getUuid());
        if (preferences != null)
        {
            for (RelationPreference rp : preferences)
            {
                String uuid = rp.getSourceUUID();
                String status = rp.getStatus();
                String fieldName = RelationPreference.PREFIX_RELATIONPREFERENCES
                        + rp.getRelationType() + "." + status.toLowerCase();
                document.addField(fieldName, uuid);
                if (rp.getPriority() > 0)
                {
                    for (int idx = 100; idx - rp.getPriority() > 0; idx--)
                    {
                        document.addField(fieldName, uuid);
                    }
                }
            }
        }

    }

    @Override
    public void additionalIndex(Context context, DSpaceObject dso,
            SolrInputDocument document)
    {
        if (!(dso instanceof Item))
            return;
        Item item = (Item) dso;
        int itemID = item.getID();
        List<RelationPreference> preferences = applicationService
                .findRelationsPreferencesForItemID(itemID);
        if (preferences != null)
        {
            for (RelationPreference rp : preferences)
            {
                String uuid = rp.getSourceUUID();
                String status = rp.getStatus();
                String fieldName = RelationPreference.PREFIX_RELATIONPREFERENCES
                        + rp.getRelationType() + "." + status.toLowerCase();
                document.addField(fieldName, uuid);
                if (rp.getPriority() > 0)
                {
                    for (int idx = 100; idx - rp.getPriority() > 0; idx--)
                    {
                        document.addField(fieldName, uuid);
                    }
                }
            }
        }
    }

  @Override
  public <P extends Property<TP>, TP extends PropertiesDefinition, NP extends ANestedProperty<NTP>, NTP extends ANestedPropertiesDefinition, ACNO extends ACrisNestedObject<NP, NTP, P, TP>, ATNO extends ATypeNestedObject<NTP>> void additionalIndex(
      ACNO dso, SolrInputDocument sorlDoc) {
    // FIXME NOT SUPPORTED OPERATION
  }
}
TOP

Related Classes of org.dspace.app.cris.discovery.RelationsPreferencesSolrIndexPlugin

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.