package com.querydsl.core.support;
import java.util.List;
import javax.annotation.Nullable;
import com.mysema.commons.lang.CloseableIterator;
import com.mysema.commons.lang.IteratorAdapter;
import com.querydsl.core.Fetchable;
import com.querydsl.core.NonUniqueResultException;
import com.querydsl.core.QueryModifiers;
import com.querydsl.core.QueryResults;
public class DummyFetchable<T> implements Fetchable<T> {
private final List<T> results;
public DummyFetchable(List<T> results) {
this.results = results;
}
@Override
public CloseableIterator<T> iterate() {
return new IteratorAdapter<T>(results.iterator());
}
@Override
public List<T> fetch() {
return results;
}
@Nullable
@Override
public T fetchFirst() {
return results.isEmpty() ? null : results.get(0);
}
@Nullable
@Override
public T fetchOne() {
if (results.size() > 1) {
throw new NonUniqueResultException();
} else if (results.isEmpty()) {
return null;
} else {
return results.get(0);
}
}
@Override
public QueryResults<T> fetchResults() {
return new QueryResults<T>(results, QueryModifiers.EMPTY, results.size());
}
@Override
public long fetchCount() {
return results.size();
}
}