X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Fschema%2FEdgeRulesLoader.java;h=47be12b20d20ea5060fbeff8ee232e90e4f9c98d;hb=f6a319cdda918e33c1bf5cffbb356dd0b9feb069;hp=a990ae596de5a9ebe786e553f6c71fdcf32c3f59;hpb=00832f054dd0c21492af531548e321ea25cdb8b4;p=aai%2Fgizmo.git diff --git a/src/main/java/org/onap/schema/EdgeRulesLoader.java b/src/main/java/org/onap/schema/EdgeRulesLoader.java index a990ae5..47be12b 100644 --- a/src/main/java/org/onap/schema/EdgeRulesLoader.java +++ b/src/main/java/org/onap/schema/EdgeRulesLoader.java @@ -20,22 +20,10 @@ */ package org.onap.schema; -import com.google.common.collect.Multimap; -import org.apache.commons.io.IOUtils; -import org.onap.aai.cl.eelf.LoggerFactory; -import org.onap.aai.edges.EdgeRule; -import org.onap.aai.edges.exceptions.EdgeRuleNotFoundException; -import org.onap.aai.edges.EdgeIngestor; -import org.onap.aai.setup.ConfigTranslator; -import org.onap.aai.setup.SchemaLocationsBean; -import org.onap.aai.setup.Version; -import org.onap.crud.exception.CrudException; -import org.onap.crud.logging.CrudServiceMsgs; -import org.onap.schema.util.SchemaIngestPropertyReader; -import org.springframework.core.io.UrlResource; - -import javax.ws.rs.core.Response.Status; -import java.io.*; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; import java.util.Arrays; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -44,43 +32,72 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; +import javax.annotation.PostConstruct; +import javax.ws.rs.core.Response.Status; + +import org.apache.commons.io.IOUtils; +import org.onap.aai.cl.eelf.LoggerFactory; +import org.onap.aai.edges.EdgeIngestor; +import org.onap.aai.edges.EdgeRule; +import org.onap.aai.edges.exceptions.EdgeRuleNotFoundException; +import org.onap.aai.setup.SchemaVersion; +import org.onap.aai.setup.Translator; +import org.onap.crud.exception.CrudException; +import org.onap.crud.logging.CrudServiceMsgs; +import org.springframework.beans.factory.annotation.Autowired; + +import com.google.common.collect.Multimap; + public class EdgeRulesLoader { + private static Translator translator; + private static EdgeIngestor edgeIngestor; + + private static EdgePropsConfiguration edgePropsConfiguration; + private static Map versionContextMap = new ConcurrentHashMap<> (); - static final Pattern versionPattern = Pattern.compile ( "V(\\d*)" ); + static final Pattern versionPattern = Pattern.compile("(?i)v(\\d*)"); static final String propsPrefix = "edge_properties_"; static final String propsSuffix = ".json"; final static Pattern propsFilePattern = Pattern.compile ( propsPrefix + "(.*)" + propsSuffix ); - final static Pattern propsVersionPattern = Pattern.compile ( "v\\d*" ); + final static Pattern propsVersionPattern = Pattern.compile("(?i)v(\\d*)"); private static org.onap.aai.cl.api.Logger logger = LoggerFactory.getInstance ().getLogger ( EdgeRulesLoader.class.getName () ); - private EdgeRulesLoader () { + private EdgeRulesLoader () { } + + @Autowired + public EdgeRulesLoader(Translator translator, EdgeIngestor edgeIngestor, EdgePropsConfiguration edgePropsConfiguration) { + EdgeRulesLoader.translator = translator; + EdgeRulesLoader.edgeIngestor = edgeIngestor; + EdgeRulesLoader.edgePropsConfiguration = edgePropsConfiguration; } + @PostConstruct + public void init() throws CrudException { + EdgeRulesLoader.loadModels(); + } + /** * Finds all DB Edge Rules and Edge Properties files for all OXM models. * * @throws CrudException */ public static synchronized void loadModels () throws CrudException { - SchemaIngestPropertyReader schemaIngestPropertyReader = new SchemaIngestPropertyReader (); - SchemaLocationsBean schemaLocationsBean = new SchemaLocationsBean (); - schemaLocationsBean.setEdgeDirectory ( schemaIngestPropertyReader.getEdgeDir () ); - ConfigTranslator configTranslator = new OxmModelConfigTranslator ( schemaLocationsBean ); - EdgeIngestor edgeIngestor = new EdgeIngestor ( configTranslator ); - Map propFiles = edgePropertyFiles(schemaIngestPropertyReader); - - if (logger.isDebugEnabled ()) { - logger.debug ( "Loading DB Edge Rules" ); + Map propFiles = edgePropertyFiles(edgePropsConfiguration); + + if (logger.isDebugEnabled()) { + logger.debug("Loading DB Edge Rules"); } - for (String version : OxmModelLoader.getLoadedOXMVersions ()) { + for (String version : OxmModelLoader.getLoadedOXMVersions()) { try { - loadModel ( Version.valueOf ( version ), edgeIngestor, propFiles ); + SchemaVersion schemaVersion = translator.getSchemaVersions().getVersions().stream() + .filter(s -> s.toString().equalsIgnoreCase(version)).findAny().orElse(null); + loadModel(schemaVersion, edgeIngestor, propFiles); } catch (IOException | EdgeRuleNotFoundException e) { throw new CrudException(e.getMessage (), e); } @@ -94,20 +111,17 @@ public class EdgeRulesLoader { */ public static synchronized void loadModels ( String v ) throws CrudException { - SchemaIngestPropertyReader schemaIngestPropertyReader = new SchemaIngestPropertyReader (); - SchemaLocationsBean schemaLocationsBean = new SchemaLocationsBean (); - schemaLocationsBean.setEdgeDirectory ( schemaIngestPropertyReader.getEdgeDir () ); - ConfigTranslator configTranslator = new OxmModelConfigTranslator ( schemaLocationsBean ); - EdgeIngestor edgeIngestor = new EdgeIngestor ( configTranslator ); - String version = v.toUpperCase (); - Map propFiles = edgePropertyFiles(schemaIngestPropertyReader); - - if (logger.isDebugEnabled ()) { - logger.debug ( "Loading DB Edge Rules " ); + Map propFiles = edgePropertyFiles(edgePropsConfiguration); + + if (logger.isDebugEnabled()) { + logger.debug("Loading DB Edge Rules "); } try { - loadModel ( Version.valueOf ( version ), edgeIngestor, propFiles ); + SchemaVersion schemaVersion = translator.getSchemaVersions().getVersions().stream() + .filter(s -> s.toString().equalsIgnoreCase(v)).findAny().orElse(null); + + loadModel(schemaVersion, edgeIngestor, propFiles); } catch (IOException | EdgeRuleNotFoundException e) { throw new CrudException(e.getMessage (), Status.INTERNAL_SERVER_ERROR); } @@ -174,7 +188,7 @@ public class EdgeRulesLoader { String latestVersionStr = null; for (String versionKey : versionContextMap.keySet ()) { - Matcher matcher = versionPattern.matcher ( versionKey.toUpperCase () ); + Matcher matcher = versionPattern.matcher(versionKey); if (matcher.find ()) { int currentVersion = Integer.parseInt ( matcher.group ( 1 ) ); @@ -198,8 +212,8 @@ public class EdgeRulesLoader { versionContextMap = new ConcurrentHashMap<> (); } - private static synchronized void loadModel ( Version version, EdgeIngestor edgeIngestor, Map props) - throws IOException, CrudException, EdgeRuleNotFoundException { + private static synchronized void loadModel(SchemaVersion version, EdgeIngestor edgeIngestor, + Map props) throws IOException, CrudException, EdgeRuleNotFoundException { Multimap edges = edgeIngestor.getAllRules ( version ); String edgeProps; @@ -215,11 +229,12 @@ public class EdgeRulesLoader { } } - private static Map edgePropertyFiles ( SchemaIngestPropertyReader dir ) throws CrudException { - Map propsFiles = Arrays.stream ( new File ( dir.getEdgePropsDir () ) + private static Map edgePropertyFiles ( EdgePropsConfiguration edgePropsConfiguration ) throws CrudException { + Map propsFiles = Arrays.stream ( new File ( edgePropsConfiguration.getEdgePropsDir () ) .listFiles ( ( d, name ) -> propsFilePattern.matcher ( name ).matches () ) ) .collect ( Collectors.toMap ( new Function () { - public String apply ( File f ) { + @Override + public String apply ( File f ) { Matcher m1 = propsVersionPattern.matcher ( f.getName () ); m1.find (); return m1.group ( 0 );