1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.search.solr.web;
35
36 import fr.paris.lutece.plugins.search.solr.business.facetintersection.FacetIntersectionHome;
37 import fr.paris.lutece.plugins.search.solr.business.field.Field;
38 import fr.paris.lutece.plugins.search.solr.business.field.FieldHome;
39 import fr.paris.lutece.plugins.search.solr.business.field.SolrFieldManager;
40 import fr.paris.lutece.portal.service.message.AdminMessage;
41 import fr.paris.lutece.portal.service.message.AdminMessageService;
42 import fr.paris.lutece.portal.service.template.AppTemplateService;
43 import fr.paris.lutece.portal.service.util.AppPathService;
44 import fr.paris.lutece.portal.web.admin.PluginAdminPageJspBean;
45 import fr.paris.lutece.util.html.HtmlTemplate;
46
47 import java.util.HashMap;
48
49 import javax.servlet.http.HttpServletRequest;
50
51 import org.apache.commons.lang.StringUtils;
52
53
54
55
56
57
58 public class SolrConfigurationJspBean extends PluginAdminPageJspBean
59 {
60 private static final long serialVersionUID = 8010702541285203732L;
61
62
63 public static final String RIGHT_CONFIGURATION = "SOLR_CONFIGURATION_MANAGEMENT";
64 private static final String TEMPLATE_MANAGE_FACET_CONFIGURATION = "admin/search/solr_manage_search_configuration.html";
65 private static final String TEMPLATE_MANAGE_SORT_CONFIGURATION = "admin/search/solr_manage_sort_configuration.html";
66 private static final String TEMPLATE_MANAGE_INTERSECTION_CONFIGURATION = "admin/search/solr_manage_intersection_configuration.html";
67 private static final String MARK_FIELD = "field_list";
68 private static final String MARK_INTERSECTION = "intersections";
69 private static final String MESSAGE_VALID = "search.solr.adminFeature.configuration.valid";
70 private static final String PARAMETER_DEFAULT_SORT = "default_sort";
71
72
73
74
75
76
77
78
79 private String getFacet( )
80 {
81 HashMap<String, Object> model = new HashMap<>( );
82 model.put( MARK_FIELD, SolrFieldManager.getFieldList( ) );
83
84 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_MANAGE_FACET_CONFIGURATION, getLocale( ), model );
85
86 return template.getHtml( );
87 }
88
89 private String getSort( )
90 {
91 HashMap<String, Object> model = new HashMap<>( );
92 model.put( MARK_FIELD, SolrFieldManager.getFieldList( ) );
93
94 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_MANAGE_SORT_CONFIGURATION, getLocale( ), model );
95
96 return template.getHtml( );
97 }
98
99 private String getIntersection( )
100 {
101 HashMap<String, Object> model = new HashMap<>( );
102 model.put( MARK_FIELD, SolrFieldManager.getFacetList( ).values( ) );
103
104
105 model.put( MARK_INTERSECTION, FacetIntersectionHome.getFacetIntersectionsList( ) );
106
107 HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_MANAGE_INTERSECTION_CONFIGURATION, getLocale( ), model );
108
109 return template.getHtml( );
110 }
111
112 public String getPage( HttpServletRequest request )
113 {
114 StringBuilder htmlBuffer = new StringBuilder( );
115 htmlBuffer.append( getFacet( ) );
116 htmlBuffer.append( getSort( ) );
117 htmlBuffer.append( getIntersection( ) );
118
119 return getAdminPage( htmlBuffer.toString( ) );
120 }
121
122
123 public String doFacet( HttpServletRequest request )
124 {
125 for ( Field field : SolrFieldManager.getFieldList( ) )
126 {
127 field.setEnableFacet( request.getParameter( Integer.toString( field.getIdField( ) ) ) != null );
128 FieldHome.update( field );
129 }
130
131 return this.validMessage( request );
132 }
133
134 public String doSort( HttpServletRequest request )
135 {
136 String strDefaultSort = request.getParameter( PARAMETER_DEFAULT_SORT );
137 for ( Field field : SolrFieldManager.getFieldList( ) )
138 {
139 field.setEnableSort( request.getParameter( Integer.toString( field.getIdField( ) ) ) != null );
140 if ( StringUtils.isNotBlank( strDefaultSort ) && StringUtils.isNumeric( strDefaultSort ) )
141 {
142 field.setDefaultSort( Integer.parseInt( strDefaultSort ) == field.getIdField( ) );
143 }
144
145 FieldHome.update( field );
146 }
147
148 return this.validMessage( request );
149 }
150
151 public String doIntersect( HttpServletRequest request )
152 {
153
154 if ( request.getParameter( "add" ) != null )
155 {
156 FacetIntersectionHome.create( Integer.parseInt( request.getParameter( "field1" ) ), Integer.parseInt( request.getParameter( "field2" ) ) );
157 }
158
159
160 else
161 if ( request.getParameter( "delete" ) != null )
162 {
163 FacetIntersectionHome.remove( Integer.parseInt( request.getParameter( "field1" ) ), Integer.parseInt( request.getParameter( "field2" ) ) );
164 }
165
166 SolrFieldManager.reloadIntersection( );
167
168 return AppPathService.getBaseUrl( request ) + "jsp/admin/search/solr/ManageSearchConfiguration.jsp?plugin_name=solr";
169 }
170
171 private String validMessage( HttpServletRequest request )
172 {
173 return AdminMessageService.getMessageUrl( request, MESSAGE_VALID, AdminMessage.TYPE_INFO );
174 }
175 }