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

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

There is a newer version: 4.2.2
Show newest version
package prerna.rdf.main;

import java.util.ArrayList;
import java.util.List;

import prerna.engine.api.IEngine;
import prerna.engine.api.IEngine.ACTION_TYPE;
import prerna.engine.api.IRawSelectWrapper;
import prerna.engine.impl.rdf.BigDataEngine;
import prerna.poi.main.helper.CSVFileHelper;
import prerna.rdf.engine.wrappers.WrapperManager;
import prerna.test.TestUtilityMethods;
import prerna.util.DIHelper;
import prerna.util.Utility;

class ModForms {

	public static void main(String[] args) throws Exception {
		TestUtilityMethods.loadDIHelper();

		String engineProp = "C:\\workspace\\Semoss_Dev\\db\\Forms_TAP_Core_Data.smss";
		BigDataEngine formsEngine = new BigDataEngine();
		formsEngine.openDB(engineProp);
		formsEngine.setEngineId("Forms_TAP_Core_Data");
		DIHelper.getInstance().setLocalProperty("Forms_TAP_Core_Data", formsEngine);

		String testQ = "SELECT DISTINCT ?system (COUNT(?description) as ?count) WHERE {"
				+ "{?system a }"
				+ "{?system  ?description}"
				+ "} GROUP BY ?system";
		
		System.out.println("TEST DUPLICATE DESCRIPTIONS !!! ");
		IRawSelectWrapper manager = WrapperManager.getInstance().getRawWrapper(formsEngine, testQ);
		while(manager.hasNext()) {
			Object[] values = manager.next().getValues();
			if( ((Number) values[1]).intValue() > 1 ) {
				System.out.println("SYSTEM ::: " + values[0]);
			}
		}
		System.out.println("DONE TEST DUPLICATE DESCRIPTIONS !!! ");

//		String query = "SELECT DISTINCT ?system ?description WHERE {"
//				+ "{?system a }"
//				+ "{?system  ?description}"
//				+ "}";
//
//		final String LINE_SEPARATOR = "\n";
//		String path = "C:\\workspace\\Semoss_Dev\\SystemDescriptions.tsv";
//		// set up csv path
//
//		FileWriter writer = new FileWriter(path);
//		BufferedWriter bufferedWriter = new BufferedWriter(writer);
//
//		IRawSelectWrapper manager = WrapperManager.getInstance().getRawWrapper(formsEngine, query);
//		int count = 0;
//		while(manager.hasNext()) {
//			Object[] row = manager.next().getValues();
//			StringBuilder sb = new StringBuilder();
//			sb.append(row[0]).append("\t").append(row[1].toString().replaceAll("\t", "_").replaceAll("\n", "_").replaceAll("\r", "_")).append(LINE_SEPARATOR);
//			bufferedWriter.write(sb.toString());
//			count++;
//		}
//		bufferedWriter.close();
//		writer.close();
//
//		System.out.println("COUNT ::: " + count);
//		System.out.println("DONE");
		
		// 1) remove description
		String query = "SELECT DISTINCT ?system ?description WHERE {"
				+ "{?system a }"
				+ "{?system  ?description}"
				+ "}";
		removeExistingProperties(formsEngine, query, "http://semoss.org/ontologies/Relation/Contains/Description");

		// 2) remove poc
		query = "SELECT DISTINCT ?system ?poc WHERE {"
				+ "{?system a }"
				+ "{?system  ?poc}"
				+ "}";
		removeExistingProperties(formsEngine, query, "http://semoss.org/ontologies/Relation/Contains/POC");
		
		// 3) remove ato
		query = "SELECT DISTINCT ?system ?ato WHERE {"
				+ "{?system a }"
				+ "{?system  ?ato}"
				+ "}";
		removeExistingProperties(formsEngine, query, "http://semoss.org/ontologies/Relation/Contains/ATO_Date");
		
		// 4) remove availability actual
		query = "SELECT DISTINCT ?system ?avail WHERE {"
				+ "{?system a }"
				+ "{?system  ?avail}"
				+ "}";
		removeExistingProperties(formsEngine, query, "http://semoss.org/ontologies/Relation/Contains/AvailabilityActual");
		
		// 5) remove full system name
		query = "SELECT DISTINCT ?system ?fullName WHERE {"
				+ "{?system a }"
				+ "{?system  ?fullName}"
				+ "}";
		removeExistingProperties(formsEngine, query, "http://semoss.org/ontologies/Relation/Contains/Full_System_Name");
		
		// add in the new data from the csv files
		String start = "C:\\Users\\SEMOSS\\Desktop\\Props\\";
		String[] fileLocations = new String[]{
				start + "ATO_Date.csv",
				start + "AvailabilityActual.csv",
				start + "Full_System_Names.csv",
				start + "POC.csv",
				start + "Descriptions.csv"
		};

		String[] dataTypes = new String[]{
				"DATE",
				"NUMBER",
				"STRING",
				"STRING",
				"STRING"
		};

		int size = fileLocations.length;
		for(int i = 0; i < size; i++) {
			processFile(formsEngine, fileLocations[i], dataTypes[i]);
		}
		
		
		formsEngine.commit();
		
		System.out.println("TEST DUPLICATE DESCRIPTIONS !!! ");
		manager = WrapperManager.getInstance().getRawWrapper(formsEngine, testQ);
		while(manager.hasNext()) {
			Object[] values = manager.next().getValues();
			if( ((Number) values[1]).intValue() > 1 ) {
				System.out.println("SYSTEM ::: " + values[0]);
			}
		}
		System.out.println("DONE TEST DUPLICATE DESCRIPTIONS !!! ");
	}
	
	private static void removeExistingProperties(IEngine eng, String query, String pred) {
		final String subprefix = "http://health.mil/ontologies/Concept/System/";
		// get existing values
		IRawSelectWrapper manager = WrapperManager.getInstance().getRawWrapper(eng, query);
		List triplesToRemove = new ArrayList();
		while(manager.hasNext()) {
			Object[] row = manager.next().getValues();
			String system = row[0].toString();
			Object obj = row[1];
			
			String sub = subprefix + system;
			triplesToRemove.add(new Object[]{sub, pred, obj, false});
		}
		
		for(Object[] triple : triplesToRemove) {
			eng.doAction(ACTION_TYPE.REMOVE_STATEMENT, triple);
		}
	}

	
	private static void processFile(IEngine eng, String fileLoc, String dataType) {
		CSVFileHelper helper = new CSVFileHelper();
		helper.setDelimiter(',');
		helper.parse(fileLoc);

		String[] headers = helper.getHeaders();
		
		final String subprefix = "http://health.mil/ontologies/Concept/System/";
		final String pred = "http://semoss.org/ontologies/Relation/Contains/" + headers[1];
		
		Object[] row = null;
		while((row = helper.getNextRow()) != null) {
			String system = row[0].toString();
			Object obj = row[1];

			if(dataType.equals("STRING")) {
				obj = Utility.cleanString(obj.toString(), false);
			} else if(dataType.equals("DATE")) {
				obj = Utility.getDateAsDateObj(obj.toString());
			} else if(dataType.equals("NUMBER")) {
				obj = Utility.getDouble(obj.toString());
			}
			
			String sub = subprefix + system;
			eng.doAction(ACTION_TYPE.ADD_STATEMENT, new Object[]{sub, pred, obj, false});
		}
	}


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy