package net.eusashead.bjugquerydsl.controller; import net.eusashead.bjugquerydsl.data.entity.QStockKeepingUnit; import net.eusashead.bjugquerydsl.data.entity.StockKeepingUnit; import net.eusashead.bjugquerydsl.data.repository.StockKeepingUnitRepository; import net.eusashead.bjugquerydsl.hateoas.HalPageResponseEntityBuilder; import net.eusashead.bjugquerydsl.hateoas.HalResponseEntityBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import com.theoryinpractise.halbuilder.api.ReadableRepresentation; @Controller @RequestMapping(value="/sku") public class SkuController { /** * Repository for handling SKUs */ @Autowired private StockKeepingUnitRepository skuRepo; /** * Utility to detach/initialize lazy fields */ @Autowired private FieldInitializer initializer; @RequestMapping(value="/", method=RequestMethod.GET) @Transactional public ResponseEntity<ReadableRepresentation> findAll(SkuSearchRequest request, HalPageResponseEntityBuilder halBuilder, Pageable pageable) { Page<StockKeepingUnit> products = skuRepo.findAll(QStockKeepingUnit.stockKeepingUnit.search(request), pageable); return halBuilder.withPage(products, "/sku/{skuId}").etag().get(); } @RequestMapping(value="/{id}", method=RequestMethod.GET) @Transactional public ResponseEntity<ReadableRepresentation> findOne(@PathVariable("id") Integer id, HalResponseEntityBuilder halBuilder) { StockKeepingUnit sku = skuRepo.findOne(id); return halBuilder.withBean(sku).etag().get(); } }