mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-17 15:03:18 +00:00
[CST-18016] Removed import-openaire-suggestions script as it can be used with import-loader-suggestions script
This commit is contained in:
@@ -1,29 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.app.suggestion.openaire;
|
|
||||||
|
|
||||||
import org.apache.commons.cli.Options;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extension of {@link PublicationLoaderScriptConfiguration} for CLI.
|
|
||||||
*
|
|
||||||
* @author Alessandro Martelli (alessandro.martelli at 4science.it)
|
|
||||||
*/
|
|
||||||
public class PublicationLoaderCliScriptConfiguration<T extends PublicationLoaderRunnable>
|
|
||||||
extends PublicationLoaderScriptConfiguration<T> {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Options getOptions() {
|
|
||||||
Options options = super.getOptions();
|
|
||||||
options.addOption("h", "help", false, "help");
|
|
||||||
options.getOption("h").setType(boolean.class);
|
|
||||||
super.options = options;
|
|
||||||
return options;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,116 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.app.suggestion.openaire;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.apache.commons.cli.ParseException;
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
|
||||||
import org.apache.logging.log4j.Logger;
|
|
||||||
import org.dspace.app.suggestion.loader.PublicationLoader;
|
|
||||||
import org.dspace.content.Item;
|
|
||||||
import org.dspace.core.Context;
|
|
||||||
import org.dspace.discovery.DiscoverQuery;
|
|
||||||
import org.dspace.discovery.SearchService;
|
|
||||||
import org.dspace.discovery.SearchServiceException;
|
|
||||||
import org.dspace.discovery.SearchUtils;
|
|
||||||
import org.dspace.discovery.utils.DiscoverQueryBuilder;
|
|
||||||
import org.dspace.discovery.utils.parameter.QueryBuilderSearchFilter;
|
|
||||||
import org.dspace.scripts.DSpaceRunnable;
|
|
||||||
import org.dspace.sort.SortOption;
|
|
||||||
import org.dspace.utils.DSpace;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Runner responsible to import metadata about authors from OpenAIRE to Solr.
|
|
||||||
* This runner works in two ways:
|
|
||||||
* If -s parameter with a valid UUID is received, then the specific researcher
|
|
||||||
* with this UUID will be used.
|
|
||||||
* Invocation without any parameter results in massive import, processing all
|
|
||||||
* authors registered in DSpace.
|
|
||||||
*
|
|
||||||
* @author Alessandro Martelli (alessandro.martelli at 4science.it)
|
|
||||||
*/
|
|
||||||
public class PublicationLoaderRunnable
|
|
||||||
extends DSpaceRunnable<PublicationLoaderScriptConfiguration<PublicationLoaderRunnable>> {
|
|
||||||
|
|
||||||
private static final Logger LOGGER = LogManager.getLogger();
|
|
||||||
|
|
||||||
private PublicationLoader oairePublicationLoader = null;
|
|
||||||
|
|
||||||
protected Context context;
|
|
||||||
|
|
||||||
protected String profile;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@SuppressWarnings({ "rawtypes", "unchecked" })
|
|
||||||
public PublicationLoaderScriptConfiguration<PublicationLoaderRunnable> getScriptConfiguration() {
|
|
||||||
PublicationLoaderScriptConfiguration configuration = new DSpace().getServiceManager()
|
|
||||||
.getServiceByName("import-openaire-suggestions", PublicationLoaderScriptConfiguration.class);
|
|
||||||
return configuration;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setup() throws ParseException {
|
|
||||||
|
|
||||||
oairePublicationLoader = new DSpace().getServiceManager().getServiceByName(
|
|
||||||
"OpenairePublicationLoader", PublicationLoader.class);
|
|
||||||
|
|
||||||
profile = commandLine.getOptionValue("s");
|
|
||||||
if (profile == null) {
|
|
||||||
LOGGER.info("No argument for -s, process all profiles");
|
|
||||||
} else {
|
|
||||||
LOGGER.info("Process eperson item with UUID {}", profile);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void internalRun() throws Exception {
|
|
||||||
|
|
||||||
context = new Context();
|
|
||||||
|
|
||||||
Iterator<Item> researchers = getResearchers(profile);
|
|
||||||
while (researchers.hasNext()) {
|
|
||||||
Item researcher = researchers.next();
|
|
||||||
oairePublicationLoader.importRecords(context, researcher);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the Item(s) which map a researcher from Solr. If the uuid is specified,
|
|
||||||
* the researcher with this UUID will be chosen. If the uuid doesn't match any
|
|
||||||
* researcher, the method returns an empty array list. If uuid is null, all
|
|
||||||
* research will be return.
|
|
||||||
*
|
|
||||||
* @param profileUUID uuid of the researcher. If null, all researcher will be
|
|
||||||
* returned.
|
|
||||||
* @return the researcher with specified UUID or all researchers
|
|
||||||
*/
|
|
||||||
@SuppressWarnings("rawtypes")
|
|
||||||
private Iterator<Item> getResearchers(String profileUUID) {
|
|
||||||
SearchService searchService = new DSpace().getSingletonService(SearchService.class);
|
|
||||||
DiscoverQueryBuilder queryBuilder = SearchUtils.getQueryBuilder();
|
|
||||||
List<QueryBuilderSearchFilter> filters = new ArrayList<>();
|
|
||||||
String query = "*:*";
|
|
||||||
if (profileUUID != null) {
|
|
||||||
query = "search.resourceid:" + profileUUID;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
DiscoverQuery discoverQuery = queryBuilder.buildQuery(context, null,
|
|
||||||
SearchUtils.getDiscoveryConfigurationByName("person"),
|
|
||||||
query, filters,
|
|
||||||
"Item", 10, Long.getLong("0"), null, SortOption.DESCENDING);
|
|
||||||
return searchService.iteratorSearch(context, null, discoverQuery);
|
|
||||||
} catch (SearchServiceException e) {
|
|
||||||
LOGGER.error("Unable to read researcher on solr", e);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,36 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.app.suggestion.openaire;
|
|
||||||
|
|
||||||
import org.apache.commons.cli.HelpFormatter;
|
|
||||||
import org.apache.commons.cli.ParseException;
|
|
||||||
import org.dspace.utils.DSpace;
|
|
||||||
|
|
||||||
public class PublicationLoaderRunnableCli extends PublicationLoaderRunnable {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
@SuppressWarnings({ "rawtypes", "unchecked" })
|
|
||||||
public PublicationLoaderCliScriptConfiguration getScriptConfiguration() {
|
|
||||||
PublicationLoaderCliScriptConfiguration configuration = new DSpace().getServiceManager()
|
|
||||||
.getServiceByName("import-openaire-suggestions", PublicationLoaderCliScriptConfiguration.class);
|
|
||||||
return configuration;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setup() throws ParseException {
|
|
||||||
super.setup();
|
|
||||||
|
|
||||||
// in case of CLI we show the help prompt
|
|
||||||
if (commandLine.hasOption('h')) {
|
|
||||||
HelpFormatter formatter = new HelpFormatter();
|
|
||||||
formatter.printHelp("Import Researchers Suggestions", getScriptConfiguration().getOptions());
|
|
||||||
System.exit(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,56 +0,0 @@
|
|||||||
/**
|
|
||||||
* 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.app.suggestion.openaire;
|
|
||||||
|
|
||||||
import org.apache.commons.cli.Options;
|
|
||||||
import org.dspace.scripts.configuration.ScriptConfiguration;
|
|
||||||
|
|
||||||
public class PublicationLoaderScriptConfiguration<T extends PublicationLoaderRunnable>
|
|
||||||
extends ScriptConfiguration<T> {
|
|
||||||
|
|
||||||
private Class<T> dspaceRunnableClass;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Class<T> getDspaceRunnableClass() {
|
|
||||||
return dspaceRunnableClass;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generic setter for the dspaceRunnableClass
|
|
||||||
* @param dspaceRunnableClass The dspaceRunnableClass to be set on this PublicationLoaderScriptConfiguration
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void setDspaceRunnableClass(Class<T> dspaceRunnableClass) {
|
|
||||||
this.dspaceRunnableClass = dspaceRunnableClass;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
@Override
|
|
||||||
public boolean isAllowedToExecute(Context context) {
|
|
||||||
try {
|
|
||||||
return authorizeService.isAdmin(context);
|
|
||||||
} catch (SQLException e) {
|
|
||||||
throw new RuntimeException("SQLException occurred when checking if the current user is an admin", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Options getOptions() {
|
|
||||||
if (options == null) {
|
|
||||||
Options options = new Options();
|
|
||||||
|
|
||||||
options.addOption("s", "single-researcher", true, "Single researcher UUID");
|
|
||||||
options.getOption("s").setType(String.class);
|
|
||||||
|
|
||||||
super.options = options;
|
|
||||||
}
|
|
||||||
return options;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -97,11 +97,6 @@
|
|||||||
<property name="dspaceRunnableClass" value="org.dspace.app.bulkaccesscontrol.BulkAccessControlCli"/>
|
<property name="dspaceRunnableClass" value="org.dspace.app.bulkaccesscontrol.BulkAccessControlCli"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="import-openaire-suggestions" class="org.dspace.app.suggestion.openaire.PublicationLoaderCliScriptConfiguration">
|
|
||||||
<property name="description" value="Imports suggestions from OpenAIRE for publication claim"/>
|
|
||||||
<property name="dspaceRunnableClass" value="org.dspace.app.suggestion.openaire.PublicationLoaderRunnableCli"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="import-loader-suggestions"
|
<bean id="import-loader-suggestions"
|
||||||
class="org.dspace.app.suggestion.script.PublicationLoaderCliScriptConfiguration">
|
class="org.dspace.app.suggestion.script.PublicationLoaderCliScriptConfiguration">
|
||||||
<property name="description" value="Imports suggestions from external providers for publication claim"/>
|
<property name="description" value="Imports suggestions from external providers for publication claim"/>
|
||||||
|
Reference in New Issue
Block a user