package org.gbif.occurrence.ws.client.mock;
import org.gbif.api.model.occurrence.Occurrence;
import org.gbif.api.model.occurrence.VerbatimOccurrence;
import org.gbif.api.service.occurrence.OccurrenceService;
import org.gbif.api.vocabulary.BasisOfRecord;
import org.gbif.api.vocabulary.Kingdom;
import org.gbif.dwc.terms.DwcTerm;
import org.gbif.dwc.terms.Term;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;
public class OccurrencePersistenceMockService implements OccurrenceService {
protected static final List<UUID> DATASETS = Lists.newArrayList();
private static final String UUID_PREFIX = "111aaa11-0000-1111-2222-f5f5f5d8888";
static {
for (int i = 0; i < 10; i++) {
DATASETS.add(UUID.fromString(UUID_PREFIX + i));
}
}
@Override
public Occurrence get(Integer key) {
if (key == null || key < 1 || key >= 1000000) {
return null;
}
Occurrence occ = new Occurrence();
occ.setKey(key);
occ.setDatasetKey(DATASETS.get(key % 10));
int ord = key % BasisOfRecord.values().length;
occ.setBasisOfRecord(BasisOfRecord.values()[ord]);
occ.setYear(1800 + (key % 200));
occ.setElevation(key % 2000d);
Map<Term, String> fields = occ.getVerbatimFields();
fields.put(DwcTerm.catalogNumber, "cat-" + key);
occ.setVerbatimFields(fields);
occ.setMonth(1 + (key % 12));
ord = key % Kingdom.values().length;
Kingdom k = Kingdom.values()[ord];
occ.setKingdomKey(k.nubUsageID());
occ.setKingdom(StringUtils.capitalize(k.name().toLowerCase()));
return occ;
}
@Override
public VerbatimOccurrence getVerbatim(Integer key) {
return new VerbatimOccurrence();
}
@Override
public String getFragment(int i) {
return "<record>mock parsing</record>";
}
}