Refactor SSPerformanceTest into a few methods to make it easier to use a profiler
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1742420 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
f688ed96c6
commit
26de463419
@ -44,6 +44,17 @@ public class SSPerformanceTest {
|
|||||||
int cols = parseInt(args[2], "Failed to parse cols value as integer");
|
int cols = parseInt(args[2], "Failed to parse cols value as integer");
|
||||||
boolean saveFile = parseInt(args[3], "Failed to parse saveFile value as integer") != 0;
|
boolean saveFile = parseInt(args[3], "Failed to parse saveFile value as integer") != 0;
|
||||||
|
|
||||||
|
addContent(workBook, isHType, rows, cols);
|
||||||
|
|
||||||
|
if (saveFile) {
|
||||||
|
String fileName = type + "_" + rows + "_" + cols + "." + getFileSuffix(args[0]);
|
||||||
|
saveFile(workBook, fileName);
|
||||||
|
}
|
||||||
|
long timeFinished = System.currentTimeMillis();
|
||||||
|
System.out.println("Elapsed " + (timeFinished-timeStarted)/1000 + " seconds");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void addContent(Workbook workBook, boolean isHType, int rows, int cols) {
|
||||||
Map<String, CellStyle> styles = createStyles(workBook);
|
Map<String, CellStyle> styles = createStyles(workBook);
|
||||||
|
|
||||||
Sheet sheet = workBook.createSheet("Main Sheet");
|
Sheet sheet = workBook.createSheet("Main Sheet");
|
||||||
@ -68,63 +79,66 @@ public class SSPerformanceTest {
|
|||||||
|
|
||||||
Row row = sheet.createRow(rowIndexInSheet);
|
Row row = sheet.createRow(rowIndexInSheet);
|
||||||
for (int colIndex = 0; colIndex < cols; colIndex++) {
|
for (int colIndex = 0; colIndex < cols; colIndex++) {
|
||||||
Cell cell = row.createCell(colIndex);
|
value = populateCell(styles, value, calendar, rowIndex, row, colIndex);
|
||||||
String address = new CellReference(cell).formatAsString();
|
|
||||||
switch (colIndex){
|
|
||||||
case 0:
|
|
||||||
// column A: default number format
|
|
||||||
cell.setCellValue(value++);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
// column B: #,##0
|
|
||||||
cell.setCellValue(value++);
|
|
||||||
cell.setCellStyle(styles.get("#,##0.00"));
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
// column C: $#,##0.00
|
|
||||||
cell.setCellValue(value++);
|
|
||||||
cell.setCellStyle(styles.get("$#,##0.00"));
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
// column D: red bold text on yellow background
|
|
||||||
cell.setCellValue(address);
|
|
||||||
cell.setCellStyle(styles.get("red-bold"));
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
// column E: boolean
|
|
||||||
// TODO booleans are shown as 1/0 instead of TRUE/FALSE
|
|
||||||
cell.setCellValue(rowIndex % 2 == 0);
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
// column F: date / time
|
|
||||||
cell.setCellValue(calendar);
|
|
||||||
cell.setCellStyle(styles.get("m/d/yyyy"));
|
|
||||||
calendar.roll(Calendar.DAY_OF_YEAR, -1);
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
// column F: formula
|
|
||||||
// TODO formulas are not yet supported in SXSSF
|
|
||||||
//cell.setCellFormula("SUM(A" + (rowIndex+1) + ":E" + (rowIndex+1)+ ")");
|
|
||||||
//break;
|
|
||||||
default:
|
|
||||||
cell.setCellValue(value++);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
rowIndexInSheet++;
|
rowIndexInSheet++;
|
||||||
}
|
}
|
||||||
if (saveFile) {
|
}
|
||||||
String fileName = type + "_" + rows + "_" + cols + "." + getFileSuffix(args[0]);
|
|
||||||
try {
|
private static double populateCell(Map<String, CellStyle> styles, double value, Calendar calendar, int rowIndex, Row row, int colIndex) {
|
||||||
FileOutputStream out = new FileOutputStream(fileName);
|
Cell cell = row.createCell(colIndex);
|
||||||
workBook.write(out);
|
String address = new CellReference(cell).formatAsString();
|
||||||
out.close();
|
switch (colIndex){
|
||||||
} catch (IOException ioe) {
|
case 0:
|
||||||
System.err.println("Error: failed to write to file \"" + fileName + "\", reason=" + ioe.getMessage());
|
// column A: default number format
|
||||||
}
|
cell.setCellValue(value++);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
// column B: #,##0
|
||||||
|
cell.setCellValue(value++);
|
||||||
|
cell.setCellStyle(styles.get("#,##0.00"));
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
// column C: $#,##0.00
|
||||||
|
cell.setCellValue(value++);
|
||||||
|
cell.setCellStyle(styles.get("$#,##0.00"));
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
// column D: red bold text on yellow background
|
||||||
|
cell.setCellValue(address);
|
||||||
|
cell.setCellStyle(styles.get("red-bold"));
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
// column E: boolean
|
||||||
|
// TODO booleans are shown as 1/0 instead of TRUE/FALSE
|
||||||
|
cell.setCellValue(rowIndex % 2 == 0);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
// column F: date / time
|
||||||
|
cell.setCellValue(calendar);
|
||||||
|
cell.setCellStyle(styles.get("m/d/yyyy"));
|
||||||
|
calendar.roll(Calendar.DAY_OF_YEAR, -1);
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
// column F: formula
|
||||||
|
// TODO formulas are not yet supported in SXSSF
|
||||||
|
//cell.setCellFormula("SUM(A" + (rowIndex+1) + ":E" + (rowIndex+1)+ ")");
|
||||||
|
//break;
|
||||||
|
default:
|
||||||
|
cell.setCellValue(value++);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void saveFile(Workbook workBook, String fileName) {
|
||||||
|
try {
|
||||||
|
FileOutputStream out = new FileOutputStream(fileName);
|
||||||
|
workBook.write(out);
|
||||||
|
out.close();
|
||||||
|
} catch (IOException ioe) {
|
||||||
|
System.err.println("Error: failed to write to file \"" + fileName + "\", reason=" + ioe.getMessage());
|
||||||
}
|
}
|
||||||
long timeFinished = System.currentTimeMillis();
|
|
||||||
System.out.println("Elapsed " + (timeFinished-timeStarted)/1000 + " seconds");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static Map<String, CellStyle> createStyles(Workbook wb) {
|
static Map<String, CellStyle> createStyles(Workbook wb) {
|
||||||
|
Loading…
Reference in New Issue
Block a user