/**
* 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.authority;
import org.dspace.authority.indexer.AuthorityIndexerInterface;
import org.dspace.authority.indexer.AuthorityIndexingService;
import org.dspace.authority.service.AuthorityService;
import org.dspace.authorize.AuthorizeException;
import org.dspace.content.Item;
import org.dspace.core.Context;
import org.springframework.beans.factory.annotation.Autowired;
import java.sql.SQLException;
import java.util.List;
/**
* Service implementation for the Metadata Authority
* This class is responsible for all business logic calls for the Metadata Authority and is autowired by spring
* This class should never be accessed directly.
*
* @author kevinvandevelde at atmire.com
*/
public class AuthorityServiceImpl implements AuthorityService{
@Autowired(required = true)
protected AuthorityIndexingService indexingService;
@Autowired(required = true)
protected List<AuthorityIndexerInterface> indexers;
protected AuthorityServiceImpl()
{
}
@Override
public void indexItem(Context context, Item item) throws SQLException, AuthorizeException {
if(!isConfigurationValid()){
//Cannot index, configuration not valid
return;
}
for (AuthorityIndexerInterface indexerInterface : indexers) {
indexerInterface.init(context , item);
while (indexerInterface.hasMore()) {
AuthorityValue authorityValue = indexerInterface.nextValue();
if(authorityValue != null)
indexingService.indexContent(authorityValue, true);
}
//Close up
indexerInterface.close();
}
//Commit to our server
indexingService.commit();
}
@Override
public boolean isConfigurationValid()
{
if(!indexingService.isConfiguredProperly()){
return false;
}
for (AuthorityIndexerInterface indexerInterface : indexers) {
if(!indexerInterface.isConfiguredProperly()){
return false;
}
}
return true;
}
}