All Downloads are FREE. Search and download functionalities are using the official Maven repository.

prerna.rdf.main.TestingAudit Maven / Gradle / Ivy

The newest version!
//package prerna.rdf.main;
//
//import java.io.File;
//import java.io.IOException;
//import java.sql.Connection;
//import java.sql.PreparedStatement;
//import java.sql.ResultSet;
//import java.sql.SQLException;
//import java.sql.Statement;
//import java.time.LocalDateTime;
//import java.util.UUID;
//
//import org.h2.tools.Server;
//
//import prerna.algorithm.api.SemossDataType;
//import prerna.ds.util.RdbmsQueryBuilder;
//import prerna.engine.impl.rdbms.RdbmsConnectionBuilder;
//import prerna.poi.main.helper.CSVFileHelper;
//import prerna.util.Utility;
//
//public class TestingAudit {
//
//	private static boolean init = false;
//	
//	private Connection conn;
//	private Server server;
//	private String serverUrl;
//	
//	public TestingAudit() {
//		
//	}
//	
//	public void genModTables() {
//		String[] headers = new String[]{"ENGINE_ID", "MOD_TABLE"};
//		String[] types = new String[]{"VARCHAR(200)", "VARCHAR(200)"};
////		execQ(RdbmsQueryBuilder.makeOptionalCreate("ENGINE_TABLE_LOOKUP", headers, types));
////		execQ(RdbmsQueryBuilder.makeInsert("ENGINE_TABLE_LOOKUP", headers, types, new Object[]{"test_id", "TEST_TABLE"}));
//
//		headers = new String[]{"AUTO_INCREMENT", "ID", "TABLE", "KEY_COLUMN", "KEY_COLUMN_VALUE", "ALTERED_COLUMN", "OLD_VALUE", "NEW_VALUE", "TIMESTAMP", "USER"};
//		types = new String[]{"IDENTITY", "VARCHAR(50)", "VARCHAR(200)", "VARCHAR(200)", "VARCHAR(200)", "VARCHAR(200)", "VARCHAR(200)", "VARCHAR(200)", "TIMESTAMP", "VARCHAR(200)"};
//		execQ(RdbmsQueryBuilder.makeOptionalCreate("TEST_TABLE", headers, types));
//	}
//	
//	
//	public void performMods() {
//		// transaction 1
//		{
//			String table = "DATA";
//			String keyColumn = "TITLE";
//			String keyValue = "American Hustle";
//			String alteredColumn = "NOMINATED";
//			String oldValue = "Y";
//			String newValue = "N";
//			
//			// run on the table
//			String updateQ = "UPDATE " + table + " SET " + alteredColumn + "='" + newValue + "' WHERE " + keyColumn + "='" + keyValue + "' AND " + alteredColumn + "='" + oldValue + "'";
//			execQ(updateQ);
//			
//			// add audit log
//			Object[] data = new Object[]{UUID.randomUUID().toString(), table, keyColumn, keyValue, alteredColumn, oldValue, newValue, getTime(), "maher khalil"};
//			runAudit(data);
//		}
//		
//		// transaction 2
//		{
//			String table = "DATA";
//			String keyColumn = "TITLE";
//			String keyValue = "Captain Phillips";
//			String alteredColumn = "NOMINATED";
//			String oldValue = "Y";
//			String newValue = "N";
//			
//			// run on the table
//			String updateQ = "UPDATE " + table + " SET " + alteredColumn + "='" + newValue + "' WHERE " + keyColumn + "='" + keyValue + "' AND " + alteredColumn + "='" + oldValue + "'";
//			execQ(updateQ);
//			
//			// add audit log
//			String tId = UUID.randomUUID().toString();
//			String time = getTime();
//			Object[] data = new Object[]{tId, table, keyColumn, keyValue, alteredColumn, oldValue, newValue, time, "maher khalil"};
//			runAudit(data);
//			
//			table = "DATA";
//			keyColumn = "TITLE";
//			keyValue = "Captain Phillips";
//			alteredColumn = "STUDIO";
//			oldValue = "Sony";
//			newValue = "WB";
//			
//			// run on the table
//			updateQ = "UPDATE " + table + " SET " + alteredColumn + "='" + newValue + "' WHERE " + keyColumn + "='" + keyValue + "' AND " + alteredColumn + "='" + oldValue + "'";
//			execQ(updateQ);
//			
//			// add audit log
//			data = new Object[]{tId, table, keyColumn, keyValue, alteredColumn, oldValue, newValue, time, "maher khalil"};
//			runAudit(data);
//		}
//		
//		// transaction 3
//		{
//			String table = "DATA";
//			String keyColumn = "TITLE";
//			String keyValue = "American Hustle";
//			String alteredColumn = "TITLE";
//			String oldValue = "American Hustle";
//			String newValue = "American Hustler";
//			
//			// run on the table
//			String updateQ = "UPDATE " + table + " SET " + alteredColumn + "='" + newValue + "' WHERE " + keyColumn + "='" + keyValue + "' AND " + alteredColumn + "='" + oldValue + "'";
//			execQ(updateQ);
//			
//			// add audit log
//			Object[] data = new Object[]{UUID.randomUUID().toString(), table, keyColumn, keyValue, alteredColumn, oldValue, newValue, getTime(), "maher khalil"};
//			runAudit(data);
//		}
//	}
//	
//	public void revertToId(String tId) {
//		StringBuilder revertQ = new StringBuilder();
//		StringBuilder logQ = new StringBuilder();
//		
//		String logTable = "TEST_TABLE";
//		String undoRowNumQ = "select min(auto_increment) from " + logTable + " where id ='" + tId + "'";
//		long row_number = getNumberFromQ(undoRowNumQ);
//		if(row_number > 0) {
//			String logId = null;
//			String prevQueriedId = null;
//			
//			String getUndoQuery = "select id, table, key_column, key_column_value, altered_column, old_value, new_value from " + logTable + " where auto_increment >= " + row_number + " order by auto_increment desc";
//			Statement stmt = null;
//			ResultSet rs = null;
//			try {
//				stmt = this.conn.createStatement();
//				rs = stmt.executeQuery(getUndoQuery);
//				
//				while(rs.next()) {
//					String id = rs.getString("id");
//					String table = rs.getString("table");
//					String keyColumn = rs.getString("key_column");
//					String keyValue = rs.getString("key_column_value");
//					String alteredColumn = rs.getString("altered_column");
//					String oldValue = rs.getString("old_value");
//					String newValue = rs.getString("new_value");
//					
//					// WE WANT TO SWITCH THE OLD AND NEW VALUES!!!
//					String temp = newValue;
//					newValue = oldValue;
//					oldValue = temp;
//					String updateQ = null;
//					if(keyColumn.equals(alteredColumn)) {
//						updateQ = "UPDATE " + table + " SET " + alteredColumn + "='" + newValue + "' WHERE " + alteredColumn + "='" + oldValue + "'";
//					} else {
//						updateQ = "UPDATE " + table + " SET " + alteredColumn + "='" + newValue + "' WHERE " + keyColumn + "='" + keyValue + "' AND " + alteredColumn + "='" + oldValue + "'";
//					}
//					
//					// add to bulk set
//					revertQ.append(updateQ);
//					revertQ.append(";");
//					
//					// do same for audit
//					if(prevQueriedId == null) {
//						prevQueriedId = id;
//						logId = UUID.randomUUID().toString();
//					} else {
//						if(!prevQueriedId.equals(id)) {
//							// get a new id
//							logId = UUID.randomUUID().toString();
//						}
//					}
//					Object[] data = new Object[]{logId, table, keyColumn, keyValue, alteredColumn, oldValue, newValue, getTime(), "maher khalil"};
//					logQ.append(getAuditInsert(data));
//					logQ.append(";");
//				}
//			} catch (SQLException e) {
//				classLogger.error(Constants.STACKTRACE, e);
//			} finally {
//			      if(stmt != null) {
//		                try {
//		            stmt.close();
//		          } catch (SQLException e) {
//		            // TODO Auto-generated catch block
//		            classLogger.error(Constants.STACKTRACE, e);
//		          }
//		        }
//			}
//			
//			// actually run
//			execQ(revertQ.toString());
////			execQ(logQ.toString());
//		}
//	}
//	
//	public String getAuditInsert(Object[] data) {
//		String[] headers = new String[]{"ID", "TABLE", "KEY_COLUMN", "KEY_COLUMN_VALUE", "ALTERED_COLUMN", "OLD_VALUE", "NEW_VALUE", "TIMESTAMP", "USER"};
//		String[] types = new String[]{"VARCHAR(50)", "VARCHAR(200)", "VARCHAR(200)", "VARCHAR(200)", "VARCHAR(200)", "VARCHAR(200)", "VARCHAR(200)", "TIMESTAMP", "VARCHAR(200)"};
//		return RdbmsQueryBuilder.makeInsert("TEST_TABLE", headers, types, data);
//	}
//	
//	public void runAudit(Object[] data) {
//		execQ(getAuditInsert(data));
//	}
//	
//	public String getTime() {
//		java.sql.Timestamp t = java.sql.Timestamp.valueOf(LocalDateTime.now());
//		return t.toString();
//	}
//	
//	/**
//	 * Testing
//	 * @param args
//	 */
//	public static void main(String[] args) {
//		TestingAudit t = new TestingAudit();
//		if(init) {
//			t.initDb();
//			t.loadCsv("C:\\Users\\SEMOSS\\Desktop\\Movie Data.csv");
//			t.genModTables();
//			t.performMods();
//		} else {
//			t.connect("5355", "jdbc:h2:tcp://10.10.11.149:5355/nio:C:\\workspace\\Semoss_Dev\\testingAudit");
//			t.revertToId("3b1b7072-151d-47b9-a14a-09fe7b56d616");
//		}
//	}
//	
//	
//	/**
//	 * Generate an audit db
//	 */
//	public void initDb() {
//		String loc = "C:\\workspace\\Semoss_Dev\\testingAudit";
//		File f = new File(loc + ".mv.db");
//		if(f.exists()) {
//			f.delete();
//		}
//		try {
//			f.createNewFile();
//		} catch (IOException e) {
//			classLogger.error(Constants.STACKTRACE, e);
//		}
//		
//		RdbmsConnectionBuilder builder = new RdbmsConnectionBuilder(RdbmsConnectionBuilder.CONN_TYPE.DIRECT_CONN_URL);
//		try {
//			String port = Utility.findOpenPort();
//			// create a random user and password
//			// get the connection object and start up the frame
//			server = Server.createTcpServer("-tcpPort", port, "-tcpAllowOthers");
//			serverUrl = "jdbc:h2:" + server.getURL() + "/nio:" + loc;
//			server.start();
//			
//			// update the builder
//			builder.setConnectionUrl(serverUrl);
//		} catch (SQLException e) {
//			classLogger.error(Constants.STACKTRACE, e);
//		}
//		
//		builder.setDriver("H2_DB");
//		builder.setUserName("sa");
//		builder.setPassword("");
//		
//		System.out.println("Connection url is " + builder.getConnectionUrl());
//		System.out.println("Connection url is " + builder.getConnectionUrl());
//		System.out.println("Connection url is " + builder.getConnectionUrl());
//
//		try {
//			this.conn = builder.build();
//		} catch (SQLException e) {
//			classLogger.error(Constants.STACKTRACE, e);
//		}
//	}
//	
//	private void connect(String port, String serverUrl) {
//		RdbmsConnectionBuilder builder = new RdbmsConnectionBuilder(RdbmsConnectionBuilder.CONN_TYPE.DIRECT_CONN_URL);
//		builder.setConnectionUrl(serverUrl);
//		builder.setDriver("H2_DB");
//		builder.setUserName("sa");
//		builder.setPassword("");
//		
//		System.out.println("Connection url is " + builder.getConnectionUrl());
//		System.out.println("Connection url is " + builder.getConnectionUrl());
//		System.out.println("Connection url is " + builder.getConnectionUrl());
//
//		try {
//			this.conn = builder.build();
//		} catch (SQLException e) {
//			classLogger.error(Constants.STACKTRACE, e);
//		}
//	}
//	
//	/**
//	 * 
//	 * @param fileLoc
//	 */
//	public void loadCsv(String fileLoc) {
//		CSVFileHelper h = new CSVFileHelper();
//		h.parse(fileLoc);
//		String[] headers = h.getHeaders();
//		Object[][] typesMatrix = h.predictTypes();
//		
//		SemossDataType[] eTypes = new SemossDataType[headers.length];
//		String[] types = new String[headers.length];
//		for(int i = 0; i < headers.length; i++) {
//			eTypes[i] = (SemossDataType) typesMatrix[i][0];
//			types[i] = typesMatrix[i][0].toString();
//			if(types[i].equals("STRING")) {
//				types[i] = "VARCHAR(800)";
//			}
//		}
//		execQ(RdbmsQueryBuilder.makeOptionalCreate("DATA", headers, types));
//		
//		String psQuery = RdbmsQueryBuilder.createInsertPreparedStatementString("DATA", headers);
//		PreparedStatement ps = null;
//		try {
//			ps = this.conn.prepareStatement(psQuery);
//			
//			String[] nextRow = null;
//			while( (nextRow = h.getNextRow()) != null) {
//				for(int colIndex = 0; colIndex < nextRow.length; colIndex++) {
//					if(eTypes[colIndex] == SemossDataType.STRING) {
//						ps.setString(colIndex + 1, nextRow[colIndex]);
//					} else if(eTypes[colIndex] == SemossDataType.INT){
//						Integer value = Utility.getInteger(nextRow[colIndex] + "");
//						if (value != null) {
//							ps.setInt(colIndex + 1, value);
//						} else {
//							ps.setNull(colIndex + 1, java.sql.Types.DOUBLE);
//						}
//					} else if(eTypes[colIndex] == SemossDataType.DOUBLE){
//						Double value = Utility.getDouble(nextRow[colIndex] + "");
//						if (value != null) {
//							ps.setDouble(colIndex + 1, value);
//						} else {
//							ps.setNull(colIndex + 1, java.sql.Types.DOUBLE);
//						}
//					}
//				}
//				ps.addBatch();
//			}
//		} catch (SQLException e) {
//			classLogger.error(Constants.STACKTRACE, e);
//		} finally {
//			if(ps != null) {
//				try {
//					ps.executeBatch();
//				} catch (SQLException e) {
//					classLogger.error(Constants.STACKTRACE, e);
//				}
//				try {
//					ps.close();
//				} catch (SQLException e) {
//					classLogger.error(Constants.STACKTRACE, e);
//				}
//			}
//		}
//	}
//	
//	/**
//	 * 
//	 * @param q
//	 */
//	private void execQ(String q) {
//		try(PreparedStatement statement = this.conn.prepareStatement(q)){
//			statement.execute();
//		} catch(SQLException e){
//			classLogger.error(Constants.STACKTRACE, e);
//		}
//	}
//	
//	private long getNumberFromQ(String q) {
//		Statement stmt = null;
//		ResultSet rs = null;
//		try {
//			stmt = this.conn.createStatement();
//			rs = stmt.executeQuery(q);
//			while(rs.next()) {
//				return rs.getLong(1);
//			}
//		} catch (SQLException e) {
//			classLogger.error(Constants.STACKTRACE, e);
//		} finally {
//			if(rs != null) {
//				try {
//					rs.close();
//				} catch (SQLException e) {
//					classLogger.error(Constants.STACKTRACE, e);
//				}
//			}
//			if(stmt != null) {
//				try {
//					stmt.close();
//				} catch (SQLException e) {
//					classLogger.error(Constants.STACKTRACE, e);
//				}
//			}
//		}
//		return -1;
//	}
//}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy