// @topic S-0314-14-01-40 Java Memento Design pattern
// @brief class AccountCaretaker holds a collection of preserved states

package memento;

import java.util.ArrayList;

public class AccountCaretaker {

    //---------------------------------
    // data attributes
    //---------------------------------
    ArrayList< AccountMemento > mementos = new ArrayList<>();
    
    //---------------------------------
    // operations
    //---------------------------------
    public void store( AccountMemento memento ) {
        // accumulate states:
        mementos.add( memento );
    }
    
    public void undo( CheckingAccount account ) {
        // loop in reverse order
        for ( int idx = mementos.size(); idx > 0; --idx  ) {
            account.restoreMemento( mementos.get( idx - 1 ) );
        }
        
        // dispose of restored states:
        mementos.clear();
    }
    
}//class AccountCaretaker