summaryrefslogtreecommitdiffstats
path: root/ecomp-sdk/epsdk-music/src/main/java/org/onap/portalapp/music/util/MusicUtil.java
blob: f582a9db1ceaa912305b127ef97662c6f3fcab5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package org.onap.portalapp.music.util;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.nio.ByteBuffer;
import java.time.Duration;
import java.time.Instant;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

import org.onap.music.eelf.logging.EELFLoggerDelegate;
import org.onap.portalapp.music.conf.MusicSession;

import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;

public class MusicUtil {
	private static final Set<String> sessionAttrNameSet = new HashSet<>(Arrays.asList("CREATION_TIME", "LAST_ACCESS_TIME","MAX_INACTIVE_INTERVAL","EXPIRY_TIME","PRINCIPAL_NAME"));

	private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MusicUtil.class);
	private static String atomicPut = MusicProperties.getProperty(MusicProperties.MUSIC_ATOMIC_PUT);
	private static String atomicGet = MusicProperties.getProperty(MusicProperties.MUSIC_ATOMIC_GET);
	private static String cached = MusicProperties.getProperty(MusicProperties.MUSIC_CACHE);
	private static String musicSerializeCompress = MusicProperties.getProperty(MusicProperties.MUSIC_SERIALIZE_COMPRESS);
	public static boolean isSessionMetaAttr(String key){
		return sessionAttrNameSet.contains(key);
	}

	public static <T> T musicRestResponseDataParsing(ResultSet rs, String attributeName) throws Exception{
		logger.debug(EELFLoggerDelegate.debugLogger, "musicRestResponseDataParsing: start");
		Row row = rs.one();
		if(!sessionAttrNameSet.contains(attributeName)){
			if(row!=null)
				return MusicUtil.musicDeserialize(row.getBytes("attribute_bytes"));
		}else{
			return (T) row.getString(attributeName);
		}
		return null;
	}

	public static <T> T musicDeserialize (ByteBuffer byteBuf) throws Exception{
		logger.debug(EELFLoggerDelegate.debugLogger, "musicDeserialize: start");
		ByteArrayInputStream byteArr = new ByteArrayInputStream(byteBuf.array());
		ObjectInputStream ois  = null;
		if(isMusicSerializeCompress()){
			GZIPInputStream zos = new GZIPInputStream(byteArr);
			ois = new ObjectInputStream(zos);
		}else{
			ois = new ObjectInputStream(byteArr);		
		}
		return (T) ois.readObject();
	}

	public static ByteBuffer musicSerialize (Object value) throws Exception{
		logger.debug(EELFLoggerDelegate.debugLogger, "musicSerialize: start");
		ByteArrayOutputStream bo = new ByteArrayOutputStream();			
		try {	
			if(isMusicSerializeCompress()){
				GZIPOutputStream zos = new GZIPOutputStream(bo);
				ObjectOutputStream oos = new ObjectOutputStream(zos);
				oos.writeObject(value);
				oos.flush();
				zos.finish();
			}else{		
				ObjectOutputStream oos = new ObjectOutputStream(bo);
				oos.writeObject(value);
				oos.flush();
			}
		} catch (IOException e) {
			logger.error(EELFLoggerDelegate.errorLogger, "Failed to serialize ");
		}
		return ByteBuffer.wrap(bo.toByteArray());
	}

	public static MusicSession parseMetaData (Row row) throws Exception{
		logger.debug(EELFLoggerDelegate.debugLogger, "parseMetaData: start");

		if(row==null)
			return null;
		String sessionId = row.getString("primary_id");
		MusicSession musicSession = new MusicSession(sessionId);
		musicSession.setCreationTime(Instant.parse(row.getString("creation_time")));
		musicSession.setLastAccessedTime(Instant.parse(row.getString("last_access_time")));
		musicSession.setMaxInactiveInterval(Duration.parse(row.getString("max_inactive_interval")));
		return musicSession;
	}

	public static boolean isMusicSerializeCompress(){
		if(musicSerializeCompress==null){
			logger.error(EELFLoggerDelegate.errorLogger, "Failed to read property file " + MusicProperties.MUSIC_SERIALIZE_COMPRESS +" fall back to eventual put");
			return false;
		}
		return musicSerializeCompress.trim().equalsIgnoreCase("true");
	}

	public static boolean isAtomicPut(){
		if(atomicPut==null){
			logger.error(EELFLoggerDelegate.errorLogger, "Failed to read property file " + MusicProperties.MUSIC_ATOMIC_PUT +" fall back to eventual put");
			return false;
		}
		return atomicPut.trim().equalsIgnoreCase("true");
	}

	public static boolean isAtomicGet(){
		if(atomicGet==null){
			logger.error(EELFLoggerDelegate.errorLogger, "Failed to read property file " + MusicProperties.MUSIC_ATOMIC_GET +" fall back to eventual get");
			return false;
		}
		return atomicGet.trim().equalsIgnoreCase("true");
	}

	public static boolean isCached(){
		if(cached==null){
			logger.error(EELFLoggerDelegate.errorLogger, "Failed to read property file " + MusicProperties.MUSIC_CACHE +" fall back to non cache");
			return false;
		}
		return cached.trim().equalsIgnoreCase("true");
	}
}