/* * Copyright 2013 Guidewire Software, Inc. */ package gw.internal.gosu.parser.expressions; import gw.internal.gosu.parser.Expression; import java.util.ArrayList; import java.util.Map; import java.util.List; import gw.lang.parser.expressions.IMapInitializerExpression; import gw.lang.parser.IExpression; /** * @author cgross */ public class MapInitializerExpression extends Expression implements IMapInitializerExpression { private ArrayList<IExpression> _keys; private ArrayList<IExpression> _values; public Object evaluate() { return null; //do nothing } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append( "{" ); if( _keys != null ) { for( int i = 0; i < _keys.size(); i++ ) { IExpression key = _keys.get( i ); sb.append( key.toString() ); sb.append( "->" ); IExpression value = _values.get( i ); sb.append( value.toString() ); if( i < _keys.size() - 1 ) { sb.append( ", " ); } } } sb.append( "}" ); return sb.toString(); } public void initialize( Object newObject ) { if( _keys != null ) { Map map = (Map)newObject; for( int i = 0; i < _keys.size(); i++ ) { IExpression keyExpr = _keys.get( i ); Object key = keyExpr.evaluate(); IExpression valueExpr = _values.get( i ); Object value = valueExpr.evaluate(); map.put( key, value ); } } } public void add( Expression key, Expression value ) { if( _keys == null ) { _keys = new ArrayList<IExpression>(); _values = new ArrayList<IExpression>(); } _keys.add( key ); _values.add( value ); } public void addFirst( Expression key, Expression value ) { if( _keys == null ) { _keys = new ArrayList<IExpression>(); _values = new ArrayList<IExpression>(); } _keys.add(0, key ); _values.add(0, value ); } public List<IExpression> getKeys() { return _keys; } public List<IExpression> getValues() { return _values; } }