Inputs equal different outputs in Java

0

I'm experiencing a problem that I can not see a solution to.

I'll try to describe what I'm doing, there are many code files, so it's the following.

I am combining access policies. I have a certain policy that has some properties like (organization, person to whom it applies etc.) these policies can be Obligation, Permission or Prohibition, so far so good. I generate these policies randomly where in the end I have a set of 48 policies.

It turns out that I pass these policies through my processing (which is to compare each one two by two, so that it compares all) and in the end I see how many times the checks were performed.

Only once does a number come out, and again others come out, even though I just pressed the Java button. I do not know if it helps me by the code. I think it's a java configuration. Does anyone know what can it be?

The combination code is as follows:

public class CombinaPoliticas {

    public static int count = 1;

    public Set<Policie> combinaPoliticasForbidden(OWLOntology ontology) {

        /* COMBINAÇÃO ORGANIZAÇÕES ENTIDADES */

        Engine engine = new Engine(ontology);
        Set<String> origins = null;

        //List<Organizacao> organizacoes = engine.getOrganizationsObjects();    
        //List<Entidade> entidades = engine.getEntityObjects();
        //entidades.add(new Entidade(null));

        List<Organizacao> organizacoes = new ArrayList<Organizacao>();
        List<Entidade> entidades = new ArrayList<Entidade>();

        organizacoes.add(new Organizacao("Instituição"));
//      organizacoes.add(new Organizacao("Unidade_Administrativa"));

        entidades.add(new Entidade("null"));
        entidades.add(new Entidade("PROTOCOLIZADOR"));
        entidades.add(new Entidade("PROTOCOLIZADOR3"));
//      entidades.add(new Entidade("MARIA"));
//      entidades.add(new Entidade("JOSE"));

        List<Org_Entidade> organizacoesEntidades = new ArrayList<Org_Entidade>();
        Iterator iteratorOrg = organizacoes.iterator();

        while(iteratorOrg.hasNext()) {
            Organizacao org;
            org = (Organizacao) iteratorOrg.next();

            Iterator iteratorEnt = entidades.iterator();

            while(iteratorEnt.hasNext()) {
                Entidade ent;
                ent = (Entidade) iteratorEnt.next();

                organizacoesEntidades.add(new Org_Entidade(org, ent));

            }
        }

        /* COMBINAÇÃO OBJETOS E AÇÕES */

//      List<Objeto> objetos = engine.getObjects();
//      List<Acao> acoes = engine.getActionObjects();

        List<Objeto> objetos = new ArrayList<Objeto>();
        List<Acao> acoes = new ArrayList<Acao>();

        objetos.add(new Objeto("ProcNURCADesp"));
        objetos.add(new Objeto("Processo"));

//      acoes.add(new Acao("MovimentProcess"));
//      acoes.add(new Acao("Abrir"));
//      acoes.add(new Acao("Fechar"));
//      acoes.add(new Acao("Anular"));
//      acoes.add(new Acao("Criar"));
        acoes.add(new Acao("Movimentar"));
        acoes.add(new Acao("Acessar"));
        acoes.add(new Acao("Gravar"));
//      acoes.add(new Acao("Cancelar"));
        acoes.add(new Acao("Gerar"));
//      acoes.add(new Acao("Tramitar"));



        List<Obj_Acao> objetosAcoes = new ArrayList<Obj_Acao>();

        Iterator iteratorObj = objetos.iterator();

        while(iteratorObj.hasNext()) {
            Objeto obj;
            obj = (Objeto) iteratorObj.next();

            Iterator iteratorAcao = acoes.iterator();

            while(iteratorAcao.hasNext()) {
                Acao acao;
                acao = (Acao) iteratorAcao.next();

                objetosAcoes.add(new Obj_Acao(obj, acao));

            }
        }

        /* CRIAÇÃO DAS POLÍTICAS */

        Set<Policie> setOfPolicies = new LinkedHashSet<Policie>();

        Iterator orgsEntidadesIterator = organizacoesEntidades.iterator();

        while(orgsEntidadesIterator.hasNext()) {
            Org_Entidade orgEntidade = (Org_Entidade) orgsEntidadesIterator.next();

            Iterator objsAcoesIterator = objetosAcoes.iterator();

            while(objsAcoesIterator.hasNext()) {
                Obj_Acao objAcao = (Obj_Acao) objsAcoesIterator.next();

                origins = new LinkedHashSet<String>();

                setOfPolicies.add(new Policie("Policie"+count, "Forbidden", orgEntidade.getOrg().getOrganizacao(), orgEntidade.getEntidade().getEntidade(),
                        objAcao.getAcao().getAcao(), objAcao.getObjeto().getObjeto(), "2015-08-18T20:06:14^^DateTime", "2015-12-31T20:06:14^^DateTime", false, origins));
                count++;

            }

        }   


        System.out.println("Total de Políticas geradas: "+setOfPolicies.size()+"\n");

        for (Policie policie : setOfPolicies) {;
            System.out.println(policie);
        }


        return setOfPolicies;   
    }   

    public Set<Policie> combinaPoliticasPermitted(OWLOntology ontology) {

        /* COMBINAÇÃO ORGANIZAÇÕES ENTIDADES */

        Engine engine = new Engine(ontology);
        Set<String> origins = null;

        //List<Organizacao> organizacoes = engine.getOrganizationsObjects();    
        //List<Entidade> entidades = engine.getEntityObjects();
        //entidades.add(new Entidade(null));

        List<Organizacao> organizacoes = new ArrayList<Organizacao>();
        List<Entidade> entidades = new ArrayList<Entidade>();

//      organizacoes.add(new Organizacao("Instituição"));
        organizacoes.add(new Organizacao("Unidade_Administrativa"));

        entidades.add(new Entidade("null"));
//      entidades.add(new Entidade("PROTOCOLIZADOR"));
        entidades.add(new Entidade("PROTOCOLIZADOR3"));
//      entidades.add(new Entidade("PROTOCOLIZADOR2"));
//      entidades.add(new Entidade("MARIA"));
//      entidades.add(new Entidade("JOSE"));
//      entidades.add(new Entidade("Unidade_Administrativa"));

        List<Org_Entidade> organizacoesEntidades = new ArrayList<Org_Entidade>();
        Iterator iteratorOrg = organizacoes.iterator();

        while(iteratorOrg.hasNext()) {
            Organizacao org;
            org = (Organizacao) iteratorOrg.next();

            Iterator iteratorEnt = entidades.iterator();

            while(iteratorEnt.hasNext()) {
                Entidade ent;
                ent = (Entidade) iteratorEnt.next();

                organizacoesEntidades.add(new Org_Entidade(org, ent));

            }
        }

        /* COMBINAÇÃO OBJETOS E AÇÕES */

//      List<Objeto> objetos = engine.getObjects();
//      List<Acao> acoes = engine.getActionObjects();

        List<Objeto> objetos = new ArrayList<Objeto>();
        List<Acao> acoes = new ArrayList<Acao>();

        objetos.add(new Objeto("ProcessDespacho"));
        objetos.add(new Objeto("Processo"));


//      acoes.add(new Acao("MovimentProcess"));
//      acoes.add(new Acao("Abrir"));
        acoes.add(new Acao("Fechar"));
//      acoes.add(new Acao("Anular"));
        acoes.add(new Acao("Criar"));
//      acoes.add(new Acao("Movimentar"));
//      acoes.add(new Acao("Acessar"));
        acoes.add(new Acao("Gravar"));
//      acoes.add(new Acao("Cancelar"));
//      acoes.add(new Acao("Gerar"));
//      acoes.add(new Acao("Tramitar"));



        List<Obj_Acao> objetosAcoes = new ArrayList<Obj_Acao>();

        Iterator iteratorObj = objetos.iterator();

        while(iteratorObj.hasNext()) {
            Objeto obj;
            obj = (Objeto) iteratorObj.next();

            Iterator iteratorAcao = acoes.iterator();

            while(iteratorAcao.hasNext()) {
                Acao acao;
                acao = (Acao) iteratorAcao.next();

                objetosAcoes.add(new Obj_Acao(obj, acao));

            }
        }

        /* CRIAÇÃO DAS POLÍTICAS */

        Set<Policie> setOfPolicies = new LinkedHashSet<Policie>();

        Iterator orgsEntidadesIterator = organizacoesEntidades.iterator();

        while(orgsEntidadesIterator.hasNext()) {
            Org_Entidade orgEntidade = (Org_Entidade) orgsEntidadesIterator.next();

            Iterator objsAcoesIterator = objetosAcoes.iterator();

            while(objsAcoesIterator.hasNext()) {
                Obj_Acao objAcao = (Obj_Acao) objsAcoesIterator.next();

                origins = new LinkedHashSet<String>();

                setOfPolicies.add(new Policie("Policie"+count, "Permitted", orgEntidade.getOrg().getOrganizacao(), orgEntidade.getEntidade().getEntidade(),
                        objAcao.getAcao().getAcao(), objAcao.getObjeto().getObjeto(), "2015-08-18T20:06:14^^DateTime", "2015-12-31T20:06:14^^DateTime", false, origins));
                count++;

            }

        }   


        System.out.println("Total de Políticas geradas: "+setOfPolicies.size()+"\n");

        for (Policie policie : setOfPolicies) {;
            System.out.println(policie);
        }


        return setOfPolicies;   
    }   

    public Set<Policie> combinaPoliticasObliged(OWLOntology ontology) {

        /* COMBINAÇÃO ORGANIZAÇÕES ENTIDADES */

        Engine engine = new Engine(ontology);
        Set<String> origins = null;

        //List<Organizacao> organizacoes = engine.getOrganizationsObjects();    
        //List<Entidade> entidades = engine.getEntityObjects();
        //entidades.add(new Entidade(null));

        List<Organizacao> organizacoes = new ArrayList<Organizacao>();
        List<Entidade> entidades = new ArrayList<Entidade>();

        organizacoes.add(new Organizacao("Instituição"));
        organizacoes.add(new Organizacao("Unidade_Administrativa"));

        entidades.add(new Entidade("null"));
//      entidades.add(new Entidade("PROTOCOLIZADOR"));
        entidades.add(new Entidade("PROTOCOLIZADOR3"));
        entidades.add(new Entidade("MARIA"));
//      entidades.add(new Entidade("JOSE"));
//      entidades.add(new Entidade("Unidade_Administrativa"));

        List<Org_Entidade> organizacoesEntidades = new ArrayList<Org_Entidade>();
        Iterator iteratorOrg = organizacoes.iterator();

        while(iteratorOrg.hasNext()) {
            Organizacao org;
            org = (Organizacao) iteratorOrg.next();

            Iterator iteratorEnt = entidades.iterator();

            while(iteratorEnt.hasNext()) {
                Entidade ent;
                ent = (Entidade) iteratorEnt.next();

                organizacoesEntidades.add(new Org_Entidade(org, ent));

            }
        }

        /* COMBINAÇÃO OBJETOS E AÇÕES */

//      List<Objeto> objetos = engine.getObjects();
//      List<Acao> acoes = engine.getActionObjects();

        List<Objeto> objetos = new ArrayList<Objeto>();
        List<Acao> acoes = new ArrayList<Acao>();

//      objetos.add(new Objeto("ProcNURCADesp"));
        objetos.add(new Objeto("Processo"));


//      acoes.add(new Acao("MovimentProcess"));
        acoes.add(new Acao("Abrir"));
//      acoes.add(new Acao("Fechar"));
//      acoes.add(new Acao("Anular"));
//      acoes.add(new Acao("Criar"));
//      acoes.add(new Acao("Movimentar"));
        acoes.add(new Acao("Acessar"));
//      acoes.add(new Acao("Gravar"));
//      acoes.add(new Acao("Cancelar"));
//      acoes.add(new Acao("Gerar"));
//      acoes.add(new Acao("Tramitar"));



        List<Obj_Acao> objetosAcoes = new ArrayList<Obj_Acao>();

        Iterator iteratorObj = objetos.iterator();

        while(iteratorObj.hasNext()) {
            Objeto obj;
            obj = (Objeto) iteratorObj.next();

            Iterator iteratorAcao = acoes.iterator();

            while(iteratorAcao.hasNext()) {
                Acao acao;
                acao = (Acao) iteratorAcao.next();

                objetosAcoes.add(new Obj_Acao(obj, acao));

            }
        }

        /* CRIAÇÃO DAS POLÍTICAS */

        Set<Policie> setOfPolicies = new LinkedHashSet<Policie>();

        Iterator orgsEntidadesIterator = organizacoesEntidades.iterator();

        while(orgsEntidadesIterator.hasNext()) {
            Org_Entidade orgEntidade = (Org_Entidade) orgsEntidadesIterator.next();

            Iterator objsAcoesIterator = objetosAcoes.iterator();

            while(objsAcoesIterator.hasNext()) {
                Obj_Acao objAcao = (Obj_Acao) objsAcoesIterator.next();

                origins = new LinkedHashSet<String>();

                setOfPolicies.add(new Policie("Policie"+count, "Obliged", orgEntidade.getOrg().getOrganizacao(), orgEntidade.getEntidade().getEntidade(),
                        objAcao.getAcao().getAcao(), objAcao.getObjeto().getObjeto(), "2015-08-18T20:06:14^^DateTime", "2015-12-31T20:06:14^^DateTime", false, origins));
                count++;
//              
            }

        }   


        System.out.println("Total de Políticas geradas: "+setOfPolicies.size()+"\n");

        for (Policie policie : setOfPolicies) {;
            System.out.println(policie);
        }


        return setOfPolicies;   
    }   


}

I first combine all bans, then all permissions and then the obligations and together all this way:

Set<Policie> setOfPolicies = combina.combinaPoliticasForbidden(ontology);
        setOfPolicies.addAll(combina.combinaPoliticasPermitted(ontology));
        setOfPolicies.addAll(combina.combinaPoliticasObliged(ontology));

Does anyone know what it can be?

    
asked by anonymous 19.09.2015 / 19:45

1 answer

0

My code has two steps.

1 - Propagation

2 - Verification

It happened that in the propagation I was creating the Set as HashSet, and every time it propagated in a different way ... Already in the verification I was using LinkedHashSet, and then it came every time in a different way. The solution was to put LinkedHashSet (which keeps the order of the elements) in all two steps.

    
20.09.2015 / 19:07