Skip to content

Commit

Permalink
Added limiting the values returned to the amount requested [#22]
Browse files Browse the repository at this point in the history
  • Loading branch information
mcpierce committed Dec 20, 2024
1 parent 97edf9c commit 5ded03f
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,13 @@ public abstract class AbstractMarvelScrapingAction<T> extends AbstractScrapingAc
@Getter @Setter private String privateKey;

protected boolean isDone(final BaseMarvelResponse<?> response) {
return ((response.getData().getLimit() + response.getData().getOffset())
+ response.getData().getCount())
>= response.getData().getTotal();
final int current =
((response.getData().getLimit() + response.getData().getOffset())
+ response.getData().getCount());
final Integer total = response.getData().getTotal();
final boolean result = total <= current;
log.trace("current={} total={} result={}", current, total, result);
return result;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public class MarvelGetVolumesAction extends AbstractMarvelScrapingAction<List<Vo
// https://gateway.marvel.com/v1/public/series?titleStartsWith=SERIES&ts=TIMESTAMP&apikey=APIKEY&hash=KEY

@Getter @Setter private String series;
@Getter @Setter private Integer maxRecords;
@Getter @Setter private Integer maxRecords = Integer.MAX_VALUE;

@Override
public List<VolumeMetadata> execute() throws MetadataException {
Expand Down Expand Up @@ -80,26 +80,33 @@ public List<VolumeMetadata> execute() throws MetadataException {
.getResults()
.forEach(
volume -> {
log.trace(
"Processing volume record: {} name={}", volume.getId(), volume.getTitle());
final VolumeMetadata entry = new VolumeMetadata();
entry.setId(volume.getId());
entry.setPublisher(PUBLISHER_NAME);
final SeriesNameAdaptor.SeriesDetail seriesDetails =
SeriesNameAdaptor.getInstance().execute(volume.getTitle());
entry.setName(seriesDetails.getName());
entry.setStartYear(seriesDetails.getStartYear());
entry.setIssueCount(volume.getComics().getAvailable());
entry.setImageURL(
String.format(
"%s.%s",
volume.getThumbnail().getPath(), volume.getThumbnail().getExtension()));
result.add(entry);
if (canAddMoreResult(result)) {
log.trace(
"Processing volume record: {} name={}", volume.getId(), volume.getTitle());
final VolumeMetadata entry = new VolumeMetadata();
entry.setId(volume.getId());
entry.setPublisher(PUBLISHER_NAME);
final SeriesNameAdaptor.SeriesDetail seriesDetails =
SeriesNameAdaptor.getInstance().execute(volume.getTitle());
entry.setName(seriesDetails.getName());
entry.setStartYear(seriesDetails.getStartYear());
entry.setIssueCount(volume.getComics().getAvailable());
entry.setImageURL(
String.format(
"%s.%s",
volume.getThumbnail().getPath(), volume.getThumbnail().getExtension()));
result.add(entry);
}
});
done = isDone(response);
done = !canAddMoreResult(result) || isDone(response);
}

log.debug("Returning {} volume(s)", result.size());
return result;
}

private boolean canAddMoreResult(final List<VolumeMetadata> result) {
log.trace("Checking that {} is less than {}", result.size(), this.maxRecords);
return result.size() < this.maxRecords;
}
}

Large diffs are not rendered by default.

0 comments on commit 5ded03f

Please sign in to comment.