/************************************************************************** /* This class implements a round-robin array /* /* Copyright (c) 2006 by Bernhard Bablok (mail@bablokb.de) /* /* This program is free software; you can redistribute it and/or modify /* it under the terms of the GNU General Public License as published /* by the Free Software Foundation; either version 2 of the License or /* (at your option) any later version. /* /* This program is distributed in the hope that it will be useful, but /* WITHOUT ANY WARRANTY; without even the implied warranty of /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /* GNU General Public License for more details. /* /* You should have received a copy of the GNU General Public License /* along with this program; see the file COPYING. If not, write to /* the Free Software Foundation Inc., 59 Temple Place - Suite 330, /* Boston, MA 02111-1307 USA /**************************************************************************/ /** This class implements a round-robin array. @version $Revision: 1.1 $ @author $Author: bablokb $ */ public class RRArray { ////////////////////////////////////////////////////////////////////////////// /** Current index. */ private int iCurrentIndex; /** Array of Objects. */ private Object[] iArray; ////////////////////////////////////////////////////////////////////////////// /** Constructor. */ public RRArray(Object[] array) { iArray = array; } ////////////////////////////////////////////////////////////////////////////// /** Return current object. */ public synchronized Object getCurrent() { if (iArray != null) { return iArray[iCurrentIndex]; } else { throw new IllegalStateException(); } } ////////////////////////////////////////////////////////////////////////////// /** Return next object. */ public synchronized Object getNext() { if (iArray != null) { if (iCurrentIndex < iArray.length-1) { iCurrentIndex++; } else { iCurrentIndex=0; } return iArray[iCurrentIndex]; } else { throw new IllegalStateException(); } } ////////////////////////////////////////////////////////////////////////////// /** Return previous object. */ public synchronized Object getPrev() { if (iArray != null) { if (iCurrentIndex > 0) { iCurrentIndex--; } else { iCurrentIndex=iArray.length-1; } return iArray[iCurrentIndex]; } else { throw new IllegalStateException(); } } }