Project

General

Profile

Bug #447

Bug na pesquisa avançada de casos

Added by Maurício Dos Santos about 12 years ago. Updated about 12 years ago.

Status:
Closed
Priority:
Normal
Target version:
Start date:
03/08/2013
Due date:
03/15/2013
% Done:

0%

Componente:

Description

Na pesquisa avançada de casos existem alguns filtros proprios do brasil que ficam na clase CaseFiltersBR...

Quando é executada uma pesquisa de casos (seja por meio da pesquisa avançada, ou clicando no numero de casos em tratamento de um determinado estado, ou ate clicando em uma tag, enfim...) O CaseFilters verifica se é uma pesquisa que faz sentido manter os filtros que estão na sessão (somente pesquisa avançada), se não for ele limpa os atributos do filtro do CaseFilters... O problema é que esse método é do CaseFilters portanto ele não tem como limpar os filtros proprios de um país (neste caso do CaseFiltersBR).

O resultado disso é: quando o usuario faz uma pesquisa avançada, se ele preencher um filtro proprio do pais, esse filtro vai permanecer em memoria quando o usuario for fazer outro tipo de consulta de casos, como por ex, clicar em uma tag.

History

#1 Updated by Maurício Dos Santos about 12 years ago

Tentar "sobrescrever" (digo com aspas pois o CaseFiltersBR não é realmente filho do CaseFilters) esse metodo fica complicado pois o metodo que chama o clear do CaseFilters ((CaseFilters.searchCriteriaChanged())) é chamado dentro do CaseFilters.setSearchCriteria()... E no sistema possuem em torno de 30 linhas que setam esse atributo, achei arriscado...

Pensei que fosse mais simples alterar o CasesQueryBR como abaixo:

package org.msh.tb.br;

import java.util.ArrayList;
import java.util.List;

import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.msh.tb.cases.CaseFilters;
import org.msh.tb.cases.CasesQuery;
import org.msh.tb.cases.SearchCriteria;

@Name("casesQueryBR")
public class CasesQueryBR extends CasesQuery {
    private static final long serialVersionUID = -756905077428555077L;

    @In(required=true) CaseFilters caseFilters;
    @In(required=true) CaseFiltersBR caseFiltersBR;

    @Override
    public List<String> getStringRestrictions() {
        verifySearchCriteria();

        List<String> lst = super.getStringRestrictions();

        List<String> rest = new ArrayList<String>();
        for (String s: lst)
            rest.add(s);
        rest.add("c.drugResistanceType = #{caseFiltersBR.drugResistanceType}");
        rest.add("c.schemaChangeType.value = #{caseFiltersBR.schemaChangeType}");
        rest.add("c.outcomeRegimenChanged = #{caseFiltersBR.outcomeRegimenChanged}");
        rest.add("c.outcomeResistanceType = #{caseFiltersBR.outcomeResistanceType}");
        rest.add("c.currentDrugResistanceType = #{caseFiltersBR.currentDrugResistanceType}");

        return rest;
    }

    private void verifySearchCriteria() {
        SearchCriteria searchCriteria = caseFilters.getSearchCriteria();

        if (searchCriteria == null)
            searchCriteria = SearchCriteria.CUSTOM_FILTER;

        if(searchCriteria.equals(SearchCriteria.CASE_STATE)
                || searchCriteria.equals(SearchCriteria.PATIENT)
                || searchCriteria.equals(SearchCriteria.VALIDATION_STATE)
                || searchCriteria.equals(SearchCriteria.CASE_TAG)
                || searchCriteria.equals(SearchCriteria.CASE_UNIT_STATE))
            caseFiltersBR.clear();
    }

    /* (non-Javadoc)
     * @see org.msh.tb.cases.CasesQuery#getJoinTablesHQL()
     */
/*    @Override
    public String getFromHQL() {
        return "from TbCaseBR c";
    }
*/}

Mas ao executar não consegui inicializar os filters dentro dessa classe... Tentei required=true e create=true... Ricardo, algum palpite?

#2 Updated by Maurício Dos Santos about 12 years ago

  • Status changed from New to Resolved

#3 Updated by Maurício Dos Santos about 12 years ago

Resolvido, mais ou menos como acima, mas instanciei as dependencias assim:

CaseFilters caseFilters = (CaseFilters) Component.getInstance("caseFilters");
CaseFiltersBR caseFiltersBR = (CaseFiltersBR) Component.getInstance("caseFiltersBR");

#4 Updated by Estefânia Quilma Andrade about 12 years ago

  • Due date set to 03/15/2013

Tentei, varias vezes, refazer o erro e nao consegui, deve esta ok

#5 Updated by Maurício Dos Santos about 12 years ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF