Subversion Repositories bacoAlunos

Rev

Rev 1814 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
90 jmachado 1
package pt.estgp.estgweb.services.common;
2
 
163 jmachado 3
import jomm.ir.lucene.LuceneUtils;
4
import org.apache.log4j.Logger;
5
import pt.estgp.estgweb.domain.DomainObject;
6
import pt.estgp.estgweb.domain.UserSession;
90 jmachado 7
import pt.estgp.estgweb.services.common.impl.CommonSearchResults;
92 jmachado 8
import pt.estgp.estgweb.services.common.impl.DefaultResult;
163 jmachado 9
import pt.estgp.estgweb.services.common.impl.DefaultSearchResults;
156 jmachado 10
import pt.estgp.estgweb.services.common.impl.DefaultToDoCat;
1827 jmachado 11
import pt.estgp.estgweb.utils.Globals;
163 jmachado 12
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException;
13
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterRetrieveException;
90 jmachado 14
 
15
import java.util.ArrayList;
163 jmachado 16
import java.util.List;
90 jmachado 17
 
1827 jmachado 18
//import pt.estgp.estgweb.web.utils.TestHttpServletRequest;
19
 
90 jmachado 20
/**
21
 * @author Jorge Machado
22
 * @date 24/Abr/2008
23
 * @time 14:55:22
24
 * @see pt.estgp.estgweb.services.common
25
 */
156 jmachado 26
public class CommonServicesManager
27
{
90 jmachado 28
 
92 jmachado 29
    private static final int SEARCH_FRAGMENT_SIZE = Globals.SEARCH_BEST_FRAGMENTS_MAX_FRAGMENT_SIZE;
30
    private static final int SEARCH_MAX_FRAGMENTS = Globals.SEARCH_BEST_FRAGMENTS_MAX_FRAGMENTS;
31
    private static final int SEARCH_MAX_RESULTS = Globals.SEARCH_MAX_RESULTS;
90 jmachado 32
 
33
    private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(CommonServicesManager.class);
34
 
35
    private static CommonServicesManager ourInstance = new CommonServicesManager();
36
 
156 jmachado 37
    public static CommonServicesManager getInstance()
38
    {
90 jmachado 39
        return ourInstance;
40
    }
41
 
156 jmachado 42
    private CommonServicesManager()
43
    {
90 jmachado 44
    }
45
 
46
    /**
163 jmachado 47
     * @param userSession    asking
90 jmachado 48
     * @param query      to execute
49
     * @param searchType see SearchTypeEnum
50
     * @return Cluster of Results for each Module with total module results, only return modules with results
51
     * @throws Throwable on notAuthorized or internal error
52
     */
163 jmachado 53
    public ICommonSearchResults search(UserSession userSession, 1.5.0/docs/api/java/lang/String.html">String query, SearchTypeEnum searchType) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
156 jmachado 54
    {
165 jmachado 55
        return search(userSession,query,searchType,null);
56
    }
90 jmachado 57
 
165 jmachado 58
    /**
59
     * @param userSession    asking
60
     * @param query      to execute
61
     * @param searchType see SearchTypeEnum
62
     * @param from interface from
63
     * @return Cluster of Results for each Module with total module results, only return modules with results
64
     * @throws Throwable on notAuthorized or internal error
65
     */
66
    public ICommonSearchResults search(UserSession userSession, 1.5.0/docs/api/java/lang/String.html">String query, SearchTypeEnum searchType, 1.5.0/docs/api/java/lang/String.html">String from) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
67
    {
68
 
156 jmachado 69
        if (searchType == null)
92 jmachado 70
            searchType = SearchTypeEnum.AllWords;
90 jmachado 71
        CommonSearchResults commonSearchResults = new CommonSearchResults();
481 jmachado 72
        if(query != null && query.trim().length() > 0)
73
        {
90 jmachado 74
 
481 jmachado 75
 
76
            List<ISearchResults> results = new ArrayList<ISearchResults>();
77
 
78
            for (ModuleEnum module : ModuleEnum.values())
156 jmachado 79
            {
481 jmachado 80
                if (module.getModuleCommonServices() != null)
81
                {
1312 jmachado 82
                    try{
83
                        List<ISearchResults> iSearchResultsList = search(userSession, query, searchType, module,null, 0, from);
84
                        if(iSearchResultsList != null && iSearchResultsList.size() > 0)
85
                            for(ISearchResults iSearchResults: iSearchResultsList)
481 jmachado 86
                            {
1312 jmachado 87
                                if (iSearchResults != null && iSearchResults.getTotalResults() > 0)
88
                                {
89
                                    results.add(iSearchResults);
90
                                    commonSearchResults.addMoreResults(iSearchResults.getTotalResults());
91
                                }
481 jmachado 92
                            }
1312 jmachado 93
                    }catch(1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
94
                    {
95
                        logger.error(e);
96
                    }
481 jmachado 97
                }
90 jmachado 98
            }
481 jmachado 99
            commonSearchResults.setResults(results);
90 jmachado 100
        }
481 jmachado 101
        else
102
        {
103
            commonSearchResults.setResults(new ArrayList<ISearchResults>());
104
        }
104 jmachado 105
        commonSearchResults.setQuery(query);
106
        commonSearchResults.setSearchType(searchType.getMessageKey());
90 jmachado 107
        return commonSearchResults;
108
    }
109
 
110
 
111
    /**
112
     * The service called inside implements method
113
     * <p/>
114
     * public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession);
115
     *
163 jmachado 116
     * @param userSession    asking
90 jmachado 117
     * @param query      to execute
118
     * @param searchType see SearchTypeEnum
119
     * @param moduleKey  to search in
120
     * @param page       of start result
165 jmachado 121
     * @param from interface from
90 jmachado 122
     * @return searchResults
123
     * @throws Throwable on not authorized and internal error
124
     */
457 jmachado 125
    public List<ISearchResults> search(UserSession userSession, 1.5.0/docs/api/java/lang/String.html">String query, SearchTypeEnum searchType, ModuleEnum moduleKey,1.5.0/docs/api/java/lang/String.html">String moduleInternalKey, int page, 1.5.0/docs/api/java/lang/String.html">String from) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
156 jmachado 126
    {
127
        try
128
        {
163 jmachado 129
//            sm = ServiceManager.getInstance();
130
//            String[] names = new String[]{};
131
//            Object[] args = new Object[]{query, searchType, page, SEARCH_MAX_RESULTS};
92 jmachado 132
 
457 jmachado 133
            List<ISearchResults> searchResultsList = moduleKey.getModuleCommonServices().searchList(moduleInternalKey, from, query, searchType, page, SEARCH_MAX_RESULTS, userSession); //(DefaultSearchResults) sm.execute(requester, moduleKey.getSearchService(), "search", args, names);
134
            if(searchResultsList == null || searchResultsList.size() == 0)
135
                return null;
136
            for(ISearchResults iSearchResults: searchResultsList)
92 jmachado 137
            {
457 jmachado 138
                DefaultSearchResults searchResults = (DefaultSearchResults) iSearchResults;
139
 
164 jmachado 140
                searchResults.setPage(page);
141
                searchResults.setMaxResultsPage(SEARCH_MAX_RESULTS);
142
                searchResults.setQuery(query.replace("'", " "));
143
                searchResults.setSearchType(searchType.getMessageKey());
144
                if (searchResults.getTotalResults() > 0)
92 jmachado 145
                {
164 jmachado 146
                    for (IResult result : searchResults.getResults())
92 jmachado 147
                    {
164 jmachado 148
                        DefaultResult defaultResult = (DefaultResult) result;
455 jmachado 149
                        if(defaultResult.getBestFragments() == null || defaultResult.getBestFragments().trim().length() == 0)
485 jmachado 150
                        {
455 jmachado 151
                            defaultResult.setBestFragments(LuceneUtils.doStandardHighlights(defaultResult.getText(), query, SEARCH_FRAGMENT_SIZE, SEARCH_MAX_FRAGMENTS));
485 jmachado 152
                        }
164 jmachado 153
                        if (!defaultResult.isTitleKey())
154
                        {
155
                            1.5.0/docs/api/java/lang/String.html">String title = defaultResult.getTitle();
156
                            defaultResult.setTitle(LuceneUtils.highlight(defaultResult.getTitle(), query));
157
                            if (defaultResult.getTitle() == null || defaultResult.getTitle().length() == 0)
158
                                defaultResult.setTitle(title);
159
                        }
160
                        if (!defaultResult.isSubTitleKey())
161
                        {
162
                            1.5.0/docs/api/java/lang/String.html">String subTitle = defaultResult.getSubTitle();
163
                            defaultResult.setSubTitle(LuceneUtils.highlight(defaultResult.getSubTitle(), query));
164
                            if (defaultResult.getSubTitle() == null || defaultResult.getSubTitle().length() == 0)
165
                                defaultResult.setSubTitle(subTitle);
166
                        }
455 jmachado 167
                        if(defaultResult.getText() != null && defaultResult.getText().trim().length() > 0)
168
                        {
169
                            1.5.0/docs/api/java/lang/String.html">String text = defaultResult.getText();
170
 
171
                            defaultResult.setText(LuceneUtils.highlight(defaultResult.getText(), query));
172
                            if (defaultResult.getText() == null || defaultResult.getText().length() == 0)
173
                                defaultResult.setText(text);
174
                        }
485 jmachado 175
 
176
                        if(defaultResult.getCreator() != null && defaultResult.getCreator().trim().length() > 0)
177
                        {
178
                            1.5.0/docs/api/java/lang/String.html">String creator = defaultResult.getCreator();
179
 
180
                            defaultResult.setCreator(LuceneUtils.highlight(defaultResult.getCreator(), query));
181
                            if (defaultResult.getCreator() == null || defaultResult.getCreator().length() == 0)
182
                                defaultResult.setCreator(creator);
183
                        }
92 jmachado 184
                    }
185
                }
165 jmachado 186
            }
457 jmachado 187
            return searchResultsList;
90 jmachado 188
        }
156 jmachado 189
        catch (FilterRetrieveException e)
190
        {
90 jmachado 191
            logger.error(e, e);
192
            throw new NotAuthorizedException(e.toString());
193
        }
156 jmachado 194
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
195
        {
373 jmachado 196
            logger.error(moduleKey.getMessageKey() + " - query:" + query + ": " + e, e);
90 jmachado 197
            throw e;
198
        }
199
    }
200
 
163 jmachado 201
    public List<IToDoCat> getToDosCats(UserSession userSession) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
156 jmachado 202
    {
90 jmachado 203
        List<IToDoCat> toDoCats = new ArrayList<IToDoCat>();
204
 
156 jmachado 205
        for (ModuleEnum module : ModuleEnum.values())
206
        {
163 jmachado 207
            if (module.getModuleCommonServices() != null)
156 jmachado 208
            {
163 jmachado 209
                IToDoCat toDoCat = getToDoCats(userSession, module);
156 jmachado 210
                if (toDoCat != null)
211
                {
90 jmachado 212
                    toDoCats.add(toDoCat);
213
                }
214
            }
215
        }
216
        return toDoCats;
217
    }
218
 
163 jmachado 219
    public List<IToDoCat> getAllToDosCats(UserSession userSession) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
156 jmachado 220
    {
221
        List<IToDoCat> toDoCats = new ArrayList<IToDoCat>();
222
        for (ModuleEnum module : ModuleEnum.values())
223
        {
163 jmachado 224
            if (module.getModuleCommonServices() != null)
156 jmachado 225
            {
163 jmachado 226
                IToDoCat toDoCat = getAllToDoCats(userSession, module);
156 jmachado 227
                if (toDoCat != null && toDoCat.getTotalToDo() > 0)
228
                {
229
                    toDoCats.add(toDoCat);
230
                }
231
            }
232
        }
233
        return toDoCats;
234
    }
235
 
163 jmachado 236
    public IToDoCat getToDoCats(UserSession userSession, 1.5.0/docs/api/java/lang/String.html">String moduleKey) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
156 jmachado 237
    {
163 jmachado 238
        return getToDoCats(userSession, ModuleEnum.parse(moduleKey));
90 jmachado 239
    }
240
 
241
 
242
    /**
163 jmachado 243
     * @param userSession asking
244
     * @param module  to search
90 jmachado 245
     * @return Number of ToDos in given module
246
     * @throws Throwable on Error or NotAuthorized Exception
247
     */
163 jmachado 248
    public IToDoCat getToDoCats(UserSession userSession, ModuleEnum module) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
156 jmachado 249
    {
163 jmachado 250
//        IServiceManager sm;
156 jmachado 251
        try
252
        {
163 jmachado 253
            return module.getModuleCommonServices().getToDo(userSession);
254
//            sm = ServiceManager.getInstance();
255
//            String[] names = new String[]{};
256
//            Object[] args = new Object[]{};
257
//            return (IToDoCat) sm.execute(requester, module.getGetToDoService(), "getToDo", args, names);
90 jmachado 258
        }
156 jmachado 259
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
260
        {
90 jmachado 261
            logger.error(e, e);
262
            throw e;
263
        }
264
    }
265
 
156 jmachado 266
    /**
163 jmachado 267
     * @param userSession asking
156 jmachado 268
     * @param module    to search
269
     * @return Number of ToDos in given module
270
     * @throws Throwable on Error or NotAuthorized Exception
271
     */
163 jmachado 272
    public IToDoCat getAllToDoCats(UserSession userSession, ModuleEnum module) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
156 jmachado 273
    {
163 jmachado 274
//        IServiceManager sm;
156 jmachado 275
        try
276
        {
163 jmachado 277
//            sm = ServiceManager.getInstance();
278
//            String[] names = new String[]{};
279
//            Object[] args = new Object[]{};
280
//            List<IToDo> todos = (List<IToDo>) sm.execute(requester, module.getAllToDosService(), "getAllToDos", args, names);
281
            List<IToDo> todos = module.getModuleCommonServices().getAllToDos(userSession);
156 jmachado 282
            DefaultToDoCat toDoCat = new DefaultToDoCat();
283
            toDoCat.setAllToDos(todos);
284
            toDoCat.setDescription(module.getMessageKey());
285
            return toDoCat;
286
        }
287
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
288
        {
289
            logger.error(e, e);
290
            throw e;
291
        }
292
    }
90 jmachado 293
 
163 jmachado 294
    /**
295
     * Advise modules for new object creation
296
     * @param domainObject created
297
     */
164 jmachado 298
    public void adviseNew(DomainObject domainObject)
163 jmachado 299
    {
300
        for (ModuleEnum module : ModuleEnum.values())
301
        {
302
            module.getModuleCommonServices().adviseNew(domainObject);
303
        }
304
    }
156 jmachado 305
 
163 jmachado 306
    /**
164 jmachado 307
     * Advise modules for new object creation
308
     * @param domainObject created
309
     */
310
    public void adviseUpdate(DomainObject domainObject)
311
    {
312
        for (ModuleEnum module : ModuleEnum.values())
163 jmachado 313
        {
164 jmachado 314
            module.getModuleCommonServices().adviseUpdate(domainObject);
163 jmachado 315
        }
164 jmachado 316
    }
163 jmachado 317
 
318
 
319
 
90 jmachado 320
    public static void main(1.5.0/docs/api/java/lang/String.html">String[] args) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
321
    {
1827 jmachado 322
        /*ICommonSearchResults commonSearchResults = new CommonServicesManager().search(UserSessionProxy.loadUserSession(new TestHttpServletRequest("2093FFF41F61E375D2CB4CBEDE4400E9"),null), "teste", SearchTypeEnum.AllWords);
156 jmachado 323
        for (ISearchResults searchResults : commonSearchResults.getSearchResults())
90 jmachado 324
        {
325
            System.out.println("-----------------------------------------------------");
326
            System.out.println("Module" + searchResults.getModule().getMessageKey());
156 jmachado 327
            for (IResult result : searchResults.getResults())
90 jmachado 328
            {
329
                System.out.println("");
156 jmachado 330
                System.out.println("\ttitle:" + result.getTitle());
331
                System.out.println("\tsubTitle:" + result.getSubTitle());
332
                System.out.println("\ttext:" + result.getText());
90 jmachado 333
                System.out.println("\turl:" + result.getUrl());
334
                System.out.println("\tbestFragments:" + result.getBestFragments());
92 jmachado 335
 
90 jmachado 336
            }
156 jmachado 337
//            System.out.println("NEXT PAGE TEST>>>>>>>>>>>>>>>>>>>");
338
//            ISearchResults searchResults2 = new CommonServicesManager().search("18D0D23A7C07FF478CE8DAFEBA58D37A","teste",SearchTypeEnum.AllWords,searchResults.getModule(),1);
339
//            for(IResult result2: searchResults2.getResults())
340
//            {
341
//                System.out.println("");
342
//                System.out.println("\ttitle:" +result2.getTitle());
343
//                System.out.println("\tsubTitle:" +result2.getSubTitle());
344
//                System.out.println("\ttext:" +result2.getText());
345
//                System.out.println("\turl:" + result2.getUrl());
346
//                System.out.println("\tbestFragments:" + result2.getBestFragments());
347
//            }
92 jmachado 348
 
90 jmachado 349
        }
1827 jmachado 350
        //CommonServicesManager.getInstance().getAllToDosCats(UserSessionProxy.loadUserSession(new TestHttpServletRequest("2093FFF41F61E375D2CB4CBEDE4400E9"),null));
351
        //System.out.println(CommonServicesManager.getInstance().getAllToDosCats(UserSessionProxy.loadUserSession(new TestHttpServletRequest("2093FFF41F61E375D2CB4CBEDE4400E9"),null)));
352
        */
90 jmachado 353
    }
354
 
355
}