Example usage for org.apache.commons.collections4 PredicateUtils allPredicate

List of usage examples for org.apache.commons.collections4 PredicateUtils allPredicate

Introduction

In this page you can find the example usage for org.apache.commons.collections4 PredicateUtils allPredicate.

Prototype

public static <T> Predicate<T> allPredicate(final Collection<? extends Predicate<T>> predicates) 

Source Link

Document

Create a new Predicate that returns true only if all of the specified predicates are true.

Usage

From source file:com.vrem.wifianalyzer.wifi.predicate.FilterPredicate.java

private FilterPredicate(Settings settings, Set<WiFiBand> wiFiBands) {
    Predicate<WiFiDetail> ssidPredicate = makeSSIDPredicate(settings.getSSIDs());
    Predicate<WiFiDetail> wiFiBandPredicate = EnumUtils.predicate(WiFiBand.class, wiFiBands,
            new WiFiBandTransformer());
    Predicate<WiFiDetail> strengthPredicate = EnumUtils.predicate(Strength.class, settings.getStrengths(),
            new StrengthTransformer());
    Predicate<WiFiDetail> securityPredicate = EnumUtils.predicate(Security.class, settings.getSecurities(),
            new SecurityTransformer());
    List<Predicate<WiFiDetail>> predicates = Arrays.asList(ssidPredicate, wiFiBandPredicate, strengthPredicate,
            securityPredicate);//from   w w w .  jav a 2  s .  com
    this.predicate = PredicateUtils.allPredicate(CollectionUtils.select(predicates, new NoTruePredicate()));
}

From source file:br.usp.poli.lta.cereda.aa.model.sets.Mapping.java

/**
 * Consulta transies que consomem o smbolo informado a partir do estado
 * de origem tambm informado.//from  ww  w . j  a v a2s.  c  om
 * @param state Estado de origem.
 * @param symbol Smbolo a ser consumido.
 * @return Transies que consomem o smbolo informado a partir do estado
 * de origem tambm informado.
 */
public List<Transition> withSourceStateAndSymbol(State state, Symbol symbol) {
    Predicate[] chain = { new SourceStatePredicate(state), new SymbolPredicate(symbol) };
    Collection<Transition> result = CollectionUtils.select(transitions, PredicateUtils.allPredicate(chain));
    return new ArrayList<>(result);
}

From source file:br.usp.poli.lta.cereda.aa.model.sets.Mapping.java

/**
 * Consulta transies que partem do estado de origem informado e seguem at
 * o estado de destino tambm informado./*from   w w w  .j ava2 s  . c  om*/
 * @param state1 Estado de origem.
 * @param state2 Estado de destino.
 * @return Transies que partem do estado de origem informado e seguem at
 * o estado de destino tambm informado.
 */
public List<Transition> withSourceAndTargetStates(State state1, State state2) {
    Predicate[] chain = { new SourceStatePredicate(state1), new TargetStatePredicate(state2) };
    Collection<Transition> result = CollectionUtils.select(transitions, PredicateUtils.allPredicate(chain));
    return new ArrayList<>(result);
}

From source file:br.usp.poli.lta.cereda.aa.model.sets.Mapping.java

/**
 * Consulta quais transies partem de um estado de origem, consomem o
 * smbolo e chegam at um estado de destino.
 * @param state1 Estado de origem./*from ww w . j a va  2  s . co m*/
 * @param symbol Smbolo a ser consumido.
 * @param state2 Estado de destino.
 * @return Transies partem de um estado de origem, consomem o smbolo e
 * chegam at um estado de destino.
 */
public List<Transition> withSourceStateSymbolAndTargetState(State state1, Symbol symbol, State state2) {
    Predicate[] chain = { new SourceStatePredicate(state1), new SymbolPredicate(symbol),
            new TargetStatePredicate(state2) };
    Collection<Transition> result = CollectionUtils.select(transitions, PredicateUtils.allPredicate(chain));
    return new ArrayList<>(result);
}

From source file:br.usp.poli.lta.cereda.aa.model.sets.Mapping.java

/**
 * Consulta transies que partem de um estado de origem e chamam uma
 * determinada submquina./*from w ww .j ava 2s .  c  om*/
 * @param state Estado de origem.
 * @param submachine Nome da submquina.
 * @return Transies que partem de um estado de origem e chamam uma
 * determinada submquina.
 */
public List<Transition> withSourceStateAndSumbmachine(State state, String submachine) {
    Predicate[] chain = { new SourceStatePredicate(state), new SubmachinePredicate(submachine) };
    Collection<Transition> result = CollectionUtils.select(transitions, PredicateUtils.allPredicate(chain));
    return new ArrayList<>(result);
}

From source file:br.usp.poli.lta.cereda.aa.model.sets.Mapping.java

/**
 * Consulta transies em vazio a partir do estado de origem.
 * @param state Estado de origem./*from   ww w  .ja v  a2 s  . c o m*/
 * @return Transies em vazio a partir do estado de origem.
 */
public List<Transition> withEpsilonFromSourceState(State state) {
    Predicate[] chain = { new SourceStatePredicate(state), new EpsilonPredicate() };
    Collection<Transition> result = CollectionUtils.select(transitions, PredicateUtils.allPredicate(chain));
    return new ArrayList<>(result);
}

From source file:br.usp.poli.lta.cereda.aa.model.actions.ElementaryActions.java

/**
 * Consulta as transies de acordo com os parmetros informados e preenche
 * as variveis.//  w ww  .j a va  2  s. c  o m
 * @param source Estado de origem.
 * @param symbol Smbolo a ser consumido.
 * @param target Estado de destino.
 */
public void query(Variable source, Variable symbol, Variable target) {

    // validaes
    Validate.notNull(source, "A varivel no pode ser nula.");
    Validate.notNull(symbol, "A varivel no pode ser nula.");
    Validate.notNull(target, "A varivel no pode ser nula.");

    // predicado do estado de origem
    Predicate sourcePredicate;

    // se o estado de origem no est disponvel,
    // significa que existem valores
    if (!source.isAvailable()) {

        // para cada valor existente,
        // adiciona um predicado
        Collection sourcePredicateList = new ArrayList();
        for (Object currentSource : source.getValues()) {
            sourcePredicateList.add(new SourceStatePredicate((State) currentSource));
        }

        // unio dos predicados
        sourcePredicate = PredicateUtils.anyPredicate(sourcePredicateList);
    } else {

        // qualquer valor  vlido
        sourcePredicate = TruePredicate.truePredicate();
    }

    // predicado do smbolo a ser consumido
    Predicate symbolPredicate;

    // se o smbolo no est disponvel, existem
    // valores associados a ele
    if (!symbol.isAvailable()) {

        // para cada valor existente,
        // adiciona um predicado
        Collection symbolPredicateList = new ArrayList();
        for (Object currentSymbol : symbol.getValues()) {

            // temos uma transio convencional?
            if (currentSymbol != null) {

                // sim, transio convencional
                symbolPredicateList.add(new SymbolPredicate((Symbol) currentSymbol));

            } else {

                // transio em vazio
                symbolPredicateList.add(new EpsilonPredicate());
            }
        }

        // unio dos predicados
        symbolPredicate = PredicateUtils.anyPredicate(symbolPredicateList);
    } else {

        // qualquer valor  vlido
        symbolPredicate = TruePredicate.truePredicate();
    }

    // predicado do estado de destino
    Predicate targetPredicate;

    // se o estado de destino no est disponvel,
    // temos valores a considerar
    if (!target.isAvailable()) {

        // para cada valor existente,
        // adiciona um predicado
        Collection targetPredicateList = new ArrayList();
        for (Object currentTarget : target.getValues()) {
            targetPredicateList.add(new TargetStatePredicate((State) currentTarget));
        }

        // unio dos predicados
        targetPredicate = PredicateUtils.anyPredicate(targetPredicateList);
    } else {

        // qualquer valor do estado de
        // destino  vlido
        targetPredicate = TruePredicate.truePredicate();
    }

    // a consulta  a interseco de todos os predicados
    Collection<Transition> query = CollectionUtils.select(transitions.getTransitions(),
            PredicateUtils.allPredicate(new Predicate[] { sourcePredicate, symbolPredicate, targetPredicate }));

    // conjuntos de resultados
    Set<Object> sourceResult = new HashSet<>();
    Set<Object> symbolResult = new HashSet<>();
    Set<Object> targetResult = new HashSet<>();

    // preenche os conjuntos
    for (Transition transition : query) {
        sourceResult.add(transition.getSourceState());
        symbolResult.add(transition.getSymbol());
        targetResult.add(transition.getTargetState());
    }

    // se o estado de origem est
    // disponvel, preenche os valores
    if (source.isAvailable()) {
        source.setValues(sourceResult);
    }

    // se o smbolo est disponvel,
    // preenche os valores
    if (symbol.isAvailable()) {
        symbol.setValues(symbolResult);
    }

    // se o estado de destino est
    // disponvel, preenche os valores
    if (target.isAvailable()) {
        target.setValues(targetResult);
    }

}

From source file:br.usp.poli.lta.cereda.aa.model.sets.Mapping.java

/**
 * Consulta transies que consomem um determinado smbolo e chegam at o
 * estado de destino especificado.//w  w w .  j a va  2 s .co m
 * @param symbol Smbolo a ser consumido.
 * @param state Estado de destino.
 * @return Transies que consomem um determinado smbolo e chegam at o
 * estado de destino especificado.
 */
public List<Transition> withSymbolAndTargetState(Symbol symbol, State state) {
    Predicate[] chain = { new SymbolPredicate(symbol), new TargetStatePredicate(state) };
    Collection<Transition> result = CollectionUtils.select(transitions, PredicateUtils.allPredicate(chain));
    return new ArrayList<>(result);
}

From source file:br.usp.poli.lta.cereda.aa.model.actions.ElementaryActions.java

/**
 * Consulta as transies de acordo com os parmetros informados e preenche
 * as variveis./*from  w ww  . j  a  v a 2s .co  m*/
 * @param source Estado de origem.
 * @param submachine Submquina a ser chamada.
 * @param target Estado de destino.
 */
public void query(Variable source, SubmachineQuery submachine, Variable target) {

    // validaes
    Validate.notNull(source, "A varivel no pode ser nula.");
    Validate.notNull(submachine, "A varivel no pode ser nula.");
    Validate.notNull(target, "A varivel no pode ser nula.");

    // predicado do estado de origem
    Predicate sourcePredicate;

    // o estado de origem no est disponvel?
    if (!source.isAvailable()) {

        // para cada valor existente,
        // adiciona um predicado
        Collection sourcePredicateList = new ArrayList();
        for (Object currentSource : source.getValues()) {
            sourcePredicateList.add(new SourceStatePredicate((State) currentSource));
        }

        // unio dos predicados
        sourcePredicate = PredicateUtils.anyPredicate(sourcePredicateList);
    } else {

        // qualquer valor  vlido
        sourcePredicate = TruePredicate.truePredicate();
    }

    // predicado de submquina
    Predicate submachinePredicate;

    // existem valores de submquina?
    if (!submachine.getVariable().isAvailable()) {

        // para cada valor existente,
        // adiciona um predicado
        Collection submachinePredicateList = new ArrayList();
        for (Object currentSubmachine : submachine.getVariable().getValues()) {
            submachinePredicateList.add(new SubmachinePredicate((String) currentSubmachine));
        }

        // unio dos predicados
        submachinePredicate = PredicateUtils.anyPredicate(submachinePredicateList);
    } else {

        // qualquer valor  vlido, contanto
        // que seja uma chamada de submquina
        submachinePredicate = new SubmachineCallPredicate();
    }

    // predicado do estado de destino
    Predicate targetPredicate;

    // existem valores para o
    // estado de destino?
    if (!target.isAvailable()) {

        // para cada valor existente,
        // adiciona um predicado
        Collection targetPredicateList = new ArrayList();
        for (Object currentTarget : target.getValues()) {
            targetPredicateList.add(new TargetStatePredicate((State) currentTarget));
        }

        // unio dos predicados
        targetPredicate = PredicateUtils.anyPredicate(targetPredicateList);
    } else {

        // qualquer valor  vlido
        targetPredicate = TruePredicate.truePredicate();
    }

    // a consulta  a interseco de todos
    // os predicados disponveis
    Collection<Transition> query = CollectionUtils.select(transitions.getTransitions(), PredicateUtils
            .allPredicate(new Predicate[] { sourcePredicate, submachinePredicate, targetPredicate }));

    // conjuntos de resultados
    Set<Object> sourceResult = new HashSet<>();
    Set<Object> submachineResult = new HashSet<>();
    Set<Object> targetResult = new HashSet<>();

    // preenche os conjuntos
    for (Transition transition : query) {
        sourceResult.add(transition.getSourceState());
        submachineResult.add(transition.getSubmachineCall());
        targetResult.add(transition.getTargetState());
    }

    // preenche a varivel do
    // estado de origem
    if (source.isAvailable()) {
        source.setValues(sourceResult);
    }

    // preenche a varivel da
    // chamada de submquina
    if (submachine.getVariable().isAvailable()) {
        submachine.getVariable().setValues(submachineResult);
    }

    // preenche a varivel do
    // estado de destino
    if (target.isAvailable()) {
        target.setValues(targetResult);
    }

}

From source file:br.usp.poli.lta.cereda.aa.model.actions.ElementaryActions.java

/**
 * Consulta as transies de acordo com os parmetros informados e preenche
 * as variveis.//from  w w w.  java 2s  .  co m
 * @param source Estado de origem.
 * @param submachine Submquina a ser chamada.
 * @param target Estado de destino.
 * @param postAction Ao posterior.
 */
public void query(Variable source, SubmachineQuery submachine, Variable target, ActionQuery postAction) {

    // validaes
    Validate.notNull(source, "A varivel no pode ser nula.");
    Validate.notNull(submachine, "A varivel no pode ser nula.");
    Validate.notNull(target, "A varivel no pode ser nula.");
    Validate.notNull(postAction, "A varivel no pode ser nula.");

    // predicado da ao posterior
    Predicate postActionPredicate;

    // tratamento do nome da ao posterior
    Predicate postActionNamePredicate;

    // o nome no est disponvel, ento
    // existem valores
    if (!postAction.getName().isAvailable()) {

        // obtm dos os nomes existentes
        Collection postActionNamePredicateList = new ArrayList();
        for (Object currentPostActionName : postAction.getName().getValues()) {
            postActionNamePredicateList.add(new PostActionPredicate((String) currentPostActionName));
        }

        // unio dos predicados
        postActionNamePredicate = PredicateUtils.anyPredicate(postActionNamePredicateList);
    } else {

        // qualquer valor  vlido, contanto
        // que seja um nome de ao posterior
        postActionNamePredicate = new PostActionCallPredicate();
    }

    // tratamento dos argumentos da ao
    // posterior, se existirem
    if (postAction.hasArguments()) {

        // obtm todos os valores de todos
        // os argumentos da ao posterior
        List<Variable> postActionArguments = postAction.getArguments();
        Collection postActionArgumentsPredicateList = new ArrayList();
        Collection postActionArgumentPredicateList;

        // percorre todos os argumentos
        for (int i = 0; i < postActionArguments.size(); i++) {
            if (!postActionArguments.get(i).isAvailable()) {
                postActionArgumentPredicateList = new ArrayList();
                for (Object currentPostActionArgument : postActionArguments.get(i).getValues()) {
                    postActionArgumentPredicateList
                            .add(new PostActionCheckArgumentPredicate(i, currentPostActionArgument));
                }
                postActionArgumentsPredicateList
                        .add(PredicateUtils.anyPredicate(postActionArgumentPredicateList));
            } else {
                postActionArgumentsPredicateList.add(TruePredicate.truePredicate());
            }
        }

        // adiciona o predicado
        postActionArgumentsPredicateList.add(new PostActionCountArgumentsPredicate(postActionArguments.size()));
        postActionArgumentsPredicateList.add(postActionNamePredicate);
        postActionPredicate = PredicateUtils.allPredicate(postActionArgumentsPredicateList);
    } else {

        // no existem argumentos
        postActionPredicate = postActionNamePredicate;
    }

    // predicado do estado de origem
    Predicate sourcePredicate;

    // existem valores para o
    // estado de origem
    if (!source.isAvailable()) {

        // obtm todos os valores
        Collection sourcePredicateList = new ArrayList();
        for (Object currentSource : source.getValues()) {
            sourcePredicateList.add(new SourceStatePredicate((State) currentSource));
        }

        // unio dos predicados
        sourcePredicate = PredicateUtils.anyPredicate(sourcePredicateList);
    } else {

        // qualquer valor  vlido
        sourcePredicate = TruePredicate.truePredicate();
    }

    // predicado de chamada de submquina
    Predicate submachinePredicate;

    // existem valores de chamadas de submquinas
    if (!submachine.getVariable().isAvailable()) {

        // obtm todos os valores
        Collection submachinePredicateList = new ArrayList();
        for (Object currentSubmachine : submachine.getVariable().getValues()) {
            submachinePredicateList.add(new SubmachinePredicate((String) currentSubmachine));
        }

        // unio dos predicados
        submachinePredicate = PredicateUtils.anyPredicate(submachinePredicateList);
    } else {

        // qualquer valor  vlido, contanto
        // que seja uma chamada de submquina
        submachinePredicate = new SubmachineCallPredicate();
    }

    // predicado do estado de destino
    Predicate targetPredicate;

    // existem valores associados
    if (!target.isAvailable()) {

        // obtm todos os valores
        Collection targetPredicateList = new ArrayList();
        for (Object currentTarget : target.getValues()) {
            targetPredicateList.add(new TargetStatePredicate((State) currentTarget));
        }

        // unio dos predicados
        targetPredicate = PredicateUtils.anyPredicate(targetPredicateList);
    } else {

        // qualquer valor  vlido
        targetPredicate = TruePredicate.truePredicate();
    }

    // a consulta  a interseco de todos
    // os predicados
    Collection<Transition> query = CollectionUtils.select(transitions.getTransitions(),
            PredicateUtils.allPredicate(new Predicate[] { sourcePredicate, submachinePredicate, targetPredicate,
                    postActionPredicate }));

    // conjuntos de resultados
    Set<Object> sourceResult = new HashSet<>();
    Set<Object> submachineResult = new HashSet<>();
    Set<Object> targetResult = new HashSet<>();
    Set<Object> postActionNameResult = new HashSet<>();
    List<HashSet<Object>> postActionArgumentsResult = new ArrayList<>();

    // inicializa a lista de argumentos
    // da ao posterior, se existirem
    if (postAction.hasArguments()) {
        for (Variable argument : postAction.getArguments()) {
            postActionArgumentsResult.add(new HashSet<>());
        }
    }

    // preenche os conjuntos
    for (Transition transition : query) {
        sourceResult.add(transition.getSourceState());
        submachineResult.add(transition.getSubmachineCall());
        targetResult.add(transition.getTargetState());
        postActionNameResult.add(transition.getPostActionCall());
        if (postAction.hasArguments()) {
            for (int i = 0; i < postAction.getArguments().size(); i++) {
                postActionArgumentsResult.get(i).add(transition.getPostActionArguments()[i]);
            }
        }
    }

    // preenche o estado de origem
    if (source.isAvailable()) {
        source.setValues(sourceResult);
    }

    // preenche a chamada de submquina
    if (submachine.getVariable().isAvailable()) {
        submachine.getVariable().setValues(submachineResult);
    }

    // preenche o estado de destino
    if (target.isAvailable()) {
        target.setValues(targetResult);
    }

    // preenche o nome da ao posterior
    if (postAction.getName().isAvailable()) {
        postAction.getName().setValues(postActionNameResult);
    }

    // preenche os argumentos da ao posterior
    if (postAction.hasArguments()) {
        for (int i = 0; i < postAction.getArguments().size(); i++) {
            if (postAction.getArguments().get(i).isAvailable()) {
                postAction.getArguments().get(i).setValues(postActionArgumentsResult.get(i));
            }
        }
    }

}