diff --git a/gsrs-spring-boot-autoconfigure/src/main/java/gsrs/GsrsFactoryConfiguration.java b/gsrs-spring-boot-autoconfigure/src/main/java/gsrs/GsrsFactoryConfiguration.java index b24e40c7..d550e687 100644 --- a/gsrs-spring-boot-autoconfigure/src/main/java/gsrs/GsrsFactoryConfiguration.java +++ b/gsrs-spring-boot-autoconfigure/src/main/java/gsrs/GsrsFactoryConfiguration.java @@ -25,9 +25,9 @@ @Slf4j public class GsrsFactoryConfiguration { - private Map>> validators; + private Map>> validators; - private Map>> importAdapterFactories; + private Map>> importAdapterFactories; private Map>> matchableCalculators; @@ -146,16 +146,40 @@ public List getImportAdapterFactories(Stri return Collections.emptyList(); } try { - List> list = importAdapterFactories.get(context); - log.trace("list (before):"); - list.forEach(i -> i.keySet().forEach(k -> log.trace("key: {}; value: {}", k, i.get(k)))); + Map> map = importAdapterFactories.get(context); + log.trace("map (before):"); - if (list == null || list.isEmpty()) { + // fix this later + // list.forEach(i -> i.keySet().forEach(k -> log.trace("key: {}; value: {}", k, i.get(k)))); + + if (map == null || map.isEmpty()) { log.warn("no import adapter factory configuration info found!"); return Collections.emptyList(); } + + // Copy the key into the Object for quality control and maybe as a way to access by key from the list + for (String k: map.keySet()) { + map.get(k).put("key", k); + } + + // By the time we are here all conf files have been processed + + List list = map.values().stream().collect(Collectors.toList()); + List configs = EntityUtils.convertClean(list, new TypeReference>() { }); + + System.out.println("Import adapter factory configurations found before filtering: " + configs.size()); + + configs = configs.stream().filter(a->!a.isDisabled()).sorted(Comparator.comparing(a->a.getOrder(),nullsFirst(naturalOrder()))).collect(Collectors.toList()); + + System.out.println("Import adapter factory configurations active after filtering: " + configs.size()); + + System.out.println(String.format("%s|%s|%s|%s", "ImportAdapterFactoryConfig", "class", "key", "order", "isDisabled")); + for (ImportAdapterFactoryConfig config : configs) { + System.out.println(String.format("%s|%s|%s|%s", "ImportAdapterFactoryConfig", config.getImportAdapterFactoryClass(), config.getKey(), config.getOrder(), config.isDisabled())); + } + //log.trace("list (after):"); //configs.forEach(c-> log.trace("name: {}; desc: {}; ext: {}", c.getAdapterName(), c.getDescription(), c.getSupportedFileExtensions())); return configs; diff --git a/gsrs-spring-boot-autoconfigure/src/main/java/gsrs/imports/DefaultImportAdapterFactoryConfig.java b/gsrs-spring-boot-autoconfigure/src/main/java/gsrs/imports/DefaultImportAdapterFactoryConfig.java index def8c9ed..433e4783 100644 --- a/gsrs-spring-boot-autoconfigure/src/main/java/gsrs/imports/DefaultImportAdapterFactoryConfig.java +++ b/gsrs-spring-boot-autoconfigure/src/main/java/gsrs/imports/DefaultImportAdapterFactoryConfig.java @@ -26,6 +26,11 @@ public class DefaultImportAdapterFactoryConfig implements ImportAdapterFactoryCo //private List actions; private List extensions; private String adapterName; + + private String key; + private Double order; + private boolean disabled = false; + private Map parameters; private String stagingAreaServiceClass; private List entityServices; @@ -78,6 +83,37 @@ public void setImportAdapterFactoryClass(Class importAdapterFactoryClass) { this.importAdapterFactoryClass = importAdapterFactoryClass; } + @Override + public String getKey() { + return this.key; + } + + @Override + public void setKey(String key) { + this.key = key; + } + + @Override + public Double getOrder() { + return this.order; + } + + @Override + public void setOrder(Double order) { + this.order = order; + } + + @Override + public boolean isDisabled() { + return this.disabled; + } + + @Override + public void setDisabled(boolean disabled) { + this.disabled = disabled; + } + + @Override public Map getParameters() { return parameters; diff --git a/gsrs-spring-boot-autoconfigure/src/main/java/gsrs/imports/ImportAdapterFactoryConfig.java b/gsrs-spring-boot-autoconfigure/src/main/java/gsrs/imports/ImportAdapterFactoryConfig.java index db18e984..0f712b51 100644 --- a/gsrs-spring-boot-autoconfigure/src/main/java/gsrs/imports/ImportAdapterFactoryConfig.java +++ b/gsrs-spring-boot-autoconfigure/src/main/java/gsrs/imports/ImportAdapterFactoryConfig.java @@ -20,6 +20,16 @@ public interface ImportAdapterFactoryConfig { void setImportAdapterFactoryClass(Class importAdapterFactoryClass); + String getKey(); + void setKey(String key); + + + Double getOrder(); + void setOrder(Double order); + + boolean isDisabled(); + void setDisabled(boolean disabled); + Map getParameters(); void setParameters(Map params); diff --git a/gsrs-spring-boot-autoconfigure/src/test/java/gsrs/imports/TestDefaultImportAdapterFactoryConfig.java b/gsrs-spring-boot-autoconfigure/src/test/java/gsrs/imports/TestDefaultImportAdapterFactoryConfig.java index 893a398f..d12c935e 100644 --- a/gsrs-spring-boot-autoconfigure/src/test/java/gsrs/imports/TestDefaultImportAdapterFactoryConfig.java +++ b/gsrs-spring-boot-autoconfigure/src/test/java/gsrs/imports/TestDefaultImportAdapterFactoryConfig.java @@ -14,6 +14,10 @@ public class TestDefaultImportAdapterFactoryConfig { @Test @Disabled public void testSetup() throws ClassNotFoundException, IllegalAccessException, NoSuchFieldException { + // AW: this test does not work, I modified it a bit to not cause build error + // The test was "disabled" before I made these code changes. + // AW: to check with MM on why it was disabled. + String substanceContext="substances"; GsrsFactoryConfiguration config = new GsrsFactoryConfiguration(); Map stagingAreaService = new HashMap<>(); @@ -24,15 +28,17 @@ public void testSetup() throws ClassNotFoundException, IllegalAccessException, N entityService.put("substances", "gsrs.stagingarea.service.StagingAreaEntityService"); config.setDefaultStagingAreaEntityService(entityService); - Map>> adapterConfig = new HashMap<>(); + Map>> adapterConfig = new HashMap<>(); Map oneAdapter = new HashMap<>(); + + oneAdapter.put("key", "SDFImportAdaptorFactory"); oneAdapter.put("importAdapterFactoryClass", "gsrs.module.substance.importers.SDFImportAdaptorFactory"); oneAdapter.put("adapterName", "NSRS SDF Adapter"); oneAdapter.put("extensions", new String[] {"sdf", "sd"}); oneAdapter.put("parameters", buildConfigParameters()); oneAdapter.put("description", "general description"); - List> adapters = new ArrayList<>(); - adapters.add(oneAdapter); + Map> adapters = new HashMap<>(); + adapters.put((String)oneAdapter.get("key"), oneAdapter); adapterConfig.put(substanceContext, adapters); config.setImportAdapterFactories(adapterConfig);