in pricat/src/main/java/org/apache/ofbiz/pricat/sample/SamplePricatParser.java [575:701]
public List<Object> getCellContents(XSSFRow row, List<Object[]> colNames, int size) {
List<Object> results = new ArrayList<>();
InterfaceReport report = getReport();
Locale locale = getLocale();
Map<CellReference, String> errorMessages = getErrorMessages();
Map<String, String[]> facilities = getFacilities();
boolean foundError = false;
if (isEmptyRow(row, size, true)) {
return null;
}
// check and get data
for (int i = 0; i < size; i++) {
XSSFCell cell = null;
if (row.getPhysicalNumberOfCells() > i) {
cell = row.getCell(i);
}
if (cell == null) {
if ((Boolean) colNames.get(i)[2] && (facilities.keySet().size() > 1 || (facilities.keySet().size() == 1 && i >= 2))) {
report.print(UtilProperties.getMessage(RESOURCE, "ErrorColCannotEmpty", new Object[]{colNames.get(i)[0]}, locale),
InterfaceReport.FORMAT_WARNING);
cell = row.createCell(i);
errorMessages.put(new CellReference(cell), UtilProperties.getMessage(RESOURCE, "ErrorColCannotEmpty",
new Object[]{colNames.get(i)[0]}, locale));
foundError = true;
results.add(null);
continue;
} else {
cell = row.createCell(i);
}
}
CellType cellType = cell.getCellType();
String cellValue = getFormatter().formatCellValue(cell);
if (UtilValidate.isNotEmpty(cellValue) && UtilValidate.isNotEmpty(cellValue.trim())) {
if (cellType == CellType.FORMULA) {
try {
cellValue = BigDecimal.valueOf(cell.getNumericCellValue())
.setScale(FinAccountHelper.getDecimals(), FinAccountHelper.getRounding()).toString();
} catch (IllegalStateException e) {
try {
cellValue = cell.getStringCellValue();
} catch (IllegalStateException e1) {
Debug.logError(e1, MODULE);
}
}
report.print(((i == 0) ? "" : ", ") + cellValue, InterfaceReport.FORMAT_NOTE);
} else {
report.print(((i == 0) ? "" : ", ") + cellValue, InterfaceReport.FORMAT_NOTE);
}
} else {
report.print(((i == 0) ? "" : ","), InterfaceReport.FORMAT_NOTE);
}
if ((Boolean) colNames.get(i)[2] && UtilValidate.isEmpty(cellValue) && (facilities.keySet().size() > 1
|| (facilities.keySet().size() == 1 && i >= 2))) {
report.print(UtilProperties.getMessage(RESOURCE, "ErrorColCannotEmpty", new Object[]{colNames.get(i)[0]}, locale),
InterfaceReport.FORMAT_WARNING);
errorMessages.put(new CellReference(cell), UtilProperties.getMessage(RESOURCE, "ErrorColCannotEmpty",
new Object[]{colNames.get(i)[0]}, locale));
foundError = true;
results.add(null);
continue;
}
if ((Boolean) colNames.get(i)[2] && cellType != colNames.get(i)[1]) {
// String warningMessage = "";
if (colNames.get(i)[1] == CellType.STRING) {
if (UtilValidate.isNotEmpty(cellValue) && UtilValidate.isNotEmpty(cellValue.trim())) {
results.add(cellValue);
} else {
results.add(null);
}
} else if (colNames.get(i)[1] == CellType.NUMERIC) {
if (cell.getCellType() != CellType.STRING) {
cell.setCellType(CellType.STRING);
}
try {
results.add(BigDecimal.valueOf(Double.parseDouble(cell.getStringCellValue()))
.setScale(FinAccountHelper.getDecimals(), FinAccountHelper.getRounding()));
} catch (NumberFormatException e) {
results.add(null);
errorMessages.put(new CellReference(cell), UtilProperties.getMessage(RESOURCE, "ErrorParseValueToNumeric", locale));
}
}
} else {
if (UtilValidate.isEmpty(cellValue) || UtilValidate.isEmpty(cellValue.trim())) {
results.add(null);
continue;
}
if (colNames.get(i)[1] == CellType.STRING) {
if (cell.getCellType() == CellType.STRING) {
cellValue = cell.getStringCellValue().trim();
results.add(cellValue);
} else {
results.add(cellValue.trim());
}
} else if (colNames.get(i)[1] == CellType.NUMERIC) {
if (cell.getCellType() == CellType.STRING) {
try {
results.add(BigDecimal.valueOf(Double.valueOf(cell.getStringCellValue())));
} catch (NumberFormatException e) {
results.add(null);
errorMessages.put(new CellReference(cell), UtilProperties.getMessage(RESOURCE, "ErrorParseValueToNumeric", locale));
}
} else if (cell.getCellType() == CellType.NUMERIC) {
try {
results.add(BigDecimal.valueOf(cell.getNumericCellValue())
.setScale(FinAccountHelper.getDecimals(), FinAccountHelper.getRounding()));
} catch (NumberFormatException e) {
results.add(null);
errorMessages.put(new CellReference(cell), UtilProperties.getMessage(RESOURCE, "ErrorParseValueToNumeric", locale));
}
} else {
try {
results.add(BigDecimal.valueOf(Double.valueOf(cellValue))
.setScale(FinAccountHelper.getDecimals(), FinAccountHelper.getRounding()));
} catch (NumberFormatException e) {
results.add(null);
errorMessages.put(new CellReference(cell), UtilProperties.getMessage(RESOURCE, "ErrorParseValueToNumeric", locale));
}
}
}
}
}
if (foundError) {
return null;
}
return results;
}