// $HeadURL$
// $Id$
//
// Copyright © 2010 by the President and Fellows of Harvard College.
//
// Screensaver is an open-source project developed by the ICCB-L and NSRB labs
// at Harvard Medical School. This software is distributed under the terms of
// the GNU General Public License.
package edu.harvard.med.screensaver.ui.arch.searchresults;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import com.google.common.base.Function;
import edu.harvard.med.screensaver.io.DataExporter;
public class DataExporterAdapter<F,T> implements DataExporter<F>
{
private DataExporter<T> _dataExporter;
private Function<F,T> _adapterFunction;
public DataExporterAdapter(DataExporter<T> dataExporter,
Function<F,T> adapterFunction)
{
_dataExporter = dataExporter;
_adapterFunction = adapterFunction;
}
@Override
public InputStream export(final Iterator<F> fromIterator) throws IOException
{
Iterator<T> toIterator = new Iterator<T>() {
@Override
public boolean hasNext()
{
return fromIterator.hasNext();
}
@Override
public T next()
{
return _adapterFunction.apply(fromIterator.next());
}
@Override
public void remove()
{
throw new UnsupportedOperationException();
}
};
return _dataExporter.export(toIterator);
}
@Override
public String getFileName()
{
return _dataExporter.getFileName();
}
@Override
public String getFormatName()
{
return _dataExporter.getFormatName();
}
@Override
public String getMimeType()
{
return _dataExporter.getMimeType();
}
}