Encapsular os dados na classe SearchableEntity

O serviço de pesquisa unificada indexa os metadados que são expostos por um objeto SearchableEntity. O serviço também retorna um SearchableEntity como o conteúdo de um resultado de pesquisa. Você deve preparar os dados do seu aplicativo para o serviço encapsulando-os na classe SearchableEntity.

  1. Importe as classes e interfaces necessárias.
    import net.rim.device.api.unifiedsearch.SearchField;
    import net.rim.device.api.unifiedsearch.SearchFieldCriteria;
    import net.rim.device.api.unifiedsearch.SearchFieldCriteriaList;
    import net.rim.device.api.unifiedsearch.entity.SearchableEntity;
    import net.rim.device.api.unifiedsearch.searchables.Searchable;
    
  2. Recupere uma matriz de objetos SearchField de seu EntityBasedSearchable.
    SearchField[] searchfields = mySearchable.defineSupportedSearchFields();
  3. Crie um objeto SearchFieldCriteria para cada uma de suas propriedades pesquisáveis. No exemplo de código a seguir, o objeto de dados do aplicativo myObject tem um método getProperty() que retorna uma string para um determinado índice. Por exemplo, se myObject tiver descrito um livro, então os índices 0, 1 e 2 de getProperty() podem retornar o nome, o editor e o número de páginas no livro.
    int size = searchfields.length
    SearchFieldCriteria[] criteria = new SearchFieldCriteria[size];
    for (int i = size -1; i >= 0; --i) {
        criteria[i] = new SearchFieldCriteria(searchfields[i], new String[]{myObject.getProperty(i)});
    }
  4. Crie e preencha um objeto SearchFieldCriteriaList para manter os critérios do seu campo de pesquisa.
    SearchFieldCriteriaList _sfcl = new SearchFieldCriteriaList();
    for (int i = size -1; i >= 0; --i) {
        sfcl.addCriteria(criteria[i]);
    }
  5. Implemente getSearchCriteria() para retornar SearchFieldCriteriaList.
    pubic SearchFieldCriteriaList getSearchCriteria() {
        return _sfcl;
    }
  6. Em getData(), retorne seu objeto de dados do aplicativo. Para continuar com o exemplo de livro, este método retornaria um objeto que representa o livro.
    public Object getData() {
        return myObject;
    }
  7. Em getTitle(), atribua um título a esta entidade pesquisável. O texto do título é exibido nos resultados de pesquisa. Para continuar com o exemplo de livro, myObject.getName() poderia retornar o nome de um livro.
    public String getTitle() {
        return myObject.getName();
    }
  8. Em getSummary(), forneça um resumo dos dados nesta entidade pesquisável. O texto do resumo é exibido nos resultados de pesquisa. Continuar com o exemplo de livro myObject.getDescription() poderia retornar uma descrição do livro.
    public String getSummary() {
        return myObject.getDescription();
    }
  9. Implemente getSearchable(). Recupere o EntityBasedSearchable que seu aplicativo cria para gerenciar esse objeto e retorne-o.
    public Searchable getSearchable() {
        return myPublisher.getSearchable();
    }
    
  10. Defina as opções que devem ser exibidas no menu contextual quando um usuário do aparelho BlackBerry clica em sua entidade em uma lista de resultados de pesquisa. Para obter mais informações, consulte "Especificar o que usuários podem fazer com seus dados nos resultados de pesquisa".
  11. Se você quiser que esse SearchableEntity exiba um ícone diferente do ícone do seu aplicativo, forneça o ícone em getIcon(). Para obter mais informações, consulte "Personalizar a aparência dos dados nos resultados de pesquisa".

Estas informações foram úteis? Gostaríamos de receber seus comentários.