1 package org.openecomp.sdc.be.dao.cassandra;
3 import com.datastax.driver.core.Session;
4 import com.datastax.driver.mapping.MappingManager;
5 import com.datastax.driver.mapping.Result;
7 import org.apache.commons.lang3.tuple.ImmutablePair;
8 import org.openecomp.sdc.be.datatypes.enums.EnvironmentStatusEnum;
9 import org.openecomp.sdc.be.resources.data.OperationalEnvironmentEntry;
10 import org.openecomp.sdc.be.resources.data.auditing.AuditingTypesConstants;
11 import org.openecomp.sdc.common.log.enums.EcompLoggerErrorCode;
12 import org.openecomp.sdc.common.log.wrappers.Logger;
13 import org.springframework.stereotype.Component;
15 import javax.annotation.PostConstruct;
16 import java.util.List;
18 @Component("operational-environment-dao")
19 public class OperationalEnvironmentDao extends CassandraDao {
21 private static Logger logger = Logger.getLogger(OperationalEnvironmentDao.class.getName());
22 private OperationalEnvironmentsAccessor operationalEnvironmentsAccessor;
24 public OperationalEnvironmentDao() {
30 String keyspace = AuditingTypesConstants.REPO_KEYSPACE;
31 if (client.isConnected()) {
32 Either<ImmutablePair<Session, MappingManager>, CassandraOperationStatus> result = client.connect(keyspace);
33 if (result.isLeft()) {
34 session = result.left().value().left;
35 manager = result.left().value().right;
36 operationalEnvironmentsAccessor = manager.createAccessor(OperationalEnvironmentsAccessor.class);
37 logger.debug("** OperationalEnvironmentDao created");
39 logger.error(EcompLoggerErrorCode.DATA_ERROR, "OperationalEnvironmentDao", "OperationalEnvironmentDao", "** OperationalEnvironmentDao failed");
40 throw new RuntimeException("OperationalEnvironment keyspace [" + keyspace + "] failed to connect with error : "
41 + result.right().value());
44 logger.error(EcompLoggerErrorCode.DATA_ERROR, "OperationalEnvironmentDao", "OperationalEnvironmentDao", "** Cassandra client isn't connected");
45 logger.error(EcompLoggerErrorCode.DATA_ERROR, "OperationalEnvironmentDao", "OperationalEnvironmentDao", "** OperationalEnvironmentDao created, but not connected");
48 public CassandraOperationStatus save(OperationalEnvironmentEntry operationalEnvironmentEntry) {
49 return client.save(operationalEnvironmentEntry, OperationalEnvironmentEntry.class, manager);
52 public Either<OperationalEnvironmentEntry, CassandraOperationStatus> get(String envId) {
53 return client.getById(envId, OperationalEnvironmentEntry.class, manager);
56 public CassandraOperationStatus delete(String envId) {
57 return client.delete(envId, OperationalEnvironmentEntry.class, manager);
60 public CassandraOperationStatus deleteAll() {
61 logger.info("cleaning all operational environments.");
62 String query = "truncate sdcrepository.operationalenvironment;";
64 session.execute(query);
65 } catch (Exception e) {
66 logger.debug("Failed to clean operational environment", e);
67 return CassandraOperationStatus.GENERAL_ERROR;
69 logger.info("cleaning all operational environment finished succsesfully.");
70 return CassandraOperationStatus.OK;
73 public Either<Boolean, CassandraOperationStatus> isTableEmpty(String tableName) {
74 return super.isTableEmpty(tableName);
78 public Either<List<OperationalEnvironmentEntry>, CassandraOperationStatus> getByEnvironmentsStatus(EnvironmentStatusEnum status) {
79 Result<OperationalEnvironmentEntry> operationalEnvironments = operationalEnvironmentsAccessor.getByEnvironmentsStatus(status.getName());
80 if (operationalEnvironments == null) {
81 return Either.right(CassandraOperationStatus.NOT_FOUND);
83 return Either.left(operationalEnvironments.all());