You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Henri Biestro (JIRA)" <ji...@apache.org> on 2012/07/17 15:00:46 UTC
[jira] [Resolved] (JEXL-139) Loop over an iterable, evalaute and
expression per row, and return concatenated results
[ https://issues.apache.org/jira/browse/JEXL-139?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Henri Biestro resolved JEXL-139.
--------------------------------
Resolution: Incomplete
The submitted code is not an enhancement request; it is first and foremost lacking a goal/use-case.
If you want to resubmit/reopen it, please describe in words what this is supposed to achieve and how this would benefit other users.
As is, this is only an example of using Jexl in a specific way (that probably could benefit from Jxlt expressions / templates).
> Loop over an iterable, evalaute and expression per row, and return concatenated results
> ---------------------------------------------------------------------------------------
>
> Key: JEXL-139
> URL: https://issues.apache.org/jira/browse/JEXL-139
> Project: Commons JEXL
> Issue Type: New Feature
> Reporter: Manoj Mokashi
> Priority: Minor
> Original Estimate: 24h
> Remaining Estimate: 24h
>
> Code below.
> /**
> * Iterates over the iterable represented by iterExpression
> * For each row, evaluate the row-expression
> * Return a string of all row-results, concatenated by separator.
> * The current current row is indicated by $$__EVAL_ROW and the current index by $$__EVAL_ROWNUM
> * @param enumExpression
> * @param expression
> * @return
> */
> public String evalExprOverIter( String iterExpression, String rowExpression, String separator){
> Object objIter = evalExpr( iterExpression);
> if( objIter == null ){ return "";}
> Iterable iterabl = null;
> if( objIter.getClass().isArray()){
> iterabl = Arrays.asList( (Object[]) objIter );
> }
> else if( objIter instanceof Map){
> iterabl = ((Map) objIter).entrySet();
> }
> else {
> iterabl = (Iterable) objIter;
> }
> Iterator iter = iterabl.iterator();
> StringBuilder sbld = new StringBuilder();
> int rownum = 0;
> while( iter.hasNext()){
> Object row = iter.next();
> setVar( "$$__EVAL_ROW", row );
> setVar( "$$__EVAL_ROWNUM", rownum );
> sbld.append( evalExpr( rowExpression) );
> sbld.append( separator );
> rownum++;
> }
> // remove the temp variables we used.
> remVar( "$$__EVAL_ROWNUM" );
> remVar( "$$__EVAL_ROW" );
> return sbld.deleteCharAt( sbld.length()-1).toString();
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira