01: /*
02: * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
03: *
04: * Redistribution and use in source and binary forms, with or without
05: * modification, are permitted provided that the following conditions
06: * are met:
07: *
08: * - Redistributions of source code must retain the above copyright
09: * notice, this list of conditions and the following disclaimer.
10: *
11: * - Redistribution in binary form must reproduce the above copyright
12: * notice, this list of conditions and the following disclaimer in
13: * the documentation and/or other materials provided with the
14: * distribution.
15: *
16: * Neither the name of Sun Microsystems, Inc. or the names of
17: * contributors may be used to endorse or promote products derived
18: * from this software without specific prior written permission.
19: *
20: * This software is provided "AS IS," without a warranty of any
21: * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
22: * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
23: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
24: * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES
25: * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
26: * DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN
27: * OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR
28: * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
29: * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
30: * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE,
31: * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
32: *
33: * You acknowledge that Software is not designed, licensed or intended
34: * any nuclear facility.
35: */
36:
37: package com.sun.portal.search.providers.faces;
38:
39: import com.sun.portal.search.soif.SOIF;
40: import java.util.ArrayList;
41: import java.util.logging.Logger;
42:
43: public class SearchHitFactory {
44: public static final String HIT_COMMUNITY = "community";
45: public static final String HIT_COMMUNITY_CONTENT = "content";
46: public static final String HIT_SURVEY = "surveys";
47: public static final String HIT_DISCUSSION = "discussions";
48: public static final String HIT_WIKI = "wiki";
49: public static final String HIT_FILESHARING = "filesharing";
50: public static final String HIT_DEFAULT = "web";
51: public static final String HIT_CATEGORY = "category";
52: public static final String[] Types = new String[] { HIT_COMMUNITY,
53: HIT_SURVEY, HIT_DISCUSSION, HIT_WIKI, HIT_FILESHARING,
54: HIT_DEFAULT };
55: private static Logger logger = SearchLogger
56: .getLogger(SearchHitFactory.class);
57: private static SearchHitFactory instance = new SearchHitFactory();
58: private ArrayList pluginsList = new ArrayList();
59:
60: /** Creates a new instance of SearchHitFactory */
61: public SearchHitFactory() {
62: pluginsList.add(new CategoryHit());
63: pluginsList.add(new SearchHit());
64:
65: }
66:
67: public void addPlugins(String packagePath) {
68: try {
69: Object[] plugins = pluginLoader.getPlugins(packagePath,
70: SearchHit.class);
71: for (int i = 0; i < plugins.length; i++) {
72: try {
73: pluginsList.add(0, plugins[i]);
74: } catch (Exception ie) {
75: logger.warning("unable to create instance:" + ie);
76: }
77: }
78: } catch (Exception e) {
79: logger.warning("unable to obtain plugins:" + e);
80: }
81:
82: }
83:
84: public static SearchHitFactory getInstance() {
85: return instance;
86: }
87:
88: public SearchHit createHit(SOIF soif, String defaultType) {
89: SearchHit hit = null;
90: for (int i = 0; hit == null && i < pluginsList.size(); i++) {
91: SearchHit plugin = (SearchHit) pluginsList.get(i);
92: hit = plugin.createInstance(soif, defaultType);
93: }
94: return hit;
95:
96: }
97:
98: }
|