
prerna.poi.main.helper.excel.GetExcelFormReactor Maven / Gradle / Ivy
The newest version!
package prerna.poi.main.helper.excel;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import org.apache.poi.ss.usermodel.Sheet;
import prerna.reactor.AbstractReactor;
import prerna.sablecc2.om.PixelDataType;
import prerna.sablecc2.om.PixelOperationType;
import prerna.sablecc2.om.ReactorKeysEnum;
import prerna.sablecc2.om.execptions.SemossPixelException;
import prerna.sablecc2.om.nounmeta.NounMetadata;
/**
* This class stores and retrieves the data validation map from the database
*
*/
public class GetExcelFormReactor extends AbstractReactor {
public GetExcelFormReactor() {
this.keysToGet = new String[] { ReactorKeysEnum.FILE_PATH.getKey(), ReactorKeysEnum.DATABASE.getKey(), ReactorKeysEnum.SHEET_NAME.getKey() };
}
@Override
public NounMetadata execute() {
organizeKeys();
String filePath = this.keyValue.get(this.keysToGet[0]);
if(!ExcelParsing.isExcelFile(filePath)) {
NounMetadata error = new NounMetadata("Invalid file. Must be .xlsx, .xlsm or .xls", PixelDataType.CONST_STRING, PixelOperationType.ERROR);
SemossPixelException e = new SemossPixelException(error);
e.setContinueThreadOfExecution(false);
throw e;
}
// TODO should pass in databaseId
String databaseName = this.keyValue.get(this.keysToGet[1]);
ExcelWorkbookFileHelper helper = new ExcelWorkbookFileHelper();
helper.parse(filePath);
List sheetNames = new Vector<>();
String sheetName = this.keyValue.get(this.keysToGet[2]);
// TODO get modified headers
Map newHeaders = new HashMap<>();
if (sheetName == null) {
sheetNames = helper.getSheets();
} else {
sheetNames.add(sheetName);
}
Map retMap = new HashMap<>();
for (String sheet : sheetNames) {
Sheet excelSheet = helper.getSheet(sheet);
Map dataValidationMap = ExcelDataValidationHelper.getDataValidation(excelSheet, newHeaders);
Map form = ExcelDataValidationHelper.createInsertForm(databaseName, sheet, dataValidationMap, null);
if (!form.isEmpty()) {
retMap.put(sheet, form);
}
}
return new NounMetadata(retMap, PixelDataType.MAP);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy