diff options
Diffstat (limited to 'aai-core/src/main')
-rw-r--r-- | aai-core/src/main/java/org/onap/aai/db/props/AAIProperties.java | 30 | ||||
-rw-r--r-- | aai-core/src/main/java/org/onap/aai/dbmap/AAIGraph.java | 299 |
2 files changed, 170 insertions, 159 deletions
diff --git a/aai-core/src/main/java/org/onap/aai/db/props/AAIProperties.java b/aai-core/src/main/java/org/onap/aai/db/props/AAIProperties.java index 47e79a39..6b4035c6 100644 --- a/aai-core/src/main/java/org/onap/aai/db/props/AAIProperties.java +++ b/aai-core/src/main/java/org/onap/aai/db/props/AAIProperties.java @@ -4,6 +4,8 @@ * ================================================================================ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. * ================================================================================ + * Modifications Copyright © 2018 IBM. + * ================================================================================ * 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 @@ -20,17 +22,21 @@ package org.onap.aai.db.props; public class AAIProperties { - public static final String NODE_TYPE = "aai-node-type"; - public static final String LAST_MOD_SOURCE_OF_TRUTH = "last-mod-source-of-truth"; - public static final String SOURCE_OF_TRUTH = "source-of-truth"; - public static final String LAST_MOD_TS = "aai-last-mod-ts"; - public static final String UNIQUE_KEY = "aai-unique-key"; - public static final String CREATED_TS = "aai-created-ts"; - public static final String RESOURCE_VERSION = "resource-version"; - public static final String AAI_URI = "aai-uri"; - public static final Integer MAXIMUM_DEPTH = 10000; - public static final String LINKED = "linked"; - public static final String DB_ALIAS_SUFFIX = "-local"; - public static final String AAI_UUID = "aai-uuid"; + public static final String NODE_TYPE = "aai-node-type"; + public static final String LAST_MOD_SOURCE_OF_TRUTH = "last-mod-source-of-truth"; + public static final String SOURCE_OF_TRUTH = "source-of-truth"; + public static final String LAST_MOD_TS = "aai-last-mod-ts"; + public static final String UNIQUE_KEY = "aai-unique-key"; + public static final String CREATED_TS = "aai-created-ts"; + public static final String RESOURCE_VERSION = "resource-version"; + public static final String AAI_URI = "aai-uri"; + public static final Integer MAXIMUM_DEPTH = 10000; + public static final String LINKED = "linked"; + public static final String DB_ALIAS_SUFFIX = "-local"; + public static final String AAI_UUID = "aai-uuid"; + + private AAIProperties() { + + } } diff --git a/aai-core/src/main/java/org/onap/aai/dbmap/AAIGraph.java b/aai-core/src/main/java/org/onap/aai/dbmap/AAIGraph.java index aae3aaae..84218e85 100644 --- a/aai-core/src/main/java/org/onap/aai/dbmap/AAIGraph.java +++ b/aai-core/src/main/java/org/onap/aai/dbmap/AAIGraph.java @@ -4,6 +4,8 @@ * ================================================================================ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. * ================================================================================ + * Modifications Copyright © 2018 IBM. + * ================================================================================ * 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 @@ -54,151 +56,154 @@ import org.janusgraph.core.schema.JanusGraphManagement; */ public class AAIGraph { - private static final EELFLogger logger = EELFManager.getInstance().getLogger(AAIGraph.class); - protected static final String COMPONENT = "aaidbmap"; - protected Map<String, JanusGraph> graphs = new HashMap<>(); - private static final String REALTIME_DB = "realtime"; - private static final String CACHED_DB = "cached"; - private static boolean isInit = false; - - - - /** - * Instantiates a new AAI graph. - */ - private AAIGraph() { - try { - String serviceName = System.getProperty("aai.service.name", "NA"); - String rtConfig = System.getProperty("realtime.db.config"); - String cachedConfig = System.getProperty("cached.db.config"); - if (rtConfig == null) { - rtConfig = AAIConstants.REALTIME_DB_CONFIG; - } - if (cachedConfig == null) { - cachedConfig = AAIConstants.CACHED_DB_CONFIG; - } - this.loadGraph(REALTIME_DB, rtConfig, serviceName); - this.loadGraph(CACHED_DB, cachedConfig, serviceName); - } catch (Exception e) { - throw new RuntimeException("Failed to instantiate graphs", e); - } - } - - private static class Helper { - private static final AAIGraph INSTANCE = new AAIGraph(); - } - - /** - * Gets the single instance of AAIGraph. - * - * @return single instance of AAIGraph - */ - public static AAIGraph getInstance() { - isInit = true; - return Helper.INSTANCE; - } - - public static boolean isInit() { - return isInit; - } - - private void loadGraph(String name, String configPath, String serviceName) throws Exception { - // Graph being opened by JanusGraphFactory is being placed in hashmap to be used later - // These graphs shouldn't be closed until the application shutdown - try { - PropertiesConfiguration propertiesConfiguration = new AAIGraphConfig.Builder(configPath).forService(serviceName).withGraphType(name).buildConfiguration(); - JanusGraph graph = JanusGraphFactory.open(propertiesConfiguration); - - Properties graphProps = new Properties(); - propertiesConfiguration.getKeys().forEachRemaining(k -> graphProps.setProperty(k, propertiesConfiguration.getString(k))); - - if ("inmemory".equals(graphProps.get("storage.backend"))) { - // Load the propertyKeys, indexes and edge-Labels into the DB - loadSchema(graph); - loadSnapShotToInMemoryGraph(graph, graphProps); - } - - if (graph == null) { - throw new AAIException("AAI_5102"); - } - - graphs.put(name, graph); - } catch (FileNotFoundException fnfe) { - throw new AAIException("AAI_4001"); - } catch (IOException e) { - throw new AAIException("AAI_4002"); - } - } - - private void loadSnapShotToInMemoryGraph(JanusGraph graph, Properties graphProps) { - if (logger.isDebugEnabled()) { - logger.debug("Load Snapshot to InMemory Graph"); - } - if (graphProps.containsKey("load.snapshot.file")) { - String value = graphProps.getProperty("load.snapshot.file"); - if ("true".equals(value)) { - try (Graph transaction = graph.newTransaction()) { - String location = System.getProperty("snapshot.location"); - logAndPrint(logger, "Loading snapshot to inmemory graph."); - transaction.io(IoCore.graphson()).readGraph(location); - transaction.tx().commit(); - logAndPrint(logger, "Snapshot loaded to inmemory graph."); - } catch (Exception e) { - logAndPrint(logger, - "ERROR: Could not load datasnapshot to in memory graph. \n" - + ExceptionUtils.getFullStackTrace(e)); - throw new RuntimeException(e); - } - } - } - } - - private void loadSchema(JanusGraph graph) { - // Load the propertyKeys, indexes and edge-Labels into the DB - JanusGraphManagement graphMgt = graph.openManagement(); - - System.out.println("-- loading schema into JanusGraph"); - SchemaGenerator.loadSchemaIntoJanusGraph( graph, graphMgt, "inmemory"); - } - - /** - * Close all of the graph connections made in the instance. - */ - public void graphShutdown() { - graphs.values().stream().filter(JanusGraph::isOpen).forEach(JanusGraph::close); - } - - /** - * Gets the graph. - * - * @return the graph - */ - public JanusGraph getGraph() { - return graphs.get(REALTIME_DB); - } - - public void graphShutdown(DBConnectionType connectionType) { - - graphs.get(this.getGraphName(connectionType)).close(); - } - - public JanusGraph getGraph(DBConnectionType connectionType) { - return graphs.get(this.getGraphName(connectionType)); - } - - private String getGraphName(DBConnectionType connectionType) { - String graphName = ""; - if (DBConnectionType.CACHED.equals(connectionType)) { - graphName = this.CACHED_DB; - } else if (DBConnectionType.REALTIME.equals(connectionType)) { - graphName = this.REALTIME_DB; - } - - return graphName; - } - - private void logAndPrint(EELFLogger logger, String msg) { - System.out.println(msg); - logger.info(msg); - } + private static final EELFLogger logger = EELFManager.getInstance().getLogger(AAIGraph.class); + protected static final String COMPONENT = "aaidbmap"; + protected Map<String, JanusGraph> graphs = new HashMap<>(); + private static final String REALTIME_DB = "realtime"; + private static final String CACHED_DB = "cached"; + private static boolean isInit = false; + + + + /** + * Instantiates a new AAI graph. + */ + private AAIGraph() { + try { + String serviceName = System.getProperty("aai.service.name", "NA"); + String rtConfig = System.getProperty("realtime.db.config"); + String cachedConfig = System.getProperty("cached.db.config"); + if (rtConfig == null) { + rtConfig = AAIConstants.REALTIME_DB_CONFIG; + } + if (cachedConfig == null) { + cachedConfig = AAIConstants.CACHED_DB_CONFIG; + } + this.loadGraph(REALTIME_DB, rtConfig, serviceName); + this.loadGraph(CACHED_DB, cachedConfig, serviceName); + } catch (Exception e) { + throw new RuntimeException("Failed to instantiate graphs", e); + } + } + + private static class Helper { + private static final AAIGraph INSTANCE = new AAIGraph(); + private Helper() { + + } + } + + /** + * Gets the single instance of AAIGraph. + * + * @return single instance of AAIGraph + */ + public static AAIGraph getInstance() { + isInit = true; + return Helper.INSTANCE; + } + + public static boolean isInit() { + return isInit; + } + + private void loadGraph(String name, String configPath, String serviceName) throws Exception { + // Graph being opened by JanusGraphFactory is being placed in hashmap to be used later + // These graphs shouldn't be closed until the application shutdown + try { + PropertiesConfiguration propertiesConfiguration = new AAIGraphConfig.Builder(configPath).forService(serviceName).withGraphType(name).buildConfiguration(); + JanusGraph graph = JanusGraphFactory.open(propertiesConfiguration); + + Properties graphProps = new Properties(); + propertiesConfiguration.getKeys().forEachRemaining(k -> graphProps.setProperty(k, propertiesConfiguration.getString(k))); + + if ("inmemory".equals(graphProps.get("storage.backend"))) { + // Load the propertyKeys, indexes and edge-Labels into the DB + loadSchema(graph); + loadSnapShotToInMemoryGraph(graph, graphProps); + } + + if (graph == null) { + throw new AAIException("AAI_5102"); + } + + graphs.put(name, graph); + } catch (FileNotFoundException fnfe) { + throw new AAIException("AAI_4001"); + } catch (IOException e) { + throw new AAIException("AAI_4002"); + } + } + + private void loadSnapShotToInMemoryGraph(JanusGraph graph, Properties graphProps) { + if (logger.isDebugEnabled()) { + logger.debug("Load Snapshot to InMemory Graph"); + } + if (graphProps.containsKey("load.snapshot.file")) { + String value = graphProps.getProperty("load.snapshot.file"); + if ("true".equals(value)) { + try (Graph transaction = graph.newTransaction()) { + String location = System.getProperty("snapshot.location"); + logAndPrint(logger, "Loading snapshot to inmemory graph."); + transaction.io(IoCore.graphson()).readGraph(location); + transaction.tx().commit(); + logAndPrint(logger, "Snapshot loaded to inmemory graph."); + } catch (Exception e) { + logAndPrint(logger, + "ERROR: Could not load datasnapshot to in memory graph. \n" + + ExceptionUtils.getFullStackTrace(e)); + throw new RuntimeException(e); + } + } + } + } + + private void loadSchema(JanusGraph graph) { + // Load the propertyKeys, indexes and edge-Labels into the DB + JanusGraphManagement graphMgt = graph.openManagement(); + + System.out.println("-- loading schema into JanusGraph"); + SchemaGenerator.loadSchemaIntoJanusGraph( graph, graphMgt, "inmemory"); + } + + /** + * Close all of the graph connections made in the instance. + */ + public void graphShutdown() { + graphs.values().stream().filter(JanusGraph::isOpen).forEach(JanusGraph::close); + } + + /** + * Gets the graph. + * + * @return the graph + */ + public JanusGraph getGraph() { + return graphs.get(REALTIME_DB); + } + + public void graphShutdown(DBConnectionType connectionType) { + + graphs.get(this.getGraphName(connectionType)).close(); + } + + public JanusGraph getGraph(DBConnectionType connectionType) { + return graphs.get(this.getGraphName(connectionType)); + } + + private String getGraphName(DBConnectionType connectionType) { + String graphName = ""; + if (DBConnectionType.CACHED.equals(connectionType)) { + graphName = this.CACHED_DB; + } else if (DBConnectionType.REALTIME.equals(connectionType)) { + graphName = this.REALTIME_DB; + } + + return graphName; + } + + private void logAndPrint(EELFLogger logger, String msg) { + System.out.println(msg); + logger.info(msg); + } } |