Init Commit
This commit is contained in:
commit
34e72edbe0
51
.gitignore
vendored
Normal file
51
.gitignore
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
# Created by .ignore support plugin (hsz.mobi)
|
||||
target/
|
||||
pom.xml.tag
|
||||
pom.xml.releaseBackup
|
||||
pom.xml.versionsBackup
|
||||
pom.xml.next
|
||||
release.properties
|
||||
dependency-reduced-pom.xml
|
||||
buildNumber.properties
|
||||
.mvn/timing.properties
|
||||
.mvn/wrapper/maven-wrapper.jar
|
||||
*.class
|
||||
*.log
|
||||
*.ctxt
|
||||
.mtj.tmp/
|
||||
*.jar
|
||||
*.war
|
||||
*.nar
|
||||
*.ear
|
||||
*.zip
|
||||
*.tar.gz
|
||||
*.rar
|
||||
hs_err_pid*
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
.idea/**/contentModel.xml
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
cmake-build-*/
|
||||
.idea/**/mongoSettings.xml
|
||||
*.iws
|
||||
out/
|
||||
.idea_modules/
|
||||
atlassian-ide-plugin.xml
|
||||
.idea/replstate.xml
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
.idea/httpRequests
|
||||
.idea/caches/build_file_checksums.ser
|
51
haiti-context/.gitignore
vendored
Normal file
51
haiti-context/.gitignore
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
# Created by .ignore support plugin (hsz.mobi)
|
||||
target/
|
||||
pom.xml.tag
|
||||
pom.xml.releaseBackup
|
||||
pom.xml.versionsBackup
|
||||
pom.xml.next
|
||||
release.properties
|
||||
dependency-reduced-pom.xml
|
||||
buildNumber.properties
|
||||
.mvn/timing.properties
|
||||
.mvn/wrapper/maven-wrapper.jar
|
||||
*.class
|
||||
*.log
|
||||
*.ctxt
|
||||
.mtj.tmp/
|
||||
*.jar
|
||||
*.war
|
||||
*.nar
|
||||
*.ear
|
||||
*.zip
|
||||
*.tar.gz
|
||||
*.rar
|
||||
hs_err_pid*
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
.idea/**/contentModel.xml
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
cmake-build-*/
|
||||
.idea/**/mongoSettings.xml
|
||||
*.iws
|
||||
out/
|
||||
.idea_modules/
|
||||
atlassian-ide-plugin.xml
|
||||
.idea/replstate.xml
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
.idea/httpRequests
|
||||
.idea/caches/build_file_checksums.ser
|
22
haiti-context/pom.xml
Normal file
22
haiti-context/pom.xml
Normal file
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.sadtech.haiti</groupId>
|
||||
<artifactId>haiti</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>haiti-context</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@ -0,0 +1,18 @@
|
||||
package org.sadtech.haiti.context.anotation;
|
||||
|
||||
/**
|
||||
* Маркер для разграничения политик валидации.
|
||||
*
|
||||
* @author upagge 26.05.20
|
||||
*/
|
||||
public interface Marker {
|
||||
|
||||
interface Create {
|
||||
|
||||
}
|
||||
|
||||
interface Update {
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package org.sadtech.haiti.context.enums;
|
||||
|
||||
/**
|
||||
* Допустимые типы сортировки.
|
||||
*
|
||||
* @author upagge 28.01.2020
|
||||
*/
|
||||
public enum TypeSort {
|
||||
|
||||
ASC, DESC
|
||||
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package org.sadtech.haiti.context.exception;
|
||||
|
||||
/**
|
||||
* Исключения связанные с доступом.
|
||||
*/
|
||||
public class AccessException extends BasicException {
|
||||
|
||||
public AccessException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,18 @@
|
||||
package org.sadtech.haiti.context.exception;
|
||||
|
||||
/**
|
||||
* Общий класс для всех ошибок приложения.
|
||||
*
|
||||
* @author upagge 17.12.2019
|
||||
*/
|
||||
public abstract class BasicException extends RuntimeException {
|
||||
|
||||
protected BasicException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
protected BasicException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package org.sadtech.haiti.context.exception;
|
||||
|
||||
/**
|
||||
* Исключение при конвертации.
|
||||
*/
|
||||
public class ConvertException extends BasicException {
|
||||
|
||||
public ConvertException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public ConvertException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package org.sadtech.haiti.context.exception;
|
||||
|
||||
/**
|
||||
* Исключения, возникающиек, когда необходимые данные не были найдены.
|
||||
*
|
||||
* @author upagge 17.12.2019
|
||||
*/
|
||||
public class NotFoundException extends BasicException {
|
||||
|
||||
public NotFoundException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package org.sadtech.haiti.context.page;
|
||||
|
||||
import org.sadtech.haiti.context.enums.TypeSort;
|
||||
|
||||
public interface Pagination {
|
||||
|
||||
int getPage();
|
||||
|
||||
int getSize();
|
||||
|
||||
TypeSort getTypeSort();
|
||||
|
||||
String getFieldSort();
|
||||
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package org.sadtech.haiti.context.page;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
public interface Sheet<T> {
|
||||
|
||||
int getNumber();
|
||||
|
||||
int getSize();
|
||||
|
||||
long getTotalElement();
|
||||
|
||||
int getTotalPage();
|
||||
|
||||
List<T> getContent();
|
||||
|
||||
boolean hasContent();
|
||||
|
||||
<U> Sheet<U> map(Function<? super T, ? extends U> converter);
|
||||
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package org.sadtech.haiti.context.repository;
|
||||
|
||||
import org.sadtech.haiti.context.repository.simple.CrudOperation;
|
||||
import org.sadtech.haiti.context.repository.simple.MultipleOperation;
|
||||
import org.sadtech.haiti.context.repository.simple.PagingOperation;
|
||||
|
||||
public interface SimpleManagerRepository<T, K> extends CrudOperation<T, K>, MultipleOperation<T, K>, PagingOperation<T> {
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package org.sadtech.haiti.context.repository.simple;
|
||||
|
||||
import lombok.NonNull;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* Контракт для реализации объекта, который будет взаимодействовать с хранилищем данных.
|
||||
*
|
||||
* @param <T> Класс сущности
|
||||
* @param <K> Класс идентификатора
|
||||
* @author upagge
|
||||
*/
|
||||
public interface CrudOperation<T, K> {
|
||||
|
||||
/**
|
||||
* Сохраняет сущность в базу данных. Не проверяет на наличие в хранилище.
|
||||
* Если сущность с подобным идентификатором уже есть, то необходимо ее перезаписать.
|
||||
*
|
||||
* @param entity Сущность для сохранения
|
||||
* @return Сохраненная сущность
|
||||
*/
|
||||
T save(@NonNull T entity);
|
||||
|
||||
Optional<T> findById(@NonNull K primaryKey);
|
||||
|
||||
boolean existsById(@NonNull K primaryKey);
|
||||
|
||||
void deleteById(@NonNull K primaryKey);
|
||||
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package org.sadtech.haiti.context.repository.simple;
|
||||
|
||||
import lombok.NonNull;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public interface MultipleOperation<T, K> {
|
||||
|
||||
List<T> saveAll(@NonNull Collection<T> entities);
|
||||
|
||||
void deleteAllById(@NonNull Collection<K> primaryKeys);
|
||||
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package org.sadtech.haiti.context.repository.simple;
|
||||
|
||||
import lombok.NonNull;
|
||||
import org.sadtech.haiti.context.page.Pagination;
|
||||
import org.sadtech.haiti.context.page.Sheet;
|
||||
|
||||
public interface PagingOperation<T> {
|
||||
|
||||
Sheet<T> findAll(@NonNull Pagination pagination);
|
||||
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
package org.sadtech.haiti.context.service;
|
||||
|
||||
import org.sadtech.haiti.context.service.simple.MultipleService;
|
||||
import org.sadtech.haiti.context.service.simple.PagingService;
|
||||
import org.sadtech.haiti.context.service.simple.SimpleService;
|
||||
|
||||
public interface SimpleManagerService<T, K> extends SimpleService<T, K>, MultipleService<T, K>, PagingService<T> {
|
||||
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package org.sadtech.haiti.context.service.simple;
|
||||
|
||||
import lombok.NonNull;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public interface MultipleService<T, K> {
|
||||
|
||||
List<T> createAll(@NonNull Collection<T> entities);
|
||||
|
||||
List<T> updateAll(@NonNull Collection<T> entities);
|
||||
|
||||
void deleteAllById(@NonNull Collection<K> ids);
|
||||
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
package org.sadtech.haiti.context.service.simple;
|
||||
|
||||
import lombok.NonNull;
|
||||
import org.sadtech.haiti.context.page.Pagination;
|
||||
import org.sadtech.haiti.context.page.Sheet;
|
||||
|
||||
/**
|
||||
* Расширение базового контракта сервисов с добавлением пагинации.
|
||||
*
|
||||
* @param <T> Сущность сервиса.
|
||||
* @author upagge 26.05.20
|
||||
*/
|
||||
public interface PagingService<T> {
|
||||
|
||||
Sheet<T> getAll(@NonNull Pagination pagination);
|
||||
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package org.sadtech.haiti.context.service.simple;
|
||||
|
||||
import lombok.NonNull;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* Базовый контракт для сервисов.
|
||||
*
|
||||
* @param <T> Сущность сервиса.
|
||||
*/
|
||||
public interface SimpleService<T, K> {
|
||||
|
||||
T create(@NonNull T entity);
|
||||
|
||||
T update(@NonNull T entity);
|
||||
|
||||
Optional<T> getById(@NonNull K primaryKey);
|
||||
|
||||
boolean existsById(@NonNull K primaryKey);
|
||||
|
||||
void deleteById(@NonNull K primaryKey);
|
||||
|
||||
}
|
51
haiti-core/.gitignore
vendored
Normal file
51
haiti-core/.gitignore
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
# Created by .ignore support plugin (hsz.mobi)
|
||||
target/
|
||||
pom.xml.tag
|
||||
pom.xml.releaseBackup
|
||||
pom.xml.versionsBackup
|
||||
pom.xml.next
|
||||
release.properties
|
||||
dependency-reduced-pom.xml
|
||||
buildNumber.properties
|
||||
.mvn/timing.properties
|
||||
.mvn/wrapper/maven-wrapper.jar
|
||||
*.class
|
||||
*.log
|
||||
*.ctxt
|
||||
.mtj.tmp/
|
||||
*.jar
|
||||
*.war
|
||||
*.nar
|
||||
*.ear
|
||||
*.zip
|
||||
*.tar.gz
|
||||
*.rar
|
||||
hs_err_pid*
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
.idea/**/contentModel.xml
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
cmake-build-*/
|
||||
.idea/**/mongoSettings.xml
|
||||
*.iws
|
||||
out/
|
||||
.idea_modules/
|
||||
atlassian-ide-plugin.xml
|
||||
.idea/replstate.xml
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
.idea/httpRequests
|
||||
.idea/caches/build_file_checksums.ser
|
32
haiti-core/pom.xml
Normal file
32
haiti-core/pom.xml
Normal file
@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.sadtech.haiti</groupId>
|
||||
<artifactId>haiti</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>haiti-core</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.sadtech.haiti</groupId>
|
||||
<artifactId>haiti-context</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.sadtech.haiti.filter</groupId>
|
||||
<artifactId>filter-api</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@ -0,0 +1,35 @@
|
||||
package org.sadtech.haiti.core.page;
|
||||
|
||||
import lombok.Getter;
|
||||
import org.sadtech.haiti.context.enums.TypeSort;
|
||||
import org.sadtech.haiti.context.page.Pagination;
|
||||
|
||||
@Getter
|
||||
public class PaginationImpl implements Pagination {
|
||||
|
||||
private final int page;
|
||||
private final int size;
|
||||
private String fieldSort;
|
||||
private TypeSort typeSort;
|
||||
|
||||
private PaginationImpl(int page, int size) {
|
||||
this.page = page;
|
||||
this.size = size;
|
||||
}
|
||||
|
||||
public PaginationImpl(int page, int size, String fieldSort, TypeSort typeSort) {
|
||||
this.page = page;
|
||||
this.size = size;
|
||||
this.fieldSort = fieldSort;
|
||||
this.typeSort = typeSort;
|
||||
}
|
||||
|
||||
public static Pagination of(int page, int size) {
|
||||
return new PaginationImpl(page, size);
|
||||
}
|
||||
|
||||
public static Pagination of(int page, int size, String fieldSort, TypeSort typeSort) {
|
||||
return new PaginationImpl(page, size, fieldSort, typeSort);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package org.sadtech.haiti.core.page;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import org.sadtech.haiti.context.page.Sheet;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Getter
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
public class SheetImpl<T> implements Sheet<T> {
|
||||
|
||||
private final int number;
|
||||
private final int size;
|
||||
private final long totalElement;
|
||||
private final int totalPage;
|
||||
private final List<T> content;
|
||||
|
||||
@Override
|
||||
public boolean hasContent() {
|
||||
return content != null && !content.isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <U> Sheet<U> map(Function<? super T, ? extends U> function) {
|
||||
return new SheetImpl<>(
|
||||
this.number,
|
||||
this.size,
|
||||
this.totalElement,
|
||||
this.totalPage,
|
||||
this.content.stream().map(function).collect(Collectors.toList())
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package org.sadtech.haiti.core.service;
|
||||
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.sadtech.haiti.context.page.Pagination;
|
||||
import org.sadtech.haiti.context.page.Sheet;
|
||||
import org.sadtech.haiti.filter.Filter;
|
||||
import org.sadtech.haiti.filter.FilterOperation;
|
||||
import org.sadtech.haiti.filter.FilterService;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public abstract class AbstractFilterService<T, F> implements FilterService<T, F> {
|
||||
|
||||
private final FilterOperation<T> filterOperation;
|
||||
|
||||
@Override
|
||||
public Sheet<T> getAll(@NonNull F filter, Pagination pagination) {
|
||||
return filterOperation.findAll(createFilter(filter), pagination);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<T> getFirst(@NonNull F filter) {
|
||||
return filterOperation.findFirst(createFilter(filter));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean exists(@NonNull F filter) {
|
||||
return filterOperation.exists(createFilter(filter));
|
||||
}
|
||||
|
||||
@Override
|
||||
public long count(@NonNull F filter) {
|
||||
return filterOperation.count(createFilter(filter));
|
||||
}
|
||||
|
||||
protected abstract Filter createFilter(@NonNull F filter);
|
||||
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package org.sadtech.haiti.core.service;
|
||||
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.sadtech.haiti.context.repository.simple.MultipleOperation;
|
||||
import org.sadtech.haiti.context.service.simple.MultipleService;
|
||||
import org.sadtech.haiti.context.service.simple.SimpleService;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public abstract class AbstractMultipleService<T, K> implements MultipleService<T, K> {
|
||||
|
||||
private final SimpleService<T, K> simpleService;
|
||||
private final MultipleOperation<T, K> multipleOperation;
|
||||
|
||||
@Override
|
||||
public void deleteAllById(@NonNull Collection<K> ids) {
|
||||
multipleOperation.deleteAllById(ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<T> createAll(@NonNull Collection<T> entities) {
|
||||
return entities.stream().map(simpleService::create).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<T> updateAll(@NonNull Collection<T> entities) {
|
||||
return entities.stream().map(simpleService::update).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package org.sadtech.haiti.core.service;
|
||||
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.sadtech.haiti.context.page.Pagination;
|
||||
import org.sadtech.haiti.context.page.Sheet;
|
||||
import org.sadtech.haiti.context.repository.simple.PagingOperation;
|
||||
import org.sadtech.haiti.context.service.simple.PagingService;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public abstract class AbstractPagingService<T> implements PagingService<T> {
|
||||
|
||||
private final PagingOperation<T> pagingOperation;
|
||||
|
||||
@Override
|
||||
public Sheet<T> getAll(@NonNull Pagination pagination) {
|
||||
return pagingOperation.findAll(pagination);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,56 @@
|
||||
package org.sadtech.haiti.core.service;
|
||||
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.sadtech.haiti.context.page.Pagination;
|
||||
import org.sadtech.haiti.context.page.Sheet;
|
||||
import org.sadtech.haiti.context.repository.SimpleManagerRepository;
|
||||
import org.sadtech.haiti.context.service.SimpleManagerService;
|
||||
import org.sadtech.haiti.core.util.ServiceOperation;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public abstract class AbstractSimpleManagerService<T, K> implements SimpleManagerService<T, K> {
|
||||
|
||||
private final SimpleManagerRepository<T, K> repository;
|
||||
|
||||
@Override
|
||||
public void deleteAllById(@NonNull Collection<K> primaryKeys) {
|
||||
ServiceOperation.deleteAllById(repository, primaryKeys);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Sheet<T> getAll(@NonNull Pagination pagination) {
|
||||
return ServiceOperation.getAll(repository, pagination);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<T> getById(@NonNull K primaryKey) {
|
||||
return ServiceOperation.getById(repository, primaryKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean existsById(@NonNull K primaryKey) {
|
||||
return ServiceOperation.existsById(repository, primaryKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteById(@NonNull K primaryKey) {
|
||||
ServiceOperation.deleteById(repository, primaryKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<T> createAll(@NonNull Collection<T> entities) {
|
||||
return entities.stream().map(this::create).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<T> updateAll(@NonNull Collection<T> entities) {
|
||||
return entities.stream().map(this::update).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package org.sadtech.haiti.core.service;
|
||||
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.sadtech.haiti.context.repository.simple.CrudOperation;
|
||||
import org.sadtech.haiti.context.service.simple.SimpleService;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public abstract class AbstractSimpleService<T, K> implements SimpleService<T, K> {
|
||||
|
||||
private final CrudOperation<T, K> crudOperation;
|
||||
|
||||
@Override
|
||||
public Optional<T> getById(@NonNull K primaryKey) {
|
||||
return crudOperation.findById(primaryKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean existsById(@NonNull K primaryKey) {
|
||||
return crudOperation.existsById(primaryKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteById(@NonNull K primaryKey) {
|
||||
crudOperation.deleteById(primaryKey);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package org.sadtech.haiti.core.util;
|
||||
|
||||
/**
|
||||
* // TODO: 06.09.2020 Добавить описание.
|
||||
*
|
||||
* @author upagge 06.09.2020
|
||||
*/
|
||||
|
||||
public final class Assert {
|
||||
|
||||
public static void isNull(Object object, String message) {
|
||||
if (object != null) {
|
||||
throw new IllegalStateException(message);
|
||||
}
|
||||
}
|
||||
|
||||
public static void isNotNull(Object object, String message) {
|
||||
if (object == null) {
|
||||
throw new IllegalStateException(message);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package org.sadtech.haiti.core.util;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.sadtech.haiti.context.page.Pagination;
|
||||
import org.sadtech.haiti.context.page.Sheet;
|
||||
import org.sadtech.haiti.context.repository.simple.CrudOperation;
|
||||
import org.sadtech.haiti.context.repository.simple.MultipleOperation;
|
||||
import org.sadtech.haiti.context.repository.simple.PagingOperation;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Optional;
|
||||
|
||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public final class ServiceOperation {
|
||||
|
||||
public static <T, K> void deleteAllById(MultipleOperation<T, K> repository, Collection<K> primaryKeys) {
|
||||
repository.deleteAllById(primaryKeys);
|
||||
}
|
||||
|
||||
public static <T> Sheet<T> getAll(PagingOperation<T> repository, Pagination pagination) {
|
||||
return repository.findAll(pagination);
|
||||
}
|
||||
|
||||
public static <T, K> Optional<T> getById(CrudOperation<T, K> repository, K primaryKey) {
|
||||
return repository.findById(primaryKey);
|
||||
}
|
||||
|
||||
public static <T, K> boolean existsById(CrudOperation<T, K> repository, K primaryKey) {
|
||||
return repository.existsById(primaryKey);
|
||||
}
|
||||
|
||||
public static <T, K> void deleteById(CrudOperation<T, K> repository, K primaryKey) {
|
||||
repository.deleteById(primaryKey);
|
||||
}
|
||||
|
||||
}
|
51
haiti-database/.gitignore
vendored
Normal file
51
haiti-database/.gitignore
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
# Created by .ignore support plugin (hsz.mobi)
|
||||
target/
|
||||
pom.xml.tag
|
||||
pom.xml.releaseBackup
|
||||
pom.xml.versionsBackup
|
||||
pom.xml.next
|
||||
release.properties
|
||||
dependency-reduced-pom.xml
|
||||
buildNumber.properties
|
||||
.mvn/timing.properties
|
||||
.mvn/wrapper/maven-wrapper.jar
|
||||
*.class
|
||||
*.log
|
||||
*.ctxt
|
||||
.mtj.tmp/
|
||||
*.jar
|
||||
*.war
|
||||
*.nar
|
||||
*.ear
|
||||
*.zip
|
||||
*.tar.gz
|
||||
*.rar
|
||||
hs_err_pid*
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
.idea/**/contentModel.xml
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
cmake-build-*/
|
||||
.idea/**/mongoSettings.xml
|
||||
*.iws
|
||||
out/
|
||||
.idea_modules/
|
||||
atlassian-ide-plugin.xml
|
||||
.idea/replstate.xml
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
.idea/httpRequests
|
||||
.idea/caches/build_file_checksums.ser
|
37
haiti-database/pom.xml
Normal file
37
haiti-database/pom.xml
Normal file
@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.sadtech.haiti</groupId>
|
||||
<artifactId>haiti</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>haiti-database</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.sadtech.haiti</groupId>
|
||||
<artifactId>haiti-core</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.sadtech.haiti.filter</groupId>
|
||||
<artifactId>criteria-filter</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.data</groupId>
|
||||
<artifactId>spring-data-jpa</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@ -0,0 +1,24 @@
|
||||
package org.sadtech.haiti.database.entity;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.MappedSuperclass;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@MappedSuperclass
|
||||
@EqualsAndHashCode(of = "id")
|
||||
public abstract class BasicEntity {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@Column(name = "id", updatable = false, nullable = false)
|
||||
protected Long id;
|
||||
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
package org.sadtech.haiti.database.repository;
|
||||
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.sadtech.haiti.context.repository.simple.CrudOperation;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public abstract class AbstractCrudOperation<T, K> implements CrudOperation<T, K> {
|
||||
|
||||
private final JpaRepository<T, K> jpaRepository;
|
||||
|
||||
@Override
|
||||
public T save(@NonNull T entity) {
|
||||
return OperationJpa.save(jpaRepository, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<T> findById(@NonNull K primaryKey) {
|
||||
return OperationJpa.findById(jpaRepository, primaryKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean existsById(@NonNull K primaryKey) {
|
||||
return OperationJpa.existsById(jpaRepository, primaryKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteById(@NonNull K primaryKey) {
|
||||
OperationJpa.deleteById(jpaRepository, primaryKey);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
package org.sadtech.haiti.database.repository;
|
||||
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.sadtech.haiti.context.page.Pagination;
|
||||
import org.sadtech.haiti.context.page.Sheet;
|
||||
import org.sadtech.haiti.filter.Filter;
|
||||
import org.sadtech.haiti.filter.FilterOperation;
|
||||
import org.springframework.data.jpa.repository.support.JpaRepositoryImplementation;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public abstract class AbstractFilterOperation<T, K> implements FilterOperation<T> {
|
||||
|
||||
private final JpaRepositoryImplementation<T, K> jpaRepository;
|
||||
|
||||
@Override
|
||||
public Sheet<T> findAll(@NonNull Filter filter, @NonNull Pagination pagination) {
|
||||
return OperationJpa.findAll(jpaRepository, filter.build(), pagination);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<T> findFirst(@NonNull Filter filter) {
|
||||
return OperationJpa.findFirst(jpaRepository, filter.build());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean exists(@NonNull Filter filter) {
|
||||
return OperationJpa.exists(jpaRepository, filter.build());
|
||||
}
|
||||
|
||||
@Override
|
||||
public long count(@NonNull Filter filter) {
|
||||
return OperationJpa.count(jpaRepository, filter.build());
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package org.sadtech.haiti.database.repository;
|
||||
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.sadtech.haiti.context.repository.simple.MultipleOperation;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public abstract class AbstractMultipleOperation<T, K> implements MultipleOperation<T, K> {
|
||||
|
||||
private final JpaRepository<T, K> jpaRepository;
|
||||
|
||||
@Override
|
||||
public List<T> saveAll(@NonNull Collection<T> entities) {
|
||||
return OperationJpa.saveAll(jpaRepository, entities);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteAllById(@NonNull Collection<K> primaryKeys) {
|
||||
OperationJpa.deleteAllById(jpaRepository, primaryKeys);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package org.sadtech.haiti.database.repository;
|
||||
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.sadtech.haiti.context.page.Pagination;
|
||||
import org.sadtech.haiti.context.page.Sheet;
|
||||
import org.sadtech.haiti.context.repository.simple.PagingOperation;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public abstract class AbstractPagingOperation<T, K> implements PagingOperation<T> {
|
||||
|
||||
private final JpaRepository<T, K> jpaRepository;
|
||||
|
||||
@Override
|
||||
public Sheet<T> findAll(@NonNull Pagination pagination) {
|
||||
return OperationJpa.findAll(jpaRepository, pagination);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,73 @@
|
||||
package org.sadtech.haiti.database.repository;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.sadtech.haiti.context.page.Pagination;
|
||||
import org.sadtech.haiti.context.page.Sheet;
|
||||
import org.sadtech.haiti.database.util.Converter;
|
||||
import org.springframework.data.jpa.domain.Specification;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.support.JpaRepositoryImplementation;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class OperationJpa {
|
||||
|
||||
public static <T, K> T save(JpaRepository<T, K> jpaRepository, T entity) {
|
||||
return jpaRepository.save(entity);
|
||||
}
|
||||
|
||||
public static <T, K> Optional<T> findById(JpaRepository<T, K> jpaRepository, K primaryKey) {
|
||||
return jpaRepository.findById(primaryKey);
|
||||
}
|
||||
|
||||
public static <K, T> boolean existsById(JpaRepository<T, K> jpaRepository, K primaryKey) {
|
||||
return jpaRepository.existsById(primaryKey);
|
||||
}
|
||||
|
||||
public static <K, T> void deleteById(JpaRepository<T, K> jpaRepository, K primaryKey) {
|
||||
jpaRepository.deleteById(primaryKey);
|
||||
}
|
||||
|
||||
public static <T, K> Sheet<T> findAll(JpaRepository<T, K> jpaRepository, Pagination pagination) {
|
||||
return Converter.page(
|
||||
jpaRepository.findAll(
|
||||
Converter.pagination(pagination)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public static <T, K> List<T> saveAll(JpaRepository<T, K> jpaRepository, Collection<T> entities) {
|
||||
return jpaRepository.saveAll(entities);
|
||||
}
|
||||
|
||||
public static <K, T> void deleteAllById(JpaRepository<T, K> jpaRepository, Collection<K> primaryKeys) {
|
||||
primaryKeys.forEach(jpaRepository::deleteById);
|
||||
}
|
||||
|
||||
public static <T, K> Optional<T> findFirst(JpaRepositoryImplementation<T, K> jpaRepository, Specification<T> specification) {
|
||||
return jpaRepository.findOne(specification);
|
||||
}
|
||||
|
||||
public static <K, T> boolean exists(JpaRepositoryImplementation<T, K> jpaRepository, Specification<T> specification) {
|
||||
return jpaRepository.count(specification) > 0;
|
||||
}
|
||||
|
||||
public static <T, K> List<T> findAll(JpaRepositoryImplementation<T, K> jpaRepository, Specification<T> specification) {
|
||||
return jpaRepository.findAll(specification);
|
||||
}
|
||||
|
||||
public static <T, K> Sheet<T> findAll(JpaRepositoryImplementation<T, K> jpaRepository, Specification<T> specification, Pagination pagination) {
|
||||
return Converter.page(
|
||||
jpaRepository.findAll(specification, Converter.pagination(pagination))
|
||||
);
|
||||
}
|
||||
|
||||
public static <T, K> long count(JpaRepositoryImplementation<T, K> jpaRepository, Specification<T> specification) {
|
||||
return jpaRepository.count(specification);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
package org.sadtech.haiti.database.repository.manager;
|
||||
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.sadtech.haiti.database.repository.OperationJpa;
|
||||
import org.sadtech.haiti.context.page.Pagination;
|
||||
import org.sadtech.haiti.context.page.Sheet;
|
||||
import org.sadtech.haiti.context.repository.SimpleManagerRepository;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public abstract class AbstractSimpleManagerRepository<T, K> implements SimpleManagerRepository<T, K> {
|
||||
|
||||
private final JpaRepository<T, K> jpaRepository;
|
||||
|
||||
@Override
|
||||
public T save(@NonNull T entity) {
|
||||
return OperationJpa.save(jpaRepository, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<T> findById(@NonNull K primaryKey) {
|
||||
return OperationJpa.findById(jpaRepository, primaryKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean existsById(@NonNull K primaryKey) {
|
||||
return OperationJpa.existsById(jpaRepository, primaryKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteById(@NonNull K primaryKey) {
|
||||
OperationJpa.deleteById(jpaRepository, primaryKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<T> saveAll(@NonNull Collection<T> entities) {
|
||||
return OperationJpa.saveAll(jpaRepository, entities);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteAllById(@NonNull Collection<K> primaryKeys) {
|
||||
OperationJpa.deleteAllById(jpaRepository, primaryKeys);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Sheet<T> findAll(@NonNull Pagination pagination) {
|
||||
return OperationJpa.findAll(jpaRepository, pagination);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
package org.sadtech.haiti.database.repository.manager;
|
||||
|
||||
import lombok.NonNull;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.sadtech.haiti.context.page.Pagination;
|
||||
import org.sadtech.haiti.context.page.Sheet;
|
||||
import org.sadtech.haiti.database.repository.OperationJpa;
|
||||
import org.sadtech.haiti.filter.Filter;
|
||||
import org.sadtech.haiti.filter.FilterOperation;
|
||||
import org.springframework.dao.InvalidDataAccessResourceUsageException;
|
||||
import org.springframework.data.jpa.repository.support.JpaRepositoryImplementation;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@Slf4j
|
||||
public abstract class FilterManagerRepository<T, K> extends AbstractSimpleManagerRepository<T, K> implements FilterOperation<T> {
|
||||
|
||||
private final JpaRepositoryImplementation<T, K> jpaRepositoryImplementation;
|
||||
|
||||
public FilterManagerRepository(JpaRepositoryImplementation<T, K> jpaRepository) {
|
||||
super(jpaRepository);
|
||||
this.jpaRepositoryImplementation = jpaRepository;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Sheet<T> findAll(@NonNull Filter filter, @NonNull Pagination pagination) {
|
||||
return OperationJpa.findAll(jpaRepositoryImplementation, filter.build(), pagination);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<T> findFirst(@NonNull Filter filter) {
|
||||
try {
|
||||
return OperationJpa.findFirst(jpaRepositoryImplementation, filter.build());
|
||||
} catch (InvalidDataAccessResourceUsageException e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean exists(@NonNull Filter filter) {
|
||||
try {
|
||||
return OperationJpa.exists(jpaRepositoryImplementation, filter.build());
|
||||
} catch (InvalidDataAccessResourceUsageException e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long count(@NonNull Filter filter) {
|
||||
try {
|
||||
return OperationJpa.count(jpaRepositoryImplementation, filter.build());
|
||||
} catch (InvalidDataAccessResourceUsageException e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package org.sadtech.haiti.database.util;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.NonNull;
|
||||
import org.sadtech.haiti.context.enums.TypeSort;
|
||||
import org.sadtech.haiti.context.page.Pagination;
|
||||
import org.sadtech.haiti.context.page.Sheet;
|
||||
import org.sadtech.haiti.core.page.SheetImpl;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.domain.Sort;
|
||||
|
||||
|
||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class Converter {
|
||||
|
||||
public static Pageable pagination(@NonNull Pagination pagination) {
|
||||
if (pagination.getTypeSort() != null) {
|
||||
return PageRequest.of(
|
||||
pagination.getPage(),
|
||||
pagination.getSize(),
|
||||
TypeSort.ASC.equals(pagination.getTypeSort()) ? Sort.Direction.ASC : Sort.Direction.DESC,
|
||||
pagination.getFieldSort()
|
||||
);
|
||||
}
|
||||
return PageRequest.of(pagination.getPage(), pagination.getSize());
|
||||
}
|
||||
|
||||
public static <T> Sheet<T> page(@NonNull Page<T> page) {
|
||||
return SheetImpl.<T>builder()
|
||||
.totalPage(page.getTotalPages())
|
||||
.totalElement(page.getTotalElements())
|
||||
.size(page.getSize())
|
||||
.number(page.getNumber())
|
||||
.content(page.getContent())
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
113
pom.xml
Normal file
113
pom.xml
Normal file
@ -0,0 +1,113 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.sadtech.haiti</groupId>
|
||||
<artifactId>haiti</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<modules>
|
||||
<module>haiti-context</module>
|
||||
<module>haiti-core</module>
|
||||
<module>haiti-database</module>
|
||||
</modules>
|
||||
|
||||
<properties>
|
||||
<java.version>1.8</java.version>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
|
||||
<sadtech.haiti.context.version>0.0.1-SNAPSHOT</sadtech.haiti.context.version>
|
||||
<sadtech.haiti.core.version>0.0.1-SNAPSHOT</sadtech.haiti.core.version>
|
||||
<sadtech.haiti.filter.api.version>0.0.1-SNAPSHOT</sadtech.haiti.filter.api.version>
|
||||
<sadtech.haiti.filter.criteria.version>0.0.1-SNAPSHOT</sadtech.haiti.filter.criteria.version>
|
||||
|
||||
<spring.data.elasticsearch.version>4.1.0</spring.data.elasticsearch.version>
|
||||
<spring.data.jpa.version>2.4.0</spring.data.jpa.version>
|
||||
<spring.data.commons.version>2.4.0</spring.data.commons.version>
|
||||
|
||||
<elasticsearch.version>7.9.3</elasticsearch.version>
|
||||
<lombok.version>1.18.16</lombok.version>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.sadtech.haiti</groupId>
|
||||
<artifactId>haiti-context</artifactId>
|
||||
<version>${sadtech.haiti.context.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.sadtech.haiti</groupId>
|
||||
<artifactId>haiti-core</artifactId>
|
||||
<version>${sadtech.haiti.core.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.sadtech.haiti.filter</groupId>
|
||||
<artifactId>criteria-filter</artifactId>
|
||||
<version>${sadtech.haiti.filter.criteria.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>${lombok.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.sadtech.haiti.filter</groupId>
|
||||
<artifactId>filter-api</artifactId>
|
||||
<version>${sadtech.haiti.filter.api.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.elasticsearch</groupId>
|
||||
<artifactId>elasticsearch</artifactId>
|
||||
<version>${elasticsearch.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>javax.persistence</groupId>
|
||||
<artifactId>javax.persistence-api</artifactId>
|
||||
<version>2.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- spring -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.data</groupId>
|
||||
<artifactId>spring-data-elasticsearch</artifactId>
|
||||
<version>${spring.data.elasticsearch.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.data</groupId>
|
||||
<artifactId>spring-data-commons</artifactId>
|
||||
<version>${spring.data.commons.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.data</groupId>
|
||||
<artifactId>spring-data-jpa</artifactId>
|
||||
<version>${spring.data.jpa.version}</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
<developers>
|
||||
<developer>
|
||||
<id>uPagge</id>
|
||||
<name>Struchkov Mark</name>
|
||||
<email>upagge@ya.ru</email>
|
||||
<organization>SADTECH</organization>
|
||||
<url>https://t.me/uPagge</url>
|
||||
</developer>
|
||||
</developers>
|
||||
|
||||
</project>
|
Loading…
Reference in New Issue
Block a user