From 1cdef7f6e42755577315e8f8021915706d96c81b Mon Sep 17 00:00:00 2001 From: rjy7 Date: Tue, 22 Jun 2010 20:49:29 +0000 Subject: [PATCH] NIHVIVO-646 Filter existing authors out of autocomplete query results in add authors to publication form --- .../PublicationHasAuthorValidator.java | 25 +++++++++++-------- .../controller/AutocompleteController.java | 7 ++++++ 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/PublicationHasAuthorValidator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/PublicationHasAuthorValidator.java index 2b3104bc4..3f5bbce7a 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/PublicationHasAuthorValidator.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/PublicationHasAuthorValidator.java @@ -16,25 +16,28 @@ public class PublicationHasAuthorValidator implements N3Validator { EditSubmission editSub) { Map urisFromForm = editSub.getUrisFromForm(); Map literalsFromForm = editSub.getLiteralsFromForm(); - - Literal firstName = literalsFromForm.get("firstName"); - if( firstName.getLexicalForm() != null && "".equals(firstName.getLexicalForm()) ) - firstName = null; - Literal lastName = literalsFromForm.get("lastName"); - if( lastName.getLexicalForm() != null && "".equals(lastName.getLexicalForm()) ) - lastName = null; + Map errors = new HashMap(); String personUri = urisFromForm.get("personUri"); if ("".equals(personUri)) { 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 errors = new HashMap(); + Literal firstName = literalsFromForm.get("firstName"); + if( firstName != null && firstName.getLexicalForm() != null && "".equals(firstName.getLexicalForm()) ) + firstName = null; + + Literal lastName = literalsFromForm.get("lastName"); + if( lastName != null && lastName.getLexicalForm() != null && "".equals(lastName.getLexicalForm()) ) + lastName = null; - if (personUri == null && lastName == null && firstName == null) { - errors.put("lastName", MISSING_AUTHOR_ERROR); - } else if (lastName != null && firstName == null) { + if (lastName != null && firstName == null) { errors.put("firstName", MISSING_FIRST_NAME_ERROR); } else if (lastName == null && firstName != null) { errors.put("lastName", MISSING_LAST_NAME_ERROR); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/AutocompleteController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/AutocompleteController.java index 0765d0a91..f3b853859 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/AutocompleteController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/search/controller/AutocompleteController.java @@ -4,6 +4,7 @@ package edu.cornell.mannlib.vitro.webapp.search.controller; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -116,6 +117,9 @@ public class AutocompleteController extends FreeMarkerHttpServlet implements Sea Query query = getQuery(vreq, portalFlag, analyzer, indexDir, qtxt); log.debug("query for '" + qtxt +"' is " + query.toString()); + // Get the list of uris that should be excluded from the results + List urisToExclude = Arrays.asList(vreq.getParameterValues("filter")); + if (query == null ) { doNoQuery(templateName, map); return; @@ -157,6 +161,9 @@ public class AutocompleteController extends FreeMarkerHttpServlet implements Sea try{ Document doc = searcherForRequest.doc(topDocs.scoreDocs[i].doc); String uri = doc.get(Entity2LuceneDoc.term.URI); + if (urisToExclude.contains(uri)) { + continue; + } Individual ind = iDao.getIndividualByURI(uri); if (ind != null) { String name = ind.getName();