/** * ============================================================================= * * ORCID (R) Open Source * http://orcid.org * * Copyright (c) 2012-2014 ORCID, Inc. * Licensed under an MIT-Style License (MIT) * http://orcid.org/open-source-license * * This copyright and license information (including a link to the full license) * shall be included in its entirety in all copies or substantial portion of * the software. * * ============================================================================= */ package org.orcid.core.utils; import org.orcid.utils.solr.entities.SolrConstants; /** * Wrapper class for SolrQueryBuilder that encapsulates the fields named in the * Solr schema and exposes strongly typed methods. This allows the * SolrQueryBuilder to be re-used in a generic fashion * * @See {@link SolrQueryBuilder} * @author jamesb * */ public class OrcidSolrQueryBuilder { private SolrQueryBuilder solrQueryBuilder; private static final String GIVEN_NAME_SOLR_FIELD = SolrConstants.GIVEN_NAMES; private static final String OTHER_NAME_SOLR_FIELD = SolrConstants.OTHER_NAMES; private static final String FAMILY_NAME_SOLR_FIELD = SolrConstants.FAMILY_NAME; private static final String PRIMARY_INST_NAME_SOLR_FIELD = SolrConstants.AFFILIATE_PRIMARY_INSTITUTION_NAMES; private static final String PAST_INST_NAME_SOLR_FIELD = SolrConstants.AFFILIATE_PAST_INSTITUTION_NAMES; private static final String KEYWORD_FIELD = SolrConstants.KEYWORDS; private static final String TEXT_FIELD = SolrConstants.TEXT; public OrcidSolrQueryBuilder() { solrQueryBuilder = new SolrQueryBuilder(); } /** * Get the current query string based on the parameters passed sequentially * to the builder * * @return */ public String retrieveQuery() { return solrQueryBuilder.retrieveQuery(); } public boolean isEmpty() { return solrQueryBuilder.isEmpty(); } public void addGivenNameToQuery(String givenName) { solrQueryBuilder.appendFieldValuePair(GIVEN_NAME_SOLR_FIELD, givenName); } public void addGivenNameAsLowercaseWildcardToQuery(String givenName) { solrQueryBuilder.appendFieldValuePairAsLowercaseWildcard(GIVEN_NAME_SOLR_FIELD, givenName); } public void addFamilyNameToQuery(String familyName) { solrQueryBuilder.appendFieldValuePair(FAMILY_NAME_SOLR_FIELD, familyName); } public void addFamilyNameAsLowercaseWildcardToQuery(String givenName) { solrQueryBuilder.appendFieldValuePairAsLowercaseWildcard(FAMILY_NAME_SOLR_FIELD, givenName); } public void addFamilyNameToQueryAsLowerCaseWildcardANDOperation(String familyName) { solrQueryBuilder.appendLowercaseWildcardANDCondition(FAMILY_NAME_SOLR_FIELD, familyName); } public void addPrimaryInstitution(String institutionName) { solrQueryBuilder.appendFieldValuePair(PRIMARY_INST_NAME_SOLR_FIELD, institutionName); } public void addPrimaryInstitutionAsLowercaseWildcard(String institutionName) { solrQueryBuilder.appendFieldValuePairAsLowercaseWildcard(PRIMARY_INST_NAME_SOLR_FIELD, institutionName); } public void addPrimaryInstitutionAsANDOperation(String institutionName) { solrQueryBuilder.appendANDCondition(PRIMARY_INST_NAME_SOLR_FIELD, institutionName); } public void addPrimaryInstitutionAsLowercaseWildcardANDOperation(String institutionName) { solrQueryBuilder.appendLowercaseWildcardANDCondition(PRIMARY_INST_NAME_SOLR_FIELD, institutionName); } public void addOtherNamesAsOROperation(String otherName) { solrQueryBuilder.appendORCondition(OTHER_NAME_SOLR_FIELD, otherName); } public void addOtherNamesLowercaseWildcardOROperation(String otherName) { solrQueryBuilder.appendLowercaseWildcardORCondition(OTHER_NAME_SOLR_FIELD, otherName); } public void addPastInstitutionNamesAsOROperation(String institutionName) { solrQueryBuilder.appendORCondition(PAST_INST_NAME_SOLR_FIELD, institutionName); } public void addPastInstitutionNamesAsLowercaseWildcardOROperation(String institutionName) { solrQueryBuilder.appendLowercaseWildcardORCondition(PAST_INST_NAME_SOLR_FIELD, institutionName); } public void addSingleKeywordAsLowercaseWildcard(String keyword) { solrQueryBuilder.appendFieldValuePairAsLowercaseWildcard(KEYWORD_FIELD, keyword); } public void addSingleKeywordAsLowercaseWildcardANDCondition(String keyword) { solrQueryBuilder.appendLowercaseWildcardANDCondition(KEYWORD_FIELD, keyword); } public void addTextAsLowercaseWildcard(String text) { solrQueryBuilder.appendFieldValuePairAsLowercaseWildcard(TEXT_FIELD, text); } public void addTextAsLowercaseWildcardANDCondition(String text) { solrQueryBuilder.appendLowercaseWildcardANDCondition(TEXT_FIELD, text); } }