package com.constellio.sdk.load.script.utils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.constellio.model.entities.records.wrappers.RecordWrapper;
public class LinkableIdsList {
private int current = 0;
private List<String> ids = new ArrayList<>();
public LinkableIdsList() {
}
public LinkableIdsList(List<String> ids) {
this.ids.addAll(ids);
Collections.shuffle(this.ids);
}
public static LinkableIdsList forRecords(List<RecordWrapper> recordWrappers) {
List<String> ids = new ArrayList<>();
for (RecordWrapper recordWrapper : recordWrappers) {
ids.add(recordWrapper.getId());
}
return new LinkableIdsList(ids);
}
public <T extends RecordWrapper> T attach(T wrapper) {
ids.add(wrapper.getId());
return wrapper;
}
public synchronized String next() {
if (current + 1 >= ids.size()) {
current = 0;
} else {
current++;
}
return ids.get(current);
}
}