Author: gallon
Date: Wed Jan  2 22:08:38 2019
New Revision: 1850210

URL: http://svn.apache.org/viewvc?rev=1850210&view=rev
Log:
Bug 62828: CellReference(Cell) now initializes sheet name.
Changed CellReference to CellAddress in XSSFHyperlink because it is what it 
should return.
Updated all relevant tests, added a test for CellReference(Cell).

Modified:
    poi/trunk/build.gradle
    poi/trunk/src/java/org/apache/poi/ss/util/CellReference.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
    
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java
    
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
    
poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetUpdateArrayFormulas.java
    poi/trunk/src/testcases/org/apache/poi/ss/util/TestCellReference.java

Modified: poi/trunk/build.gradle
URL: 
http://svn.apache.org/viewvc/poi/trunk/build.gradle?rev=1850210&r1=1850209&r2=1850210&view=diff
==============================================================================
--- poi/trunk/build.gradle (original)
+++ poi/trunk/build.gradle Wed Jan  2 22:08:38 2019
@@ -185,6 +185,7 @@ project('main') {
         compile 'javax.activation:activation:1.1.1'
 
         testCompile 'junit:junit:4.12'
+        testCompile 'org.mockito:mockito-core:2.21.0'
         testCompile 'org.reflections:reflections:0.9.11'
     }
 

Modified: poi/trunk/src/java/org/apache/poi/ss/util/CellReference.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/util/CellReference.java?rev=1850210&r1=1850209&r2=1850210&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ss/util/CellReference.java (original)
+++ poi/trunk/src/java/org/apache/poi/ss/util/CellReference.java Wed Jan  2 
22:08:38 2019
@@ -145,7 +145,7 @@ public class CellReference {
     }
 
     public CellReference(Cell cell) {
-        this(cell.getRowIndex(), cell.getColumnIndex(), false, false);
+        this(cell.getSheet().getSheetName(), cell.getRowIndex(), 
cell.getColumnIndex(), false, false);
     }
 
     public CellReference(int pRow, int pCol, boolean pAbsRow, boolean pAbsCol) 
{

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java?rev=1850210&r1=1850209&r2=1850210&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java 
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java Wed 
Jan  2 22:08:38 2019
@@ -1295,7 +1295,7 @@ public final class XSSFCell implements C
     public CellRangeAddress getArrayFormulaRange() {
         XSSFCell cell = getSheet().getFirstCellInArrayFormula(this);
         if (cell == null) {
-            throw new IllegalStateException("Cell " + getReference()
+            throw new IllegalStateException("Cell " + new 
CellReference(this).formatAsString()
                     + " is not part of an array formula.");
         }
         String formulaRef = cell._cell.getF().getRef();

Modified: 
poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java?rev=1850210&r1=1850209&r2=1850210&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java 
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHyperlink.java 
Wed Jan  2 22:08:38 2019
@@ -177,8 +177,7 @@ public class XSSFHyperlink implements Hy
     }
 
     /**
-     * Get the reference of the cell this applies to,
-     * es A55
+     * Get the address of the cell this hyperlink applies to, e.g. A55
      */
     public String getCellRef() {
         return _ctHyperlink.getRef();

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java?rev=1850210&r1=1850209&r2=1850210&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java 
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java Wed 
Jan  2 22:08:38 2019
@@ -3996,7 +3996,7 @@ public class XSSFSheet extends POIXMLDoc
                 return cr;
             }
         }
-        String ref = ((XSSFCell)cell).getCTCell().getR();
+        String ref = new CellReference(cell).formatAsString();
         throw new IllegalArgumentException("Cell " + ref + " is not part of an 
array formula.");
     }
 

Modified: 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java?rev=1850210&r1=1850209&r2=1850210&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java 
(original)
+++ 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java 
Wed Jan  2 22:08:38 2019
@@ -40,6 +40,7 @@ import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.util.CellAddress;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.ss.util.CellReference;
 import org.apache.poi.xssf.SXSSFITestDataProvider;
@@ -597,9 +598,9 @@ public final class TestXSSFCell extends
         final List<XSSFHyperlink> links = 
srcCell.getSheet().getHyperlinkList();
         assertEquals("number of hyperlinks on sheet", 2, links.size());
         assertEquals("source hyperlink",
-                new CellReference(srcCell).formatAsString(), 
links.get(0).getCellRef());
+                new CellAddress(srcCell).formatAsString(), 
links.get(0).getCellRef());
         assertEquals("destination hyperlink",
-                new CellReference(destCell).formatAsString(), 
links.get(1).getCellRef());
+                new CellAddress(destCell).formatAsString(), 
links.get(1).getCellRef());
         
         wb.close();
     }
@@ -639,7 +640,7 @@ public final class TestXSSFCell extends
         links = srcCell.getSheet().getHyperlinkList();
         assertEquals("number of hyperlinks on sheet", 1, links.size());
         assertEquals("source hyperlink",
-                new CellReference(destCell).formatAsString(), 
links.get(0).getCellRef());
+                new CellAddress(destCell).formatAsString(), 
links.get(0).getCellRef());
         
         // Merge destCell's hyperlink to srcCell. Since destCell does have a 
hyperlink, this should copy destCell's hyperlink to srcCell.
         srcCell.copyCellFrom(destCell, policy);
@@ -649,9 +650,9 @@ public final class TestXSSFCell extends
         links = srcCell.getSheet().getHyperlinkList();
         assertEquals("number of hyperlinks on sheet", 2, links.size());
         assertEquals("dest hyperlink",
-                new CellReference(destCell).formatAsString(), 
links.get(0).getCellRef());
+                new CellAddress(destCell).formatAsString(), 
links.get(0).getCellRef());
         assertEquals("source hyperlink",
-                new CellReference(srcCell).formatAsString(), 
links.get(1).getCellRef());
+                new CellAddress(srcCell).formatAsString(), 
links.get(1).getCellRef());
         
         wb.close();
     }
@@ -745,4 +746,4 @@ public final class TestXSSFCell extends
         }
 
     }
-}
\ No newline at end of file
+}

Modified: 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java?rev=1850210&r1=1850209&r2=1850210&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java 
(original)
+++ 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java 
Wed Jan  2 22:08:38 2019
@@ -1506,7 +1506,7 @@ public final class TestXSSFSheet extends
 
         // Cell Formula
         cell = CellUtil.getCell(destRow, col++);
-        assertEquals("J7", new CellReference(cell).formatAsString());
+        assertEquals("Sheet1!J7", new CellReference(cell).formatAsString());
         assertEquals("[Cell Formula] J7 cell type", CellType.FORMULA, 
cell.getCellType());
         assertEquals("[Cell Formula] J7 cell formula", "5+2", 
cell.getCellFormula());
         //System.out.println("Cell formula evaluation currently unsupported");
@@ -1514,7 +1514,7 @@ public final class TestXSSFSheet extends
         // Cell Formula with Reference
         // Formula row references should be adjusted by destRowNum-srcRowNum
         cell = CellUtil.getCell(destRow, col++);
-        assertEquals("K7", new CellReference(cell).formatAsString());
+        assertEquals("Sheet1!K7", new CellReference(cell).formatAsString());
         assertEquals("[Cell Formula with Reference] K7 cell type",
                 CellType.FORMULA, cell.getCellType());
         assertEquals("[Cell Formula with Reference] K7 cell formula",

Modified: 
poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetUpdateArrayFormulas.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetUpdateArrayFormulas.java?rev=1850210&r1=1850209&r2=1850210&view=diff
==============================================================================
--- 
poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetUpdateArrayFormulas.java
 (original)
+++ 
poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetUpdateArrayFormulas.java
 Wed Jan  2 22:08:38 2019
@@ -86,7 +86,7 @@ public abstract class BaseTestSheetUpdat
             cell.getArrayFormulaRange();
             fail("expected exception");
         } catch (IllegalStateException e){
-            assertEquals("Cell A1 is not part of an array formula.", 
e.getMessage());
+            assertEquals("Cell Sheet0!A1 is not part of an array formula.", 
e.getMessage());
         }
 
         // row 3 does not yet exist
@@ -177,14 +177,14 @@ public abstract class BaseTestSheetUpdat
             cell.getArrayFormulaRange();
             fail("expected exception");
         } catch (IllegalStateException e){
-            assertEquals("Cell A1 is not part of an array formula.", 
e.getMessage());
+            assertEquals("Cell Sheet0!A1 is not part of an array formula.", 
e.getMessage());
         }
 
         try {
             sheet.removeArrayFormula(cell);
             fail("expected exception");
         } catch (IllegalArgumentException e){
-            assertEquals("Cell A1 is not part of an array formula.", 
e.getMessage());
+            assertEquals("Cell Sheet0!A1 is not part of an array formula.", 
e.getMessage());
         }
         
         workbook.close();
@@ -221,7 +221,7 @@ public abstract class BaseTestSheetUpdat
                 fail("expected exception");
             } catch (IllegalArgumentException e){
                 String ref = new CellReference(acell).formatAsString();
-                assertEquals("Cell "+ref+" is not part of an array formula.", 
e.getMessage());
+                assertEquals("Cell " + ref + " is not part of an array 
formula.", e.getMessage());
             }
         }
         

Modified: poi/trunk/src/testcases/org/apache/poi/ss/util/TestCellReference.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/util/TestCellReference.java?rev=1850210&r1=1850209&r2=1850210&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/util/TestCellReference.java 
(original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/util/TestCellReference.java Wed 
Jan  2 22:08:38 2019
@@ -19,12 +19,16 @@ package org.apache.poi.ss.util;
 
 import org.apache.poi.ss.SpreadsheetVersion;
 
+import org.apache.poi.ss.usermodel.Cell;
 import org.junit.Test;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 
 /**
  * Tests that the common CellReference works as we need it to.
@@ -56,6 +60,27 @@ public final class TestCellReference {
 
         cellReference = new CellReference(sheet, row, col, absRow, absCol);
         assertEquals("Sheet1!A$1", cellReference.formatAsString());
+
+        cellReference = new CellReference(sheet+"!$A1");
+        assertFalse(cellReference.isRowAbsolute());
+        assertTrue(cellReference.isColAbsolute());
+
+        cellReference = new CellReference(sheet+"!A$1");
+        assertTrue(cellReference.isRowAbsolute());
+        assertFalse(cellReference.isColAbsolute());
+    }
+
+    @Test
+    public void testCtorFromCell() {
+        Cell cell = mock(Cell.class, RETURNS_DEEP_STUBS);
+        when(cell.getSheet().getSheetName()).thenReturn("sheet");
+
+        CellReference result = new CellReference(cell);
+        assertEquals("sheet", result.getSheetName());
+        assertEquals(cell.getRowIndex(), result.getRow());
+        assertEquals(cell.getColumnIndex(), result.getCol());
+        assertFalse(result.isRowAbsolute());
+        assertFalse(result.isColAbsolute());
     }
 
     @Test



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to