Problema na criação de constraints para dataset customizado

Olá pessoal.

Tenho um dataset customizado e preciso aplicar um filtro em uma coluna, pesquisei e vi que tenho que criar constraints. Estou tendo um problema na criação de constraints para o dataset. Estou seguindo os exemplos do site, mas não estou conseguindo que as coisas funcionem corretamente. Antes de criar a constraint meu dataset retorna os valores corretamentes, sem problema algum. Após a criação das constraints meu dataset passa a não retornar mais nenhuma entrada. Inclusive já copiei colei exatamente como está no site e acontece o mesmo problema: sem as constraints tudo OK, mas quando adiciono-as não retorna mais nada. Estou disponibilizando os códigos abaixo:

//Retorna todas as entradas, sem constraints
function createDataset(fields, constraints, sortFields) {
    var newDataset = DatasetBuilder.newDataset();
    newDataset.addColumn("id");
    newDataset.addColumn("Nome");
    newDataset.addColumn("Grupo");

    var _c = DatasetFactory.createConstraint("workflowColleagueRolePK.roleId", "Coordenador", "Coordenador", ConstraintType.MUST);
    var tmpConstraint = new Array(_c);
    var roleDataset = DatasetFactory.getDataset("workflowColleagueRole", null, tmpConstraint, null);

    for (var i = 0; i < roleDataset.rowsCount; i++) {
        var colleague_id = roleDataset.getValue(i, "workflowColleagueRolePK.colleagueId");

        //pega o nome do coordenador
        var _c1 = DatasetFactory.createConstraint("colleaguePK.colleagueId", colleague_id, colleague_id, ConstraintType.MUST);
        var colConstraints = new Array(_c1);
        var colleagueDataset = DatasetFactory.getDataset("colleague", null, colConstraints, null);
        //peguei o primeiro pois pesquisei com o ID, resultando em apenas 1 entrada
        var colleagueName = colleagueDataset.getValue(0, "colleagueName");

        //pega o grupo do coordenador
        var _c2 = DatasetFactory.createConstraint("colleagueGroupPK.colleagueId", colleague_id, colleague_id, ConstraintType.MUST);
        var _tmpConstraint = new Array(_c2);
        var groupDataset = DatasetFactory.getDataset("colleagueGroup", null, _tmpConstraint, null);
        for (var j = 0; j < groupDataset.rowsCount; j++) {
            var groupName = groupDataset.getValue(j, "colleagueGroupPK.groupId");
            if(groupName != "DefaultGroup-1")
                newDataset.addRow(new Array(colleague_id, colleagueName, groupName));    

        }
    }
    return newDataset;

}

Gerando a seguinte saída.

p1.png

//Tentativa de filtro
function createDataset(fields, constraints, sortFields) {
    var newDataset = DatasetBuilder.newDataset();
    newDataset.addColumn("id");
    newDataset.addColumn("Nome");
    newDataset.addColumn("Grupo");
    var filter = false;

    if (constraints.length > 0)
        filter = true;

    var _c = DatasetFactory.createConstraint("workflowColleagueRolePK.roleId", "Coordenador", "Coordenador", ConstraintType.MUST);
    var tmpConstraint = new Array(_c);
    var roleDataset = DatasetFactory.getDataset("workflowColleagueRole", null, tmpConstraint, null);

    for (var i = 0; i < roleDataset.rowsCount; i++) {
        var colleague_id = roleDataset.getValue(i, "workflowColleagueRolePK.colleagueId");

        //pegar o nome do coordenador
        var _c1 = DatasetFactory.createConstraint("colleaguePK.colleagueId", colleague_id, colleague_id, ConstraintType.MUST);
        var colConstraints = new Array(_c1);
        var colleagueDataset = DatasetFactory.getDataset("colleague", null, colConstraints, null);
        //peguei o primeiro pois pesquisei com o ID, resultando em apenas 1 entrada
        var colleagueName = colleagueDataset.getValue(0, "colleagueName");

        //pegar o grupo do coordenador
        var _c2 = DatasetFactory.createConstraint("colleagueGroupPK.colleagueId", colleague_id, colleague_id, ConstraintType.MUST);
        var _tmpConstraint = new Array(_c2);
        var groupDataset = DatasetFactory.getDataset("colleagueGroup", null, _tmpConstraint, null);
        for (var j = 0; j < groupDataset.rowsCount; j++) {
            var groupName = groupDataset.getValue(j, "colleagueGroupPK.groupId");
            if(filter == false) {
                if(groupName != "DefaultGroup-1")
                newDataset.addRow(new Array(colleague_id, colleagueName, groupName));
            }
            else{
                if (constraints[0].constraintType==ConstraintType.MUST) {
                    if(constraints[0].fieldName == "id"){
                        if(constraints[0].initialValue == colleague_id){ // se o valor inicial da constraint for igual ao valor do campo na constraint adiciona a linha
                            newDataset.addRow(new Array(colleague_id, colleagueName, groupName));
                        }
                    }
                }
            }
        }
    }
        return newDataset;
}

Gerando a saída abaixo

p12.png

Não faço a mínima ideia de isso estar acontecendo. Alguém já passou por algo parecido? De qualquer forma, obrigado pela ajuda!

compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do fluig Forum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags datasets-customizado dataset problema ou faça a sua própria pergunta.