Only load SchemaService related beans in aai-common when schema.translator.list=schem...
[aai/aai-common.git] / aai-schema-ingest / src / main / java / org / onap / aai / setup / AAIConfigTranslator.java
index 4454ad2..66ffcf8 100644 (file)
@@ -4,6 +4,8 @@
  * ================================================================================
  * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
+ * Modifications Copyright © 2024 DEUTSCHE TELEKOM AG.
+ * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
+
 package org.onap.aai.setup;
 
 import java.io.File;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.TreeMap;
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
+import org.springframework.stereotype.Component;
+
 /**
  * <b>AAIConfigTranslator</b> is responsible for looking at the
  * schema files and edge files based on the available versions
  * Also has the ability to exclude them based on the node.exclusion.pattern
  */
+@Component
 public class AAIConfigTranslator extends ConfigTranslator {
 
-    private static final String FILESEP = (System.getProperty("file.separator") == null) ? "/" : System.getProperty("file.separator");
-
-    public AAIConfigTranslator(SchemaLocationsBean bean, SchemaConfigVersions schemaVersions) {
-               super(bean, schemaVersions);
-       }
-       
-       /* (non-Javadoc)
-        * @see org.onap.aai.setup.ConfigTranslator#getNodeFiles()
-        */
-       @Override
-       public Map<SchemaVersion, List<String>> getNodeFiles() {
-
-               Map<SchemaVersion, List<String>> files = new TreeMap<>();
-               for (SchemaVersion v : schemaVersions.getVersions()) {
-                       List<String> container = getVersionNodeFiles(v);
-                       files.put(v, container);
-               }
-               
-               return files;
-       }
-       
-
-       private List<String> getVersionNodeFiles(SchemaVersion v) {
-           return getVersionFiles(
-               bean.getNodeDirectory(),
-                       v,
-                       () -> bean.getNodesInclusionPattern().stream(),
-                       () -> bean.getNodesExclusionPattern().stream()
-               );
-       }
-       
-
-       /* (non-Javadoc)
-        * @see org.onap.aai.setup.ConfigTranslator#getEdgeFiles()
-        */
-       @Override
-       public Map<SchemaVersion, List<String>> getEdgeFiles() {
-
-               Map<SchemaVersion, List<String>> files = new TreeMap<>();
-               for (SchemaVersion v : schemaVersions.getVersions()) {
-                       List<String> container = getVersionEdgeFiles(v);
-                       files.put(v, container);
-               }
-
-               return files;
-       }
-
-       private List<String> getVersionEdgeFiles(SchemaVersion v) {
-
-               return getVersionFiles(
-                               bean.getEdgeDirectory(),
-                               v,
-                               () -> bean.getEdgesInclusionPattern().stream(),
-                               () -> bean.getEdgesExclusionPattern().stream()
-               );
-       }
-
-       private List<String> getVersionFiles(
-                       String startDirectory,
-                       SchemaVersion schemaVersion,
-                       Supplier<Stream<String>> inclusionPattern,
-                       Supplier<Stream<String>> exclusionPattern
-       ){
-
-               List<String> container;
-               final String directoryName = startDirectory + FILESEP + schemaVersion.toString() + FILESEP;
-               container = Arrays.stream(new File(directoryName).listFiles())
-                               .map(File::getName)
-                               .filter(name -> inclusionPattern.get().anyMatch(name::matches))
-                               .map(name -> directoryName + name)
-                               .filter(name -> exclusionPattern.get().noneMatch(name::matches))
-                               .collect(Collectors.toList());
-
-               return container;
-       }
+    public AAIConfigTranslator(SchemaLocationsBean schemaLocationsBean, SchemaConfigVersions schemaConfigVersions) {
+        super(schemaLocationsBean, schemaConfigVersions);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.onap.aai.setup.ConfigTranslator#getNodeFiles()
+     */
+    @Override
+    public Map<SchemaVersion, List<String>> getNodeFiles() {
+
+        Map<SchemaVersion, List<String>> files = new TreeMap<>();
+        for (SchemaVersion v : schemaVersions.getVersions()) {
+            List<String> container = getVersionNodeFiles(v);
+            files.put(v, container);
+        }
+
+        return files;
+    }
+
+    private List<String> getVersionNodeFiles(SchemaVersion v) {
+        return getVersionFiles(schemaLocationsBean.getNodeDirectory(), v, () -> schemaLocationsBean.getNodesInclusionPattern().stream(),
+                () -> schemaLocationsBean.getNodesExclusionPattern().stream());
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.onap.aai.setup.ConfigTranslator#getEdgeFiles()
+     */
+    @Override
+    public Map<SchemaVersion, List<String>> getEdgeFiles() {
+
+        Map<SchemaVersion, List<String>> files = new TreeMap<>();
+        for (SchemaVersion v : schemaVersions.getVersions()) {
+            List<String> container = getVersionEdgeFiles(v);
+            files.put(v, container);
+        }
+
+        return files;
+    }
+
+    private List<String> getVersionEdgeFiles(SchemaVersion v) {
+
+        return getVersionFiles(schemaLocationsBean.getEdgeDirectory(), v, () -> schemaLocationsBean.getEdgesInclusionPattern().stream(),
+                () -> schemaLocationsBean.getEdgesExclusionPattern().stream());
+    }
+
+    private List<String> getVersionFiles(String startDirectory, SchemaVersion schemaVersion,
+           Supplier<Stream<String>> inclusionPattern, Supplier<Stream<String>> exclusionPattern) {
+
+       final File versionDirectory = new File(startDirectory + "/" + schemaVersion.toString());
+       final List<String> container = Arrays.stream(versionDirectory.listFiles())
+           .filter(Objects::nonNull)    
+           .map(File::getName)
+           .filter(versionFileName -> inclusionPattern
+               .get()
+               .anyMatch(versionFileName::matches))
+           .map(versionFileName -> versionDirectory.getAbsolutePath() + "/" + versionFileName)
+           .filter(versionFilePath -> exclusionPattern
+               .get()
+               .noneMatch(versionFilePath::matches))
+           .collect(Collectors.toList());
+
+        return container;
+    }
 }