Example usage for org.apache.commons.collections4.functors ConstantFactory ConstantFactory

List of usage examples for org.apache.commons.collections4.functors ConstantFactory ConstantFactory

Introduction

In this page you can find the example usage for org.apache.commons.collections4.functors ConstantFactory ConstantFactory.

Prototype

public ConstantFactory(final T constantToReturn) 

Source Link

Document

Constructor that performs no validation.

Usage

From source file:fr.gael.dhus.olingo.v1.map.AbstractFunctionalMap.java

@Override
public SubMapBuilder<K, V> getSubMapBuilder() {
    return new SubMapBuilder<K, V>() {

        @Override//  w  ww . j a  va  2s  .  c  o  m
        public Map<K, V> build() {
            // Creates an ExecutableExpressionTree from `filter`
            OlingoFunctionalVisitor transliterator = new ConnectionFunctionalVisitor();
            ExecutableExpressionTree eet;
            if (filter != null) {
                try {
                    eet = ExecutableExpressionTree.class.cast(filter.accept(transliterator));
                } catch (ExceptionVisitExpression | ODataApplicationException ex) {
                    throw new RuntimeException(ex);
                }
            } else {
                eet = new ExecutableExpressionTree(ExecutableExpressionTree.Node
                        .createLeave(ConstantFactory.constantFactory(Boolean.TRUE)));
            }

            Map<K, V> new_source = new HashMap<>();

            // Builds a new map from entries validated by the `eet`
            for (Entry<K, V> e : sourceMap.entrySet()) {
                if ((boolean) eet.exec(e.getValue())) {
                    if (skip > 0) {
                        skip--;
                    } else {
                        new_source.put(e.getKey(), e.getValue());
                        if (top > 0) {
                            top--;
                            if (top == 0) {
                                break;
                            }
                        }
                    }
                }
            }

            if (this.orderBy != null) {
                Comparator cmp;
                try {
                    cmp = Comparator.class.cast(orderBy.accept(transliterator));
                } catch (ExceptionVisitExpression | ODataApplicationException ex) {
                    throw new RuntimeException(ex);
                }
                new_source = new SortedMap<>(new_source, cmp);
            }

            return new_source;
        }
    };
}

From source file:fr.gael.dhus.olingo.v1.map.FunctionalMap.java

@Override
public SubMapBuilder<K, V> getSubMapBuilder() {
    return new SubMapBuilder<K, V>() {

        @Override//from   ww  w  .  jav  a  2 s  .  c  o m
        public Map<K, V> build() {
            // Creates an ExecutableExpressionTree from `filter`
            ExecutableExpressionTree eet;
            if (filter != null) {
                try {
                    eet = ExecutableExpressionTree.class.cast(filter.accept(transliterator));
                } catch (ExceptionVisitExpression | ODataApplicationException ex) {
                    throw new RuntimeException(ex);
                }
            } else {
                eet = new ExecutableExpressionTree(ExecutableExpressionTree.Node
                        .createLeave(ConstantFactory.constantFactory(Boolean.TRUE)));
            }

            Map<K, V> new_source = new HashMap<>();

            // Builds a new map from entries validated by the `eet`
            for (Entry<K, V> e : sourceMap.entrySet()) {
                if ((boolean) eet.exec(e.getValue())) {
                    if (skip > 0) {
                        skip--;
                    } else {
                        new_source.put(e.getKey(), e.getValue());
                        if (top > 0) {
                            top--;
                            if (top == 0) {
                                break;
                            }
                        }
                    }
                }
            }

            if (this.orderBy != null) {
                Comparator cmp;
                try {
                    cmp = Comparator.class.cast(orderBy.accept(transliterator));
                } catch (ExceptionVisitExpression | ODataApplicationException ex) {
                    throw new RuntimeException(ex);
                }
                new_source = new SortedMap<>(new_source, cmp);
            }

            return new_source;
        }
    };
}

From source file:fr.gael.dhus.olingo.OlingoFunctionalVisitor.java

@Override
public Object visitLiteral(LiteralExpression literal, EdmLiteral edm_literal) {
    try {//from  w ww.  j a va  2s .  co m
        // A literal is a Provider<?> (Functional Java)
        // Returns a Node<?> (Expression Tree)
        Object o = edm_literal.getType().valueOfString(edm_literal.getLiteral(), EdmLiteralKind.URI, null,
                edm_literal.getType().getDefaultType());
        return ExecutableExpressionTree.Node.createLeave(ConstantFactory.constantFactory(o));
    } catch (EdmException ex) {
        throw new RuntimeException(ex);
    }
}

From source file:fr.gael.dhus.olingo.v1.FunctionalVisitor.java

@Override
public Object visitLiteral(LiteralExpression literal, EdmLiteral edm_literal) {
    try {/* ww w  .  ja  va 2s  .  c  om*/
        // A literal is a Provider<?> (Functional Java)
        // Returns a Node<?> (Expression Tree)
        Object o = edm_literal.getType().valueOfString(edm_literal.getLiteral(), EdmLiteralKind.DEFAULT, null,
                edm_literal.getType().getDefaultType());
        return ExecutableExpressionTree.Node.createLeave(ConstantFactory.constantFactory(o));
    } catch (EdmException ex) {
        throw new RuntimeException(ex);
    }
}

From source file:fr.gael.dhus.olingo.OlingoFunctionalVisitor.java

@Override
public Object visitMethod(MethodExpression me, MethodOperator method, List<Object> params) {
    if (params.size() == 1) {
        Transformer trans = null;

        switch (method) {
        case TOLOWER:
            trans = Transformers.tolower();
            break;
        case TOUPPER:
            trans = Transformers.toupper();
            break;
        case TRIM:
            trans = Transformers.trim();
            break;
        case LENGTH:
            trans = Transformers.length();
            break;

        case YEAR:
            trans = Transformers.year();
            break;
        case MONTH:
            trans = Transformers.month();
            break;
        case DAY:
            trans = Transformers.day();/*w  ww. ja  v  a 2  s  . c o  m*/
            break;
        case HOUR:
            trans = Transformers.hour();
            break;
        case MINUTE:
            trans = Transformers.minute();
            break;
        case SECOND:
            trans = Transformers.second();
            break;

        case ROUND:
            trans = Transformers.round();
            break;
        case FLOOR:
            trans = Transformers.floor();
            break;
        case CEILING:
            trans = Transformers.ceiling();
            break;
        default:
            throw new UnsupportedOperationException("Unsupported method: " + method.toUriLiteral());
        }

        ExecutableExpressionTree.Node param = ExecutableExpressionTree.Node.class.cast(params.get(0));

        return ExecutableExpressionTree.Node.createNode(trans, param);
    } else if (params.size() == 2) {
        Transformer bi_trans = null;
        switch (method) {
        case ENDSWITH:
            bi_trans = Transformers.endswith();
            break;
        case INDEXOF:
            bi_trans = Transformers.indexof();
            break;
        case STARTSWITH:
            bi_trans = Transformers.startswith();
            break;
        case SUBSTRING:
            bi_trans = Transformers.substring();
            break;
        case SUBSTRINGOF:
            bi_trans = Transformers.substringof();
            break;
        case CONCAT:
            bi_trans = Transformers.concat();
            break;
        default:
            throw new UnsupportedOperationException("Unsupported method: " + method.toUriLiteral());
        }

        ExecutableExpressionTree.Node param1 = ExecutableExpressionTree.Node.class.cast(params.get(0));
        ExecutableExpressionTree.Node param2 = ExecutableExpressionTree.Node.class.cast(params.get(1));

        return ExecutableExpressionTree.Node.createNode(bi_trans, param1, param2);
    } else if (params.size() == 3 && method == MethodOperator.SUBSTRING) {
        Transformer bi_trans = Transformers.substring2();
        ExecutableExpressionTree.Node str = ExecutableExpressionTree.Node.class.cast(params.get(0));
        final ExecutableExpressionTree.Node intsupp1 = ExecutableExpressionTree.Node.class.cast(params.get(1));
        final ExecutableExpressionTree.Node intsupp2 = ExecutableExpressionTree.Node.class.cast(params.get(2));

        // Merges 2 nodes in One, return an array instead.
        ExecutableExpressionTree.Node n = new ExecutableExpressionTree.Node() {
            @Override
            public Factory exec(Object element) {
                Integer[] res = new Integer[2];
                res[0] = (Integer) intsupp1.exec(element);
                res[1] = (Integer) intsupp2.exec(element);
                return ConstantFactory.constantFactory(res);
            }
        };

        return ExecutableExpressionTree.Node.createNode(bi_trans, str, n);
    }
    return null;
}