Compare commits
1 commit
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
190b4e0f4b |
6 changed files with 209 additions and 0 deletions
|
|
@ -1,14 +1,40 @@
|
|||
package ru.nbch.indicsearchservice.service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.nbch.indicsearchservice.dto.request.AddSearchJobRequestDto;
|
||||
import ru.nbch.indicsearchservice.dto.response.AddSearchJobResponseDto;
|
||||
import ru.nbch.indicsearchservice.dto.response.JobStatusResponseDto;
|
||||
import ru.nbch.indicsearchservice.service.tableloader.AbstractTableLoader;
|
||||
import ru.nbch.indicsearchservice.service.tableloader.TableLoaderName;
|
||||
import ru.nbch.indicsearchservice.util.TableData;
|
||||
|
||||
@Service
|
||||
public class IndicSearchService {
|
||||
private final List<AbstractTableLoader> tableLoaders;
|
||||
|
||||
public IndicSearchService(List<AbstractTableLoader> tableLoaders) {
|
||||
this.tableLoaders = tableLoaders;
|
||||
}
|
||||
|
||||
public AddSearchJobResponseDto addSearchJob(AddSearchJobRequestDto request) {
|
||||
List<TableLoaderName> foundTableLoaderNames = TableLoaderName
|
||||
.getTableLoaderNamesByDataTypeAndSearchParameter(request.getDataType(), request.getSearchParameter());
|
||||
|
||||
List<AbstractTableLoader> suitableTableLoaders = tableLoaders.stream()
|
||||
.filter(tl -> foundTableLoaderNames.contains(tl.getTableLoaderName()) || foundTableLoaderNames.contains(tl.getChildLoaders()))
|
||||
.toList();
|
||||
|
||||
List<TableData> result = new ArrayList<>();
|
||||
for (AbstractTableLoader tableLoader : suitableTableLoaders) {
|
||||
TableData tableData = tableLoader.fetchData(Map.of());
|
||||
tableLoader.fetchChildLoaders(tableData);
|
||||
result.add(tableData);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
package ru.nbch.indicsearchservice.service.tableloader;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import ru.nbch.indicsearchservice.util.TableData;
|
||||
|
||||
public abstract class AbstractTableLoader {
|
||||
public abstract TableLoaderName getTableLoaderName();
|
||||
|
||||
public abstract List<TableLoaderName> getChildLoaders();
|
||||
|
||||
public abstract TableData fetchData(Map<String, Object> inputData);
|
||||
|
||||
public abstract void fetchChildLoaders(TableData tableData);
|
||||
|
||||
public abstract Long countData(Map<String, Object> inputData);
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
package ru.nbch.indicsearchservice.service.tableloader;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import ru.nbch.indicsearchservice.util.TableData;
|
||||
|
||||
public class RuTradeTableLoader extends AbstractTableLoader {
|
||||
@Override
|
||||
public TableLoaderName getTableLoaderName() {
|
||||
return TableLoaderName.RU_TRADE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TableLoaderName> getChildLoaders() {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
@Override
|
||||
public TableData fetchData(Map<String, Object> inputData) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long countData(Map<String, Object> inputData) {
|
||||
return 0L;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
package ru.nbch.indicsearchservice.service.tableloader;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.nbch.indicsearchservice.util.TableData;
|
||||
|
||||
@Component
|
||||
public class RuUidTableLoader extends AbstractTableLoader {
|
||||
@Override
|
||||
public TableLoaderName getTableLoaderName() {
|
||||
return TableLoaderName.RU_UID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TableLoaderName> getChildLoaders() {
|
||||
return List.of(TableLoaderName.RU_TRADE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TableData fetchData(Map<String, Object> inputData) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fetchChildLoaders(TableData tableData) {
|
||||
Object val = tableData.getFieldData().stream().anyMatch(fieldDataDto -> fieldDataDto.key().equals("serialNumber"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long countData(Map<String, Object> inputData) {
|
||||
return 0L;
|
||||
}
|
||||
|
||||
public void collector(List<Map<String, Object>> mapperQueryResult, Subject subject) {
|
||||
subject.addResultByTable()
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
package ru.nbch.indicsearchservice.service.tableloader;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import ru.nbch.indicsearchservice.model.enums.DataType;
|
||||
import ru.nbch.indicsearchservice.model.enums.SearchParameter;
|
||||
|
||||
public enum TableLoaderName {
|
||||
RU_UID( // 1st level table
|
||||
List.of(DataType.GUTDF, DataType.RUTDF, DataType.TUTDF),
|
||||
List.of(SearchParameter.FID)
|
||||
),
|
||||
RU_TRADE(List.of(), List.of()), // 2nd level table
|
||||
;
|
||||
|
||||
private final List<DataType> suitableForDataType;
|
||||
private final List<SearchParameter> suitableForSearchParameter;
|
||||
|
||||
TableLoaderName(List<DataType> suitableForDataType, List<SearchParameter> suitableForSearchParameter) {
|
||||
this.suitableForDataType = suitableForDataType;
|
||||
this.suitableForSearchParameter = suitableForSearchParameter;
|
||||
}
|
||||
|
||||
public List<DataType> getSuitableForDataType() {
|
||||
return suitableForDataType;
|
||||
}
|
||||
|
||||
public List<SearchParameter> getSuitableForSearchParameter() {
|
||||
return suitableForSearchParameter;
|
||||
}
|
||||
|
||||
public static List<TableLoaderName> getTableLoaderNamesByDataTypeAndSearchParameter(DataType dataType, SearchParameter searchParameter) {
|
||||
List<TableLoaderName> result = new ArrayList<>();
|
||||
|
||||
for (TableLoaderName tableLoaderName : TableLoaderName.values()) {
|
||||
if (tableLoaderName.getSuitableForDataType().contains(dataType) &&
|
||||
tableLoaderName.getSuitableForSearchParameter().contains(searchParameter)) {
|
||||
result.add(tableLoaderName);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
57
src/main/java/ru/nbch/indicsearchservice/util/TableData.java
Normal file
57
src/main/java/ru/nbch/indicsearchservice/util/TableData.java
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
package ru.nbch.indicsearchservice.util;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public class TableData {
|
||||
private String tableName;
|
||||
private List<FieldDataDto> fieldData = new ArrayList<>();
|
||||
private List<TableData> relatedData = new ArrayList<>();
|
||||
|
||||
public TableData() {
|
||||
}
|
||||
|
||||
public TableData(String tableName, List<FieldDataDto> fieldData, List<TableData> relatedData) {
|
||||
this.tableName = tableName;
|
||||
this.fieldData = fieldData;
|
||||
this.relatedData = relatedData;
|
||||
}
|
||||
|
||||
public String getTableName() {
|
||||
return tableName;
|
||||
}
|
||||
|
||||
public List<FieldDataDto> getFieldData() {
|
||||
return fieldData;
|
||||
}
|
||||
|
||||
public List<TableData> getRelatedData() {
|
||||
return relatedData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
TableData tableData = (TableData) o;
|
||||
return Objects.equals(tableName, tableData.tableName) && Objects.equals(fieldData, tableData.fieldData) && Objects.equals(relatedData, tableData.relatedData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(tableName, fieldData, relatedData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TableData{" +
|
||||
"tableName='" + tableName + '\'' +
|
||||
", fieldData=" + fieldData +
|
||||
", relatedData=" + relatedData +
|
||||
'}';
|
||||
}
|
||||
|
||||
public record FieldDataDto(String key,
|
||||
Object value) {
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue