List of usage examples for org.apache.commons.collections4.functors ConstantFactory ConstantFactory
public ConstantFactory(final T constantToReturn)
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; }