47 lines
1.8 KiB
Java
47 lines
1.8 KiB
Java
package ru.nbch.indicsearchservice.loader.subtable;
|
|
|
|
import java.io.IOException;
|
|
import java.nio.file.Path;
|
|
import java.util.LinkedHashMap;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
import java.util.UUID;
|
|
import org.apache.ibatis.cursor.Cursor;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import ru.nbch.indicsearchservice.exception.InternalException;
|
|
import ru.nbch.indicsearchservice.model.TableMetaData;
|
|
import ru.nbch.indicsearchservice.util.IndicSearchUtils;
|
|
import ru.nbch.indicsearchservice.util.MapperHolder;
|
|
|
|
@Component
|
|
public class RuCollateralTableLoader implements RuUidSubTableLoader {
|
|
private final MapperHolder mapperHolder;
|
|
private final IndicSearchUtils indicSearchUtils;
|
|
|
|
public RuCollateralTableLoader(MapperHolder mapperHolder,
|
|
IndicSearchUtils indicSearchUtils) {
|
|
this.mapperHolder = mapperHolder;
|
|
this.indicSearchUtils = indicSearchUtils;
|
|
}
|
|
|
|
@Override
|
|
public String getTableName() {
|
|
return "RU_COLLATERAL";
|
|
}
|
|
|
|
@Override
|
|
@Transactional(readOnly = true)
|
|
public void searchByRuUidFid(UUID taskId,
|
|
Set<Integer> fids,
|
|
Map<String, Path> tableFileMap,
|
|
Map<String, TableMetaData> tableMetaDataMap) {
|
|
if (!fids.isEmpty()) {
|
|
try (Cursor<LinkedHashMap<String, Object>> cursor = mapperHolder.getIndicMapper().findAllByFidsFromRuCollateral(fids)) {
|
|
tableFileMap.put(getTableName(), indicSearchUtils.writeRowsToFile(taskId, getTableName(), cursor, tableMetaDataMap));
|
|
} catch (IOException e) {
|
|
throw new InternalException("Failed to read cursor " + e);
|
|
}
|
|
}
|
|
}
|
|
}
|