Merge from 1.5 branch
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352479 13f79535-47bb-0310-9956-ffa450edef68
BIN
src/documentation/images/logoRaPiGmbH1.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
BIN
src/documentation/images/logoRaPiGmbH2.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
BIN
src/documentation/images/logoRaPiGmbH3.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
src/documentation/images/logoRaPiGmbH4.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
src/documentation/images/logoRaPiGmbH5.png
Normal file
After Width: | Height: | Size: 7.2 KiB |
BIN
src/documentation/images/logoRaPiGmbH6.png
Normal file
After Width: | Height: | Size: 6.5 KiB |
BIN
src/documentation/images/logoRaPiGmbH7.png
Normal file
After Width: | Height: | Size: 9.4 KiB |
@ -39,6 +39,7 @@
|
||||
|
||||
<menu label="Get Involved">
|
||||
<menu-item label="Contributing" href="contrib.html"/>
|
||||
<menu-item label="Branching" href="branching.html"/>
|
||||
<menu-item label="Bug Database" href="http://nagoya.apache.org/bugzilla/buglist.cgi?product=POI"/>
|
||||
<menu-item label="CVS" href="http://jakarta.apache.org/site/cvsindex.html"/>
|
||||
<menu-item label="Mail Lists" href="http://jakarta.apache.org/site/mail.html"/>
|
||||
|
97
src/documentation/xdocs/branching.xml
Normal file
@ -0,0 +1,97 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "./dtd/document-v11.dtd">
|
||||
|
||||
<document>
|
||||
|
||||
<header>
|
||||
<title>Branching</title>
|
||||
<authors>
|
||||
<person id="GJS" name="Glen Stampoultzis" email="glens@apache.org"/>
|
||||
</authors>
|
||||
</header>
|
||||
|
||||
<body>
|
||||
<section title="Branching Conventions">
|
||||
<p>
|
||||
Branches are tagged in the following way:
|
||||
</p>
|
||||
<ul>
|
||||
<li>REL_1_5_BRANCH</li>
|
||||
<li>REL_2_0_BRANCH</li>
|
||||
</ul>
|
||||
<p>
|
||||
Merge points should be tagged as follows:
|
||||
</p>
|
||||
<ul>
|
||||
<li>REL_1_5_BRANCH_MERGE1</li>
|
||||
<li>REL_1_5_BRANCH_MERGE2</li>
|
||||
<li>etc...</li>
|
||||
</ul>
|
||||
<p>
|
||||
Releases should be tagged as:
|
||||
</p>
|
||||
<ul>
|
||||
<li>REL_1_5</li>
|
||||
<li>REL_1_5_1</li>
|
||||
<li>REL_1_5_2</li>
|
||||
<li>etc...</li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
<section title="Branching Advise">
|
||||
<p>
|
||||
Don't forget which branch you are currently on. This is critically
|
||||
important. Committing stuff to the wrong branch causes all sorts of
|
||||
headaches. Best to name your checkout after the branch you are on.
|
||||
</p>
|
||||
</section>
|
||||
<section title="Who Manages Branching?">
|
||||
<p>
|
||||
All branching is currently managed by Glen Stampoultzis. If you wish
|
||||
to create your own branch please let him know. Merging is also
|
||||
handled by Glen. Just pop him a mail if you feel it's necessary to
|
||||
create a branch or perform a merge.
|
||||
</p>
|
||||
<p>
|
||||
The reason to go through a single point for branching is that it can be
|
||||
an easy thing to get wrong. Having a single person managing branches
|
||||
means there is less chance of getting getting our wires crossed with this
|
||||
difficult area of CVS.
|
||||
</p>
|
||||
</section>
|
||||
<section title="Currently Active Branches">
|
||||
<p>
|
||||
The following branches are currently active:
|
||||
</p>
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
<b>Branch</b>
|
||||
</th>
|
||||
<th>
|
||||
<b>Description</b>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
HEAD
|
||||
</td>
|
||||
<td>
|
||||
This is the trunk and is always active. Currently it is being used to continue development
|
||||
of the 2.0 release.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
REL_1_5_BRANCH
|
||||
</td>
|
||||
<td>
|
||||
All bug fixes not specifically relevant to the 2.0 work should be placed in this branch.
|
||||
From here they will merged back to the trunk and the merge point marked.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</section>
|
||||
</body>
|
||||
|
||||
</document>
|
@ -3,7 +3,7 @@
|
||||
|
||||
<document>
|
||||
<header>
|
||||
<title></title>
|
||||
<title>Project History</title>
|
||||
<authors>
|
||||
<person id="AO" name="Andrew C. Oliver" email="acoliver@apache.org"/>
|
||||
</authors>
|
||||
|
@ -6,6 +6,7 @@
|
||||
<title></title>
|
||||
<authors>
|
||||
<person id="AO" name="Andrew C. Oliver" email="acoliver@apache.org"/>
|
||||
<person id="GS" name="Glen Stampoultzis" email="glens@apache.org"/>
|
||||
</authors>
|
||||
</header>
|
||||
|
||||
@ -103,6 +104,30 @@
|
||||
<img src="images/logoJanssen2.png"/>
|
||||
</p>
|
||||
</section>
|
||||
<section title="RaPi GmbH">
|
||||
<p>
|
||||
Contact Person: Fancy at: fancy at my-feiqi.com
|
||||
</p>
|
||||
<p>
|
||||
<img src="images/logoRaPiGmbH1.png"/>
|
||||
<img src="images/logoRaPiGmbH2.png"/>
|
||||
</p>
|
||||
<p>
|
||||
<img src="images/logoRaPiGmbH3.png"/>
|
||||
</p>
|
||||
<p>
|
||||
<img src="images/logoRaPiGmbH4.png"/>
|
||||
</p>
|
||||
<p>
|
||||
<img src="images/logoRaPiGmbH5.png"/>
|
||||
</p>
|
||||
<p>
|
||||
<img src="images/logoRaPiGmbH6.png"/>
|
||||
</p>
|
||||
<p>
|
||||
<img src="images/logoRaPiGmbH7.png"/>
|
||||
</p>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</body>
|
||||
|
@ -452,8 +452,8 @@ public class RowRecord
|
||||
LittleEndian.putShort(data, 0 + offset, sid);
|
||||
LittleEndian.putShort(data, 2 + offset, ( short ) 16);
|
||||
LittleEndian.putShort(data, 4 + offset, getRowNumber());
|
||||
LittleEndian.putShort(data, 6 + offset, getFirstCol());
|
||||
LittleEndian.putShort(data, 8 + offset, getLastCol());
|
||||
LittleEndian.putShort(data, 6 + offset, getFirstCol() == -1 ? (short)0 : getFirstCol());
|
||||
LittleEndian.putShort(data, 8 + offset, getLastCol() == -1 ? (short)0 : getLastCol());
|
||||
LittleEndian.putShort(data, 10 + offset, getHeight());
|
||||
LittleEndian.putShort(data, 12 + offset, getOptimize());
|
||||
LittleEndian.putShort(data, 14 + offset, field_6_reserved);
|
||||
|
@ -292,8 +292,8 @@ public class HSSFRow
|
||||
* get the hssfcell representing a given column (logical cell) 0-based. If you
|
||||
* ask for a cell that is not defined....you get a null.
|
||||
*
|
||||
* @param cellnum - 0 based column number
|
||||
* @returns HSSFCell representing that column or null if undefined.
|
||||
* @param cellnum 0 based column number
|
||||
* @return HSSFCell representing that column or null if undefined.
|
||||
*/
|
||||
|
||||
public HSSFCell getCell(short cellnum)
|
||||
@ -441,7 +441,7 @@ public class HSSFRow
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns cell iterator of the physically defined cells. Note element 4 may
|
||||
* @return cell iterator of the physically defined cells. Note element 4 may
|
||||
* actually be row cell depending on how many are defined!
|
||||
*/
|
||||
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
/* ====================================================================
|
||||
* The Apache Software License, Version 1.1
|
||||
*
|
||||
@ -60,11 +59,14 @@
|
||||
*/
|
||||
package org.apache.poi.hssf.usermodel;
|
||||
|
||||
import org.apache.poi.util.POILogFactory;
|
||||
import org.apache.poi.hssf.model.Sheet;
|
||||
import org.apache.poi.hssf.model.Workbook;
|
||||
import org.apache.poi.hssf.record.*;
|
||||
import org.apache.poi.hssf.record.CellValueRecordInterface;
|
||||
import org.apache.poi.hssf.record.RowRecord;
|
||||
import org.apache.poi.hssf.record.VCenterRecord;
|
||||
import org.apache.poi.hssf.record.WSBoolRecord;
|
||||
import org.apache.poi.hssf.util.Region;
|
||||
import org.apache.poi.util.POILogFactory;
|
||||
import org.apache.poi.util.POILogger;
|
||||
|
||||
import java.util.Iterator;
|
||||
@ -74,7 +76,7 @@ import java.util.TreeMap;
|
||||
* High level representation of a worksheet.
|
||||
* @author Andrew C. Oliver (acoliver at apache dot org)
|
||||
* @author Glen Stampoultzis (glens at apache.org)
|
||||
* @version 1.0-pre
|
||||
* @author Libin Roman (romal at vistaportal.com)
|
||||
*/
|
||||
|
||||
public class HSSFSheet
|
||||
@ -132,11 +134,6 @@ public class HSSFSheet
|
||||
setPropertiesFromSheet(sheet);
|
||||
}
|
||||
|
||||
/** private default constructor prevents bogus initializationless construction */
|
||||
|
||||
private HSSFSheet()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* used internally to set the properties given a Sheet object
|
||||
@ -254,7 +251,7 @@ public class HSSFSheet
|
||||
int rownum = lastrow - 1;
|
||||
HSSFRow r = getRow(rownum);
|
||||
|
||||
while (r == null)
|
||||
while (r == null && rownum >= 0)
|
||||
{
|
||||
r = getRow(--rownum);
|
||||
}
|
||||
@ -270,10 +267,14 @@ public class HSSFSheet
|
||||
int rownum = firstrow + 1;
|
||||
HSSFRow r = getRow(rownum);
|
||||
|
||||
while (r == null)
|
||||
while (r == null && rownum <= getLastRowNum())
|
||||
{
|
||||
r = getRow(++rownum);
|
||||
}
|
||||
|
||||
if (rownum > getLastRowNum())
|
||||
return -1;
|
||||
|
||||
return rownum;
|
||||
}
|
||||
|
||||
@ -344,26 +345,6 @@ public class HSSFSheet
|
||||
return lastrow;
|
||||
}
|
||||
|
||||
/**
|
||||
* Seems to be unused (gjs)
|
||||
*
|
||||
* used internally to add cells from a high level row to the low level model
|
||||
* @param row the row object to represent in low level RowRecord.
|
||||
*/
|
||||
private void addCellsFromRow(HSSFRow row)
|
||||
{
|
||||
Iterator iter = row.cellIterator();
|
||||
|
||||
// for (int k = 0; k < row.getPhysicalNumberOfCells(); k++)
|
||||
while (iter.hasNext())
|
||||
{
|
||||
HSSFCell cell =
|
||||
( HSSFCell ) iter.next(); // row.getPhysicalCellAt(k);
|
||||
|
||||
sheet.addValueRecord(row.getRowNum(), cell.getCellValueRecord());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* set the width (in units of 1/256th of a character width)
|
||||
* @param column - the column to set (0-based)
|
||||
@ -400,7 +381,7 @@ public class HSSFSheet
|
||||
/**
|
||||
* get the default row height for the sheet (if the rows do not define their own height) in
|
||||
* twips (1/20 of a point)
|
||||
* @retun default row height
|
||||
* @return default row height
|
||||
*/
|
||||
|
||||
public short getDefaultRowHeight()
|
||||
@ -543,7 +524,7 @@ public class HSSFSheet
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns an iterator of the PHYSICAL rows. Meaning the 3rd element may not
|
||||
* @return an iterator of the PHYSICAL rows. Meaning the 3rd element may not
|
||||
* be the third row if say for instance the second row is undefined.
|
||||
*/
|
||||
|
||||
|
@ -115,5 +115,11 @@ public class TestHSSFRow
|
||||
assertEquals(-1, row.getLastCellNum());
|
||||
assertEquals(-1, row.getFirstCellNum());
|
||||
|
||||
// check the row record actually writes it out as 0's
|
||||
byte[] data = new byte[100];
|
||||
row.getRowRecord().serialize(0, data);
|
||||
assertEquals(0, data[6]);
|
||||
assertEquals(0, data[8]);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -58,7 +58,6 @@ import junit.framework.TestCase;
|
||||
import org.apache.poi.hssf.model.Sheet;
|
||||
import org.apache.poi.hssf.record.VCenterRecord;
|
||||
import org.apache.poi.hssf.record.WSBoolRecord;
|
||||
import org.apache.poi.hssf.dev.BiffViewer;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
@ -190,7 +189,14 @@ public class TestHSSFSheet
|
||||
tempFile.delete();
|
||||
assertNotNull(row);
|
||||
assertEquals(2, row.getPhysicalNumberOfCells());
|
||||
}
|
||||
|
||||
public void testRemoveRow()
|
||||
{
|
||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
||||
HSSFSheet sheet = workbook.createSheet("Test boolean");
|
||||
HSSFRow row = sheet.createRow((short) 2);
|
||||
sheet.removeRow(row);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|