package org.sculptor.simplecqrs.command.repositoryimpl; import static org.sculptor.framework.accessapi.ConditionalCriteriaBuilder.criteriaFor; import static org.sculptor.simplecqrs.command.domain.InventoryItemSnapshotProperties.itemId; import static org.sculptor.simplecqrs.command.domain.InventoryItemSnapshotProperties.version; import java.util.List; import org.sculptor.framework.accessapi.ConditionalCriteria; import org.sculptor.framework.domain.PagedResult; import org.sculptor.framework.domain.PagingParameter; import org.sculptor.simplecqrs.command.domain.InventoryItemSnapshot; import org.springframework.stereotype.Repository; /** * Repository implementation for InventoryItemSnapshot */ @Repository("inventoryItemSnapshotRepository") public class InventoryItemSnapshotRepositoryImpl extends InventoryItemSnapshotRepositoryBase { public InventoryItemSnapshotRepositoryImpl() { } @Override public InventoryItemSnapshot getLatestSnapshot(String itemId) { List<ConditionalCriteria> criteria = criteriaFor(InventoryItemSnapshot.class).withProperty(itemId()).eq(itemId) .orderBy(version()).descending().build(); PagingParameter pagingParameter = PagingParameter.rowAccess(0, 1); PagedResult<InventoryItemSnapshot> result = findByCondition(criteria, pagingParameter); if (result.getValues().isEmpty()) { return null; } else { return result.getValues().get(0); } } }