@Override public RecordIteratorImpl readAllRecords(int limit) throws DatastoreException { return new RecordIteratorImpl(this, HEADER_SIZE, limit); }
@Override public boolean hasNext() { if(nextLoadedRecord == null) { loadNextRecord(); } return nextLoadedRecord != null && (foundRecords <= limit || limit == -1); }
private void loadRecords() throws JasDBStorageException { for(RecordIteratorImpl recordIterator = writer.readAllRecords(); recordIterator.hasNext(); ) { RecordResultImpl recordResult = recordIterator.next(); Entity entity = SimpleEntity.fromStream(recordResult.getStream()); String type = entity.getValue(Constants.META_TYPE).toString(); if(type.equals(Constants.INSTANCE_TYPE)) { InstanceMeta instance = InstanceMeta.fromEntity(entity); instanceMetaMap.put(instance.getInstanceId(), new MetaWrapper<>(instance, recordResult.getRecordPointer())); } else if(type.equals(Constants.BAG_TYPE)) { BagMeta bagMeta = BagMeta.fromEntity(entity); String bagId = getBagKey(bagMeta.getInstanceId(), bagMeta.getName()); bagMetaMap.put(bagId, new MetaWrapper<>(bagMeta, recordResult.getRecordPointer())); } else if(metadataProviders.containsKey(type)) { metadataProviders.get(type).registerMetadataEntity(entity, recordResult.getRecordPointer()); } else { throw new JasDBStorageException("Unable to load metadata record: " + entity.toString() + " unknown type: " + type); } } }
@Override public RecordResultImpl next() { if(nextLoadedRecord == null) { loadNextRecord(); } RecordResultImpl loadedRecord = nextLoadedRecord; nextLoadedRecord = null; return loadedRecord; }