code clean up
This commit is contained in:
parent
5a6ab32768
commit
a5160d3ecd
|
@ -1,27 +0,0 @@
|
||||||
package eu.eudat.controllers.old;
|
|
||||||
|
|
||||||
import eu.eudat.logic.managers.LocalFetchManager;
|
|
||||||
import eu.eudat.models.old.local.LocalFetchModel;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@RestController
|
|
||||||
@CrossOrigin
|
|
||||||
@RequestMapping(value = "api/currency")
|
|
||||||
public class CurrencyController {
|
|
||||||
|
|
||||||
private LocalFetchManager localFetchManager;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public CurrencyController(LocalFetchManager localFetchManager) {
|
|
||||||
this.localFetchManager = localFetchManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
@RequestMapping(method = RequestMethod.GET)
|
|
||||||
public List<LocalFetchModel> getCurrencies( @RequestParam(value = "query", required = false) String query) throws Exception {
|
|
||||||
List<LocalFetchModel> currencies = localFetchManager.getCurrency(query);
|
|
||||||
return currencies;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
package eu.eudat.logic.managers;
|
|
||||||
|
|
||||||
import eu.eudat.logic.proxy.fetching.LocalFetcher;
|
|
||||||
import eu.eudat.utilities.helpers.StreamDistinctBy;
|
|
||||||
import eu.eudat.models.old.local.LocalFetchModel;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
public class LocalFetchManager {
|
|
||||||
private LocalFetcher localFetcher;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
public LocalFetchManager(LocalFetcher localFetcher) {
|
|
||||||
this.localFetcher = localFetcher;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<LocalFetchModel> getCurrency(String query) throws Exception {
|
|
||||||
List<Map<String, String>> data = localFetcher.retrieveCurrency();
|
|
||||||
List<LocalFetchModel> result = data.stream().map(entry -> new LocalFetchModel(entry.get("name"), entry.get("value"))).collect(Collectors.toList());
|
|
||||||
result = result.stream().filter(localFetchModel -> localFetchModel.getValue() != null).filter(StreamDistinctBy.distinctByKey(LocalFetchModel::getValue)).filter(localFetchModel -> localFetchModel.getName().toLowerCase().contains(query.toLowerCase())).collect(Collectors.toList());
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,100 +0,0 @@
|
||||||
package eu.eudat.logic.proxy.fetching;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import eu.eudat.logic.proxy.fetching.entities.Config;
|
|
||||||
import eu.eudat.logic.proxy.fetching.entities.ConfigSingle;
|
|
||||||
import org.springframework.cache.annotation.Cacheable;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import jakarta.xml.bind.JAXBContext;
|
|
||||||
import jakarta.xml.bind.Unmarshaller;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.lang.reflect.Method;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
public class LocalFetcher {
|
|
||||||
|
|
||||||
@Cacheable("currencies")
|
|
||||||
public List<Map<String, String>> retrieveCurrency() throws Exception {
|
|
||||||
InputStream is = getClass().getClassLoader().getResource("internal/fetchConfig.xml").openStream();
|
|
||||||
JAXBContext context = JAXBContext.newInstance(Config.class);
|
|
||||||
Unmarshaller unmarshaller = context.createUnmarshaller();
|
|
||||||
Config config = (Config) unmarshaller.unmarshal(is);
|
|
||||||
is.close();
|
|
||||||
ConfigSingle currencyConfig = config.getConfigs().stream().filter(configSingle -> configSingle.getType().equals("currency")).findFirst().get();
|
|
||||||
|
|
||||||
return retrieveData(currencyConfig);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Map<String, String>> retrieveData(ConfigSingle configSingle) throws Exception {
|
|
||||||
List<Map<String, String>> result = new ArrayList<>();
|
|
||||||
InputStream is = getClass().getClassLoader().getResource(configSingle.getFilePath()).openStream();
|
|
||||||
FileType type = FileType.fromName(configSingle.getFileType());
|
|
||||||
switch(type) {
|
|
||||||
case XML:
|
|
||||||
{
|
|
||||||
Class<?> aClass = Class.forName(configSingle.getParseClass());
|
|
||||||
JAXBContext context = JAXBContext.newInstance(aClass);
|
|
||||||
Unmarshaller unmarshaller = context.createUnmarshaller();
|
|
||||||
|
|
||||||
Object object = unmarshaller.unmarshal(is);
|
|
||||||
is.close();
|
|
||||||
Method reader = null;
|
|
||||||
if (configSingle.getParseField() != null && !configSingle.getParseField().isEmpty()) {
|
|
||||||
String camelCaseGetter =configSingle.getParseField() != null && !configSingle.getParseField().isEmpty() ? "get" + configSingle.getParseField().substring(0, 1).toUpperCase() + configSingle.getParseField().substring(1) : "";
|
|
||||||
reader = aClass.getMethod(camelCaseGetter);
|
|
||||||
}
|
|
||||||
ObjectMapper objectMapper = new ObjectMapper();
|
|
||||||
List<Map<String, String>> values = new ArrayList<>();
|
|
||||||
int max = 1;
|
|
||||||
if (reader != null) {
|
|
||||||
Object invokedField = reader.invoke(object);
|
|
||||||
if (invokedField instanceof Collection) {
|
|
||||||
max = ((Collection) invokedField).size();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (int i = 0; i< max; i++) {
|
|
||||||
Object value;
|
|
||||||
if (reader != null) {
|
|
||||||
Object invokedField = reader.invoke(object);
|
|
||||||
if (invokedField instanceof Collection) {
|
|
||||||
value = ((Collection) invokedField).toArray()[i];
|
|
||||||
} else {
|
|
||||||
value = invokedField;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
value = object;
|
|
||||||
}
|
|
||||||
Map<String, String> map = objectMapper.convertValue(value, Map.class);
|
|
||||||
result.add(new HashMap<>());
|
|
||||||
result.get(result.size() - 1).put("name", map.get(configSingle.getName()));
|
|
||||||
result.get(result.size() - 1).put("value", map.get(configSingle.getValue()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum FileType {
|
|
||||||
XML("xml"), JSON("json");
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
FileType(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static FileType fromName(String name) {
|
|
||||||
for (FileType type: FileType.values()) {
|
|
||||||
if (name.equals(type.getName())) {
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
throw new NoSuchElementException("File Type [" + name + "] is not supported");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
package eu.eudat.logic.proxy.fetching.entities;
|
|
||||||
|
|
||||||
import jakarta.xml.bind.annotation.XmlElement;
|
|
||||||
import jakarta.xml.bind.annotation.XmlElementWrapper;
|
|
||||||
import jakarta.xml.bind.annotation.XmlRootElement;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XmlRootElement(name = "fetchConfig")
|
|
||||||
public class Config {
|
|
||||||
private List<ConfigSingle> configs;
|
|
||||||
|
|
||||||
@XmlElementWrapper
|
|
||||||
@XmlElement(name = "config")
|
|
||||||
public List<ConfigSingle> getConfigs() {
|
|
||||||
return configs;
|
|
||||||
}
|
|
||||||
public void setConfigs(List<ConfigSingle> configs) {
|
|
||||||
this.configs = configs;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,71 +0,0 @@
|
||||||
package eu.eudat.logic.proxy.fetching.entities;
|
|
||||||
|
|
||||||
import jakarta.xml.bind.annotation.XmlElement;
|
|
||||||
import jakarta.xml.bind.annotation.XmlRootElement;
|
|
||||||
|
|
||||||
@XmlRootElement(name = "config")
|
|
||||||
public class ConfigSingle {
|
|
||||||
private String type;
|
|
||||||
private String fileType;
|
|
||||||
private String filePath;
|
|
||||||
private String parseClass;
|
|
||||||
private String parseField;
|
|
||||||
private String name;
|
|
||||||
private String value;
|
|
||||||
|
|
||||||
@XmlElement(name = "type")
|
|
||||||
public String getType() {
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
public void setType(String type) {
|
|
||||||
this.type = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XmlElement(name = "fileType")
|
|
||||||
public String getFileType() {
|
|
||||||
return fileType;
|
|
||||||
}
|
|
||||||
public void setFileType(String fileType) {
|
|
||||||
this.fileType = fileType;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XmlElement(name = "filePath")
|
|
||||||
public String getFilePath() {
|
|
||||||
return filePath;
|
|
||||||
}
|
|
||||||
public void setFilePath(String filePath) {
|
|
||||||
this.filePath = filePath;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XmlElement(name = "parseClass")
|
|
||||||
public String getParseClass() {
|
|
||||||
return parseClass;
|
|
||||||
}
|
|
||||||
public void setParseClass(String parseClass) {
|
|
||||||
this.parseClass = parseClass;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XmlElement(name = "parseField")
|
|
||||||
public String getParseField() {
|
|
||||||
return parseField;
|
|
||||||
}
|
|
||||||
public void setParseField(String parseField) {
|
|
||||||
this.parseField = parseField;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XmlElement(name = "name")
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XmlElement(name = "value")
|
|
||||||
public String getValue() {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
public void setValue(String value) {
|
|
||||||
this.value = value;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
package eu.eudat.logic.proxy.fetching.entities;
|
|
||||||
|
|
||||||
import jakarta.xml.bind.annotation.XmlElement;
|
|
||||||
import jakarta.xml.bind.annotation.XmlElementWrapper;
|
|
||||||
import jakarta.xml.bind.annotation.XmlRootElement;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@XmlRootElement(name = "ISO_4217")
|
|
||||||
public class CurrencyModel {
|
|
||||||
private List<CurrencySingleModel> currencies;
|
|
||||||
|
|
||||||
@XmlElementWrapper(name = "CcyTbl")
|
|
||||||
@XmlElement(name = "CcyNtry")
|
|
||||||
public List<CurrencySingleModel> getCurrencies() {
|
|
||||||
return currencies;
|
|
||||||
}
|
|
||||||
public void setCurrencies(List<CurrencySingleModel> currencies) {
|
|
||||||
this.currencies = currencies;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,53 +0,0 @@
|
||||||
package eu.eudat.logic.proxy.fetching.entities;
|
|
||||||
|
|
||||||
import jakarta.xml.bind.annotation.XmlElement;
|
|
||||||
import jakarta.xml.bind.annotation.XmlRootElement;
|
|
||||||
|
|
||||||
@XmlRootElement(name = "CcyNtry")
|
|
||||||
public class CurrencySingleModel {
|
|
||||||
private String country;
|
|
||||||
private String currency;
|
|
||||||
private String code;
|
|
||||||
private Integer numericCode;
|
|
||||||
private Integer unit;
|
|
||||||
|
|
||||||
@XmlElement(name = "CtryNm")
|
|
||||||
public String getCountry() {
|
|
||||||
return country;
|
|
||||||
}
|
|
||||||
public void setCountry(String country) {
|
|
||||||
this.country = country;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XmlElement(name = "CcyNm")
|
|
||||||
public String getCurrency() {
|
|
||||||
return currency;
|
|
||||||
}
|
|
||||||
public void setCurrency(String currency) {
|
|
||||||
this.currency = currency;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XmlElement(name = "Ccy")
|
|
||||||
public String getCode() {
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
public void setCode(String code) {
|
|
||||||
this.code = code;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XmlElement(name = "CcyNbr")
|
|
||||||
public Integer getNumericCode() {
|
|
||||||
return numericCode;
|
|
||||||
}
|
|
||||||
public void setNumericCode(Integer numericCode) {
|
|
||||||
this.numericCode = numericCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
@XmlElement(name = "CcyMnrUnts")
|
|
||||||
public Integer getUnit() {
|
|
||||||
return unit;
|
|
||||||
}
|
|
||||||
public void setUnit(Integer unit) {
|
|
||||||
this.unit = unit;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
package eu.eudat.models.old.local;
|
|
||||||
|
|
||||||
public class LocalFetchModel {
|
|
||||||
private String name;
|
|
||||||
private String value;
|
|
||||||
|
|
||||||
public LocalFetchModel(String name, String value) {
|
|
||||||
this.name = name;
|
|
||||||
this.value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getValue() {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setValue(String value) {
|
|
||||||
this.value = value;
|
|
||||||
}
|
|
||||||
}
|
|
Binary file not shown.
Binary file not shown.
|
@ -1,13 +0,0 @@
|
||||||
<fetchConfig>
|
|
||||||
<configs>
|
|
||||||
<config>
|
|
||||||
<type>currency</type>
|
|
||||||
<fileType>xml</fileType>
|
|
||||||
<filePath>internal/iso-4217.xml</filePath>
|
|
||||||
<parseClass>eu.eudat.logic.proxy.fetching.entities.CurrencyModel</parseClass>
|
|
||||||
<parseField>currencies</parseField>
|
|
||||||
<name>currency</name>
|
|
||||||
<value>code</value>
|
|
||||||
</config>
|
|
||||||
</configs>
|
|
||||||
</fetchConfig>
|
|
Loading…
Reference in New Issue