com.sap.csc.poc.ems.service.admin.entitlement.EntitlementServiceImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.sap.csc.poc.ems.service.admin.entitlement.EntitlementServiceImpl.java

Source

package com.sap.csc.poc.ems.service.admin.entitlement;

import java.util.Arrays;
import java.util.stream.Collectors;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.domain.Sort.Order;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.sap.csc.poc.ems.gateway.web.HttpApiService;
import com.sap.csc.poc.ems.infrastructure.app.constant.PageConstant;
import com.sap.csc.poc.ems.model.dto.entitlement.EntitlementInfo;
import com.sap.csc.poc.ems.model.dto.entitlement.SoftwareLicenseEntitlementDetail;
import com.sap.csc.poc.ems.model.jpa.entitlement.EntitlementHeader;
import com.sap.csc.poc.ems.model.jpa.entitlement.EntitlementHeader_;
import com.sap.csc.poc.ems.model.jpa.entitlement.softwarelicense.SoftwareLicenseEntitlementHeader;
import com.sap.csc.poc.ems.persistence.repository.entitlement.EntitlementHeaderRepository;
import com.sap.csc.poc.ems.persistence.repository.entitlement.SoftwareLicenseEntitlementHeaderRepository;
import com.sap.csc.poc.ems.service.contract.entitlement.EntitlementService;

@RestController
public class EntitlementServiceImpl extends HttpApiService implements EntitlementService {

    @Autowired
    private EntitlementHeaderRepository entitlementHeaderRepository;

    @Autowired
    private SoftwareLicenseEntitlementHeaderRepository softwareLicenseEntitlementHeaderRepository;

    @Override
    @RequestMapping(value = "entitlements/search", method = RequestMethod.GET)
    public ResponseEntity<Page<EntitlementInfo>> search(
            // Keyword
            @RequestParam(value = "keyword", required = false) String keyword,
            // Page
            @RequestParam(value = "page", required = false, defaultValue = PageConstant.DEFAULT_PAGE_INDEX) Integer page,
            // Size
            @RequestParam(value = "size", required = false, defaultValue = PageConstant.DEFAULT_PAGE_SIZE) Integer size,
            // Sort
            @RequestParam(value = "sort", required = false, defaultValue = PageConstant.DEFAULT_SORT) String sort) {
        Page<EntitlementInfo> entitlementPage = entitlementHeaderRepository
                .search(keyword, new PageRequest(page, size, StringUtils.isBlank(sort)
                        // Search with default sort
                        ? new Sort(Direction.DESC, EntitlementHeader_.updateOn.getName())
                        // Search with custom sort
                        : new Sort(Arrays.asList(sort.split(",")).stream().map(order -> order.split(" "))
                                .map(order -> new Order(Direction.fromString(order[1]), order[0]))
                                .collect(Collectors.toList()))))
                // Convert to dto
                .map(entitlement -> new EntitlementInfo(entitlement));
        if (entitlementPage.hasContent()) {
            return new ResponseEntity<>(entitlementPage, HttpStatus.OK);
        } else {
            return new ResponseEntity<>(entitlementPage, HttpStatus.NO_CONTENT);
        }
    }

    @Override
    @RequestMapping(value = "entitlement/{id}", method = RequestMethod.GET)
    public ResponseEntity<EntitlementInfo> findOne(@PathVariable("id") Long id) {
        EntitlementHeader entitlementHeader = entitlementHeaderRepository.findOne(id);
        if (entitlementHeader != null) {
            return new ResponseEntity<>(new EntitlementInfo(entitlementHeader), HttpStatus.OK);
        } else {
            return new ResponseEntity<>((EntitlementInfo) null, HttpStatus.NOT_FOUND);
        }
    }

    @Override
    @RequestMapping(value = "entitlement/softwareLicense/{id}", method = RequestMethod.GET)
    public ResponseEntity<SoftwareLicenseEntitlementDetail> findOneSoftwareLicense(@PathVariable("id") Long id) {
        SoftwareLicenseEntitlementHeader entitlementHeader = softwareLicenseEntitlementHeaderRepository.findOne(id);
        if (entitlementHeader != null) {
            return new ResponseEntity<>(new SoftwareLicenseEntitlementDetail(entitlementHeader), HttpStatus.OK);
        } else {
            return new ResponseEntity<>((SoftwareLicenseEntitlementDetail) null, HttpStatus.NOT_FOUND);
        }
    }

}