re base code
[sdc.git] / catalog-dao / src / main / java / org / openecomp / sdc / be / dao / cassandra / OperationalEnvironmentDao.java
1 package org.openecomp.sdc.be.dao.cassandra;
2
3 import com.datastax.driver.core.Session;
4 import com.datastax.driver.mapping.MappingManager;
5 import com.datastax.driver.mapping.Result;
6 import fj.data.Either;
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;
14
15 import javax.annotation.PostConstruct;
16 import java.util.List;
17
18 @Component("operational-environment-dao")
19 public class OperationalEnvironmentDao extends CassandraDao {
20
21     private static Logger logger = Logger.getLogger(OperationalEnvironmentDao.class.getName());
22     private OperationalEnvironmentsAccessor operationalEnvironmentsAccessor;
23
24     public OperationalEnvironmentDao() {
25         super();
26     }
27
28     @PostConstruct
29     public void init() {
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");
38             } else {
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());
42             }
43         } else {
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");
46         }
47     }
48     public CassandraOperationStatus save(OperationalEnvironmentEntry operationalEnvironmentEntry) {
49         return client.save(operationalEnvironmentEntry, OperationalEnvironmentEntry.class, manager);
50     }
51
52     public Either<OperationalEnvironmentEntry, CassandraOperationStatus> get(String envId) {
53         return client.getById(envId, OperationalEnvironmentEntry.class, manager);
54     }
55
56     public CassandraOperationStatus delete(String envId) {
57         return client.delete(envId, OperationalEnvironmentEntry.class, manager);
58     }
59
60     public CassandraOperationStatus deleteAll() {
61         logger.info("cleaning all operational environments.");
62         String query = "truncate sdcrepository.operationalenvironment;";
63         try {
64             session.execute(query);
65         } catch (Exception e) {
66             logger.debug("Failed to clean operational environment", e);
67             return CassandraOperationStatus.GENERAL_ERROR;
68         }
69         logger.info("cleaning all operational environment finished succsesfully.");
70         return CassandraOperationStatus.OK;
71     }
72
73     public Either<Boolean, CassandraOperationStatus> isTableEmpty(String tableName) {
74         return super.isTableEmpty(tableName);
75     }
76
77     //accessors
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);
82         }
83         return Either.left(operationalEnvironments.all());
84     }
85
86 }