Versão atual:

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!

Versão (1):

Ver a versão formatada

Problema na criação de constraints para dataset customizado

  • criado 23 de Aug de 2018

Comentário

new question