package org.nextprot.api.etl.domain; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import org.nextprot.api.commons.exception.NextProtException; import com.fasterxml.jackson.databind.ObjectMapper; public class SourceConfig { static class NPSource { private String source, releaseDate, url, entryType; private String[] entries; public String getSource() { return source; } public void setSource(String source) { this.source = source; } public String getReleaseDate() { return releaseDate; } public void setReleaseDate(String releaseDate) { this.releaseDate = releaseDate; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getEntryType() { return entryType; } public void setEntryType(String entryType) { this.entryType = entryType; } public String[] getEntries() { return entries; } public void setEntries(String[] entries) { this.entries = entries; } } Map<String, NPSource> sources = new HashMap<>(); public SourceConfig() { try { ClassLoader classLoader = getClass().getClassLoader(); File file = new File(classLoader.getResource("etl-config.json").getFile()); ObjectMapper om = new ObjectMapper(); List <NPSource> arraySources = Arrays.asList(om.readValue(file, NPSource[].class)); for(NPSource nps : arraySources){ sources.put(nps.source.toLowerCase(), nps); } } catch (IOException e) { e.printStackTrace(); throw new NextProtException("Failed to parse ETL configuration", e); } } public NPSource getSource(String sourceName){ return sources.get(sourceName.toLowerCase()); } }