@Override public void clear() { for (Index i : index) { storage.removeItem(getId(i.getId())); } index.clear(); updateIndex(); }
@Override public void delete(long key) { for (Index i : index) { if (i.getId() == key) { index.remove(i); storage.removeItem(getId(key)); updateIndex(); break; } } }
private void updateIndex() { Collections.sort(index, comparator); DataOutput dataOutput = new DataOutput(); dataOutput.writeInt(index.size()); for (Index i : index) { dataOutput.writeLong(i.getId()); dataOutput.writeLong(i.getSortKey()); } storage.setItem("list_" + prefix + "_index", toBase64(dataOutput.toByteArray())); }
@Override public void updateOrAdd(ListEngineRecord record) { // Update Index for (Index i : index) { if (i.getId() == record.getKey()) { index.remove(i); break; } } index.add(new Index(record.getKey(), record.getOrder())); updateIndex(); // Save record storage.setItem(getId(record.getKey()), toBase64(record.getData())); }
@Override public ListEngineRecord loadItem(long key) { Index indexValue = null; for (Index i : index) { if (i.getId() == key) { indexValue = i; break; } } if (indexValue == null) { return null; } String item = storage.getItem(getId(key)); if (item != null) { byte[] res = fromBase64(item); return new ListEngineRecord(key, indexValue.getSortKey(), null, res); } return null; }