import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
+import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
+import org.onap.music.eelf.logging.EELFLoggerDelegate;
+import org.onap.music.eelf.logging.format.AppMessages;
+import org.onap.music.eelf.logging.format.ErrorSeverity;
+import org.onap.music.eelf.logging.format.ErrorTypes;
import org.onap.music.exceptions.MusicQueryException;
import org.onap.music.exceptions.MusicServiceException;
import org.onap.music.main.MusicUtil;
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ColumnDefinitions;
import com.datastax.driver.core.ColumnDefinitions.Definition;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.TableMetadata;
+import com.datastax.driver.core.exceptions.AlreadyExistsException;
+import com.datastax.driver.core.exceptions.InvalidQueryException;
import com.datastax.driver.core.exceptions.NoHostAvailableException;
+import com.sun.jersey.core.util.Base64;
/**
* @author nelson24
*
*/
public class MusicDataStore {
+
private Session session;
private Cluster cluster;
public void setSession(Session session) {
this.session = session;
}
+
+ /**
+ * @param session
+ */
+ public Session getSession() {
+ return session;
+ }
/**
* @param cluster
this.cluster = cluster;
}
- /**
- *
- */
- private static EELFLogger logger = EELFManager.getInstance().getLogger(MusicDataStore.class);
+
+
+ private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MusicDataStore.class);
/**
*
try {
connectToCassaCluster(remoteIp);
} catch (MusicServiceException e) {
- logger.error(e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage());
}
}
}
}
} catch (SocketException e) {
- logger.error(e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(), AppMessages.CONNCECTIVITYERROR, ErrorSeverity.ERROR, ErrorTypes.CONNECTIONERROR);
+ }catch(Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(), ErrorSeverity.ERROR, ErrorTypes.GENERALSERVICEERROR);
}
return allPossibleIps;
}
private void connectToCassaCluster() {
Iterator<String> it = getAllPossibleLocalIps().iterator();
String address = "localhost";
- logger.info("Connecting to cassa cluster: Iterating through possible ips:"
- + getAllPossibleLocalIps());
+ logger.info(EELFLoggerDelegate.applicationLogger,
+ "Connecting to cassa cluster: Iterating through possible ips:"
+ + getAllPossibleLocalIps());
while (it.hasNext()) {
try {
cluster = Cluster.builder().withPort(9042)
.withCredentials(MusicUtil.getCassName(), MusicUtil.getCassPwd())
.addContactPoint(address).build();
Metadata metadata = cluster.getMetadata();
- logger.info("Connected to cassa cluster " + metadata.getClusterName() + " at "
- + address);
+ logger.info(EELFLoggerDelegate.applicationLogger, "Connected to cassa cluster "
+ + metadata.getClusterName() + " at " + address);
session = cluster.connect();
break;
} catch (NoHostAvailableException e) {
address = it.next();
- logger.error(e.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.HOSTUNAVAILABLE, ErrorSeverity.ERROR, ErrorTypes.CONNECTIONERROR);
}
}
}
.withCredentials(MusicUtil.getCassName(), MusicUtil.getCassPwd())
.addContactPoint(address).build();
Metadata metadata = cluster.getMetadata();
- logger.info("Connected to cassa cluster " + metadata.getClusterName() + " at " + address);
+ logger.info(EELFLoggerDelegate.applicationLogger, "Connected to cassa cluster "
+ + metadata.getClusterName() + " at " + address);
try {
session = cluster.connect();
} catch (Exception ex) {
- logger.error(ex.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, ex.getMessage(),AppMessages.CASSANDRACONNECTIVITY, ErrorSeverity.ERROR, ErrorTypes.SERVICEUNAVAILABLE);
throw new MusicServiceException(
"Error while connecting to Cassandra cluster.. " + ex.getMessage());
}
return row.getBool(colName);
case MAP:
return row.getMap(colName, String.class, String.class);
+ case LIST:
+ return row.getList(colName, String.class);
default:
return null;
}
}
+
+ public byte[] getBlobValue(Row row, String colName, DataType colType) {
+ ByteBuffer bb = row.getBytes(colName);
+ byte[] data = bb.array();
+ return data;
+ }
- public boolean doesRowSatisfyCondition(Row row, Map<String, Object> condition) {
+ public boolean doesRowSatisfyCondition(Row row, Map<String, Object> condition) throws Exception {
ColumnDefinitions colInfo = row.getColumnDefinitions();
for (Map.Entry<String, Object> entry : condition.entrySet()) {
ColumnDefinitions colInfo = row.getColumnDefinitions();
HashMap<String, Object> resultOutput = new HashMap<String, Object>();
for (Definition definition : colInfo) {
- if (!definition.getName().equals("vector_ts"))
- resultOutput.put(definition.getName(),
+ if (!definition.getName().equals("vector_ts")) {
+ if(definition.getType().toString().toLowerCase().contains("blob")) {
+ resultOutput.put(definition.getName(),
+ getBlobValue(row, definition.getName(), definition.getType()));
+ }
+ else
+ resultOutput.put(definition.getName(),
getColValue(row, definition.getName(), definition.getType()));
+ }
}
resultMap.put("row " + counter, resultOutput);
counter++;
boolean result = false;
if (!MusicUtil.isValidQueryObject(!queryObject.getValues().isEmpty(), queryObject)) {
- logger.error("Error while processing prepared query object");
+ logger.error(EELFLoggerDelegate.errorLogger, queryObject.getQuery(),AppMessages.QUERYERROR, ErrorSeverity.ERROR, ErrorTypes.QUERYERROR);
throw new MusicQueryException("Ill formed queryObject for the request = " + "["
+ queryObject.getQuery() + "]");
}
- logger.info("In preprared Execute Put: the actual insert query:" + queryObject.getQuery()
- + "; the values" + queryObject.getValues());
- PreparedStatement preparedInsert = session.prepare(queryObject.getQuery());
+ logger.info(EELFLoggerDelegate.applicationLogger,
+ "In preprared Execute Put: the actual insert query:"
+ + queryObject.getQuery() + "; the values"
+ + queryObject.getValues());
+ PreparedStatement preparedInsert = null;
+ try {
+
+ preparedInsert = session.prepare(queryObject.getQuery());
+
+ } catch(InvalidQueryException iqe) {
+ logger.error(EELFLoggerDelegate.errorLogger, iqe.getMessage(),AppMessages.QUERYERROR, ErrorSeverity.CRITICAL, ErrorTypes.QUERYERROR);
+ throw new MusicQueryException(iqe.getMessage());
+ }catch(Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.QUERYERROR, ErrorSeverity.CRITICAL, ErrorTypes.QUERYERROR);
+ throw new MusicQueryException(e.getMessage());
+ }
+
try {
if (consistency.equalsIgnoreCase(MusicUtil.CRITICAL)) {
- logger.info("Executing critical put query");
+ logger.info(EELFLoggerDelegate.applicationLogger, "Executing critical put query");
preparedInsert.setConsistencyLevel(ConsistencyLevel.QUORUM);
} else if (consistency.equalsIgnoreCase(MusicUtil.EVENTUAL)) {
- logger.info("Executing simple put query");
+ logger.info(EELFLoggerDelegate.applicationLogger, "Executing simple put query");
preparedInsert.setConsistencyLevel(ConsistencyLevel.ONE);
}
- session.execute(preparedInsert.bind(queryObject.getValues().toArray()));
- result = true;
- } catch (Exception e) {
- logger.error("Executing Session Failure for Request = " + "[" + queryObject.getQuery()
- + "]" + " Reason = " + e.getMessage());
- throw new MusicServiceException("Executing Session Failure for Request = " + "["
+ ResultSet rs = session.execute(preparedInsert.bind(queryObject.getValues().toArray()));
+ result = rs.wasApplied();
+
+ }
+ catch (AlreadyExistsException ae) {
+ logger.error(EELFLoggerDelegate.errorLogger, ae.getMessage(),AppMessages.SESSIONFAILED+ " [" + queryObject.getQuery() + "]", ErrorSeverity.ERROR, ErrorTypes.QUERYERROR);
+ throw new MusicServiceException(ae.getMessage());
+ }
+ catch (Exception e) {
+ logger.error(EELFLoggerDelegate.errorLogger, e.getMessage(),AppMessages.SESSIONFAILED+ " [" + queryObject.getQuery() + "]", ErrorSeverity.ERROR, ErrorTypes.QUERYERROR);
+ throw new MusicQueryException("Executing Session Failure for Request = " + "["
+ queryObject.getQuery() + "]" + " Reason = " + e.getMessage());
}
throws MusicServiceException, MusicQueryException {
if (!MusicUtil.isValidQueryObject(!queryObject.getValues().isEmpty(), queryObject)) {
- throw new MusicQueryException("Ill formed queryObject for the request = " + "["
+ logger.error(EELFLoggerDelegate.errorLogger, "",AppMessages.QUERYERROR+ " [" + queryObject.getQuery() + "]", ErrorSeverity.ERROR, ErrorTypes.QUERYERROR);
+ throw new MusicQueryException("Ill formed queryObject for the request = " + "["
+ queryObject.getQuery() + "]");
}
- logger.info("Executing Eventual get query:" + queryObject.getQuery());
- PreparedStatement preparedEventualGet = session.prepare(queryObject.getQuery());
- preparedEventualGet.setConsistencyLevel(ConsistencyLevel.ONE);
+ logger.info(EELFLoggerDelegate.applicationLogger,
+ "Executing Eventual get query:" + queryObject.getQuery());
+
ResultSet results = null;
try {
- results = session.execute(preparedEventualGet.bind(queryObject.getValues().toArray()));
+ PreparedStatement preparedEventualGet = session.prepare(queryObject.getQuery());
+ preparedEventualGet.setConsistencyLevel(ConsistencyLevel.ONE);
+ results = session.execute(preparedEventualGet.bind(queryObject.getValues().toArray()));
} catch (Exception ex) {
- logger.error(ex.getMessage());
- throw new MusicServiceException(ex.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, ex.getMessage(),AppMessages.UNKNOWNERROR+ "[" + queryObject.getQuery() + "]", ErrorSeverity.ERROR, ErrorTypes.QUERYERROR);
+ throw new MusicServiceException(ex.getMessage());
}
return results;
}
public ResultSet executeCriticalGet(PreparedQueryObject queryObject)
throws MusicServiceException, MusicQueryException {
if (!MusicUtil.isValidQueryObject(!queryObject.getValues().isEmpty(), queryObject)) {
- logger.error("Error processing Prepared Query Object");
- throw new MusicQueryException("Ill formed queryObject for the request = " + "["
+ logger.error(EELFLoggerDelegate.errorLogger, "",AppMessages.QUERYERROR+ " [" + queryObject.getQuery() + "]", ErrorSeverity.ERROR, ErrorTypes.QUERYERROR);
+ throw new MusicQueryException("Error processing Prepared Query Object for the request = " + "["
+ queryObject.getQuery() + "]");
}
- logger.info("Executing Critical get query:" + queryObject.getQuery());
+ logger.info(EELFLoggerDelegate.applicationLogger,
+ "Executing Critical get query:" + queryObject.getQuery());
PreparedStatement preparedEventualGet = session.prepare(queryObject.getQuery());
preparedEventualGet.setConsistencyLevel(ConsistencyLevel.QUORUM);
ResultSet results = null;
try {
results = session.execute(preparedEventualGet.bind(queryObject.getValues().toArray()));
} catch (Exception ex) {
- logger.error(ex.getMessage());
- throw new MusicServiceException(ex.getMessage());
+ logger.error(EELFLoggerDelegate.errorLogger, ex.getMessage(),AppMessages.UNKNOWNERROR+ "[" + queryObject.getQuery() + "]", ErrorSeverity.ERROR, ErrorTypes.QUERYERROR);
+ throw new MusicServiceException(ex.getMessage());
}
return results;
}
-
}