package aliview.sequences;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
import org.apache.commons.lang.ArrayUtils;
import org.apache.log4j.Logger;
import aliview.NucleotideUtilities;
import aliview.sequencelist.MemoryMappedSequencesFile;
import aliview.utils.ArrayUtilities;
public class PositionsToPointerFileSequenceBases extends FileSequenceBases{
private static final Logger logger = Logger.getLogger(PositionsToPointerFileSequenceBases.class);
private static final String TEXT_FILE_BYTE_ENCODING = "ASCII";
PositionsToPointer positionsToPointer = new PositionsToPointer();
public PositionsToPointerFileSequenceBases(MemoryMappedSequencesFile sequencesFile, long startPointer){
super(sequencesFile, startPointer);
}
// TODO this is not creating a deep copy
public PositionsToPointerFileSequenceBases getCopy(){
PositionsToPointerFileSequenceBases copy = new PositionsToPointerFileSequenceBases(sequencesFile, getStartPointer());
copy.positionsToPointer = this.positionsToPointer.getCopy();
return copy;
}
public void add(PositionToPointer posToPoint){
positionsToPointer.add(posToPoint);
}
@Override
public long getEndPointer() {
return positionsToPointer.getMaxPointer();
}
@Override
public byte get(int n) {
long pos = positionsToPointer.getPointerFromPos(n);
return (byte) sequencesFile.readInFile(pos);
}
@Override
public int getLength(){
int length = positionsToPointer.getMaxPosition() + 1; // +1 since that is length
return length;
}
}