package rabbitescape.engine.config.upgrades; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import rabbitescape.engine.config.Config; import rabbitescape.engine.config.IConfigStorage; import rabbitescape.engine.util.Util; class TrackingConfigStorage implements IConfigStorage { public final List<String> log; private final Map<String, String> existingConfig; public TrackingConfigStorage( String... keysAndValues ) { log = new ArrayList<String>(); existingConfig = new HashMap<String, String>(); Util.reAssert( keysAndValues.length % 2 == 0, "Must have a value for each key" ); for ( int i = 0; i < keysAndValues.length; i += 2 ) { existingConfig.put( keysAndValues[i], keysAndValues[i+1] ); } } @Override public void set( String key, String value ) { log.add( String.format( "set( %s, %s )", key, value ) ); existingConfig.put( key, value ); } @Override public String get( String key ) { String value = existingConfig.get( key ); log.add( String.format( "get( %s ) = %s", key, value ) ); return value; } @Override public void save( Config config ) { log.add( "save" ); } }