summaryrefslogtreecommitdiffstats
path: root/ecomp-sdk/epsdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/util/DataSet.java
blob: f07403996d3eecfb4bd03677e7e1b1bfac5c776a (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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
/*-
 * ================================================================================
 * eCOMP Portal SDK
 * ================================================================================
 * Copyright (C) 2017 AT&T Intellectual Property
 * ================================================================================
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ================================================================================
 */
package org.openecomp.portalsdk.analytics.util;

import java.io.Serializable;
import java.sql.*;
import java.util.*;

import org.openecomp.portalsdk.analytics.system.Globals;

public class DataSet extends Vector implements Serializable {
	private Vector columnNames = null;

	private Vector columnTypes = null;

	public DataSet(ResultSet rs) throws SQLException {
		this(rs, Integer.MAX_VALUE);
	} // DataSet

	public DataSet(ResultSet rs, int maxRowLimit) throws SQLException {
		ResultSetMetaData rsmd = rs.getMetaData();
    	int mb = 1024*1024;
    	Runtime runtime = Runtime.getRuntime();

		int colCount = rsmd.getColumnCount();
		columnNames = new Vector(colCount);
		columnTypes = new Vector(colCount);
		for (int i = 1; i <= colCount; i++) {
			columnNames.add(rsmd.getColumnLabel(i)); // getColumnLabel ??
			columnTypes.add(rsmd.getColumnTypeName(i));
		} // for

		while (rs.next() && size() < maxRowLimit) {
//   			if(runtime.freeMemory()/mb <= ((runtime.maxMemory()/mb)*(Globals.getMemoryThreshold()*2)/100) ) {
//   				System.out.println("freeMemory " + runtime.freeMemory());
//   				System.out.println("Max Memory " + runtime.maxMemory());
//   				System.out.println("If Logic " + (runtime.freeMemory()/mb <= ((runtime.maxMemory()/mb)*(Globals.getMemoryThreshold()*2)/100)));
//   				break;
//   			}
			
			Vector v = new Vector(colCount);
			for (int i = 1; i <= colCount; i++)
				v.add(rs.getString(i));
			add(v);
		} // while
        
		   if(rs!=null) 
				rs.close();
	} // DataSet

	public DataSet() {
		columnNames = new Vector();
		columnTypes = new Vector();
	} // DataSet

	public void insertRow(int rowIdx) {
		if (rowIdx > size())
			rowIdx = size();

		Vector v = new Vector(columnNames.size());
		for (int i = 0; i < columnNames.size(); i++)
			v.add("");
		add(rowIdx, v);
	} // insertRow

	public void insertColumn(int colIdx, String colName) {
		insertColumn(colIdx, colName, "VARCHAR2");
	} // insertColumn

	public void insertColumn(int colIdx, String colName, String colType) {
		if (colIdx > columnNames.size())
			colIdx = columnNames.size();

		columnNames.add(colIdx, colName);
		columnTypes.add(colIdx, colType);

		for (int i = 0; i < size(); i++)
			((Vector) get(i)).add(colIdx, "");
	} // insertColumn

	public void setValue(int rowIdx, int colIdx, String value) {
		((Vector) get(rowIdx)).set(colIdx, value);
	} // setValue

	public void setValue(int rowIdx, String colName, String value) {
		((Vector) get(rowIdx)).set(getColumnIndex(colName), value);
	} // setValue

	public void setString(int rowIdx, int colIdx, String value) {
		setValue(rowIdx, colIdx, value);
	} // setString

	public void setString(int rowIdx, String colName, String value) {
		setValue(rowIdx, colName, value);
	} // setString

	public int getRowCount() {
		return size();
	} // getRowCount()

	public int getColumnCount() {
		return columnNames.size();
	} // getColumnCount

	public String getColumnName(int colIdx) {
		return ((String) columnNames.get(colIdx));
	} // getColumnName

	public String getColumnType(int colIdx) {
		return ((String) columnTypes.get(colIdx));
	} // getColumnType

	public String getColumnType(String colName) {
		return getColumnType(getColumnIndex(colName));
	} // getColumnType

	public int getColumnIndex(String colName) {
		for (int i = 0; i < columnNames.size(); i++)
			if (colName.equalsIgnoreCase((String) columnNames.get(i)))
				return i;

		return -1;
	} // getColumnIndex

	public String getString(int rowIdx, int colIdx) {
		return nvl((String) ((Vector) get(rowIdx)).get(colIdx));
	} // getString

	public String getString(int rowIdx, String colName) {
		return getString(rowIdx, getColumnIndex(colName));
	} // getString

	public int getInt(int rowIdx, int colIdx) {
		return Integer.parseInt(getString(rowIdx, colIdx));
	} // getString

	public int getInt(int rowIdx, String colName) {
		return getInt(rowIdx, getColumnIndex(colName));
	} // getString

	public String getItem(int rowIdx, int colIdx) {
		return getString(rowIdx, colIdx);
	} // getItem

	public String getItem(int rowIdx, String colName) {
		return getString(rowIdx, colName);
	} // getItem

	/** *********************************************************************** */

	private String nvl(String s) {
		return (s == null) ? "" : s;
	}

	private String nvl(String s, String sDefault) {
		return nvl(s).equals("") ? sDefault : s;
	}

} // DataSet