You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

99 lines
1.9 KiB
Java

package eu.dnetlib.enabling.resultset;
import java.util.List;
import com.google.common.collect.Lists;
/**
* Resultset backing implementation.
*
* @author marko
*
*/
public class LocalResultSetImpl extends AbstractObservableResultset implements ResultSet {
/**
* rsId.
*/
private String identifier;
/**
* this listener will provide the data to this local resultset by listening to events.
*/
private ResultSetListener listener;
/**
* Construct a new local ResultSet which pulls data from the listener. If the listener implements ResultSetAware, it
* will be injected with this instance.
*
* @param listener
* a resultset listener
*/
public LocalResultSetImpl(final ResultSetListener listener) {
super();
this.listener = listener;
if (listener instanceof ResultSetAware)
((ResultSetAware) listener).setResultSet(this);
}
/**
* {@inheritDoc}
*
* @see eu.dnetlib.enabling.resultset.ResultSet#getNumberOfResults()
*/
@Override
public int getNumberOfResults() {
return listener.getSize();
}
/**
* {@inheritDoc}
*
* @see eu.dnetlib.enabling.resultset.ResultSet#getResults(int, int)
*/
@Override
public List<String> getResults(final int fromPosition, final int toPosition) {
int toPos = toPosition;
int fromPos = fromPosition;
if (!isOpen()) {
final int size = getNumberOfResults();
if (size == 0)
return Lists.newArrayList();
if (fromPos > size)
return Lists.newArrayList();
if (toPos > size)
toPos = size;
}
if (fromPos < 1)
fromPos = 1;
if (toPos < fromPos)
toPos = fromPos;
return listener.getResult(fromPos, toPos);
}
@Override
public String getIdentifier() {
return identifier;
}
@Override
public void setIdentifier(final String identifier) {
this.identifier = identifier;
}
public ResultSetListener getListener() {
return listener;
}
public void setListener(final ResultSetListener listener) {
this.listener = listener;
}
}