/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.xoai.tests.helpers.stubs;
import com.lyncode.xoai.dataprovider.core.ListSetsResult;
import com.lyncode.xoai.dataprovider.core.Set;
import com.lyncode.xoai.dataprovider.services.api.SetRepository;
import java.util.ArrayList;
import java.util.List;
import static java.lang.Math.min;
import static org.apache.commons.lang.RandomStringUtils.randomAlphabetic;
public class StubbedSetRepository implements SetRepository {
private List<Set> sets = new ArrayList<Set>();
private boolean supports = false;
@Override
public boolean supportSets() {
return supports;
}
@Override
public ListSetsResult retrieveSets(int offset, int length) {
if (offset > sets.size()) return new ListSetsResult(false, new ArrayList<Set>(), sets.size());
return new ListSetsResult(offset+length < sets.size(), sets.subList(offset, min(offset + length, sets.size())), sets.size());
}
@Override
public boolean exists(String setSpec) {
for (Set set : sets)
if (set.getSetSpec().equals(setSpec))
return true;
return false;
}
public StubbedSetRepository doesSupportSets() {
this.supports = true;
return this;
}
public StubbedSetRepository doesNotSupportSets() {
this.supports = false;
return this;
}
public StubbedSetRepository withSet(String name, String spec) {
this.sets.add(new Set(spec, name));
return this;
}
public StubbedSetRepository withRandomlyGeneratedSets(int number) {
for (int i=0;i<number;i++)
this.sets.add(new Set(randomAlphabetic(10), randomAlphabetic(10)));
return this;
}
public void clear() {
this.sets.clear();
}
}