diff options
Diffstat (limited to 'catalog-dao/src/main/java/org/openecomp/sdc/be/dao/titan/TitanGraphClient.java')
-rw-r--r-- | catalog-dao/src/main/java/org/openecomp/sdc/be/dao/titan/TitanGraphClient.java | 565 |
1 files changed, 76 insertions, 489 deletions
diff --git a/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/titan/TitanGraphClient.java b/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/titan/TitanGraphClient.java index 68a05a91bf..07030472a4 100644 --- a/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/titan/TitanGraphClient.java +++ b/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/titan/TitanGraphClient.java @@ -42,6 +42,8 @@ import org.apache.tinkerpop.gremlin.structure.T; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.openecomp.sdc.be.config.BeEcompErrorManager; import org.openecomp.sdc.be.config.ConfigurationManager; +import org.openecomp.sdc.be.dao.DAOTitanStrategy; +import org.openecomp.sdc.be.dao.TitanClientStrategy; import org.openecomp.sdc.be.dao.graph.datatype.ActionEnum; import org.openecomp.sdc.be.dao.graph.datatype.GraphElementTypeEnum; import org.openecomp.sdc.be.dao.neo4j.GraphEdgePropertiesDictionary; @@ -76,9 +78,9 @@ import com.thinkaurelius.titan.diskstorage.ResourceUnavailableException; import com.thinkaurelius.titan.diskstorage.locking.PermanentLockingException; import com.thinkaurelius.titan.graphdb.database.idassigner.IDPoolExhaustedException; - import fj.data.Either; + @Component("titan-client") public class TitanGraphClient { @@ -88,6 +90,9 @@ public class TitanGraphClient { private static final String HEALTH_CHECK = GraphPropertiesDictionary.HEALTH_CHECK.getProperty(); private static final String OK = "GOOD"; + public TitanGraphClient() { + } + private class HealthCheckTask implements Callable<Vertex> { @Override public Vertex call() { @@ -126,7 +131,7 @@ public class TitanGraphClient { public void run() { logger.trace("Trying to reconnect to Titan..."); if (graph == null) { - createGraph(titanCfgFile, true); + createGraph(titanCfgFile); } } } @@ -136,8 +141,7 @@ public class TitanGraphClient { // Health Check Variables /** - * This executor will execute the health check task on a callable task that - * can be executed with a timeout. + * This executor will execute the health check task on a callable task that can be executed with a timeout. */ ExecutorService healthCheckExecutor = Executors.newSingleThreadExecutor(new ThreadFactory() { @Override @@ -159,9 +163,11 @@ public class TitanGraphClient { private Future reconnectFuture; private String titanCfgFile = null; + TitanClientStrategy titanClientStrategy; - public TitanGraphClient() { + public TitanGraphClient(TitanClientStrategy titanClientStrategy) { super(); + this.titanClientStrategy = titanClientStrategy; // Initialize a single threaded scheduler for health-check this.healthCheckScheduler = Executors.newSingleThreadScheduledExecutor(new ThreadFactory() { @@ -171,10 +177,8 @@ public class TitanGraphClient { } }); - healthCheckReadTimeout = ConfigurationManager.getConfigurationManager().getConfiguration() - .getTitanHealthCheckReadTimeout(2); - reconnectInterval = ConfigurationManager.getConfigurationManager().getConfiguration() - .getTitanReconnectIntervalInSeconds(3); + healthCheckReadTimeout = ConfigurationManager.getConfigurationManager().getConfiguration().getTitanHealthCheckReadTimeout(2); + reconnectInterval = ConfigurationManager.getConfigurationManager().getConfiguration().getTitanReconnectIntervalInSeconds(3); logger.info("** TitanGraphClient created"); } @@ -188,13 +192,11 @@ public class TitanGraphClient { BaseConfiguration conf = new BaseConfiguration(); conf.setProperty("storage.backend", "inmemory"); graph = TitanFactory.open(conf); - - createIndexesAndDefaults(); - + createTitanSchema(); logger.info("** in memory graph created"); return TitanOperationStatus.OK; } else { - this.titanCfgFile = ConfigurationManager.getConfigurationManager().getConfiguration().getTitanCfgFile(); + this.titanCfgFile = titanClientStrategy.getConfigFile(); if (titanCfgFile == null || titanCfgFile.isEmpty()) { titanCfgFile = "config/titan.properties"; } @@ -217,8 +219,7 @@ public class TitanGraphClient { } /** - * This method will be invoked ONLY on init time in case Titan storage is - * down. + * This method will be invoked ONLY on init time in case Titan storage is down. */ private void startReconnectTask() { this.reconnectTask = new ReconnectTask(); @@ -231,8 +232,7 @@ public class TitanGraphClient { }); logger.info("Scheduling reconnect task {} with interval of {} seconds", reconnectTask, reconnectInterval); - reconnectFuture = this.reconnectScheduler.scheduleAtFixedRate(this.reconnectTask, 0, this.reconnectInterval, - TimeUnit.SECONDS); + reconnectFuture = this.reconnectScheduler.scheduleAtFixedRate(this.reconnectTask, 0, this.reconnectInterval, TimeUnit.SECONDS); } public void cleanupGraph() { @@ -243,29 +243,28 @@ public class TitanGraphClient { } } - public TitanOperationStatus createGraph(String titanCfgFile) { - logger.info("** createGraph with " + titanCfgFile + " started"); - return createGraph(titanCfgFile, true); + private boolean graphInitialized(){ + TitanManagement graphMgmt = graph.openManagement(); + return graphMgmt.containsPropertyKey(HEALTH_CHECK) && graphMgmt.containsGraphIndex(HEALTH_CHECK); } + - public TitanOperationStatus createGraph(String titanCfgFile, boolean initializeGraph) { - logger.info("** createGraph with " + titanCfgFile + " and initializeGraph=" + initializeGraph + " started"); + public TitanOperationStatus createGraph(String titanCfgFile) { + logger.info("** open graph with {} started", titanCfgFile); try { - logger.info("createGraph : try to load file " + titanCfgFile); + logger.info("openGraph : try to load file {}", titanCfgFile); graph = TitanFactory.open(titanCfgFile); - if (graph == null) { + if (graph.isClosed() || !graphInitialized()) { + logger.error("titan graph was not initialized"); return TitanOperationStatus.NOT_CREATED; } } catch (Exception e) { this.graph = null; - logger.info("createGraph : failed to open Titan graph with configuration file: " + titanCfgFile); - logger.trace("createGraph : failed to open Titan graph. ", e); + logger.info("createGraph : failed to open Titan graph with configuration file: {}", titanCfgFile, e); return TitanOperationStatus.NOT_CONNECTED; } - if (true == initializeGraph) { - createIndexesAndDefaults(); - } + logger.info("** Titan graph created "); // Do some post creation actions @@ -294,12 +293,6 @@ public class TitanGraphClient { this.startHealthCheckTask(); } - private void createIndexesAndDefaults() { - createVertexIndixes(); - createEdgeIndixes(); - createDefaultUsers(); - // createCategories(); - } public Either<TitanGraph, TitanOperationStatus> getGraph() { if (graph != null) { @@ -309,76 +302,6 @@ public class TitanGraphClient { } } - private TitanOperationStatus createVertexIndixes() { - logger.info("** createVertexIndixes started"); - if (graph != null) { - // TitanManagement graphMgt = graph.getManagementSystem(); - TitanManagement graphMgt = graph.openManagement(); - TitanGraphIndex index = null; - for (GraphPropertiesDictionary prop : GraphPropertiesDictionary.values()) { - PropertyKey propKey = null; - if (!graphMgt.containsPropertyKey(prop.getProperty())) { - Class<?> clazz = prop.getClazz(); - if (!ArrayList.class.getName().equals(clazz.getName()) - && !HashMap.class.getName().equals(clazz.getName())) { - propKey = graphMgt.makePropertyKey(prop.getProperty()).dataType(prop.getClazz()).make(); - } - } else { - propKey = graphMgt.getPropertyKey(prop.getProperty()); - } - if (prop.isIndexed()) { - if (!graphMgt.containsGraphIndex(prop.getProperty())) { - if (prop.isUnique()) { - index = graphMgt.buildIndex(prop.getProperty(), Vertex.class).addKey(propKey).unique() - .buildCompositeIndex(); - - graphMgt.setConsistency(propKey, ConsistencyModifier.LOCK); // Ensures - // only - // one - // name - // per - // vertex - graphMgt.setConsistency(index, ConsistencyModifier.LOCK); // Ensures - // name - // uniqueness - // in - // the - // graph - - } else { - graphMgt.buildIndex(prop.getProperty(), Vertex.class).addKey(propKey).buildCompositeIndex(); - } - } - } - } - graphMgt.commit(); - logger.info("** createVertexIndixes ended"); - return TitanOperationStatus.OK; - } - logger.info("** createVertexIndixes ended, no Indixes were created."); - return TitanOperationStatus.NOT_CREATED; - } - - private TitanOperationStatus createEdgeIndixes() { - logger.info("** createEdgeIndixes started"); - if (graph != null) { - // TitanManagement graphMgt = graph.getManagementSystem(); - TitanManagement graphMgt = graph.openManagement(); - for (GraphEdgePropertiesDictionary prop : GraphEdgePropertiesDictionary.values()) { - if (!graphMgt.containsGraphIndex(prop.getProperty())) { - PropertyKey propKey = graphMgt.makePropertyKey(prop.getProperty()).dataType(prop.getClazz()).make(); - graphMgt.buildIndex(prop.getProperty(), Edge.class).addKey(propKey).buildCompositeIndex(); - - } - } - graphMgt.commit(); - logger.info("** createEdgeIndixes ended"); - return TitanOperationStatus.OK; - } - logger.info("** createEdgeIndixes ended, no Indixes were created."); - return TitanOperationStatus.NOT_CREATED; - } - public TitanOperationStatus commit() { if (graph != null) { try { @@ -450,14 +373,14 @@ public class TitanGraphClient { try { Future<Vertex> future = healthCheckExecutor.submit(healthCallableTask); v = future.get(this.healthCheckReadTimeout, TimeUnit.SECONDS); - healthLogger.trace("Health Check Node Found... " + v.property(HEALTH_CHECK)); + healthLogger.trace("Health Check Node Found... {}", v.property(HEALTH_CHECK)); graph.tx().commit(); } catch (Exception e) { String message = e.getMessage(); if (message == null) { message = e.getClass().getName(); } - logger.error("Titan Health Check Failed. " + message); + logger.error("Titan Health Check Failed. {}", message); return false; } return true; @@ -466,386 +389,9 @@ public class TitanGraphClient { } } - private TitanOperationStatus createCategories() { - logger.info("** createCategories started"); - if (graph != null) { - try { - List<CategoryData> categoryDataList = getDefaultResourceCategoryList(); - generateGraphCategories(categoryDataList, NodeTypeEnum.ResourceCategory.getName()); - } catch (Exception e) { - logger.error("createCategories : failed to load categories ", e); - rollback(); - return TitanOperationStatus.GENERAL_ERROR; - } finally { - logger.info("** createCategories ended"); - commit(); - } - } - return TitanOperationStatus.OK; - } - - private void generateGraphCategories(List<CategoryData> categoryDataList, String label) { - for (CategoryData categoryData : categoryDataList) { - Map<String, Object> properties = categoryData.toGraphMap(); - properties.put(GraphPropertiesDictionary.LABEL.getProperty(), label); - - // This is temporary for old mechnism of categories - they don;t - // have the norm name - properties.remove(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty()); - - if (isVertexExist(properties)) { - return; - } - - Vertex vertex = graph.addVertex(); - for (Map.Entry<String, Object> entry : properties.entrySet()) { - vertex.property(entry.getKey(), entry.getValue()); - } - } - } - - private List<CategoryData> getDefaultResourceCategoryList() { - Map<String, List<String>> categories = new HashMap<String, List<String>>(); - categories.put("Network Layer 2-3", Arrays.asList("Router", "Gateway", "WAN Connectors", "LAN Connectors")); - categories.put("Network Layer 4+", Arrays.asList("Common Network Resources")); - categories.put("Application Layer 4+", Arrays.asList("Border Elements", "Application Servers", "Web Server", - "Call Control", "Media Servers", "Load Balancer", "Database")); - categories.put("Generic", Arrays.asList("Infrastructure", "Abstract", "Network Elements", "Database")); - - List<CategoryData> categoryDataList = new ArrayList<CategoryData>(); - CategoryData categoryData = null; - for (Map.Entry<String, List<String>> entryList : categories.entrySet()) { - for (String val : entryList.getValue()) { - categoryData = new ResourceCategoryData(entryList.getKey(), val); - categoryData.setAction(ActionEnum.Create); - categoryData.setElementType(GraphElementTypeEnum.Node); - // categoryData.setCategoryName(); - // categoryData.setName(); - categoryDataList.add(categoryData); - } - } - return categoryDataList; - } - - private List<CategoryData> getDefaultServiceCategoryList() { - List<String> categories = new ArrayList<>(); - categories.add("Mobility"); - categories.add("Network L1-3"); - categories.add("Network L4"); - categories.add("VoIP Call Control"); - - List<CategoryData> categoryDataList = new ArrayList<CategoryData>(); - CategoryData categoryData = null; - for (String category : categories) { - categoryData = new ServiceCategoryData(category); - categoryData.setAction(ActionEnum.Create); - categoryData.setElementType(GraphElementTypeEnum.Node); - // categoryData.setCategoryName(entryList.getKey()); - // categoryData.setName(val); - categoryDataList.add(categoryData); - } - return categoryDataList; - } - - private void createDefaultUsers() { - if (graph != null) { - List<UserData> users = createUserList(); - for (UserData user : users) { - String propertyName = GraphPropertiesDictionary.USER_ID.getProperty(); - String propertyValue = user.getUserId(); - Vertex vertex = null; - Map<String, Object> properties = null; - if (!isVertexExist(propertyName, propertyValue)) { - vertex = graph.addVertex(); - vertex.property(GraphPropertiesDictionary.LABEL.getProperty(), NodeTypeEnum.User.getName()); - properties = user.toGraphMap(); - for (Map.Entry<String, Object> entry : properties.entrySet()) { - vertex.property(entry.getKey(), entry.getValue()); - } - } - } - graph.tx().commit(); - } - } - - private List<UserData> createUserList() { - LinkedList<UserData> users = new LinkedList<UserData>(); - users.add(getDefaultUserAdmin1()); - users.add(getDefaultUserAdmin2()); - users.add(getDefaultUserAdmin3()); - users.add(getDefaultUserDesigner1()); - users.add(getDefaultUserDesigner2()); - users.add(getDefaultUserDesigner3()); - users.add(getDefaultUserTester1()); - users.add(getDefaultUserTester2()); - users.add(getDefaultUserTester3()); - users.add(getDefaultUserGovernor1()); - users.add(getDefaultUserOps1()); - users.add(getDefaultUserProductManager1()); - users.add(getDefaultUserProductManager2()); - users.add(getDefaultUserProductStrategist1()); - users.add(getDefaultUserProductStrategist2()); - users.add(getDefaultUserProductStrategist3()); - return users; - } - - private boolean isVertexExist(String propertyName, String propertyValue) { - // Iterable<Vertex> vertecies = graph.getVertices(propertyName, - // propertyValue); - // java.util.Iterator<Vertex> iterator = vertecies.iterator(); - - @SuppressWarnings("unchecked") - Iterable<TitanVertex> vertecies = graph.query().has(HEALTH_CHECK, OK).vertices(); - - java.util.Iterator<TitanVertex> iterator = vertecies.iterator(); - if (iterator.hasNext()) { - return true; - } - return false; - } - - private boolean isVertexExist(Map<String, Object> properties) { - TitanGraphQuery query = graph.query(); - - if (properties != null && !properties.isEmpty()) { - for (Map.Entry<String, Object> entry : properties.entrySet()) { - query = query.has(entry.getKey(), entry.getValue()); - } - } - Iterable<Vertex> vertecies = query.vertices(); - java.util.Iterator<Vertex> iterator = vertecies.iterator(); - if (iterator.hasNext()) { - return true; - } - return false; - } - - private UserData getDefaultUserAdmin1() { - UserData userData = new UserData(); - userData.setAction(ActionEnum.Create); - userData.setElementType(GraphElementTypeEnum.Node); - userData.setUserId("jh0003"); - userData.setEmail("admin@sdc.com"); - userData.setFirstName("Jimmy"); - userData.setLastName("Hendrix"); - userData.setRole("ADMIN"); - userData.setStatus(UserStatusEnum.ACTIVE.name()); - userData.setLastLoginTime(0L); - return userData; - } - - private UserData getDefaultUserAdmin2() { - UserData userData = new UserData(); - userData.setAction(ActionEnum.Create); - userData.setElementType(GraphElementTypeEnum.Node); - userData.setUserId("tr0001"); - userData.setEmail("admin@sdc.com"); - userData.setFirstName("Todd"); - userData.setLastName("Rundgren"); - userData.setRole("ADMIN"); - userData.setStatus(UserStatusEnum.ACTIVE.name()); - userData.setLastLoginTime(0L); - return userData; - } - - private UserData getDefaultUserAdmin3() { - UserData userData = new UserData(); - userData.setAction(ActionEnum.Create); - userData.setElementType(GraphElementTypeEnum.Node); - userData.setUserId("ah0002"); - userData.setEmail("admin@sdc.com"); - userData.setFirstName("Alex"); - userData.setLastName("Harvey"); - userData.setRole("ADMIN"); - userData.setStatus(UserStatusEnum.ACTIVE.name()); - userData.setLastLoginTime(0L); - return userData; - } - - private UserData getDefaultUserDesigner1() { - UserData userData = new UserData(); - userData.setAction(ActionEnum.Create); - userData.setElementType(GraphElementTypeEnum.Node); - userData.setUserId("cs0008"); - userData.setEmail("designer@sdc.com"); - userData.setFirstName("Carlos"); - userData.setLastName("Santana"); - userData.setRole("DESIGNER"); - userData.setStatus(UserStatusEnum.ACTIVE.name()); - userData.setLastLoginTime(0L); - return userData; - } - - private UserData getDefaultUserDesigner2() { - UserData userData = new UserData(); - userData.setAction(ActionEnum.Create); - userData.setElementType(GraphElementTypeEnum.Node); - userData.setUserId("me0009"); - userData.setEmail("designer@sdc.com"); - userData.setFirstName("Melissa"); - userData.setLastName("Etheridge"); - userData.setRole("DESIGNER"); - userData.setStatus(UserStatusEnum.ACTIVE.name()); - userData.setLastLoginTime(0L); - return userData; - } - - private UserData getDefaultUserDesigner3() { - UserData userData = new UserData(); - userData.setAction(ActionEnum.Create); - userData.setElementType(GraphElementTypeEnum.Node); - userData.setUserId("af0006"); - userData.setEmail("designer@sdc.com"); - userData.setFirstName("Aretha"); - userData.setLastName("Franklin"); - userData.setRole("DESIGNER"); - userData.setStatus(UserStatusEnum.ACTIVE.name()); - userData.setLastLoginTime(0L); - return userData; - } - - private UserData getDefaultUserTester1() { - UserData userData = new UserData(); - userData.setAction(ActionEnum.Create); - userData.setElementType(GraphElementTypeEnum.Node); - userData.setUserId("jm0007"); - userData.setEmail("tester@sdc.com"); - userData.setFirstName("Joni"); - userData.setLastName("Mitchell"); - userData.setRole("TESTER"); - userData.setStatus(UserStatusEnum.ACTIVE.name()); - userData.setLastLoginTime(0L); - return userData; - } - - private UserData getDefaultUserTester2() { - UserData userData = new UserData(); - userData.setAction(ActionEnum.Create); - userData.setElementType(GraphElementTypeEnum.Node); - userData.setUserId("kb0004"); - userData.setEmail("tester@sdc.com"); - userData.setFirstName("Kate"); - userData.setLastName("Bush"); - userData.setRole("TESTER"); - userData.setStatus(UserStatusEnum.ACTIVE.name()); - userData.setLastLoginTime(0L); - return userData; - } - - private UserData getDefaultUserTester3() { - UserData userData = new UserData(); - userData.setAction(ActionEnum.Create); - userData.setElementType(GraphElementTypeEnum.Node); - userData.setUserId("jt0005"); - userData.setEmail("tester@sdc.com"); - userData.setFirstName("James"); - userData.setLastName("Taylor"); - userData.setRole("TESTER"); - userData.setStatus(UserStatusEnum.ACTIVE.name()); - userData.setLastLoginTime(0L); - return userData; - } - - private UserData getDefaultUserOps1() { - UserData userData = new UserData(); - userData.setAction(ActionEnum.Create); - userData.setElementType(GraphElementTypeEnum.Node); - userData.setUserId("op0001"); - userData.setEmail("ops@sdc.com"); - userData.setFirstName("Steve"); - userData.setLastName("Regev"); - userData.setRole("OPS"); - userData.setStatus(UserStatusEnum.ACTIVE.name()); - userData.setLastLoginTime(0L); - return userData; - } - - private UserData getDefaultUserGovernor1() { - UserData userData = new UserData(); - userData.setAction(ActionEnum.Create); - userData.setElementType(GraphElementTypeEnum.Node); - userData.setUserId("gv0001"); - userData.setEmail("governor@sdc.com"); - userData.setFirstName("David"); - userData.setLastName("Shadmi"); - userData.setRole("GOVERNOR"); - userData.setStatus(UserStatusEnum.ACTIVE.name()); - userData.setLastLoginTime(0L); - return userData; - } - - private UserData getDefaultUserProductManager1() { - UserData userData = new UserData(); - userData.setAction(ActionEnum.Create); - userData.setElementType(GraphElementTypeEnum.Node); - userData.setUserId("pm0001"); - userData.setEmail("pm1@sdc.com"); - userData.setFirstName("Teddy"); - userData.setLastName("Isashar"); - userData.setRole("PRODUCT_MANAGER"); - userData.setStatus(UserStatusEnum.ACTIVE.name()); - userData.setLastLoginTime(0L); - return userData; - } - - private UserData getDefaultUserProductManager2() { - UserData userData = new UserData(); - userData.setAction(ActionEnum.Create); - userData.setElementType(GraphElementTypeEnum.Node); - userData.setUserId("pm0002"); - userData.setEmail("pm2@sdc.com"); - userData.setFirstName("Sarah"); - userData.setLastName("Bettens"); - userData.setRole("PRODUCT_MANAGER"); - userData.setStatus(UserStatusEnum.ACTIVE.name()); - userData.setLastLoginTime(0L); - return userData; - } - - private UserData getDefaultUserProductStrategist1() { - UserData userData = new UserData(); - userData.setAction(ActionEnum.Create); - userData.setElementType(GraphElementTypeEnum.Node); - userData.setUserId("ps0001"); - userData.setEmail("ps1@sdc.com"); - userData.setFirstName("Eden"); - userData.setLastName("Rozin"); - userData.setRole("PRODUCT_STRATEGIST"); - userData.setStatus(UserStatusEnum.ACTIVE.name()); - userData.setLastLoginTime(0L); - return userData; - } - - private UserData getDefaultUserProductStrategist2() { - UserData userData = new UserData(); - userData.setAction(ActionEnum.Create); - userData.setElementType(GraphElementTypeEnum.Node); - userData.setUserId("ps0002"); - userData.setEmail("ps2@sdc.com"); - userData.setFirstName("Ella"); - userData.setLastName("Kvetny"); - userData.setRole("PRODUCT_STRATEGIST"); - userData.setStatus(UserStatusEnum.ACTIVE.name()); - userData.setLastLoginTime(0L); - return userData; - } - - private UserData getDefaultUserProductStrategist3() { - UserData userData = new UserData(); - userData.setAction(ActionEnum.Create); - userData.setElementType(GraphElementTypeEnum.Node); - userData.setUserId("ps0003"); - userData.setEmail("ps3@sdc.com"); - userData.setFirstName("Geva"); - userData.setLastName("Alon"); - userData.setRole("PRODUCT_STRATEGIST"); - userData.setStatus(UserStatusEnum.ACTIVE.name()); - userData.setLastLoginTime(0L); - return userData; - } public static void main(String[] args) throws InterruptedException { - TitanGraphClient client = new TitanGraphClient(); + TitanGraphClient client = new TitanGraphClient(new DAOTitanStrategy()); client.createGraph(); while (true) { @@ -856,17 +402,58 @@ public class TitanGraphClient { } + private static final String TITAN_HEALTH_CHECK_STR = "titanHealthCheck"; private void logAlarm() { if (lastHealthState == true) { - BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeHealthCheckRecovery, - TITAN_HEALTH_CHECK_STR); + BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeHealthCheckRecovery, TITAN_HEALTH_CHECK_STR); BeEcompErrorManager.getInstance().logBeHealthCheckTitanRecovery(TITAN_HEALTH_CHECK_STR); } else { - BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeHealthCheckError, - TITAN_HEALTH_CHECK_STR); + BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeHealthCheckError, TITAN_HEALTH_CHECK_STR); BeEcompErrorManager.getInstance().logBeHealthCheckTitanError(TITAN_HEALTH_CHECK_STR); } } + + private void createTitanSchema() { + + TitanManagement graphMgt = graph.openManagement(); + TitanGraphIndex index = null; + for (GraphPropertiesDictionary prop : GraphPropertiesDictionary.values()) { + PropertyKey propKey = null; + if (!graphMgt.containsPropertyKey(prop.getProperty())) { + Class<?> clazz = prop.getClazz(); + if (!ArrayList.class.getName().equals(clazz.getName()) && !HashMap.class.getName().equals(clazz.getName())) { + propKey = graphMgt.makePropertyKey(prop.getProperty()).dataType(prop.getClazz()).make(); + } + } else { + propKey = graphMgt.getPropertyKey(prop.getProperty()); + } + if (prop.isIndexed()) { + if (!graphMgt.containsGraphIndex(prop.getProperty())) { + if (prop.isUnique()) { + index = graphMgt.buildIndex(prop.getProperty(), Vertex.class).addKey(propKey).unique().buildCompositeIndex(); + + graphMgt.setConsistency(propKey, ConsistencyModifier.LOCK); // Ensures + // only + // one + // name + // per + // vertex + graphMgt.setConsistency(index, ConsistencyModifier.LOCK); // Ensures + // name + // uniqueness + // in + // the + // graph + + } else { + graphMgt.buildIndex(prop.getProperty(), Vertex.class).addKey(propKey).buildCompositeIndex(); + } + } + } + } + graphMgt.commit(); + } + } |