Browse Source

IDE warnings, tried to reproduce Bug 58927, but could not

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1845434 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_4_0_1
Dominik Stadler 5 years ago
parent
commit
d7649a2831

+ 5
- 9
src/java/org/apache/poi/ss/util/CellReference.java View File

@@ -132,7 +132,7 @@ public class CellReference {
if (rowRef.length() == 0) {
_rowIndex = -1;
} else {
// throws NumberFormatException if rowRef is not convertable to an int
// throws NumberFormatException if rowRef is not convertible to an int
_rowIndex = Integer.parseInt(rowRef)-1; // -1 to convert 1-based to zero-based
}
}
@@ -336,10 +336,10 @@ public class CellReference {
if(colStr.toUpperCase(Locale.ROOT).compareTo(lastCol) > 0) {
return false;
}
} else {
} /*else {
// apparent column name has less chars than max
// no need to check range
}
}*/
return true;
}

@@ -426,7 +426,7 @@ public class CellReference {
// AreaReference.separateAreaRefs()
// SheetNameFormatter.format() (inverse)

StringBuffer sb = new StringBuffer(indexOfSheetNameDelimiter);
StringBuilder sb = new StringBuilder(indexOfSheetNameDelimiter);

for(int i=1; i<lastQuotePos; i++) { // Note boundaries - skip outer quotes
char ch = reference.charAt(i);
@@ -495,11 +495,7 @@ public class CellReference {

@Override
public String toString() {
StringBuffer sb = new StringBuffer(64);
sb.append(getClass().getName()).append(" [");
sb.append(formatAsString());
sb.append("]");
return sb.toString();
return getClass().getName() + " [" + formatAsString() + "]";
}

/**

+ 52
- 69
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java View File

@@ -147,6 +147,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.WorksheetDocument;
* contain text, numbers, dates, and formulas. Cells can also be formatted.
* </p>
*/
@SuppressWarnings("deprecation")
public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
private static final POILogger logger = POILogFactory.getLogger(XSSFSheet.class);

@@ -472,7 +473,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
/**
* Verify that candidate region does not intersect with an existing merged region in this sheet
*
* @param candidateRegion
* @param candidateRegion the range of cells to verify
* @throws IllegalStateException if candidate region intersects an existing merged region in this sheet (or candidateRegion is already merged in this sheet)
*/
private void validateMergedRegions(CellRangeAddress candidateRegion) {
@@ -855,8 +856,8 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
/**
* Get a Hyperlink in this sheet anchored at row, column
*
* @param row
* @param column
* @param row The row where the hyperlink is anchored
* @param column The column where the hyperlinkn is anchored
* @return hyperlink if there is a hyperlink anchored at row, column; otherwise returns null
*/
@Override
@@ -1480,8 +1481,9 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
*
* @param startRowNum the first row number in this sheet to return
* @param endRowNum the last row number in this sheet to return
* @param createRowIfMissing
* @return All rows between startRow and endRow, inclusive
* @param createRowIfMissing If missing rows should be created.
* @return All rows between startRow and endRow, inclusive. If createRowIfMissing is false,
* only previously existing rows are returned, otherwise empty rows are added as necessary
* @throws IllegalArgumentException if startRowNum and endRowNum are not in ascending order
*/
private List<XSSFRow> getRows(int startRowNum, int endRowNum, boolean createRowIfMissing) {
@@ -2472,7 +2474,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
* 'Collapsed' state is stored in a single column col info record
* immediately after the outline group
*
* @param idx
* @param idx The column-index to check
* @return a boolean represented if the column is collapsed
*/
private boolean isColumnGroupCollapsed(int idx) {
@@ -3052,7 +3054,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
rebuildRows();
}

private final void rebuildRows() {
private void rebuildRows() {
//rebuild the _rows map
List<XSSFRow> rowList = new ArrayList<>(_rows.values());
_rows.clear();
@@ -3114,25 +3116,22 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
// then do the actual moving and also adjust comments/rowHeight
// we need to sort it in a way so the shifting does not mess up the structures,
// i.e. when shifting down, start from down and go up, when shifting up, vice-versa
SortedMap<XSSFComment, Integer> commentsToShift = new TreeMap<>(new Comparator<XSSFComment>() {
@Override
public int compare(XSSFComment o1, XSSFComment o2) {
int row1 = o1.getRow();
int row2 = o2.getRow();

if (row1 == row2) {
// ordering is not important when row is equal, but don't return zero to still
// get multiple comments per row into the map
return o1.hashCode() - o2.hashCode();
}
SortedMap<XSSFComment, Integer> commentsToShift = new TreeMap<>((o1, o2) -> {
int row1 = o1.getRow();
int row2 = o2.getRow();

if (row1 == row2) {
// ordering is not important when row is equal, but don't return zero to still
// get multiple comments per row into the map
return o1.hashCode() - o2.hashCode();
}

// when shifting down, sort higher row-values first
if (n > 0) {
return row1 < row2 ? 1 : -1;
} else {
// sort lower-row values first when shifting up
return row1 > row2 ? 1 : -1;
}
// when shifting down, sort higher row-values first
if (n > 0) {
return row1 < row2 ? 1 : -1;
} else {
// sort lower-row values first when shifting up
return row1 > row2 ? 1 : -1;
}
});

@@ -3211,25 +3210,22 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
// then do the actual moving and also adjust comments/rowHeight
// we need to sort it in a way so the shifting does not mess up the structures,
// i.e. when shifting down, start from down and go up, when shifting up, vice-versa
SortedMap<XSSFComment, Integer> commentsToShift = new TreeMap<>(new Comparator<XSSFComment>() {
@Override
public int compare(XSSFComment o1, XSSFComment o2) {
int column1 = o1.getColumn();
int column2 = o2.getColumn();

if (column1 == column2) {
// ordering is not important when row is equal, but don't return zero to still
// get multiple comments per row into the map
return o1.hashCode() - o2.hashCode();
}
SortedMap<XSSFComment, Integer> commentsToShift = new TreeMap<>((o1, o2) -> {
int column1 = o1.getColumn();
int column2 = o2.getColumn();

if (column1 == column2) {
// ordering is not important when row is equal, but don't return zero to still
// get multiple comments per row into the map
return o1.hashCode() - o2.hashCode();
}

// when shifting down, sort higher row-values first
if (n > 0) {
return column1 < column2 ? 1 : -1;
} else {
// sort lower-row values first when shifting up
return column1 > column2 ? 1 : -1;
}
// when shifting down, sort higher row-values first
if (n > 0) {
return column1 < column2 ? 1 : -1;
} else {
// sort lower-row values first when shifting up
return column1 > column2 ? 1 : -1;
}
});

@@ -4096,7 +4092,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
* Creates a new Table, and associates it with this Sheet.
*
* @param tableArea
* the area that the table should cover, should not be {@null}
* the area that the table should cover, should not be null
* @return the created table
* @since 4.0.0
*/
@@ -4421,18 +4417,15 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
+ "defined source sheet " + sourceSheet.getSheetName() + ".");
}

return createPivotTable(position, sourceSheet, new PivotTableReferenceConfigurator() {
@Override
public void configureReference(CTWorksheetSource wsSource) {
final String[] firstCell = source.getFirstCell().getCellRefParts();
final String firstRow = firstCell[1];
final String firstCol = firstCell[2];
final String[] lastCell = source.getLastCell().getCellRefParts();
final String lastRow = lastCell[1];
final String lastCol = lastCell[2];
final String ref = firstCol+firstRow+':'+lastCol+lastRow; //or just source.formatAsString()
wsSource.setRef(ref);
}
return createPivotTable(position, sourceSheet, wsSource -> {
final String[] firstCell = source.getFirstCell().getCellRefParts();
final String firstRow = firstCell[1];
final String firstCol = firstCell[2];
final String[] lastCell = source.getLastCell().getCellRefParts();
final String lastRow = lastCell[1];
final String lastCol = lastCell[2];
final String ref = firstCol+firstRow+':'+lastCol+lastRow; //or just source.formatAsString()
wsSource.setRef(ref);
});
}

@@ -4494,12 +4487,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
+ "defined source sheet " + sourceSheet.getSheetName() + ".");
}

return createPivotTable(position, sourceSheet, new PivotTableReferenceConfigurator() {
@Override
public void configureReference(CTWorksheetSource wsSource) {
wsSource.setName(source.getNameName());
}
});
return createPivotTable(position, sourceSheet, wsSource -> wsSource.setName(source.getNameName()));
}

/**
@@ -4523,12 +4511,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
*/
@Beta
public XSSFPivotTable createPivotTable(final Table source, CellReference position) {
return createPivotTable(position, getWorkbook().getSheet(source.getSheetName()), new PivotTableReferenceConfigurator() {
@Override
public void configureReference(CTWorksheetSource wsSource) {
wsSource.setName(source.getName());
}
});
return createPivotTable(position, getWorkbook().getSheet(source.getSheetName()), wsSource -> wsSource.setName(source.getName()));
}

/**
@@ -4621,7 +4604,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {

/**
* when a cell with a 'master' shared formula is removed, the next cell in the range becomes the master
* @param cell
* @param cell The cell that is removed
* @param evalWb BaseXSSFEvaluationWorkbook in use, if one exists
*/
protected void onDeleteFormula(XSSFCell cell, BaseXSSFEvaluationWorkbook evalWb){

+ 2
- 2
src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/ColumnHelper.java View File

@@ -50,7 +50,7 @@ public class ColumnHelper {
TreeSet<CTCol> trackedCols = new TreeSet<>(CTColComparator.BY_MIN_MAX);
CTCols newCols = CTCols.Factory.newInstance();
CTCols[] colsArray = worksheet.getColsArray();
int i = 0;
int i;
for (i = 0; i < colsArray.length; i++) {
CTCols cols = colsArray[i];
for (CTCol col : cols.getColList()) {
@@ -61,7 +61,7 @@ public class ColumnHelper {
worksheet.removeCols(y);
}
newCols.setColArray(trackedCols.toArray(new CTCol[trackedCols.size()]));
newCols.setColArray(trackedCols.toArray(new CTCol[0]));
worksheet.addNewCols();
worksheet.setColsArray(0, newCols);
}

+ 42
- 7
src/ooxml/testcases/org/apache/poi/xssf/usermodel/helpers/TestColumnHelper.java View File

@@ -25,6 +25,9 @@ import static org.junit.Assert.assertTrue;

import java.io.IOException;

import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.model.StylesTable;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFSheet;
@@ -192,14 +195,14 @@ public final class TestColumnHelper {
}

@Test
public void testAddCleanColIntoColsExactOverlap() throws Exception {
public void testAddCleanColIntoColsExactOverlap() {
CTCols cols = createHiddenAndBestFitColsWithHelper(1, 1, 1, 1);
assertEquals(1, cols.sizeOfColArray());
assertMinMaxHiddenBestFit(cols, 0, 1, 1, true, true);
}

@Test
public void testAddCleanColIntoColsOverlapsOverhangingBothSides() throws Exception {
public void testAddCleanColIntoColsOverlapsOverhangingBothSides() {
CTCols cols = createHiddenAndBestFitColsWithHelper(2, 2, 1, 3);
assertEquals(3, cols.sizeOfColArray());
assertMinMaxHiddenBestFit(cols, 0, 1, 1, false, true);
@@ -208,7 +211,7 @@ public final class TestColumnHelper {
}

@Test
public void testAddCleanColIntoColsOverlapsCompletelyNested() throws Exception {
public void testAddCleanColIntoColsOverlapsCompletelyNested() {
CTCols cols = createHiddenAndBestFitColsWithHelper(1, 3, 2, 2);
assertEquals(3, cols.sizeOfColArray());
assertMinMaxHiddenBestFit(cols, 0, 1, 1, true, false);
@@ -217,7 +220,7 @@ public final class TestColumnHelper {
}

@Test
public void testAddCleanColIntoColsNewOverlapsOverhangingLeftNotRightExactRight() throws Exception {
public void testAddCleanColIntoColsNewOverlapsOverhangingLeftNotRightExactRight() {
CTCols cols = createHiddenAndBestFitColsWithHelper(2, 3, 1, 3);
assertEquals(2, cols.sizeOfColArray());
assertMinMaxHiddenBestFit(cols, 0, 1, 1, false, true);
@@ -225,7 +228,7 @@ public final class TestColumnHelper {
}

@Test
public void testAddCleanColIntoColsNewOverlapsOverhangingRightNotLeftExactLeft() throws Exception {
public void testAddCleanColIntoColsNewOverlapsOverhangingRightNotLeftExactLeft() {
CTCols cols = createHiddenAndBestFitColsWithHelper(1, 2, 1, 3);
assertEquals(2, cols.sizeOfColArray());
assertMinMaxHiddenBestFit(cols, 0, 1, 2, true, true);
@@ -233,7 +236,7 @@ public final class TestColumnHelper {
}

@Test
public void testAddCleanColIntoColsNewOverlapsOverhangingLeftNotRight() throws Exception {
public void testAddCleanColIntoColsNewOverlapsOverhangingLeftNotRight() {
CTCols cols = createHiddenAndBestFitColsWithHelper(2, 3, 1, 2);
assertEquals(3, cols.sizeOfColArray());
assertMinMaxHiddenBestFit(cols, 0, 1, 1, false, true);
@@ -242,7 +245,7 @@ public final class TestColumnHelper {
}

@Test
public void testAddCleanColIntoColsNewOverlapsOverhangingRightNotLeft() throws Exception {
public void testAddCleanColIntoColsNewOverlapsOverhangingRightNotLeft() {
CTCols cols = createHiddenAndBestFitColsWithHelper(1, 2, 2, 3);
assertEquals(3, cols.sizeOfColArray());
assertMinMaxHiddenBestFit(cols, 0, 1, 1, true, false);
@@ -402,4 +405,36 @@ public final class TestColumnHelper {
}
return count;
}

@SuppressWarnings("deprecation")
@Test
public void testColumnsCollapsed() {
Workbook wb = new XSSFWorkbook();
Sheet sheet = wb.createSheet("test");
Row row = sheet.createRow(0);
row.createCell(0);
row.createCell(1);
row.createCell(2);

sheet.setColumnWidth(0, 10);
sheet.setColumnWidth(1, 10);
sheet.setColumnWidth(2, 10);

sheet.groupColumn(0, 1);
sheet.setColumnGroupCollapsed(0, true);

CTCols ctCols = ((XSSFSheet) sheet).getCTWorksheet().getColsArray()[0];
assertEquals(3, ctCols.sizeOfColArray());
assertTrue(ctCols.getColArray(0).isSetCollapsed());
assertTrue(ctCols.getColArray(1).isSetCollapsed());
assertTrue(ctCols.getColArray(2).isSetCollapsed());

ColumnHelper helper = new ColumnHelper(CTWorksheet.Factory.newInstance());
helper.setColumnAttributes(ctCols.getColArray(1), ctCols.getColArray(2));

ctCols = ((XSSFSheet) sheet).getCTWorksheet().getColsArray()[0];
assertTrue(ctCols.getColArray(0).isSetCollapsed());
assertTrue(ctCols.getColArray(1).isSetCollapsed());
assertTrue(ctCols.getColArray(2).isSetCollapsed());
}
}

Loading…
Cancel
Save