コード例 #1
0
  @EventMapping(SearchConstants.SEARCH_REQUEST_QNAME_STRING)
  public void handleSearchEvents(EventRequest request, EventResponse response) {

    log.debug("Responding to Search Event");

    final Event event = request.getEvent();
    final SearchRequest searchQuery = (SearchRequest) event.getValue();

    final String searchTerms = searchQuery.getSearchTerms();

    final SearchResults searchResults = new SearchResults();

    searchResults.setQueryId(searchQuery.getQueryId());
    searchResults.setWindowId(request.getWindowID());

    for (ContactDomain domain : contactDomains) {

      if (domain.getHasSearch()) {

        ContactSet contacts = domain.search(searchTerms);

        for (Contact contact : contacts) {

          // Build the result object for the match
          final SearchResult searchResult = new SearchResult();
          String title =
              contact.getSurname().toUpperCase()
                  + ", "
                  + contact.getTitle()
                  + " "
                  + contact.getFirstname();
          if (contact.getPosition() != null && !contact.getPosition().equals(""))
            title += " (" + contact.getPosition() + ")";

          List<String> summary = new ArrayList<String>();
          ;

          if (contact.getPrimaryEmailAddress() != null)
            summary.add("E:" + contact.getPrimaryEmailAddress().getEmailAddress());
          if (contact.getPrimaryPhoneNumber() != null)
            summary.add("T:" + contact.getPrimaryPhoneNumber().getPhoneNumber());

          String summaryText = StringUtils.collectionToDelimitedString(summary, " -- ");

          searchResult.setTitle(title);
          searchResult.setSummary(summaryText);

          /*
           * Portlet URL to be added when / if portlet support for
           * deep linking added.
           */
          PortletUrl url = new PortletUrl();
          url.setPortletMode("VIEW");
          url.setWindowState(WindowState.MAXIMIZED.toString());
          PortletUrlParameter domainParam = new PortletUrlParameter();
          domainParam.setName("domain");
          domainParam.getValue().add(domain.getId());
          url.getParam().add(domainParam);
          PortletUrlParameter urnParam = new PortletUrlParameter();
          urnParam.setName("urn");
          urnParam.getValue().add(contact.getURN());
          url.getParam().add(urnParam);

          searchResult.setPortletUrl(url);

          searchResult.getType().add("contact");
          // Add the result to the results and send the event
          searchResults.getSearchResult().add(searchResult);
        }
      }
    }

    response.setEvent(SearchConstants.SEARCH_RESULTS_QNAME, searchResults);

    log.debug(
        "Finished response -- " + searchResults.getSearchResult().size() + " -- results returned");
  }