Skip to content

Commit

Permalink
took create page logic to ApiUtil class, change return type to Page i…
Browse files Browse the repository at this point in the history
…n get methods
  • Loading branch information
Sprokof committed Feb 12, 2024
1 parent 8b62076 commit 574805b
Show file tree
Hide file tree
Showing 17 changed files with 164 additions and 125 deletions.
1 change: 1 addition & 0 deletions .idea/encodings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 3 additions & 8 deletions src/main/java/ru/investbook/api/AbstractRestController.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,9 @@ public abstract class AbstractRestController<ID, Pojo, Entity> {



protected List<Pojo> get(int page, int size, String sortBy, String sortDir) {
Sort sort = sortDir.equalsIgnoreCase(Sort.Direction.ASC.name()) ? Sort.by(sortBy).ascending()
: Sort.by(sortBy).descending();
return repository.findAll(PageRequest.of(page, size, sort))
.getContent()
.stream()
.map(converter :: fromEntity)
.collect(Collectors.toList());
protected Page<Pojo> get(Pageable pageable) {
return repository.findAll(pageable)
.map(converter :: fromEntity);
}

/**
Expand Down
53 changes: 53 additions & 0 deletions src/main/java/ru/investbook/api/ApiUtil.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/*
* InvestBook
* Copyright (C) 2024 Spacious Team <[email protected]>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

package ru.investbook.api;

import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;

public class ApiUtil {

private ApiUtil(){}

public static final String DEFAULT_PAGE = "1";

public static final String DEFAULT_PAGE_SIZE = "10";
public static final String DEFAULT_EVENT_CASH_FLOW_SORT_BY = "portfolio";
public static final String DEFAULT_FOREIGN_EXCHANGE_RATE_SORT_BY = "rate";
public static final String DEFAULT_ISSUER_SORT_BY = "taxpayerId";
public static final String DEFAULT_PORTFOLIO_PROPERTY_SORT_BY = "portfolio";
public static final String DEFAULT_PORTFOLIO_CASH_SORT_BY = "portfolio";
public static final String DEFAULT_SECURITY_DESCRIPTION_SORT_BY= "sector";
public static final String DEFAULT_SECURITY_EVENT_CASH_FLOW_SORT_BY = "value";
public static final String DEFAULT_SECURITY_QUOTE_SORT_BY = "quote";
public static final String DEFAULT_SECURITY_SORT_BY = "name";
public static final String DEFAULT_TRANSACTION_CASH_FLOW_SORT_BY = "transactionId";
public static final String DEFAULT_TRANSACTION_SORT_BY = "tradeId";
public static final String DEFAULT_PORTFOLIO_SORT_BY = "id";

public static final String DEFAULT_SORT_DIRECTION = "desc";

public static Pageable getPage(int pageNo, int pageSize, String sortBy, String sortDir){
Sort sort = sortDir.equalsIgnoreCase(Sort.Direction.ASC.name()) ? Sort.by(sortBy).ascending()
: Sort.by(sortBy).descending();
return PageRequest.of(pageNo, pageSize, sort);
}

}
14 changes: 7 additions & 7 deletions src/main/java/ru/investbook/api/EventCashFlowRestController.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.spacious_team.broker.pojo.EventCashFlow;
import org.springframework.data.domain.Page;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
Expand All @@ -37,7 +38,6 @@
import ru.investbook.converter.EntityConverter;
import ru.investbook.entity.EventCashFlowEntity;

import java.util.List;
import java.util.Optional;

@RestController
Expand All @@ -54,19 +54,19 @@ public EventCashFlowRestController(JpaRepository<EventCashFlowEntity, Integer> r

@GetMapping
@Operation(summary = "Отобразить все", description = "Отображает все выплаты по всем счетам")
public List<EventCashFlow> get(@RequestParam(value = "page", defaultValue = ApiUtil.DEFAULT_PAGE, required = false)
@Parameter(description = "номер страницы")
public Page<EventCashFlow> get(@RequestParam(value = "page", defaultValue = ApiUtil.DEFAULT_PAGE, required = false)
@Parameter(description = "Номер страницы")
int pageNo,
@RequestParam(value = "size", defaultValue = ApiUtil.DEFAULT_PAGE_SIZE, required = false)
@Parameter(description = "количество записей на странице")
@Parameter(description = "Количество записей на странице")
int pageSize,
@RequestParam(value = "sortBy", defaultValue = ApiUtil.DEFAULT_EVENT_CASH_FLOW_SORT_BY, required = false)
@Parameter(description = "атрибут сортировки")
@Parameter(description = "Атрибут сортировки")
String sortBy,
@RequestParam(value = "sortDir", defaultValue = ApiUtil.DEFAULT_SORT_DIRECTION, required = false)
@Parameter(description = "направление сортировки")
@Parameter(description = "Направление сортировки")
String sortDir) {
return super.get(pageNo, pageSize, sortBy, sortDir);
return super.get(ApiUtil.getPage(pageNo, pageSize, sortBy, sortDir));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.spacious_team.broker.pojo.ForeignExchangeRate;
import org.springframework.data.domain.Page;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
Expand Down Expand Up @@ -63,19 +64,19 @@ public ForeignExchangeRateRestController(ForeignExchangeRateRepository repositor

@GetMapping
@Operation(summary = "Отобразить все", description = "Отображает все загруженные в БД информацию по обменным курсам")
protected List<ForeignExchangeRate> get(@RequestParam(value = "page", defaultValue = ApiUtil.DEFAULT_PAGE, required = false)
@Parameter(description = "номер страницы")
protected Page<ForeignExchangeRate> get(@RequestParam(value = "page", defaultValue = ApiUtil.DEFAULT_PAGE, required = false)
@Parameter(description = "Номер страницы")
int pageNo,
@RequestParam(value = "size", defaultValue = ApiUtil.DEFAULT_PAGE_SIZE, required = false)
@Parameter(description = "количество записей на странице")
@Parameter(description = "Количество записей на странице")
int pageSize,
@RequestParam(value = "sortBy", defaultValue = ApiUtil.DEFAULT_FOREIGN_EXCHANGE_RATE_SORT_BY, required = false)
@Parameter(description = "атрибут сортировки")
@Parameter(description = "Атрибут сортировки")
String sortBy,
@RequestParam(value = "sortDir", defaultValue = ApiUtil.DEFAULT_SORT_DIRECTION, required = false)
@Parameter(description = "направление сортировки")
@Parameter(description = "Направление сортировки")
String sortDir) {
return super.get(pageNo, pageSize, sortBy, sortDir);
return super.get(ApiUtil.getPage(pageNo, pageSize, sortBy, sortDir));
}

@GetMapping("/currency-pairs/{currency-pair}")
Expand Down
14 changes: 7 additions & 7 deletions src/main/java/ru/investbook/api/IssuerRestController.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.spacious_team.broker.pojo.Issuer;
import org.springframework.data.domain.Page;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
Expand All @@ -37,7 +38,6 @@
import ru.investbook.converter.EntityConverter;
import ru.investbook.entity.IssuerEntity;

import java.util.List;
import java.util.Optional;

@RestController
Expand All @@ -51,19 +51,19 @@ public IssuerRestController(JpaRepository<IssuerEntity, Integer> repository, Ent

@GetMapping
@Operation(summary = "Отобразить всех")
public List<Issuer> get(@RequestParam(value = "page", defaultValue = ApiUtil.DEFAULT_PAGE, required = false)
@Parameter(description = "номер страницы")
public Page<Issuer> get(@RequestParam(value = "page", defaultValue = ApiUtil.DEFAULT_PAGE, required = false)
@Parameter(description = "Номер страницы")
int pageNo,
@RequestParam(value = "size", defaultValue = ApiUtil.DEFAULT_PAGE_SIZE, required = false)
@Parameter(description = "количество записей на странице")
@Parameter(description = "Количество записей на странице")
int pageSize,
@RequestParam(value = "sortBy", defaultValue = ApiUtil.DEFAULT_ISSUER_SORT_BY, required = false)
@Parameter(description = "атрибут сортировки")
@Parameter(description = "Атрибут сортировки")
String sortBy,
@RequestParam(value = "sortDir", defaultValue = ApiUtil.DEFAULT_SORT_DIRECTION, required = false)
@Parameter(description = "направление сортировки")
@Parameter(description = "Направление сортировки")
String sortDir) {
return super.get(pageNo, pageSize, sortBy, sortDir);
return super.get(ApiUtil.getPage(pageNo, pageSize, sortBy, sortDir));
}

@Override
Expand Down
14 changes: 7 additions & 7 deletions src/main/java/ru/investbook/api/PortfolioCashRestController.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.spacious_team.broker.pojo.PortfolioCash;
import org.springframework.data.domain.Page;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
Expand All @@ -37,7 +38,6 @@
import ru.investbook.converter.EntityConverter;
import ru.investbook.entity.PortfolioCashEntity;

import java.util.List;
import java.util.Optional;

@RestController
Expand All @@ -52,19 +52,19 @@ public PortfolioCashRestController(JpaRepository<PortfolioCashEntity, Integer> r

@GetMapping
@Operation(summary = "Отобразить все", description = "Отображает всю имеющуюся информацию обо всех счетах")
public List<PortfolioCash> get(@RequestParam(value = "page", defaultValue = ApiUtil.DEFAULT_PAGE, required = false)
@Parameter(description = "номер страницы")
public Page<PortfolioCash> get(@RequestParam(value = "page", defaultValue = ApiUtil.DEFAULT_PAGE, required = false)
@Parameter(description = "Номер страницы")
int pageNo,
@RequestParam(value = "size", defaultValue = ApiUtil.DEFAULT_PAGE_SIZE, required = false)
@Parameter(description = "количество записей на странице")
@Parameter(description = "Количество записей на странице")
int pageSize,
@RequestParam(value = "sortBy", defaultValue = ApiUtil.DEFAULT_PORTFOLIO_CASH_SORT_BY, required = false)
@Parameter(description = "атрибут сортировки")
@Parameter(description = "Атрибут сортировки")
String sortBy,
@RequestParam(value = "sortDir", defaultValue = ApiUtil.DEFAULT_SORT_DIRECTION, required = false)
@Parameter(description = "направление сортировки")
@Parameter(description = "Направление сортировки")
String sortDir) {
return super.get(pageNo, pageSize, sortBy, sortDir);
return super.get(ApiUtil.getPage(pageNo, pageSize, sortBy, sortDir));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.spacious_team.broker.pojo.PortfolioProperty;
import org.springframework.data.domain.Page;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
Expand All @@ -37,7 +38,6 @@
import ru.investbook.converter.EntityConverter;
import ru.investbook.entity.PortfolioPropertyEntity;

import java.util.List;
import java.util.Optional;

@RestController
Expand All @@ -52,19 +52,19 @@ public PortfolioPropertyRestController(JpaRepository<PortfolioPropertyEntity, In

@GetMapping
@Operation(summary = "Отобразить все", description = "Отображает всю имеющуюся информацию обо всех счетах")
public List<PortfolioProperty> get(@RequestParam(value = "page", defaultValue = ApiUtil.DEFAULT_PAGE, required = false)
@Parameter(description = "номер страницы")
public Page<PortfolioProperty> get(@RequestParam(value = "page", defaultValue = ApiUtil.DEFAULT_PAGE, required = false)
@Parameter(description = "Номер страницы")
int pageNo,
@RequestParam(value = "size", defaultValue = ApiUtil.DEFAULT_PAGE_SIZE, required = false)
@Parameter(description = "количество записей на странице")
@Parameter(description = "Количество записей на странице")
int pageSize,
@RequestParam(value = "sortBy", defaultValue = ApiUtil.DEFAULT_PORTFOLIO_PROPERTY_SORT_BY, required = false)
@Parameter(description = "атрибут сортировки")
@Parameter(description = "Атрибут сортировки")
String sortBy,
@RequestParam(value = "sortDir", defaultValue = ApiUtil.DEFAULT_SORT_DIRECTION, required = false)
@Parameter(description = "направление сортировки")
@Parameter(description = "Направление сортировки")
String sortDir) {
return super.get(pageNo, pageSize, sortBy, sortDir);
return super.get(ApiUtil.getPage(pageNo, pageSize, sortBy, sortDir));
}

@Override
Expand Down
14 changes: 6 additions & 8 deletions src/main/java/ru/investbook/api/PortfolioRestController.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import jakarta.validation.Valid;
import org.spacious_team.broker.pojo.Portfolio;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
Expand All @@ -39,7 +38,6 @@
import ru.investbook.entity.PortfolioEntity;
import ru.investbook.repository.PortfolioRepository;

import java.util.List;
import java.util.Optional;

@RestController
Expand All @@ -55,19 +53,19 @@ public PortfolioRestController(PortfolioRepository repository, PortfolioConverte

@GetMapping()
@Operation(summary = "Отобразить все")
public List<Portfolio> get(@RequestParam(value = "page", defaultValue = ApiUtil.DEFAULT_PAGE, required = false)
@Parameter(description = "номер страницы")
public Page<Portfolio> get(@RequestParam(value = "page", defaultValue = ApiUtil.DEFAULT_PAGE, required = false)
@Parameter(description = "Номер страницы")
int pageNo,
@RequestParam(value = "size", defaultValue = ApiUtil.DEFAULT_PAGE_SIZE, required = false)
@Parameter(description = "количество записей на странице")
@Parameter(description = "Количество записей на странице")
int pageSize,
@RequestParam(value = "sortBy", defaultValue = ApiUtil.DEFAULT_PORTFOLIO_SORT_BY, required = false)
@Parameter(description = "атрибут сортировки")
@Parameter(description = "трибут сортировки")
String sortBy,
@RequestParam(value = "sortDir", defaultValue = ApiUtil.DEFAULT_SORT_DIRECTION, required = false)
@Parameter(description = "направление сортировки")
@Parameter(description = "Направление сортировки")
String sortDir) {
return super.get(pageNo, pageSize, sortBy, sortDir);
return super.get(ApiUtil.getPage(pageNo, pageSize, sortBy, sortDir));
}

@Override
Expand Down
Loading

0 comments on commit 574805b

Please sign in to comment.