summaryrefslogtreecommitdiffstats
path: root/ecomp-sdk/epsdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/scheduler/SchedulerUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'ecomp-sdk/epsdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/scheduler/SchedulerUtil.java')
-rw-r--r--ecomp-sdk/epsdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/scheduler/SchedulerUtil.java369
1 files changed, 369 insertions, 0 deletions
diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/scheduler/SchedulerUtil.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/scheduler/SchedulerUtil.java
new file mode 100644
index 00000000..e3f2694a
--- /dev/null
+++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/scheduler/SchedulerUtil.java
@@ -0,0 +1,369 @@
+/*-
+ * ================================================================================
+ * 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.scheduler;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.math.BigDecimal;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.sql.Types;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+import org.openecomp.portalsdk.analytics.error.ReportSQLException;
+import org.openecomp.portalsdk.analytics.system.DbUtils;
+
+//import oracle.jdbc.*;
+//import oracle.sql.BLOB;
+
+
+public class SchedulerUtil {
+
+ private Connection conn = null;
+
+ protected Connection getConnection() {
+ return conn;
+ }
+
+ protected void setConnection(Connection _conn) {
+ conn = _conn;
+ }
+
+ protected Connection init() throws SQLException, ReportSQLException{
+ if(conn != null)
+ return conn;
+ conn = DbUtils.getConnection();
+ return conn;
+ }
+
+ protected void closeConnection() throws SQLException {
+ if(conn != null) conn.close();
+ }
+
+ public void insertOrUpdate(String sql) throws SQLException, ReportSQLException {
+
+ Statement stat = null;
+ try{
+ //conn = getConnection();
+ stat = conn.createStatement();
+ stat.executeUpdate(sql);
+
+ } finally{
+ stat.close();
+ //conn.close();
+ }
+ }
+
+ public void updateBinaryStream(String sql, BigDecimal id, InputStream is, int size) throws SQLException, ReportSQLException, IOException {
+
+ // cludge hack for oracle databases
+ if(conn.getMetaData().getDatabaseProductName().toLowerCase().contains("oracle")) {
+/* updateBlob(sql,id,is,size);
+*/ throw new ReportSQLException("only maria db support for this ");
+
+ }
+
+ PreparedStatement stat = null;
+ try {
+ stat = conn.prepareStatement(sql);
+ stat.setBigDecimal(2, id);
+ stat.setBinaryStream(1, is, size);
+ stat.executeUpdate();
+
+ } finally{
+ stat.close();
+ }
+
+ }
+
+ /*public void updateBlob(String sql, BigDecimal id, InputStream is, int size) throws SQLException, ReportSQLException, IOException {
+ PreparedStatement stat = null;
+ OutputStream out = null;
+ BLOB blob = null;
+ try {
+ stat = conn.prepareStatement(sql);
+ blob = BLOB.createTemporary(conn,false, BLOB.DURATION_SESSION);
+ out = blob.getBinaryOutputStream();
+
+ int read;
+ while((read = is.read()) != -1) {
+ out.write(read);
+ }
+ out.flush();
+
+ stat.setBigDecimal(2, id);
+ stat.setBlob(1, blob);
+ stat.executeUpdate();
+
+ }
+ catch (SQLException sqL) {
+ sqL.printStackTrace();
+ }
+ finally{
+ out.close();
+ stat.close();
+ }
+
+ }*/
+
+
+ public void insertOrUpdateWithPrepared(String sql, List<Object> params, List<Integer> types) throws SQLException, ReportSQLException {
+
+ PreparedStatement stat = null;
+ try{
+ //conn = getConnection();
+ stat = conn.prepareStatement(sql);
+ conn.getMetaData();
+ int i2;
+ int paramLength = params.size();
+ for(int i = 0 ; i< paramLength ; i++) {
+ i2 = i+1;
+ Object param = params.get(i);
+ int type = types.get(i);
+
+ if(param.equals("NULL")) {
+ stat.setNull(i2, type);
+ }
+ else if(type == Types.VARCHAR) {
+ stat.setString(i2, (String)param);
+ }
+ else if(type == Types.INTEGER) {
+ stat.setInt(i2, (Integer)param);
+ }
+ else if(type == Types.NUMERIC) {
+ stat.setLong(i2, (Long)param);
+ }
+ else if(type == Types.DOUBLE) {
+ stat.setDouble(i2, (Double)param);
+ }
+ else if(type == Types.DATE) {
+ stat.setDate(i2, (java.sql.Date)param);
+ }
+ else if(type == Types.TIMESTAMP) {
+ stat.setTimestamp(i2, (java.sql.Timestamp)param);
+ }
+ else if(type == Types.BIGINT) {
+ stat.setBigDecimal(i2, (BigDecimal)param);
+ }
+ else
+ throw new SQLException("Unidentified Object; Please contact admin and have this method updated with the current object type");
+
+ }
+
+ stat.executeUpdate();
+
+ } finally{
+ stat.close();
+ //conn.close();
+ }
+ }
+
+
+ public Object getSingleResult(String sql, String fieldname) throws SQLException, ReportSQLException{
+
+ Statement stat = null;
+ ResultSet rs = null;
+ Object o=null;
+ try{
+ //conn = getConnection();
+ stat = conn.createStatement();
+ rs = stat.executeQuery(sql);
+
+ while (rs.next()) {
+ o = rs.getObject(fieldname);
+ }
+ }
+ catch(SQLException sqlE){
+ sqlE.printStackTrace();
+ }
+
+ finally{
+ if(rs!=null)
+ rs.close();
+ if(stat!=null)
+ stat.close();
+ //conn.close();
+ }
+ return o;
+ }
+
+ public InputStream getDBStream(String sql, String fieldname) throws SQLException, ReportSQLException, IOException{
+
+ // cludge hack for oracle databases
+ if(conn.getMetaData().getDatabaseProductName().toLowerCase().contains("oracle")) {
+ /*return getDBBlob(sql,fieldname);*/
+ throw new ReportSQLException("only maria db support for this ");
+
+ }
+
+
+ Statement stat = null;
+ ResultSet rs = null;
+ InputStream o=null;
+ try{
+ //conn = getConnection();
+ stat = conn.createStatement();
+ rs = stat.executeQuery(sql);
+
+ while (rs.next()) {
+ o = rs.getBinaryStream(fieldname);
+ }
+ }
+ catch(SQLException sqlE){
+ sqlE.printStackTrace();
+ }
+
+ finally{
+ if(rs!=null)
+ rs.close();
+ if(stat!=null)
+ stat.close();
+ //conn.close();
+ }
+ return o;
+ }
+
+ /*public InputStream getDBBlob(String sql, String fieldname) throws SQLException, ReportSQLException, IOException{
+
+
+ Statement stat = null;
+ ResultSet rs = null;
+ BLOB blob=null;
+ ByteArrayInputStream in = null;
+ try{
+ stat = conn.createStatement();
+ rs = stat.executeQuery(sql);
+
+ if (rs.next()) {
+ blob = ((OracleResultSet) rs).getBLOB(fieldname);
+ in = new ByteArrayInputStream(blob.getBytes(1,(int)blob.length()));
+
+ }
+ }
+ catch(SQLException sqlE){
+ sqlE.printStackTrace();
+ }
+
+ finally{
+ if(rs!=null)
+ rs.close();
+ if(stat!=null)
+ stat.close();
+ //conn.close();
+ }
+ return in;
+ }
+ */
+
+ public void getAndExecute(String sql, Executor executor) throws SQLException, ReportSQLException{
+ //Connection conn = getConnection();
+ Statement stat = conn.createStatement();
+ ResultSet rs = stat.executeQuery(sql);
+
+
+ while (rs.next()) {
+ executor.execute(rs);
+ }
+
+ if(rs!=null)
+ rs.close();
+ if(stat!=null)
+ stat.close();
+ //conn.close();
+ }
+
+ interface Executor{
+ public void execute(ResultSet rs) throws SQLException;
+ }
+
+
+
+
+
+
+ public static Date trunc_hour(Date v_date) {
+
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(v_date);
+ calendar.set(Calendar.MILLISECOND, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ return calendar.getTime();
+ }
+
+ public static Date add_hours(Date v_date, int i) {
+
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(v_date);
+ cal.add(Calendar.HOUR, i);
+ return cal.getTime();
+ }
+
+ public static Date add_months(Date v_date, int i) {
+
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(v_date);
+ cal.add(Calendar.MONTH, i);
+ return cal.getTime();
+ }
+
+ public static Date add_days(Date v_date, int i) {
+
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(v_date);
+ cal.add(Calendar.DATE, i);
+ return cal.getTime();
+ }
+
+ public static Date to_date(String input, String format) {
+
+ Date date = null;
+ try {
+ date = new SimpleDateFormat(format, Locale.ENGLISH).parse(input);
+ } catch (Exception e) {
+ }
+ return date;
+ }
+
+ public static String to_date_str(Date input, String format) {
+
+ String date = null;
+ try {
+ date = new SimpleDateFormat(format, Locale.ENGLISH).format(input);
+ } catch (Exception e) {
+ }
+ return date;
+ }
+
+ public static String[] cr_dissecturl(String formfields, String delimiter){
+ if(formfields == null || formfields.isEmpty())
+ return new String[]{};
+ return formfields.split("&");
+ }
+}