/* File: DataSetCache.java * Copyright (C) 2002-2003 The University of Iowa * Created by: Jeremy Faden * Jessica Swanner * Edward E. West * * This file is part of the das2 library. * * das2 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; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.das2.dataset; import org.das2.datum.CacheTag; import org.das2.DasApplication; /** * * @author jbf */ public class LimitCountDataSetCache extends AbstractDataSetCache { protected Entry[] buffer; /** Creates a new instance of StandardDataStreamCache */ public LimitCountDataSetCache( int count ) { buffer= new Entry[count]; } public void store( DataSetDescriptor dsd, CacheTag cacheTag, DataSet data ) { Entry entry= new Entry( dsd, cacheTag, data ); int iMin=-1; for (int i=buffer.length-1; i>=0; i--) { if (buffer[i]==null) { iMin= i; } } if ( iMin==-1 ) { long oldestAccess= Long.MAX_VALUE; int oldest= -1; for (int i=buffer.length-1; i>=0; i--) { if ( buffer[i].lastAccess < oldestAccess ) { oldest= i; oldestAccess= buffer[i].lastAccess; } } iMin= oldest; } buffer[iMin]= entry; }; private int findStored( DataSetDescriptor dsd, CacheTag cacheTag ) { Entry entry= new Entry( dsd, cacheTag, null ); int iHit=-1; for (int i=0; i