package com.ganggarrison.gmdec.dupes;
import java.util.Collections;
import java.util.List;
import org.lateralgm.resources.GmObject;
import org.lateralgm.resources.InstantiableResource;
import com.ganggarrison.gmdec.GmkSplitter;
import com.ganggarrison.gmdec.GmkSplitter.IdPreservation;
public class ResourceAccessor<T extends InstantiableResource<T, ?>> implements ItemAccessor<T> {
private List<T> resources;
public ResourceAccessor(List<T> resources) {
this.resources = resources;
}
@Override
public List<T> getItems() {
return Collections.unmodifiableList(resources);
}
@Override
public Integer getId(T item) {
int id = item.getId();
return id >= 0 ? id : null;
}
@Override
public void setId(T item, int id) {
item.setId(id);
}
@Override
public int getFirstValidId() {
return 0;
}
@Override
public void setMaxId(int id) {
// The resource lists calculate that automatically.
}
@Override
public String getItemName() {
if (resources.isEmpty()) {
return "Resource";
} else {
return resources.get(0).getClass().getSimpleName();
}
}
@Override
public boolean informAboutNewIds() {
if (resources.isEmpty()) {
return false;
} else {
if (resources.get(0) instanceof GmObject) {
return GmkSplitter.preserveIds == IdPreservation.ALL || GmkSplitter.preserveIds == IdPreservation.OBJECTS;
} else {
return GmkSplitter.preserveIds == IdPreservation.ALL;
}
}
}
}