@Override public E get(long index, RandomAccessFile indexFile, RandomAccessFile dataFile, Codec<E> codec, IndexStrategy indexStrategy) throws IOException, ClassNotFoundException { long elementsCount = indexStrategy.getSize(indexFile); if(index >= 0 && index < elementsCount) { long offset = indexStrategy.getOffset(indexFile, index); if(offset < 0) { return null; } return internalReadElement(dataFile, offset, codec); } return null; }
@Override public void add(E element, RandomAccessFile indexFile, RandomAccessFile dataFile, Codec<E> codec, IndexStrategy indexStrategy) throws IOException { long elementsCount = indexStrategy.getSize(indexFile); long offset = dataFile.length(); internalWriteElement(dataFile, offset, elementsCount, element, codec); indexStrategy.setOffset(indexFile, elementsCount, offset); }
private void setFileHeader(FileHeader fileHeader) { lock.lock(); try { MetaData metaData = fileHeader.getMetaData(); if(metaData.isSparse()) { dataStrategy = new SparseDataStrategy<>(); } else { dataStrategy = new DefaultDataStrategy<>(); } this.fileHeader = fileHeader; } finally { lock.unlock(); } } }
private void setFileHeader(FileHeader fileHeader) { lock.lock(); try { MetaData metaData = fileHeader.getMetaData(); if(metaData.isSparse()) { dataStrategy = new SparseDataStrategy<>(); } else { dataStrategy = new DefaultDataStrategy<>(); } this.fileHeader = fileHeader; } finally { lock.unlock(); } } }
@Override public void add(E element, RandomAccessFile indexFile, RandomAccessFile dataFile, Codec<E> codec, IndexStrategy indexStrategy) throws IOException { long elementsCount = indexStrategy.getSize(indexFile); long offset = dataFile.length(); internalWriteElement(dataFile, offset, elementsCount, element, codec); indexStrategy.setOffset(indexFile, elementsCount, offset); }
private void setFileHeader(FileHeader fileHeader) { MetaData metaData = fileHeader.getMetaData(); if(metaData.isSparse()) { dataStrategy = new SparseDataStrategy<>(); } else { dataStrategy = new DefaultDataStrategy<>(); } this.fileHeader = fileHeader; }
@Override public E get(long index, RandomAccessFile indexFile, RandomAccessFile dataFile, Codec<E> codec, IndexStrategy indexStrategy) throws IOException, ClassNotFoundException { long elementsCount = indexStrategy.getSize(indexFile); if(index >= 0 && index < elementsCount) { long offset = indexStrategy.getOffset(indexFile, index); if(offset < 0) { return null; } return internalReadElement(dataFile, offset, codec); } return null; }
offset = offset + internalWriteElement(dataFile, offset, elementsCount + index, element, codec) + DATA_LENGTH_SIZE + INDEX_SIZE; index++;
private void setFileHeader(FileHeader fileHeader) { MetaData metaData = fileHeader.getMetaData(); if(metaData.isSparse()) { dataStrategy = new SparseDataStrategy<>(); } else { dataStrategy = new DefaultDataStrategy<>(); } this.fileHeader = fileHeader; }
offset = offset + internalWriteElement(dataFile, offset, elementsCount + index, element, codec) + DATA_LENGTH_SIZE + INDEX_SIZE; index++;
@Override public boolean set(long index, E element, RandomAccessFile indexFile, RandomAccessFile dataFile, Codec<E> codec, IndexStrategy indexStrategy) throws IOException, UnsupportedOperationException { long offset = indexStrategy.getOffset(indexFile, index); if(!supportingOverwrite && offset >= 0) { return false; } if(element != null) { offset = dataFile.length(); internalWriteElement(dataFile, offset, index, element, codec); indexStrategy.setOffset(indexFile, index, offset); return true; } else { // set offset to -1 to signal a null value. indexStrategy.setOffset(indexFile, index, -1); return true; } }
@Override public boolean set(long index, E element, RandomAccessFile indexFile, RandomAccessFile dataFile, Codec<E> codec, IndexStrategy indexStrategy) throws IOException, UnsupportedOperationException { long offset = indexStrategy.getOffset(indexFile, index); if(!supportingOverwrite && offset >= 0) { return false; } if(element != null) { offset = dataFile.length(); internalWriteElement(dataFile, offset, index, element, codec); indexStrategy.setOffset(indexFile, index, offset); return true; } else { // set offset to -1 to signal a null value. indexStrategy.setOffset(indexFile, index, -1); return true; } }