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.suggest.service.suggestsearch;
35
36 import fr.paris.lutece.plugins.suggest.business.SuggestSubmit;
37 import fr.paris.lutece.plugins.suggest.business.SubmitFilter;
38 import fr.paris.lutece.plugins.suggest.service.SuggestSubmitService;
39 import fr.paris.lutece.plugins.suggest.service.search.SuggestIndexer;
40 import fr.paris.lutece.plugins.suggest.utils.SuggestUtils;
41 import fr.paris.lutece.portal.service.plugin.Plugin;
42 import fr.paris.lutece.portal.service.spring.SpringContextService;
43
44 import org.apache.commons.lang3.StringUtils;
45
46 import java.util.ArrayList;
47 import java.util.List;
48
49
50
51
52 public class SuggestSearchService
53 {
54 private static final String BEAN_SEARCH_ENGINE = "suggest.suggestSearchEngine";
55 private static final String REGEX_ID = "^[\\d]+$";
56
57
58 private static SuggestSearchService _singleton;
59
60
61
62
63 public static SuggestSearchService getInstance( )
64 {
65 if ( _singleton == null )
66 {
67 _singleton = new SuggestSearchService( );
68 }
69
70 return _singleton;
71 }
72
73
74
75
76
77
78
79
80
81
82
83
84 public List<Integer> getSearchResults( String strQuery, SubmitFilter filter, Plugin plugin )
85 {
86 List<Integer> listSuggestSubmitResult = new ArrayList<>( );
87 SuggestSearchEngine engine = SpringContextService.getBean( BEAN_SEARCH_ENGINE );
88 List<Integer> suggestSubmitListId = SuggestSubmitService.getService( ).getSuggestSubmitListId( filter, plugin );
89 List<SuggestSearchItem> listSearchesults = StringUtils.isEmpty( strQuery ) ? null : engine.getSearchResults( strQuery, filter );
90
91 if ( StringUtils.isEmpty( strQuery ) )
92 {
93 listSuggestSubmitResult = suggestSubmitListId;
94 }
95 else
96 if ( suggestSubmitListId != null )
97 {
98 for ( Integer nSuggestSubmitId : suggestSubmitListId )
99 {
100 for ( SuggestSearchItem searchResult : listSearchesults )
101 {
102 if ( ( searchResult.getType( ) != null ) && ( searchResult.getId( ) != null )
103 && searchResult.getType( ).equals( SuggestIndexer.INDEX_TYPE_SUGGEST ) && searchResult.getIdSuggestSubmit( ).matches( REGEX_ID )
104 && ( Integer.parseInt( searchResult.getIdSuggestSubmit( ) ) == nSuggestSubmitId ) )
105 {
106 listSuggestSubmitResult.add( SuggestUtils.getIntegerParameter( searchResult.getIdSuggestSubmit( ) ) );
107 }
108 }
109 }
110 }
111
112 return listSuggestSubmitResult;
113 }
114 }