You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Manoj Mokashi (JIRA)" <ji...@apache.org> on 2012/07/17 12:23:33 UTC

[jira] [Created] (JEXL-139) Loop over an iterable, evalaute and expression per row, and return concatenated results

Manoj Mokashi created JEXL-139:
----------------------------------

             Summary: 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


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

        

[jira] [Resolved] (JEXL-139) Loop over an iterable, evalaute and expression per row, and return concatenated results

Posted by "Henri Biestro (JIRA)" <ji...@apache.org>.
     [ 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