avik        02/05/05 09:55:41

  Modified:    src/java/org/apache/poi/hssf/record/formula AreaPtg.java
               src/java/org/apache/poi/hssf/util AreaReference.java
               src/testcases/org/apache/poi/hssf/usermodel
                        TestFormulas.java
               src/testcases/org/apache/poi/hssf/util
                        TestCellReference.java
  Added:       src/testcases/org/apache/poi/hssf/util
                        TestAreaReference.java
  Log:
  absolute refs in area references, plus some tests
  
  Revision  Changes    Path
  1.7       +15 -16    
jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java
  
  Index: AreaPtg.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/formula/AreaPtg.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- AreaPtg.java      30 Apr 2002 23:22:27 -0000      1.6
  +++ AreaPtg.java      5 May 2002 16:55:41 -0000       1.7
  @@ -63,7 +63,8 @@
   import org.apache.poi.util.LittleEndian;
   import org.apache.poi.util.BitField;
   
  -import org.apache.poi.hssf.util.ReferenceUtil;
  +import org.apache.poi.hssf.util.AreaReference;
  +import org.apache.poi.hssf.util.CellReference;
   
   /**
    * Specifies a rectangular area of cells A1:A4 for instance.
  @@ -87,15 +88,17 @@
       
      
       protected AreaPtg(String arearef) {
  -        int[] xyxy = ReferenceUtil.getXYXYFromAreaRef(arearef);
  -        setFirstRow((short)xyxy[0]);
  -        setFirstColumn((short)xyxy[1]);
  -        setLastRow((short)xyxy[2]);
  -        setLastColumn((short)xyxy[3]);
  -        setFirstColRelative(true);
  -        setLastColRelative(true);
  -        setFirstRowRelative(true);
  -        setLastRowRelative(true);
  +        //int[] xyxy = ReferenceUtil.getXYXYFromAreaRef(arearef);
  +        AreaReference ar = new AreaReference(arearef);
  +        
  +        setFirstRow((short)ar.getCells()[0].getRow());
  +        setFirstColumn((short)ar.getCells()[0].getCol());
  +        setLastRow((short)ar.getCells()[1].getRow());
  +        setLastColumn((short)ar.getCells()[1].getCol());
  +        setFirstColRelative(!ar.getCells()[0].isColAbsolute());
  +        setLastColRelative(!ar.getCells()[1].isColAbsolute());
  +        setFirstRowRelative(!ar.getCells()[0].isRowAbsolute());
  +        setLastRowRelative(!ar.getCells()[1].isRowAbsolute());
           
       }
   
  @@ -302,12 +305,8 @@
   
       public String toFormulaString()
       {
  -        String firstrow = "" + (getFirstRow() + 1);
  -        String lastrow  = null;
  -        // String firstcol = ""+
  -        // String lastcol
  -        return ReferenceUtil.getReferenceFromXY(getFirstRow(),getFirstColumn()) + 
":"
  -               + ReferenceUtil.getReferenceFromXY(getLastRow(),getLastColumn());
  +         return (new 
CellReference(getFirstRow(),getFirstColumn(),!isFirstRowRelative(),!isFirstColRelative())).toString()
 + ":" +
  +                (new 
CellReference(getLastRow(),getLastColumn(),!isLastRowRelative(),!isLastColRelative())).toString();
       }
   
   }
  
  
  
  1.2       +4 -0      jakarta-poi/src/java/org/apache/poi/hssf/util/AreaReference.java
  
  Index: AreaReference.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/util/AreaReference.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AreaReference.java        4 May 2002 15:45:05 -0000       1.1
  +++ AreaReference.java        5 May 2002 16:55:41 -0000       1.2
  @@ -76,6 +76,10 @@
       public int getDim() {
           return dim;
       }
  +    /** return the cell references that define this area */
  +    public CellReference[] getCells() {
  +        return cells;
  +    }
       
       public String toString() {
           StringBuffer retval = new StringBuffer();
  
  
  
  1.15      +7 -1      
jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java
  
  Index: TestFormulas.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- TestFormulas.java 4 May 2002 15:45:05 -0000       1.14
  +++ TestFormulas.java 5 May 2002 16:55:41 -0000       1.15
  @@ -678,7 +678,8 @@
   
               c = r.createCell((short) 0);
               c.setCellFormula(function+"(A2:A4,B2:B4)");
  -
  +            c=r.createCell((short) 1);
  +            c.setCellFormula(function+"($A$2:$A4,B$2:B4)");
   
               wb.write(out);
               out.close();
  @@ -692,6 +693,11 @@
               
               assertTrue("function ="+function+"(A2:A4,B2:B4)",
                           ( (function+"(A2:A4,B2:B4)").equals(c.getCellFormula()) )
  +                      );
  +            
  +            c=r.getCell((short) 1);
  +             assertTrue("function ="+function+"($A$2:$A4,B$2:B4)",
  +                        ( (function+"($A$2:$A4,B$2:B4)").equals(c.getCellFormula()) 
)
                         );
               in.close();
       }
  
  
  
  1.2       +36 -0     
jakarta-poi/src/testcases/org/apache/poi/hssf/util/TestCellReference.java
  
  Index: TestCellReference.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-poi/src/testcases/org/apache/poi/hssf/util/TestCellReference.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TestCellReference.java    4 May 2002 15:45:05 -0000       1.1
  +++ TestCellReference.java    5 May 2002 16:55:41 -0000       1.2
  @@ -97,6 +97,42 @@
           assertTrue("col is rel",!cf.isColAbsolute());
           assertTrue("string is B$5",cf.toString().equals("B$5"));
       }
  +    
  +    public void  testAbsRef5(){
  +        CellReference cf = new CellReference("$B5");
  +        assertTrue("row is 4",cf.getRow()==4);
  +        assertTrue("col is 1",cf.getCol()==1);
  +        assertTrue("row is abs",!cf.isRowAbsolute());
  +        assertTrue("col is rel",cf.isColAbsolute());
  +        assertTrue("string is B$5",cf.toString().equals("$B5"));
  +    }
  +    
  +    public void  testAbsRef6(){
  +        CellReference cf = new CellReference(4,1,false,true);
  +        assertTrue("row is 4",cf.getRow()==4);
  +        assertTrue("col is 1",cf.getCol()==1);
  +        assertTrue("row is abs",!cf.isRowAbsolute());
  +        assertTrue("col is rel",cf.isColAbsolute());
  +        assertTrue("string is B$5",cf.toString().equals("$B5"));
  +    }
  +
  +    public void  testAbsRef7(){
  +        CellReference cf = new CellReference("B5");
  +        assertTrue("row is 4",cf.getRow()==4);
  +        assertTrue("col is 1",cf.getCol()==1);
  +        assertTrue("row is abs",!cf.isRowAbsolute());
  +        assertTrue("col is rel",!cf.isColAbsolute());
  +        assertTrue("string is B$5",cf.toString().equals("B5"));
  +    }
  +    
  +    public void  testAbsRef8(){
  +        CellReference cf = new CellReference(4,1,false,false);
  +        assertTrue("row is 4",cf.getRow()==4);
  +        assertTrue("col is 1",cf.getCol()==1);
  +        assertTrue("row is abs",!cf.isRowAbsolute());
  +        assertTrue("col is rel",!cf.isColAbsolute());
  +        assertTrue("string is B$5",cf.toString().equals("B5"));
  +    }
   
       
       public static void main(String [] args) {
  
  
  
  1.1                  
jakarta-poi/src/testcases/org/apache/poi/hssf/util/TestAreaReference.java
  
  Index: TestAreaReference.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2002 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache POI" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache POI", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  package org.apache.poi.hssf.util;
  
  import junit.framework.TestCase;
  
  public class TestAreaReference extends TestCase {
       public TestAreaReference(String s) {
          super(s);
      }
      public void testAreaRef1() {
          AreaReference ar = new AreaReference("$A$1:$B$2");
          assertTrue("Two cells expected",ar.getCells().length == 2);
          CellReference cf = ar.getCells()[0];
          assertTrue("row is 4",cf.getRow()==0);
          assertTrue("col is 1",cf.getCol()==0);
          assertTrue("row is abs",cf.isRowAbsolute());
          assertTrue("col is abs",cf.isColAbsolute());
          assertTrue("string is $A$1",cf.toString().equals("$A$1"));
          
          cf = ar.getCells()[1];
          assertTrue("row is 4",cf.getRow()==1);
          assertTrue("col is 1",cf.getCol()==1);
          assertTrue("row is abs",cf.isRowAbsolute());
          assertTrue("col is abs",cf.isColAbsolute());
          assertTrue("string is $B$2",cf.toString().equals("$B$2"));
      }
  }
  
  


Reply via email to