- Timestamp:
- 11/25/15 10:28:02 (8 years ago)
- Location:
- SRUServer/trunk/src/main/java/eu/clarin/sru/server
- Files:
-
- 2 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
SRUServer/trunk/src/main/java/eu/clarin/sru/server/CQLQueryParser.java
r6824 r6842 34 34 private static final List<String> QUERY_PARAMETER_NAMES = 35 35 Collections.unmodifiableList(Arrays.asList(PARAM_QUERY)); 36 36 37 37 38 38 @Override … … 43 43 44 44 @Override 45 public boolean supportsVersion(SRUVersion version) { 46 if (version == null) { 47 throw new NullPointerException("version == null"); 48 } 49 /* 50 * CQL is supported by all SRU versions ... 51 */ 52 return true; 53 } 54 55 56 @Override 45 57 public String getQueryTypeDefintion() { 46 58 return null; 47 59 } 60 48 61 49 62 @Override … … 91 104 92 105 93 public static final class CQLQuery implements SRUQuery<CQLNode> { 94 private final String rawQuery; 95 private final CQLNode parsedQuery; 96 106 public static final class CQLQuery extends SRUQueryBase<CQLNode> { 97 107 98 108 private CQLQuery(String rawQuery, CQLNode parsedQuery) { 99 this.rawQuery = rawQuery; 100 this.parsedQuery = parsedQuery; 109 super(rawQuery, parsedQuery); 101 110 } 102 111 … … 106 115 return SRUConstants.SRU_QUERY_TYPE_CQL; 107 116 } 108 109 @Override110 public String getRawQuery() {111 return rawQuery;112 }113 114 @Override115 public CQLNode getParsedQuery() {116 return parsedQuery;117 }118 117 } 119 118 -
SRUServer/trunk/src/main/java/eu/clarin/sru/server/SRUConstants.java
r6821 r6842 209 209 210 210 /** 211 * short queryType identifier for cql211 * shorthand queryType identifier for CQL 212 212 */ 213 public static final String SRU_QUERY_TYPE_CQL = "cql"; 213 public static final String SRU_QUERY_TYPE_CQL = "cql"; 214 public static final String SRU_QUERY_TYPE_SEARCH_TERMS = "searchTerms"; 214 215 215 216 -
SRUServer/trunk/src/main/java/eu/clarin/sru/server/SRUQueryParser.java
r6822 r6842 36 36 37 37 /** 38 * Check if query is supported by a specific version of SRU/CQL 39 * 40 * @param version 41 * the version 42 * @return <code>true</code> if version is supported, <code>false</code> 43 * otherwise 44 */ 45 public boolean supportsVersion(SRUVersion version); 46 47 48 /** 38 49 * The URI for the for the query typeâs definition. 39 50 * -
SRUServer/trunk/src/main/java/eu/clarin/sru/server/SRUQueryParserRegistry.java
r6825 r6842 38 38 public SRUQueryParserRegistry() { 39 39 queryParsers.add(new CQLQueryParser()); 40 queryParsers.add(new SearchTermsQueryParser()); 40 41 } 41 42 -
SRUServer/trunk/src/main/java/eu/clarin/sru/server/SRURequestImpl.java
r6825 r6842 607 607 queryParsers.findQueryParser(queryType); 608 608 if (queryParser != null) { 609 /* 610 * gather query parameters (as required by QueryParser 611 * implementation 612 */ 613 final Map<String, String> queryParameters = 614 new HashMap<String, String>(); 615 List<String> missingParameter = null; 616 for (String name : queryParser.getQueryParameterNames()) { 617 parameterNames.remove(name); 618 final String value = getParameter(name, true, false); 619 if (value != null) { 620 queryParameters.put(name, value); 609 if (queryParser.supportsVersion(version)) { 610 /* 611 * gather query parameters (as required by 612 * QueryParser implementation 613 */ 614 final Map<String, String> queryParameters = 615 new HashMap<String, String>(); 616 List<String> missingParameter = null; 617 for (String name : queryParser.getQueryParameterNames()) { 618 parameterNames.remove(name); 619 final String value = 620 getParameter(name, true, false); 621 if (value != null) { 622 queryParameters.put(name, value); 623 } else { 624 if (missingParameter == null) { 625 missingParameter = new ArrayList<String>(); 626 } 627 missingParameter.add(name); 628 } 629 } 630 631 if (missingParameter == null) { 632 logger.debug("parsing query with parser for " + 633 "type '{}' and parameters {}", 634 queryParser.getQueryType(), 635 queryParameters); 636 query = queryParser.parseQuery(version, 637 queryParameters, this); 621 638 } else { 622 if (missingParameter == null) { 623 missingParameter = new ArrayList<String>(); 639 logger.debug("parameters {} missing, cannot " + 640 "parse query", missingParameter); 641 for (String name : missingParameter) { 642 addDiagnostic(SRUConstants.SRU_MANDATORY_PARAMETER_NOT_SUPPLIED, 643 name, 644 "Mandatory parameter '" + name + 645 "' is missing or empty. " + 646 "Required to perform query " + 647 "of query type '" + 648 queryType + "'."); 624 649 } 625 missingParameter.add(name);626 650 } 627 }628 629 if (missingParameter == null) {630 logger.debug("parsing query with parser for " +631 "type '{}' and parameters {}",632 queryParser.getQueryType(),633 queryParameters);634 query = queryParser.parseQuery(version,635 queryParameters, this);636 651 } else { 637 logger.debug("parameters {} missing, cannot parse query", 638 missingParameter); 639 for (String name : missingParameter) { 640 addDiagnostic( 641 SRUConstants.SRU_MANDATORY_PARAMETER_NOT_SUPPLIED, 642 name, "Mandatory parameter '" + name + 643 "' is missing or empty. " + 644 "Required to perform query " + 645 "of query type '" + 646 queryType + "'."); 647 } 652 logger.debug("query parser for query type '{}' " + 653 "is not supported by SRU version {}", 654 queryType, version); 655 addDiagnostic(SRUConstants.SRU_CANNOT_PROCESS_QUERY_REASON_UNKNOWN, null, 656 "Query parser for query type '" + 657 queryType + "' is nut supported " + 658 "by SRU version '" + 659 version.getVersionString() + "'."); 648 660 } 649 661 } else {
Note: See TracChangeset
for help on using the changeset viewer.