UndoBuffer.java

/*
 * Copyright (c) 2019 Martin Davis
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * and Eclipse Distribution License v. 1.0 which accompanies this distribution.
 * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v20.html
 * and the Eclipse Distribution License is available at
 *
 * http://www.eclipse.org/org/documents/edl-v10.php.
 */
package org.locationtech.jtstest.testbuilder.model;

import java.util.Stack;

import org.locationtech.jts.geom.Geometry;

public class UndoBuffer {

  Stack<Geometry> buffer = new Stack<Geometry>();
  
  public void save(Geometry g) {
    if (g == null) return;
    buffer.push(g);
  }

  public boolean isEmpty() {
    return buffer.isEmpty();
  }
  
  public Geometry peek() {
    return buffer.peek();
  }
  
  public Geometry pop() {
    if (buffer.isEmpty()) return null;
    return buffer.pop();
  }
  
  /**
   * Pops the buffer if the top geometry is teh 
   * same as the given geometry.
   * 
   * @param geometry
   */
  public void pop(Geometry geometry) {
    if (isEmpty()) return;
    if (peek() == geometry) {
      pop();
    }
  }
  
  public void clear() {
    buffer.clear();
  }


}