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

prerna.reactor.qs.source.SharePointWebDavPullReactor Maven / Gradle / Ivy

The newest version!

package prerna.reactor.qs.source;

import java.io.File;
import java.io.IOException;
import java.util.Map;

import org.apache.commons.io.FileUtils;
import org.apache.logging.log4j.Logger;

import prerna.poi.main.helper.CSVFileHelper;
import prerna.poi.main.helper.FileHelperUtil;
import prerna.query.querystruct.CsvQueryStruct;
import prerna.query.querystruct.SelectQueryStruct;
import prerna.reactor.qs.AbstractQueryStructReactor;
import prerna.util.Constants;
import prerna.util.DIHelper;
import prerna.util.Utility;

public class SharePointWebDavPullReactor extends AbstractQueryStructReactor{

	//private String[] keysToGet;
	private static final String CLASS_NAME = SharePointWebDavPullReactor.class.getName();


	public SharePointWebDavPullReactor() {
		this.keysToGet = new String[] { "path" };
	}

	@Override
	protected SelectQueryStruct createQueryStruct() {

		//get keys
		Logger logger = getLogger(CLASS_NAME);
		organizeKeys();
		String filePath = this.keyValue.get(this.keysToGet[0]);
		if (filePath == null || filePath.length() <= 0) {
			throw new IllegalArgumentException("Need to specify file path");
		}


		String filePathDest = DIHelper.getInstance().getProperty(Constants.INSIGHT_CACHE_DIR) + "\\"
				+ DIHelper.getInstance().getProperty(Constants.CSV_INSIGHT_CACHE_FOLDER);
		filePathDest += "\\" + Utility.getRandomString(10) + ".csv";
		filePathDest = filePathDest.replace("\\", "/");
		try {
			File source = new File(filePath);
			File destination = new File(filePathDest);
			FileUtils.copyFile(source, destination);
		} catch (IOException e1) {
		
			// TODO Auto-generated catch block
			logger.error(Constants.STACKTRACE, e1);
		}
		// get datatypes
		CSVFileHelper helper = new CSVFileHelper();
		helper.setDelimiter(',');
		helper.parse(filePathDest);
		Map[] predictionMaps = FileHelperUtil.generateDataTypeMapsFromPrediction(helper.getHeaders(), helper.predictTypes());
		Map dataTypes = predictionMaps[0];
		Map additionalDataTypes = predictionMaps[1];
		CsvQueryStruct qs = new CsvQueryStruct();
		for (String key : dataTypes.keySet()) {
			qs.addSelector("DND", key);
		}
		helper.clear();
		qs.merge(this.qs);
		qs.setFilePath(filePathDest);
		qs.setDelimiter(',');
		qs.setColumnTypes(dataTypes);
		qs.setAdditionalTypes(additionalDataTypes);
		return qs;


	}


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy