[SDC] Onboarding 1710 rebase.
[sdc.git] / openecomp-be / lib / openecomp-core-lib / openecomp-nosqldb-lib / openecomp-nosqldb-core / src / main / java / org / openecomp / core / nosqldb / impl / cassandra / CassandraNoSqlDbImpl.java
index bcac5f8..4ecc268 100644 (file)
 
 package org.openecomp.core.nosqldb.impl.cassandra;
 
-import com.datastax.driver.core.BoundStatement;
-import com.datastax.driver.core.PreparedStatement;
-import com.datastax.driver.core.ResultSet;
-import com.datastax.driver.core.Session;
+import com.datastax.driver.core.*;
 import com.datastax.driver.mapping.MappingManager;
 import org.openecomp.core.nosqldb.api.NoSqlDb;
 import org.openecomp.core.nosqldb.util.CassandraUtils;
@@ -32,73 +29,87 @@ import org.openecomp.sdc.common.errors.CoreException;
 import org.openecomp.sdc.common.errors.ErrorCategory;
 import org.openecomp.sdc.common.errors.ErrorCode;
 
-class CassandraNoSqlDbImpl implements NoSqlDb {
+import java.util.Set;
+import java.util.stream.Collectors;
 
-  private final Session session;
-  private final String keySpace;
-  private final MappingManager mappingManager;
+class CassandraNoSqlDbImpl implements NoSqlDb {
 
+    private final Session session;
+    private final String keySpace;
+    private final MappingManager mappingManager;
 
-  public CassandraNoSqlDbImpl(Session session) {
-    this.session = session;
-    this.keySpace = this.session.getLoggedKeyspace();
-    this.mappingManager = new MappingManager(this.session);
 
-  }
+    public CassandraNoSqlDbImpl(Session session) {
+        this.session = session;
+        this.keySpace = this.session.getLoggedKeyspace();
+        this.mappingManager = new MappingManager(this.session);
 
-  @Override
-  public void insert(String tableName, String[] colNames, Object[] values) {
-    if (colNames.length != values.length) {
-      throw new CoreException((new ErrorCode.ErrorCodeBuilder()).withMessage(
-          "number of colmuns[" + colNames.length + "] is not equal to the number of values["
-              + values.length + "].").withId("E0005").withCategory(ErrorCategory.APPLICATION)
-          .build());
     }
 
-    StringBuilder sb = new StringBuilder();
-    sb.append("insert into ")
-        .append(tableName)
-        .append(" (")
-        .append(CommonMethods.arrayToCommaSeparatedString(colNames))
-        .append(") values (")
-        .append(CommonMethods.duplicateStringWithDelimiter("?", ',', values.length))
-        .append(")");
-    System.out.println(sb.toString());
-    PreparedStatement prepared = session.prepare(sb.toString());
-
-    BoundStatement bound;
-    bound = prepared.bind(values);
-    session.execute(bound);
-
-  }
-
-  @Override
-  public ResultSet execute(String statement) {
-    return session.execute(statement);
-  }
-
-  @Override
-  public ResultSet execute(String statementName, Object... values) {
-
-    String statement = CassandraUtils.getStatement(statementName);
-    if (statement == null) {
-      statement = statementName;
+    @Override
+    public void insert(String tableName, String[] colNames, Object[] values) {
+        if (colNames.length != values.length) {
+            throw new CoreException((new ErrorCode.ErrorCodeBuilder()).withMessage(
+                    "number of colmuns[" + colNames.length + "] is not equal to the number of values["
+                            + values.length + "].").withId("E0005").withCategory(ErrorCategory.APPLICATION)
+                    .build());
+        }
+
+        StringBuilder sb = new StringBuilder();
+        sb.append("insert into ")
+                .append(tableName)
+                .append(" (")
+                .append(CommonMethods.arrayToCommaSeparatedString(colNames))
+                .append(") values (")
+                .append(CommonMethods.duplicateStringWithDelimiter("?", ',', values.length))
+                .append(")");
+        System.out.println(sb.toString());
+        PreparedStatement prepared = session.prepare(sb.toString());
+
+        BoundStatement bound;
+        bound = prepared.bind(values);
+        session.execute(bound);
+
     }
-    if (values != null) {
-      PreparedStatement prepared = session.prepare(statement);
-
-      BoundStatement bound;
-      bound = prepared.bind(values);
-      return session.execute(bound);
-    } else {
-      return session.execute(statement);
+
+    @Override
+    public ResultSet execute(String statement) {
+        return session.execute(statement);
     }
 
-  }
+    @Override
+    public ResultSet execute(String statementName, Object... values) {
+
+        String statement = CassandraUtils.getStatement(statementName);
+        if (statement == null) {
+            statement = statementName;
+        }
+        if (values != null) {
+            PreparedStatement prepared = session.prepare(statement);
 
-  @Override
-  public MappingManager getMappingManager() {
-    return mappingManager;
-  }
+            BoundStatement bound;
+            bound = prepared.bind(values);
+            return session.execute(bound);
+        } else {
+            return session.execute(statement);
+        }
 
+    }
+
+    @Override
+    public MappingManager getMappingManager() {
+        return mappingManager;
+    }
+
+    @Override
+    public String getVersion() {
+        try {
+            Set<Host> allHosts = this.session.getCluster().getMetadata().getAllHosts();
+            Set<String> versions = allHosts.stream().map(host -> host.getCassandraVersion().toString())
+                    .collect(Collectors.toSet());
+            return versions.stream().collect(Collectors.joining(","));
+        } catch (Exception e){
+            return "Failed to retrieve version";
+        }
+    }
 }