@ -5,6 +5,7 @@ import com.fr.base.BaseUtils;
import com.fr.base.Parameter ;
import com.fr.base.Parameter ;
import com.fr.base.ParameterMapNameSpace ;
import com.fr.base.ParameterMapNameSpace ;
import com.fr.base.TableDataNameSpace ;
import com.fr.base.TableDataNameSpace ;
import com.fr.base.Utils ;
import com.fr.base.io.IOFile ;
import com.fr.base.io.IOFile ;
import com.fr.data.TableDataSource ;
import com.fr.data.TableDataSource ;
import com.fr.design.actions.UpdateAction ;
import com.fr.design.actions.UpdateAction ;
@ -39,6 +40,7 @@ import com.fr.parser.BlockIntervalLiteral;
import com.fr.parser.ColumnRowRangeInPage ;
import com.fr.parser.ColumnRowRangeInPage ;
import com.fr.parser.FRLexer ;
import com.fr.parser.FRLexer ;
import com.fr.parser.FRParser ;
import com.fr.parser.FRParser ;
import com.fr.parser.NumberLiteral ;
import com.fr.parser.SheetIntervalLiteral ;
import com.fr.parser.SheetIntervalLiteral ;
import com.fr.report.core.namespace.SimpleCellValueNameSpace ;
import com.fr.report.core.namespace.SimpleCellValueNameSpace ;
import com.fr.script.Calculator ;
import com.fr.script.Calculator ;
@ -98,6 +100,7 @@ import java.io.InputStream;
import java.io.InputStreamReader ;
import java.io.InputStreamReader ;
import java.io.Reader ;
import java.io.Reader ;
import java.io.StringReader ;
import java.io.StringReader ;
import java.text.NumberFormat ;
import java.util.ArrayList ;
import java.util.ArrayList ;
import java.util.Collections ;
import java.util.Collections ;
import java.util.Comparator ;
import java.util.Comparator ;
@ -817,8 +820,24 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula {
if ( entry . getValue ( ) . toString ( ) . startsWith ( "[" ) & & entry . getValue ( ) . toString ( ) . endsWith ( "]" ) ) {
if ( entry . getValue ( ) . toString ( ) . startsWith ( "[" ) & & entry . getValue ( ) . toString ( ) . endsWith ( "]" ) ) {
Expression parse = calculator . parse ( entry . getValue ( ) ) ;
Expression parse = calculator . parse ( entry . getValue ( ) ) ;
ArrayExpression arrayExpression = ( ArrayExpression ) parse . getConditionalExpression ( ) ;
ArrayExpression arrayExpression = ( ArrayExpression ) parse . getConditionalExpression ( ) ;
FArray < Node > fArray = new FArray < > ( arrayExpression . getArrays ( ) ) ;
Node [ ] arrays = arrayExpression . getArrays ( ) ;
List < Object > arrayList = new ArrayList < > ( ) ;
for ( Node array : arrays ) {
if ( array instanceof NumberLiteral ) {
arrayList . add ( NumberFormat . getInstance ( ) . parse ( array . toString ( ) ) ) ;
} else {
arrayList . add ( array ) ;
}
}
FArray < Object > fArray = new FArray < > ( arrayList ) ;
parameterMap . put ( entry . getKey ( ) , fArray ) ;
parameterMap . put ( entry . getKey ( ) , fArray ) ;
} else if ( Utils . isNumeric ( entry . getValue ( ) . toString ( ) ) ) {
try {
Number number = NumberFormat . getInstance ( ) . parse ( entry . getValue ( ) . toString ( ) ) ;
parameterMap . put ( entry . getKey ( ) , number ) ;
} catch ( Exception e ) {
FineLoggerFactory . getLogger ( ) . warn ( "" , e ) ;
}
}
}
}
}
} catch ( Exception e ) {
} catch ( Exception e ) {
@ -838,7 +857,11 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula {
public void hunter4Tiny ( Tiny tiny ) {
public void hunter4Tiny ( Tiny tiny ) {
String statement = tiny . getStatement ( ) ;
String statement = tiny . getStatement ( ) ;
if ( StringUtils . isNotBlank ( statement ) & & statement . startsWith ( ScriptConstants . DETAIL_TAG ) ) {
if ( StringUtils . isNotBlank ( statement ) & & statement . startsWith ( ScriptConstants . DETAIL_TAG ) ) {
parameterList . add ( new Parameter ( statement . substring ( 1 ) ) ) ;
if ( statement . startsWith ( ScriptConstants . SUMMARY_TAG ) ) {
parameterList . add ( new Parameter ( statement ) ) ;
} else {
parameterList . add ( new Parameter ( statement . substring ( 1 ) ) ) ;
}
} else if ( tiny . getClass ( ) = = ColumnRowRange . class | |
} else if ( tiny . getClass ( ) = = ColumnRowRange . class | |
tiny . getClass ( ) = = SheetIntervalLiteral . class | | tiny . getClass ( ) = = BlockIntervalLiteral . class ) {
tiny . getClass ( ) = = SheetIntervalLiteral . class | | tiny . getClass ( ) = = BlockIntervalLiteral . class ) {
parameterList . add ( new Parameter ( tiny . toString ( ) ) ) ;
parameterList . add ( new Parameter ( tiny . toString ( ) ) ) ;