Merge branch 'maint-rel-1.6' into develop
This commit is contained in:
commit
63ca6c86e9
2 changed files with 45 additions and 29 deletions
|
@ -1,44 +1,57 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
package edu.cornell.mannlib.vitro.webapp.search.solr.documentBuilding;
|
||||
|
||||
import static edu.cornell.mannlib.vitro.webapp.search.solr.documentBuilding.IndividualToSolrDocument.DONT_EXCLUDE;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.solr.common.SolrInputDocument;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import edu.cornell.mannlib.vitro.webapp.beans.Individual;
|
||||
import edu.cornell.mannlib.vitro.webapp.beans.VClass;
|
||||
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
|
||||
|
||||
/**
|
||||
* Exclude individuals with types from the Vitro namespace from the
|
||||
* search index. (Other than old vitro Flag types).
|
||||
* Exclude individuals with most specific types from the Vitro namespace from
|
||||
* the search index. (Other than old vitro Flag types).
|
||||
*/
|
||||
public class ExcludeNonFlagVitro implements SearchIndexExcluder {
|
||||
private static final Log log = LogFactory.getLog(ExcludeNonFlagVitro.class);
|
||||
|
||||
@Override
|
||||
public String checkForExclusion(Individual ind) {
|
||||
if( ind != null && ind.getVClasses() != null ) {
|
||||
String excludeMsg = skipIfVitro(ind, ind.getVClasses() );
|
||||
if( excludeMsg != null)
|
||||
return excludeMsg;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
public String checkForExclusion(Individual ind) {
|
||||
if (ind == null) {
|
||||
return DONT_EXCLUDE;
|
||||
}
|
||||
|
||||
List<String> mostSpecificTypeUris = ind.getMostSpecificTypeURIs();
|
||||
if (mostSpecificTypeUris == null) {
|
||||
return DONT_EXCLUDE;
|
||||
}
|
||||
|
||||
String message = skipIfVitro(ind, mostSpecificTypeUris);
|
||||
if (!StringUtils.equals(DONT_EXCLUDE, message)) {
|
||||
log.debug("msg=" + message + ", individual=" + ind.getURI() + " ("
|
||||
+ ind.getLabel() + "), types=" + mostSpecificTypeUris);
|
||||
}
|
||||
return message;
|
||||
}
|
||||
|
||||
String skipIfVitro(Individual ind, List<String> mostSpecificTypeUris) {
|
||||
for (String typeUri : mostSpecificTypeUris) {
|
||||
if (typeUri == null) {
|
||||
continue;
|
||||
}
|
||||
if (typeUri.startsWith(VitroVocabulary.vitroURI + "Flag")) {
|
||||
continue;
|
||||
}
|
||||
if (typeUri.startsWith(VitroVocabulary.vitroURI)) {
|
||||
return "Skipped " + ind.getURI() + " because in "
|
||||
+ VitroVocabulary.vitroURI + " namespace";
|
||||
}
|
||||
}
|
||||
return DONT_EXCLUDE;
|
||||
}
|
||||
|
||||
String skipIfVitro(Individual ind, List<VClass> vclasses) {
|
||||
for( VClass type: vclasses ){
|
||||
if( type != null && type.getURI() != null ){
|
||||
String typeURI = type.getURI();
|
||||
|
||||
if(typeURI.startsWith( VitroVocabulary.vitroURI )
|
||||
&& ! typeURI.startsWith(VitroVocabulary.vitroURI + "Flag") ){
|
||||
|
||||
return "Skipped " + ind.getURI()+" because in "
|
||||
+ VitroVocabulary.vitroURI + " namespace";
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -110,6 +110,9 @@ public class IndividualToSolrDocument {
|
|||
for( SearchIndexExcluder excluder : excludes){
|
||||
try{
|
||||
String msg = excluder.checkForExclusion(ind);
|
||||
log.debug("individual=" + ind.getURI() + " (" + ind.getLabel()
|
||||
+ "), excluder=" + excluder + ", types="
|
||||
+ ind.getMostSpecificTypeURIs() + ", msg=" + msg);
|
||||
if( msg != DONT_EXCLUDE)
|
||||
return msg;
|
||||
}catch (Exception e) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue