@Override public List<String> getHeaderColumns() { if (headerColumns == null) { headerColumns = new ArrayList<>(); Row row = dataSheet.getRow(0); int colCount = row != null ? row.getLastCellNum() : 0; if (row == null || colCount == 0) { LogMgr.logError( "ExcelReader.getHeaderColumns()", "Cannot retrieve column names because no data is available in the first row of the sheet: " + dataSheet.getSheetName(), null); String msg = ResourceMgr.getFormattedString("ErrExportNoCols", dataSheet.getSheetName()); messages.append(msg); messages.appendNewLine(); return headerColumns; } for (int i = 0; i < colCount; i++) { Cell cell = row.getCell(i); Object value = getCellValue(cell); if (value != null) { headerColumns.add(value.toString()); } else { headerColumns.add("Col" + Integer.toString(i)); } } } return headerColumns; }
@Override public StatementRunnerResult execute(String aSql) throws SQLException { StatementRunnerResult result = new StatementRunnerResult(); String parm = SqlUtil.stripVerb(aSql); cmdLine.parse(parm); WbFile inputFile = evaluateFileArgument(cmdLine.getValue(ARG_INPUT)); WbFile outputFile = evaluateFileArgument(cmdLine.getValue(ARG_OUTPUT)); WbFile xsltFile = evaluateFileArgument(cmdLine.getValue(ARG_STYLESHEET)); if (!cmdLine.hasArguments()) { result.addErrorMessageByKey("ErrXsltWrongParameter"); return result; } if (inputFile == null) { result.addErrorMessageByKey("ErrXsltMissingInputFile"); return result; } if (!inputFile.exists()) { result.addErrorMessageByKey("ErrFileNotFound", cmdLine.getValue(ARG_INPUT)); return result; } if (outputFile == null) { result.addErrorMessageByKey("ErrXsltMissingOutputFile"); return result; } if (xsltFile == null) { result.addErrorMessageByKey("ErrXsltMissingStylesheet"); return result; } if (!xsltFile.exists()) { result.addErrorMessageByKey("ErrFileNotFound", cmdLine.getValue(ARG_STYLESHEET)); return result; } Map<String, String> params = getParameters(cmdLine); XsltTransformer transformer = new XsltTransformer(); try { transformer.setSaveSystemOutMessages(true); transformer.setXsltBaseDir(getXsltBaseDir()); transformer.transform(inputFile, outputFile, xsltFile, params); String msg = transformer.getAllOutputs(); if (msg.length() != 0) { result.addMessage(msg); result.addMessage(""); // create newline } WbFile xsltUsed = new WbFile(transformer.getXsltUsed()); WbFile userXslt = new WbFile(xsltFile); if (xsltUsed != null && !userXslt.equals(xsltUsed)) { // If the xslt file has been "automatically" found, inform the user about this result.addMessage(ResourceMgr.getFormattedString("MsgXsltUsed", xsltUsed.getFullPath())); } result.addMessage(ResourceMgr.getFormattedString("MsgXsltSuccessful", outputFile)); result.setSuccess(); } catch (Exception e) { LogMgr.logError( "WbXslt.execute()", "Error when transforming '" + inputFile + "' to '" + outputFile + "' using " + xsltFile, e); String msg = transformer.getAllOutputs(e); LogMgr.logError("WbXslt.execute()", msg, null); result.addErrorMessage(msg); } return result; }