InputStreamVolumeManager.java
package com.github.junrar.volume;
import com.github.junrar.Archive;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class InputStreamVolumeManager implements VolumeManager {
private final Map<Integer, InputStream> streams = new HashMap<>();
public InputStreamVolumeManager(final InputStream is) {
streams.put(1, is);
}
public InputStreamVolumeManager(List<InputStream> streams) {
for (int i = 0; i < streams.size(); i++) {
this.streams.put(i + 1, streams.get(i));
}
}
@Override
public Volume nextVolume(final Archive archive, final Volume lastVolume) {
if (lastVolume == null) return new InputStreamVolume(archive, streams.get(1), 1);
InputStreamVolume lastStreamVolume = (InputStreamVolume) lastVolume;
int nextPosition = lastStreamVolume.getPosition() + 1;
InputStream next = streams.get(nextPosition);
if (next != null) return new InputStreamVolume(archive, next, nextPosition);
return null;
}
}