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