From 7a524df39651be664c8a861134225d355b49de6f Mon Sep 17 00:00:00 2001 From: florent coue Date: Tue, 12 Jun 2018 10:51:27 +0200 Subject: [PATCH 1/2] IDEATION-753 : Migration lutece 6.1.0 --- pom.xml | 2 +- .../solr/business/SolrSearchAppConf.java | 24 +++++++++++++++++++ .../service/SolrSearchAppConfService.java | 5 ++++ .../search/solr/web/SolrSearchApp.java | 9 +++++-- 4 files changed, 37 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 9c0f4db..4bc0d4c 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ fr.paris.lutece.plugins plugin-solr lutece-plugin - 3.1.4-SNAPSHOT + 3.1.4a-SNAPSHOT Lutece solr search plugin diff --git a/src/java/fr/paris/lutece/plugins/search/solr/business/SolrSearchAppConf.java b/src/java/fr/paris/lutece/plugins/search/solr/business/SolrSearchAppConf.java index c2d23c2..927e9f0 100644 --- a/src/java/fr/paris/lutece/plugins/search/solr/business/SolrSearchAppConf.java +++ b/src/java/fr/paris/lutece/plugins/search/solr/business/SolrSearchAppConf.java @@ -52,6 +52,7 @@ public class SolrSearchAppConf private String _strTemplate = SolrConstants.CONSTANT_DEFAULT_TEMPLATE; private boolean _bExtraMappingQuery = SolrConstants.CONSTANT_DEFAULT_EXTRA_MAPPING_QUERY; private List _listAddonBeanNames = new ArrayList( ); + private List _listFilterQuery = new ArrayList( ); /** * Returns the code @@ -107,6 +108,15 @@ public void setFilterQuery( String strFilterQuery ) _strFilterQuery = strFilterQuery; } + /** + * Add the filter query to the current filter query list + * @param strFilterQuery filter query to add + */ + public void addFilterQuery( String strFilterQuery ) + { + getListFilterQuery( ).add( strFilterQuery ); + } + /** * Returns the boolean indicating if we need an extra query for mapping * @return the boolean indicating if we need an extra query for mapping @@ -138,4 +148,18 @@ public List getAddonBeanNames() { public void setAddonBeanNames(List listAddonBeanNames) { this._listAddonBeanNames = listAddonBeanNames; } + + /** + * @return the Filter Query list + */ + public List getListFilterQuery() { + return _listFilterQuery; + } + + /** + * @param listFilterQuery the Filter Query list to set + */ + public void setListFilterQuery(List listFilterQuery) { + this._listFilterQuery = listFilterQuery; + } } diff --git a/src/java/fr/paris/lutece/plugins/search/solr/service/SolrSearchAppConfService.java b/src/java/fr/paris/lutece/plugins/search/solr/service/SolrSearchAppConfService.java index 98cf9c1..e7d6e74 100644 --- a/src/java/fr/paris/lutece/plugins/search/solr/service/SolrSearchAppConfService.java +++ b/src/java/fr/paris/lutece/plugins/search/solr/service/SolrSearchAppConfService.java @@ -53,6 +53,7 @@ public class SolrSearchAppConfService private static final String DSKEY_PREFIX = "solr.app.conf."; private static final String DSKEY_INSTALLED = ".installed"; private static final String DSKEY_FQ = ".fq"; + private static final String DSKEY_FQ_REGULAR_EXPR = "solr\\.app\\.conf\\..*\\.fq\\.\\d"; private static final String DSKEY_TEMPLATE = ".template"; private static final String DSKEY_MAPPING = ".mapping"; private static final String DSKEY_ADDON_BEANS = ".addonBeans."; @@ -80,6 +81,10 @@ public static SolrSearchAppConf loadConfiguration( String code ) { conf.setFilterQuery( referenceItemName ); } + else if ( referenceItemCode.matches( DSKEY_FQ_REGULAR_EXPR ) ) + { + conf.addFilterQuery( referenceItemName ); + } else if ( referenceItemCode.endsWith( DSKEY_TEMPLATE ) ) { conf.setTemplate( referenceItemName ); diff --git a/src/java/fr/paris/lutece/plugins/search/solr/web/SolrSearchApp.java b/src/java/fr/paris/lutece/plugins/search/solr/web/SolrSearchApp.java index 892f76d..e0f599b 100644 --- a/src/java/fr/paris/lutece/plugins/search/solr/web/SolrSearchApp.java +++ b/src/java/fr/paris/lutece/plugins/search/solr/web/SolrSearchApp.java @@ -284,8 +284,13 @@ public static Map getSearchResultModel(HttpServletRequest reques // } // } } - facetQuery = new String[facetQueryTmp.size()]; - facetQuery = facetQueryTmp.toArray(facetQuery); + + if ( !conf.getListFilterQuery( ).isEmpty( ) ) + { + facetQueryTmp.addAll( conf.getListFilterQuery( ) ); + } + facetQuery = new String[ facetQueryTmp.size( ) ]; + facetQuery = facetQueryTmp.toArray( facetQuery ); if ( StringUtils.isNotBlank( conf.getFilterQuery( ) ) ) { From 125f05e901768ed0ba82cc1dcee32df9929e1bf5 Mon Sep 17 00:00:00 2001 From: florent coue Date: Mon, 18 Jun 2018 18:38:01 +0200 Subject: [PATCH 2/2] SOLR-110 : Allow multiple filter queries in SearchApp confs --- .../solr/business/SolrSearchAppConf.java | 28 ------------------- .../service/SolrSearchAppConfService.java | 23 ++++++++------- .../search/solr/web/SolrSearchApp.java | 14 ---------- 3 files changed, 11 insertions(+), 54 deletions(-) diff --git a/src/java/fr/paris/lutece/plugins/search/solr/business/SolrSearchAppConf.java b/src/java/fr/paris/lutece/plugins/search/solr/business/SolrSearchAppConf.java index 927e9f0..bb7b451 100644 --- a/src/java/fr/paris/lutece/plugins/search/solr/business/SolrSearchAppConf.java +++ b/src/java/fr/paris/lutece/plugins/search/solr/business/SolrSearchAppConf.java @@ -48,7 +48,6 @@ public class SolrSearchAppConf { private String _strCode = SolrSearchAppConfService.EMPTY_CODE; - private String _strFilterQuery = SolrConstants.CONSTANT_DEFAULT_FILTER_QUERY; private String _strTemplate = SolrConstants.CONSTANT_DEFAULT_TEMPLATE; private boolean _bExtraMappingQuery = SolrConstants.CONSTANT_DEFAULT_EXTRA_MAPPING_QUERY; private List _listAddonBeanNames = new ArrayList( ); @@ -90,33 +89,6 @@ public void setTemplate( String template ) _strTemplate = template; } - /** - * Returns the filter query - * @return the filter query - */ - public String getFilterQuery( ) - { - return _strFilterQuery; - } - - /** - * Sets the filter query - * @param filter query the code - */ - public void setFilterQuery( String strFilterQuery ) - { - _strFilterQuery = strFilterQuery; - } - - /** - * Add the filter query to the current filter query list - * @param strFilterQuery filter query to add - */ - public void addFilterQuery( String strFilterQuery ) - { - getListFilterQuery( ).add( strFilterQuery ); - } - /** * Returns the boolean indicating if we need an extra query for mapping * @return the boolean indicating if we need an extra query for mapping diff --git a/src/java/fr/paris/lutece/plugins/search/solr/service/SolrSearchAppConfService.java b/src/java/fr/paris/lutece/plugins/search/solr/service/SolrSearchAppConfService.java index e7d6e74..9d9157f 100644 --- a/src/java/fr/paris/lutece/plugins/search/solr/service/SolrSearchAppConfService.java +++ b/src/java/fr/paris/lutece/plugins/search/solr/service/SolrSearchAppConfService.java @@ -52,11 +52,10 @@ public class SolrSearchAppConfService public static final String EMPTY_CODE = ""; private static final String DSKEY_PREFIX = "solr.app.conf."; private static final String DSKEY_INSTALLED = ".installed"; - private static final String DSKEY_FQ = ".fq"; - private static final String DSKEY_FQ_REGULAR_EXPR = "solr\\.app\\.conf\\..*\\.fq\\.\\d"; private static final String DSKEY_TEMPLATE = ".template"; private static final String DSKEY_MAPPING = ".mapping"; private static final String DSKEY_ADDON_BEANS = ".addonBeans."; + private static final String DSKEY_FQ_LIST = ".fq."; public static SolrSearchAppConf loadConfiguration( String code ) { @@ -73,19 +72,12 @@ public static SolrSearchAppConf loadConfiguration( String code ) conf.setCode( strSafeCode ); String strAddonPrefix = strPrefix + DSKEY_ADDON_BEANS; + String strFqListPrefix = strPrefix + DSKEY_FQ_LIST; for ( ReferenceItem referenceItem : referenceList ) { String referenceItemCode = referenceItem.getCode( ); String referenceItemName = referenceItem.getName( ); - if ( referenceItemCode.endsWith( DSKEY_FQ ) ) - { - conf.setFilterQuery( referenceItemName ); - } - else if ( referenceItemCode.matches( DSKEY_FQ_REGULAR_EXPR ) ) - { - conf.addFilterQuery( referenceItemName ); - } - else if ( referenceItemCode.endsWith( DSKEY_TEMPLATE ) ) + if ( referenceItemCode.endsWith( DSKEY_TEMPLATE ) ) { conf.setTemplate( referenceItemName ); } @@ -97,6 +89,10 @@ else if ( referenceItemCode.startsWith( strAddonPrefix ) ) { conf.getAddonBeanNames().add ( referenceItemName ); } + else if ( referenceItemCode.startsWith( strFqListPrefix ) ) + { + conf.getListFilterQuery( ).add ( referenceItemName ); + } } return conf; @@ -107,7 +103,6 @@ public static void saveConfiguration( SolrSearchAppConf conf ) String strSafeCode = ( conf.getCode( ) != null ) ? conf.getCode( ) : EMPTY_CODE; String strPrefix = DSKEY_PREFIX + strSafeCode; DatastoreService.setDataValue( strPrefix + DSKEY_INSTALLED, SolrConstants.CONSTANT_TRUE ); - DatastoreService.setDataValue( strPrefix + DSKEY_FQ, conf.getFilterQuery( ) ); DatastoreService.setDataValue( strPrefix + DSKEY_TEMPLATE, conf.getTemplate( ) ); DatastoreService.setDataValue( strPrefix + DSKEY_MAPPING, conf.getExtraMappingQuery( ) ? SolrConstants.CONSTANT_TRUE : SolrConstants.CONSTANT_FALSE ); @@ -115,5 +110,9 @@ public static void saveConfiguration( SolrSearchAppConf conf ) for ( int i = 0; i < listAddonBeanNames.size(); i++ ) { DatastoreService.setDataValue( strPrefix + DSKEY_ADDON_BEANS + i , listAddonBeanNames.get( i ) ); } + List listFilterQuery = conf.getListFilterQuery( ); + for ( int i = 0; i < listFilterQuery.size(); i++ ) { + DatastoreService.setDataValue( strPrefix + DSKEY_FQ_LIST + i , listFilterQuery.get( i ) ); + } } } diff --git a/src/java/fr/paris/lutece/plugins/search/solr/web/SolrSearchApp.java b/src/java/fr/paris/lutece/plugins/search/solr/web/SolrSearchApp.java index e0f599b..4efce79 100644 --- a/src/java/fr/paris/lutece/plugins/search/solr/web/SolrSearchApp.java +++ b/src/java/fr/paris/lutece/plugins/search/solr/web/SolrSearchApp.java @@ -292,20 +292,6 @@ public static Map getSearchResultModel(HttpServletRequest reques facetQuery = new String[ facetQueryTmp.size( ) ]; facetQuery = facetQueryTmp.toArray( facetQuery ); - if ( StringUtils.isNotBlank( conf.getFilterQuery( ) ) ) - { - int nNewLength = ( facetQuery == null ) ? 1 : ( facetQuery.length + 1 ); - String[] newFacetQuery = new String[nNewLength]; - - for ( int i = 0; i < ( nNewLength - 1 ); i++ ) - { - newFacetQuery[i] = facetQuery[i]; - } - - newFacetQuery[newFacetQuery.length - 1] = conf.getFilterQuery( ); - facetQuery = newFacetQuery; - } - boolean bEncodeUri = Boolean.parseBoolean(AppPropertiesService.getProperty(PROPERTY_ENCODE_URI, Boolean.toString(DEFAULT_ENCODE_URI)));