NIHVIVO-646 Filter existing authors out of autocomplete query results in add authors to publication form

This commit is contained in:
rjy7 2010-06-22 20:49:29 +00:00
parent c9c3bf4e17
commit 1cdef7f6e4
2 changed files with 21 additions and 11 deletions

View file

@ -17,24 +17,27 @@ public class PublicationHasAuthorValidator implements N3Validator {
Map<String,String> urisFromForm = editSub.getUrisFromForm(); Map<String,String> urisFromForm = editSub.getUrisFromForm();
Map<String,Literal> literalsFromForm = editSub.getLiteralsFromForm(); Map<String,Literal> literalsFromForm = editSub.getLiteralsFromForm();
Literal firstName = literalsFromForm.get("firstName"); Map<String,String> errors = new HashMap<String,String>();
if( firstName.getLexicalForm() != null && "".equals(firstName.getLexicalForm()) )
firstName = null;
Literal lastName = literalsFromForm.get("lastName");
if( lastName.getLexicalForm() != null && "".equals(lastName.getLexicalForm()) )
lastName = null;
String personUri = urisFromForm.get("personUri"); String personUri = urisFromForm.get("personUri");
if ("".equals(personUri)) { if ("".equals(personUri)) {
personUri = null; personUri = null;
} }
// If there's a personUri, then we're done. The firstName and lastName fields are
// disabled and so don't get submitted.
if (personUri != null) {
return null;
}
Map<String,String> errors = new HashMap<String,String>(); Literal firstName = literalsFromForm.get("firstName");
if( firstName != null && firstName.getLexicalForm() != null && "".equals(firstName.getLexicalForm()) )
firstName = null;
if (personUri == null && lastName == null && firstName == null) { Literal lastName = literalsFromForm.get("lastName");
errors.put("lastName", MISSING_AUTHOR_ERROR); if( lastName != null && lastName.getLexicalForm() != null && "".equals(lastName.getLexicalForm()) )
} else if (lastName != null && firstName == null) { lastName = null;
if (lastName != null && firstName == null) {
errors.put("firstName", MISSING_FIRST_NAME_ERROR); errors.put("firstName", MISSING_FIRST_NAME_ERROR);
} else if (lastName == null && firstName != null) { } else if (lastName == null && firstName != null) {
errors.put("lastName", MISSING_LAST_NAME_ERROR); errors.put("lastName", MISSING_LAST_NAME_ERROR);

View file

@ -4,6 +4,7 @@ package edu.cornell.mannlib.vitro.webapp.search.controller;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
@ -116,6 +117,9 @@ public class AutocompleteController extends FreeMarkerHttpServlet implements Sea
Query query = getQuery(vreq, portalFlag, analyzer, indexDir, qtxt); Query query = getQuery(vreq, portalFlag, analyzer, indexDir, qtxt);
log.debug("query for '" + qtxt +"' is " + query.toString()); log.debug("query for '" + qtxt +"' is " + query.toString());
// Get the list of uris that should be excluded from the results
List<String> urisToExclude = Arrays.asList(vreq.getParameterValues("filter"));
if (query == null ) { if (query == null ) {
doNoQuery(templateName, map); doNoQuery(templateName, map);
return; return;
@ -157,6 +161,9 @@ public class AutocompleteController extends FreeMarkerHttpServlet implements Sea
try{ try{
Document doc = searcherForRequest.doc(topDocs.scoreDocs[i].doc); Document doc = searcherForRequest.doc(topDocs.scoreDocs[i].doc);
String uri = doc.get(Entity2LuceneDoc.term.URI); String uri = doc.get(Entity2LuceneDoc.term.URI);
if (urisToExclude.contains(uri)) {
continue;
}
Individual ind = iDao.getIndividualByURI(uri); Individual ind = iDao.getIndividualByURI(uri);
if (ind != null) { if (ind != null) {
String name = ind.getName(); String name = ind.getName();