/** * 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 * * http://www.dspace.org/license/ */ package org.dspace.discovery; import org.dspace.content.*; import org.dspace.content.Collection; import org.dspace.discovery.configuration.DiscoveryConfiguration; import org.dspace.discovery.configuration.DiscoveryConfigurationService; import org.dspace.kernel.ServiceManager; import org.dspace.services.factory.DSpaceServicesFactory; import java.sql.SQLException; import java.util.*; /** * Util methods used by discovery * * @author Kevin Van de Velde (kevin at atmire dot com) * @author Mark Diggory (markd at atmire dot com) * @author Ben Bosman (ben at atmire dot com) */ public class SearchUtils { /** Cached search service **/ private static SearchService searchService; public static SearchService getSearchService() { if (searchService == null) { org.dspace.kernel.ServiceManager manager = DSpaceServicesFactory.getInstance().getServiceManager(); searchService = manager.getServiceByName(SearchService.class.getName(),SearchService.class); } return searchService; } public static DiscoveryConfiguration getDiscoveryConfiguration() { return getDiscoveryConfiguration(null); } public static DiscoveryConfiguration getDiscoveryConfiguration(DSpaceObject dso) { DiscoveryConfigurationService configurationService = getConfigurationService(); DiscoveryConfiguration result = null; if (dso == null) { result = configurationService.getMap().get("site"); }else{ result = configurationService.getMap().get(dso.getHandle()); } if (result == null) { //No specific configuration, get the default one result = configurationService.getMap().get("default"); } return result; } public static DiscoveryConfigurationService getConfigurationService() { ServiceManager manager = DSpaceServicesFactory.getInstance().getServiceManager(); return manager.getServiceByName(DiscoveryConfigurationService.class.getName(), DiscoveryConfigurationService.class); } public static List<String> getIgnoredMetadataFields(int type) { return getConfigurationService().getToIgnoreMetadataFields().get(type); } /** * Method that retrieves a list of all the configuration objects from the given item * A configuration object can be returned for each parent community/collection * * @param item the DSpace item * @return a list of configuration objects * @throws SQLException * An exception that provides information on a database access error or other errors. */ public static List<DiscoveryConfiguration> getAllDiscoveryConfigurations(Item item) throws SQLException { Map<String, DiscoveryConfiguration> result = new HashMap<String, DiscoveryConfiguration>(); List<Collection> collections = item.getCollections(); for (Collection collection : collections) { DiscoveryConfiguration configuration = getDiscoveryConfiguration(collection); if (!result.containsKey(configuration.getId())) { result.put(configuration.getId(), configuration); } } //Also add one for the default DiscoveryConfiguration configuration = getDiscoveryConfiguration(null); if (!result.containsKey(configuration.getId())) { result.put(configuration.getId(), configuration); } return Arrays.asList(result.values().toArray(new DiscoveryConfiguration[result.size()])); } }