|
From: <rv...@us...> - 2012-02-17 18:18:21
|
Revision: 1073
http://treebase.svn.sourceforge.net/treebase/?rev=1073&view=rev
Author: rvos
Date: 2012-02-17 18:18:14 +0000 (Fri, 17 Feb 2012)
Log Message:
-----------
The search controller can now return results for a DOI, for which the PhyloWS predicate is prism.doi
Modified Paths:
--------------
trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/StudySearchController.java
Modified: trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/StudySearchController.java
===================================================================
--- trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/StudySearchController.java 2012-02-17 18:17:16 UTC (rev 1072)
+++ trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/StudySearchController.java 2012-02-17 18:18:14 UTC (rev 1073)
@@ -92,7 +92,8 @@
byCreationDate,
byPublicationDate,
byReleaseDate,
- byLastModifiedDate
+ byLastModifiedDate,
+ byDOI
}
protected ModelAndView onSubmit(
@@ -141,7 +142,10 @@
searchType = SearchType.inCitation;
} else if (buttonName.equals("abstractKeyword")) {
searchType = SearchType.inAbstract;
- } else {
+ } else if (buttonName.equals("doiKeyword")) {
+ searchType = SearchType.byDOI;
+ }
+ else {
throw new Error("Unknown search button name '" + buttonName + "'");
}
// XXX we now never do an exact match with terms provided through the web app. We can change
@@ -222,7 +226,10 @@
results.addAll(doSearch(request,response, SearchType.byPublicationDate, errors, term.getTerm(),exactMatch,relation));
} else if ( index.startsWith("prism.modificationDate") ) {
results.addAll(doSearch(request,response, SearchType.byLastModifiedDate, errors, term.getTerm(),exactMatch,relation));
- } else {
+ } else if ( index.startsWith("prism.doi") ) {
+ results.addAll(doSearch(request,response,SearchType.byDOI, errors, term.getTerm(), exactMatch,relation));
+ }
+ else {
// issue warnings
addMessage(request, "Unsupported index: " + index);
}
@@ -241,7 +248,7 @@
boolean exactMatch, CQLRelation relation) throws InstantiationException, ParseException {
String keywordSearchTerm = "%" + searchTerm + "%";
- Collection<Study> matches;
+ Collection<Study> matches = new HashSet<Study>();
StudyService studyService = getSearchService().getStudyService();
SubmissionService submissionService = getSearchService().getSubmissionService();
@@ -290,6 +297,14 @@
case byCreationDate:
matches = findByCreationDate(searchTerm, relation, submissionService);
break;
+ case byDOI:
+ {
+ Study result = studyService.findByDOI(searchTerm);
+ if ( null != result ) {
+ matches.add(result);
+ }
+ break;
+ }
case byJournal:
{
if ( exactMatch ) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|