Author: cedricwalter
Date: Fri Aug 16 17:35:16 2013
New Revision: 1514812

URL: http://svn.apache.org/r1514812
Log:
Bug 54720: Support for Row/Col Area Range like 8:8 or H:H

Added:
    
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java
    poi/trunk/test-data/spreadsheet/IndirectFunctionTestCaseData.xls   (with 
props)
Modified:
    poi/trunk/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
    
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java

Modified: 
poi/trunk/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java?rev=1514812&r1=1514811&r2=1514812&view=diff
==============================================================================
--- 
poi/trunk/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java 
(original)
+++ 
poi/trunk/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java 
Fri Aug 16 17:35:16 2013
@@ -37,6 +37,7 @@ import org.apache.poi.ss.util.CellRefere
  * For POI internal use only
  *
  * @author Josh Micich
+ * @author Cédric Walter
  */
 public final class OperationEvaluationContext {
        public static final FreeRefFunction UDF = UserDefinedFunction.instance;
@@ -83,13 +84,13 @@ public final class OperationEvaluationCo
                } else {
                        // look up sheet by name from external workbook
                        String workbookName = externalSheet.getWorkbookName();
-                       try {
-                               targetEvaluator = 
_bookEvaluator.getOtherWorkbookEvaluator(workbookName);
-                       } catch (WorkbookNotFoundException e) {
-                               throw new RuntimeException(e.getMessage(), e);
-                       }
-                       otherSheetIndex = 
targetEvaluator.getSheetIndex(externalSheet.getSheetName());
-                       if (otherSheetIndex < 0) {
+                       try {
+                               targetEvaluator = 
_bookEvaluator.getOtherWorkbookEvaluator(workbookName);
+                       } catch (WorkbookNotFoundException e) {
+                               throw new RuntimeException(e.getMessage(), e);
+                       }
+                       otherSheetIndex = 
targetEvaluator.getSheetIndex(externalSheet.getSheetName());
+                       if (otherSheetIndex < 0) {
                                throw new RuntimeException("Invalid sheet name 
'" + externalSheet.getSheetName()
                                                + "' in bool '" + workbookName 
+ "'.");
                        }
@@ -195,16 +196,32 @@ public final class OperationEvaluationCo
                int firstRow, firstCol, lastRow, lastCol;
                switch (part1refType) {
                        case COLUMN:
-                               firstRow =0;
-                               lastRow = ssVersion.getLastRowIndex();
-                               firstCol = parseColRef(refStrPart1);
-                               lastCol = parseColRef(refStrPart2);
-                               break;
+                firstRow =0;
+                if (part2refType.equals(NameType.COLUMN))
+                {
+                    lastRow = ssVersion.getLastRowIndex();
+                    firstCol = parseRowRef(refStrPart1);
+                    lastCol = parseRowRef(refStrPart2);
+                }
+                else {
+                    lastRow = ssVersion.getLastRowIndex();
+                    firstCol = parseColRef(refStrPart1);
+                    lastCol = parseColRef(refStrPart2);
+                }
+                break;
                        case ROW:
-                               firstCol = 0;
-                               lastCol = ssVersion.getLastColumnIndex();
-                               firstRow = parseRowRef(refStrPart1);
-                               lastRow = parseRowRef(refStrPart2);
+                // support of cell range in the form of integer:integer
+                firstCol = 0;
+                if (part2refType.equals(NameType.ROW))
+                {
+                    firstRow = parseColRef(refStrPart1);
+                    lastRow = parseColRef(refStrPart2);
+                    lastCol = ssVersion.getLastColumnIndex();
+                } else {
+                    lastCol = ssVersion.getLastColumnIndex();
+                    firstRow = parseRowRef(refStrPart1);
+                    lastRow = parseRowRef(refStrPart2);
+                }
                                break;
                        case CELL:
                                CellReference cr;

Added: 
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java?rev=1514812&view=auto
==============================================================================
--- 
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java
 (added)
+++ 
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndirectFunctionFromSpreadsheet.java
 Fri Aug 16 17:35:16 2013
@@ -0,0 +1,35 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+
+package org.apache.poi.ss.formula.functions;
+
+/**
+ * Tests INDIRECT() as loaded from a test data spreadsheet.<p/>
+ *
+ * Tests for bug fixes and specific/tricky behaviour can be found in the 
corresponding test class
+ * (<tt>TestXxxx</tt>) of the target (<tt>Xxxx</tt>) implementor, where 
execution can be observed
+ *  more easily.
+ *
+ * @author Cédric Walter
+ */
+public final class TestIndirectFunctionFromSpreadsheet extends 
BaseTestFunctionsFromSpreadsheet {
+
+    @Override
+    protected String getFilename() {
+        return "IndirectFunctionTestCaseData.xls";
+    }
+}

Modified: 
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java?rev=1514812&r1=1514811&r2=1514812&view=diff
==============================================================================
--- 
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java
 (original)
+++ 
poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatchFunctionsFromSpreadsheet.java
 Fri Aug 16 17:35:16 2013
@@ -20,16 +20,13 @@ package org.apache.poi.ss.formula.functi
 
 
 /**
- * Tests lookup functions (VLOOKUP, HLOOKUP, LOOKUP, MATCH) as loaded from a 
test data spreadsheet.<p/>
- * These tests have been separated from the common function and operator tests 
because the lookup
- * functions have more complex test cases and test data setup.
+ * Tests Match functions as loaded from a test data spreadsheet.<p/>
  *
  * Tests for bug fixes and specific/tricky behaviour can be found in the 
corresponding test class
  * (<tt>TestXxxx</tt>) of the target (<tt>Xxxx</tt>) implementor, where 
execution can be observed
  *  more easily.
  *
- * @author Josh Micich
- * @author Cedric Walter at innoveo.com
+ * @author Cédric Walter
  */
 public final class TestMatchFunctionsFromSpreadsheet extends 
BaseTestFunctionsFromSpreadsheet {
 

Added: poi/trunk/test-data/spreadsheet/IndirectFunctionTestCaseData.xls
URL: 
http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/IndirectFunctionTestCaseData.xls?rev=1514812&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/test-data/spreadsheet/IndirectFunctionTestCaseData.xls
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream



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

Reply via email to