Sync Integ to Master
[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 java.util.List;
4
5 import javax.annotation.PostConstruct;
6
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.slf4j.Logger;
12 import org.slf4j.LoggerFactory;
13 import org.springframework.stereotype.Component;
14
15 import com.datastax.driver.core.Session;
16 import com.datastax.driver.mapping.MappingManager;
17 import com.datastax.driver.mapping.Result;
18
19 import fj.data.Either;
20
21 @Component("operational-environment-dao")
22 public class OperationalEnvironmentDao extends CassandraDao {
23
24     private static Logger logger = LoggerFactory.getLogger(OperationalEnvironmentDao.class.getName());
25     private OperationalEnvironmentsAccessor operationalEnvironmentsAccessor;
26
27     public OperationalEnvironmentDao() {
28         super();
29     }
30
31     @PostConstruct
32     public void init() {
33         String keyspace = AuditingTypesConstants.REPO_KEYSPACE;
34         if (client.isConnected()) {
35             Either<ImmutablePair<Session, MappingManager>, CassandraOperationStatus> result = client.connect(keyspace);
36             if (result.isLeft()) {
37                 session = result.left().value().left;
38                 manager = result.left().value().right;
39                 operationalEnvironmentsAccessor = manager.createAccessor(OperationalEnvironmentsAccessor.class);
40                 logger.info("** OperationalEnvironmentDao created");
41             } else {
42                 logger.info("** OperationalEnvironmentDao failed");
43                 throw new RuntimeException("OperationalEnvironment keyspace [" + keyspace + "] failed to connect with error : "
44                         + result.right().value());
45             }
46         } else {
47             logger.info("** Cassandra client isn't connected");
48             logger.info("** OperationalEnvironmentDao created, but not connected");
49         }
50     }
51     public CassandraOperationStatus save(OperationalEnvironmentEntry operationalEnvironmentEntry) {
52         return client.save(operationalEnvironmentEntry, OperationalEnvironmentEntry.class, manager);
53     }
54
55     public Either<OperationalEnvironmentEntry, CassandraOperationStatus> get(String envId) {
56         return client.getById(envId, OperationalEnvironmentEntry.class, manager);
57     }
58
59     public CassandraOperationStatus delete(String envId) {
60         return client.delete(envId, OperationalEnvironmentEntry.class, manager);
61     }
62
63     public CassandraOperationStatus deleteAll() {
64         logger.info("cleaning all operational environments.");
65         String query = "truncate sdcrepository.operationalenvironment;";
66         try {
67             session.execute(query);
68         } catch (Exception e) {
69             logger.debug("Failed to clean operational environment", e);
70             return CassandraOperationStatus.GENERAL_ERROR;
71         }
72         logger.info("cleaning all operational environment finished succsesfully.");
73         return CassandraOperationStatus.OK;
74     }
75
76     public Either<Boolean, CassandraOperationStatus> isTableEmpty(String tableName) {
77         return super.isTableEmpty(tableName);
78     }
79
80     //accessors
81     public Either<List<OperationalEnvironmentEntry>, CassandraOperationStatus> getByEnvironmentsStatus(EnvironmentStatusEnum status) {
82         Result<OperationalEnvironmentEntry> operationalEnvironments = operationalEnvironmentsAccessor.getByEnvironmentsStatus(status.getName());
83         if (operationalEnvironments == null) {
84             return Either.right(CassandraOperationStatus.NOT_FOUND);
85         }
86         return Either.left(operationalEnvironments.all());
87     }
88
89 }