Constraint está sempre trazendo a primeira linha

Boa tarde, comunidade.

Preciso que de acordo com o usuário que estiver logado preencha um determinado campo. Tenho um dataset customizado com as colunas "NOME" "ID" "LOGIN". O login atual eu comparo com os do dataset e trago em um outro campo o ID do login correspondente, porém, ao implementar percebi que independente do usuário que eu estiver logado ele insere no campo o primeiro ID do dataset.

Meu HTML:

<div class="form-group col-md-2">
                                    <label for="logado" class="info">Usuário</label>
                                    <input id="logado" name="logado" class="form-control" type="text">
                                </div>

                                <div class="form-group col-md-2">
                                    <label for="idUsuarioAdicionado" class="info">Id Usuário Adicionado</label>
                                    <input id="idUsuarioAdicionado" name="idUsuarioAdicionado" class="form-control" type="text">
                                </div>

Meu JS:

//PREENCHER O CAMPO ID USUÁRIO
var id = $("#idUsuarioAdicionado");

var usuario = $("#logado").val();

var c1 = DatasetFactory.createConstraint("LOGIN", usuario, usuario, ConstraintType.MUST);
var constraints = new Array(c1);

var fieldId = new Array("ID");

try {
    var datasetId = DatasetFactory.getDataset("dsUserFluig", fieldId, constraints, null);
    var row = datasetId.values[0];
    $(id).val(row["ID"]);

} catch (erro){
    id.innerHTML = erro;
}

Meu dataset customizado:

function createDataset(fields, constraints, sortFields) {
    var ds = DatasetBuilder.newDataset();

    ds.addColumn("NOME");
    ds.addColumn("ID");
    ds.addColumn("LOGIN")

    var filtroGroup = DatasetFactory.createConstraint("colleagueGroupPK.groupId", "Usuarios", 
            "Usuarios", ConstraintType.MUST);
    //qual coluna iremos buscar, valor que estamos buscando (inicial e final) e o tipo da constraint (must, must not, ...).

    var datasetGroup = DatasetFactory.getDataset("colleagueGroup", null, new Array(filtroGroup), null); //coluna, filtro, e ordenação de registros, dessa forma (null) vai trazer todos os dados.

    for (i = 0; i < datasetGroup.rowsCount ; i++){
        var colaboradorGroup = datasetGroup.getValue(i, "colleagueGroupPK.colleagueId");

        var datasetColaborador = DatasetFactory.getDataset("colleague", null, null, null);

        for (j = 0; j < datasetColaborador.rowsCount; j++){
            var colaboradorCol = datasetColaborador.getValue(j, "colleaguePK.colleagueId");
            var colaboradorNome = datasetColaborador.getValue(j, "colleagueName");
            var colaboradorId = datasetColaborador.getValue(j, "userTenantId");
            if(colaboradorCol == colaboradorGroup){
                ds.addRow(new Array(colaboradorNome, colaboradorId, colaboradorCol));
            }
        }
    }

    return ds;

}

DS VINDO DE BANCO EXTERNO:

function createDataset(fields, constraints, sortFields) {
    var newDataset = DatasetBuilder.newDataset();
    log.info("QUERY: " + myQuery);
    var dataSource = "/jdbc/TesteConexao";
    var ic = new javax.naming.InitialContext();
    var ds = ic.lookup(dataSource);
    var created = false;
    var myQuery = "select * from USUARIO";

    try {
        var conn = ds.getConnection();
        var stmt = conn.createStatement();
        var rs = stmt.executeQuery(myQuery);
        var columnCount = rs.getMetaData().getColumnCount();
        while (rs.next()) {
            if (!created) {
                for (var i = 1; i <= columnCount; i++) {
                    newDataset.addColumn(rs.getMetaData().getColumnName(i));
                }
                created = true;
            }
            var Arr = new Array();
            for (var i = 1; i <= columnCount; i++) {
                var obj = rs.getObject(rs.getMetaData().getColumnName(i));
                if (null != obj) {
                    Arr[i - 1] = rs.getObject(rs.getMetaData().getColumnName(i)).toString();
                } else {
                    Arr[i - 1] = "null";
                }
            }
            newDataset.addRow(Arr);
        }
    } catch (e) {
        log.error("ERRO==============> " + e.message);
    } finally {
        if (stmt != null) {
            stmt.close();
        }
        if (conn != null) {
            conn.close();
        }
    }

    var colleagueConstraints = new Array();  

    for (i = 0; i < constraints.length ; i++) {
       if (constraints[i].fieldName == 'CodUsuario') {
           colleagueConstraints.push(DatasetFactory.createConstraint("CodUsuario", constraints[i].initialValue, 
                        constraints[i].finalValue, ConstraintType.MUST));
       }
    }

    return newDataset;
}

Alguém já passou por algo parecido e poderia compartilhar a solução?

Atenciosamente, Leonardo Fioretti.

compartilhar
  • Leonardo, acredito que falta você tratar dentro do seu dataset a constraint LOGIN utilizada na chamada pelo JS. Talvez por ter o mesmo nome de campo LOGIN, você possa passar a constraint diretamente para o dataset colleague : var datasetColaborador = DatasetFactory.getDataset("colleague", null, constraints, null);

    Diogo Boegershausen   19 de Sep de 2018
  • @Diogo, infelizmente sua solução não funcionou. Sabe alguma outra coisa que pode ajudar?

    Leonardo Fioretti   19 de Sep de 2018
  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!

3 respostas

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