Author: nick
Date: Fri Jan 25 08:25:14 2008
New Revision: 615258

URL: http://svn.apache.org/viewvc?rev=615258&view=rev
Log:
[ooxml branch] XSSFSheet get/setColumnWidth methods and tests, patch from Paolo

Added:
    poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/
    
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/ColumnHelper.java
   (with props)
    
poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/helpers/
    
poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/helpers/TestColumnHelper.java
   (with props)
Modified:
    
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
    
poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java

Modified: 
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
URL: 
http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java?rev=615258&r1=615257&r2=615258&view=diff
==============================================================================
--- 
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java 
(original)
+++ 
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java 
Fri Jan 25 08:25:14 2008
@@ -31,6 +31,7 @@
 import org.apache.poi.ss.usermodel.PrintSetup;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.xssf.usermodel.helpers.ColumnHelper;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHeaderFooter;
@@ -48,6 +49,7 @@
     private CTSheet sheet;
     private CTWorksheet worksheet;
     private List<Row> rows;
+    private ColumnHelper columnHelper;
     
     public XSSFSheet(CTSheet sheet) {
         this.sheet = sheet;
@@ -84,6 +86,7 @@
         CTHeaderFooter hf = this.worksheet.addNewHeaderFooter();
         hf.setOddHeader("&amp;C&amp;A");
         hf.setOddFooter("&amp;C&amp;\"Arial\"&amp;10Page &amp;P");
+        columnHelper = new ColumnHelper(worksheet);
     }
 
     protected CTSheet getSheet() {
@@ -184,8 +187,7 @@
     }
 
     public short getColumnWidth(short column) {
-       // TODO Auto-generated method stub
-       return 0;
+       return (short) columnHelper.getColumn(column).getWidth();
     }
 
     public short getDefaultColumnWidth() {
@@ -440,7 +442,11 @@
     }
 
     public void setColumnWidth(short column, short width) {
-        // TODO Auto-generated method stub
+       CTCol col = columnHelper.getColumn(column);
+       if (col == null) {
+               col = columnHelper.createColumn(column);
+       }
+       col.setWidth(width);
     }
 
     public void setDefaultColumnStyle(short column, CellStyle style) {

Added: 
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/ColumnHelper.java
URL: 
http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/ColumnHelper.java?rev=615258&view=auto
==============================================================================
--- 
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/ColumnHelper.java
 (added)
+++ 
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/ColumnHelper.java
 Fri Jan 25 08:25:14 2008
@@ -0,0 +1,99 @@
+package org.apache.poi.xssf.usermodel.helpers;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
+
+public class ColumnHelper {
+       
+       private List<CTCol> columns;
+       
+    public ColumnHelper(CTWorksheet worksheet) {
+               super();
+               setColumns(worksheet);
+       }
+
+       public List<CTCol> getColumns() {
+       return columns;
+    }
+       
+       public void setColumns(CTWorksheet worksheet) {
+       columns = new ArrayList<CTCol>();
+       CTCols[] colsArray = worksheet.getColsArray();
+       for (int i = 0 ; i < colsArray.length ; i++) {
+               CTCols cols = colsArray[i];
+               CTCol[] colArray = cols.getColArray();
+               for (int y = 0 ; y < colArray.length ; y++) {
+                       CTCol col = colArray[y];
+                       for (long k = col.getMin() ; k <= col.getMax() ; k++) {
+                               setColumn(columns, col, k);
+                       }
+               }
+       }
+       }
+
+       private void setColumn(List<CTCol> columns, CTCol col, long k) {
+               CTCol column = getColumn(columns, k);
+               if (column == null) {
+                       column = CTCol.Factory.newInstance();
+                       column.setMin(k);
+                       column.setMax(k);
+                       setColumnAttributes(col, column);
+                       columns.add(column);
+               }
+               else {
+                       setColumnAttributes(col, column);
+               }
+       }
+
+       private void setColumnAttributes(CTCol col, CTCol column) {
+               if (col.getWidth() > 0) {
+                       column.setWidth(col.getWidth());
+               }
+               // TODO set all col attributes
+       }
+    
+    public CTCol getColumn(List<CTCol> columns, long k) {
+       for (Iterator<CTCol> it = columns.iterator() ; it.hasNext() ; ) {
+               CTCol column = it.next();
+               if (column.getMin() == k) {
+                       return column;
+               }
+       }
+       return null;
+    }
+    
+    public CTCol getColumn(long index) {
+       for (Iterator<CTCol> it = columns.iterator() ; it.hasNext() ; ) {
+               CTCol column = it.next();
+               if (getColumnIndex(column) == index) {
+                       return column;
+               }
+       }
+       return null;
+    }
+    
+    public long getColumnIndex(CTCol column) {
+       if (column.getMin() == column.getMax()) {
+               return column.getMin();
+       }
+       return -1;
+    }
+    
+    public CTCol createColumn(long index) {
+       CTCol column = CTCol.Factory.newInstance();
+       setIndex(column, index);
+       columns.add(column);
+       return column;
+    }
+
+       private void setIndex(CTCol column, long index) {
+               column.setMin(index);
+               column.setMax(index);
+       }
+
+}

Propchange: 
poi/branches/ooxml/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/ColumnHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
URL: 
http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java?rev=615258&r1=615257&r2=615258&view=diff
==============================================================================
--- 
poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
 (original)
+++ 
poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
 Fri Jan 25 08:25:14 2008
@@ -111,4 +111,12 @@
                sheet.setDefaultColumnWidth((short) 14);
                assertEquals((short) 14, sheet.getDefaultColumnWidth());
        }
+       
+       public void testGetSetColumnWidth() throws Exception {
+               XSSFWorkbook workbook = new XSSFWorkbook();
+               Sheet sheet = workbook.createSheet("Sheet 1");
+               // Test setting a column width and getting that value
+               sheet.setColumnWidth((short) 0, (short) 16);
+               assertEquals(16, sheet.getColumnWidth((short) 0));
+       }
 }

Added: 
poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/helpers/TestColumnHelper.java
URL: 
http://svn.apache.org/viewvc/poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/helpers/TestColumnHelper.java?rev=615258&view=auto
==============================================================================
--- 
poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/helpers/TestColumnHelper.java
 (added)
+++ 
poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/helpers/TestColumnHelper.java
 Fri Jan 25 08:25:14 2008
@@ -0,0 +1,71 @@
+/* ====================================================================
+   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.xssf.usermodel.helpers;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.SharedStringSource;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCellType;
+
+
+public class TestColumnHelper extends TestCase {
+       
+       public void testGetColumnList() {
+               CTWorksheet worksheet = CTWorksheet.Factory.newInstance();
+               ColumnHelper columnHelper = new ColumnHelper(worksheet);
+               
+               CTCols cols1 = worksheet.addNewCols();
+               CTCols cols2 = worksheet.addNewCols();
+               
+               CTCol col1_1 = cols1.addNewCol();
+               col1_1.setMin(1);
+               col1_1.setMax(10);
+               col1_1.setWidth(13);
+               CTCol col1_2 = cols1.addNewCol();
+               col1_2.setMin(15);
+               col1_2.setMax(15);
+               col1_2.setWidth(14);
+
+               CTCol col2_1 = cols2.addNewCol();
+               col2_1.setMin(6);
+               col2_1.setMax(10);
+               CTCol col2_2 = cols2.addNewCol();
+               col2_2.setMin(20);
+               col2_2.setMax(20);
+               
+               columnHelper.setColumns(worksheet);
+               List<CTCol> columns = columnHelper.getColumns();
+               
+               assertEquals(12, columns.size());
+               assertEquals((double) 14, 
columnHelper.getColumn(15).getWidth());
+       }
+       
+}

Propchange: 
poi/branches/ooxml/src/ooxml/testcases/org/apache/poi/xssf/usermodel/helpers/TestColumnHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to