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 / ConfigTranslator.java
index b34622d..50b9dc2 100644 (file)
@@ -1,8 +1,7 @@
-/** 
- * ============LICENSE_START=======================================================
+/**  ============LICENSE_START=======================================================
  * org.onap.aai
  * ================================================================================
- * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017-18 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ============LICENSE_END=========================================================
- *
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- */
+*/
 
 package org.onap.aai.setup;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.commons.io.IOUtils;
+import org.onap.aai.edges.JsonIngestor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 
 /**
@@ -33,29 +41,77 @@ import org.springframework.beans.factory.annotation.Autowired;
  * the format the Ingestors can work with.
  * 
  */
-public abstract class ConfigTranslator {
-       protected SchemaLocationsBean bean;
-       
-       @Autowired
-       public ConfigTranslator(SchemaLocationsBean bean) {
-               this.bean = bean;
-       }
-       
-       /**
-        * Translates the contents of the schema config file
-        * into the input for the NodeIngestor
-        * 
-        * @return Map of Version to the list of (string) filenames to be 
-        * ingested for that version
-        */
-       public abstract Map<Version, List<String>> getNodeFiles();
-       
-       /**
-        * Translates the contents of the schema config file
-        * into the input for the EdgeIngestor
-        * 
-        * @return Map of Version to the List of (String) filenames to be 
-        * ingested for that version
-        */
-       public abstract Map<Version, List<String>> getEdgeFiles();
+public abstract class ConfigTranslator extends Translator {
+    private static final Logger LOGGER = LoggerFactory.getLogger(ConfigTranslator.class);
+
+    protected SchemaLocationsBean schemaLocationsBean;
+
+    @Autowired
+    public ConfigTranslator(SchemaLocationsBean schemaLocationsBean, SchemaConfigVersions schemaConfigVersions) {
+        super(schemaConfigVersions);
+        this.schemaLocationsBean = schemaLocationsBean;
+
+    }
+
+    /**
+     * Translates the contents of the schema config file
+     * into the input for the NodeIngestor
+     * 
+     * @return Map of Version to the list of (string) filenames to be
+     *         ingested for that version
+     */
+    public abstract Map<SchemaVersion, List<String>> getNodeFiles();
+
+    public List<InputStream> getVersionNodeStream(SchemaVersion version) {
+
+        Map<SchemaVersion, List<String>> filesToIngest = getNodeFiles();
+        List<InputStream> streams = new ArrayList<>();
+
+        if (!filesToIngest.containsKey(version)) {
+            return streams;
+        }
+        List<String> versionFiles = filesToIngest.get(version);
+
+        for (String name : versionFiles) {
+            try {
+                InputStream stream = new FileInputStream(new File(name));
+                String value = IOUtils.toString(stream, Charset.defaultCharset());
+                InputStream bis = (IOUtils.toInputStream(value, Charset.defaultCharset()));
+                streams.add(bis);
+            } catch (FileNotFoundException e) {
+                // TODO This may have to be cascaded
+                LOGGER.warn("File Not Found" + e.getMessage());
+            } catch (IOException e) {
+                LOGGER.warn("IOException while reading files" + e.getMessage());
+            }
+        }
+        return streams;
+    }
+
+    @Override
+    public List<String> getJsonPayload(SchemaVersion version) {
+        Map<SchemaVersion, List<String>> filesToIngest = getEdgeFiles();
+        List<String> jsonPayloads = new ArrayList<>();
+        if (!filesToIngest.containsKey(version)) {
+            return jsonPayloads;
+        }
+        List<String> versionFiles = filesToIngest.get(version);
+        JsonIngestor ji = new JsonIngestor();
+        for (String rulesFilename : versionFiles) {
+            jsonPayloads.add(ji.readInJsonFile(rulesFilename));
+
+        }
+
+        return jsonPayloads;
+    }
+
+    /**
+     * Translates the contents of the schema config file
+     * into the input for the EdgeIngestor
+     * 
+     * @return Map of Version to the List of (String) filenames to be
+     *         ingested for that version
+     */
+    public abstract Map<SchemaVersion, List<String>> getEdgeFiles();
+
 }