Add protect record to sheet. Sync from REL_2_BRANCH ..Thanks Rick Berman

git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353311 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Avik Sengupta 2003-08-23 19:01:52 +00:00
parent e25aebed37
commit a86adc3f6f
5 changed files with 80 additions and 13 deletions

View File

@ -122,6 +122,7 @@ public class Sheet implements Model
private Iterator valueRecIterator = null; private Iterator valueRecIterator = null;
private Iterator rowRecIterator = null; private Iterator rowRecIterator = null;
protected int eofLoc = 0; protected int eofLoc = 0;
protected ProtectRecord protect = null;
public static final byte PANE_LOWER_RIGHT = (byte)0; public static final byte PANE_LOWER_RIGHT = (byte)0;
public static final byte PANE_UPPER_RIGHT = (byte)1; public static final byte PANE_UPPER_RIGHT = (byte)1;
@ -265,6 +266,10 @@ public class Sheet implements Model
{ {
retval.printSetup = (PrintSetupRecord) rec; retval.printSetup = (PrintSetupRecord) rec;
} }
else if ( rec.getSid() == ProtectRecord.sid )
{
retval.protect = (ProtectRecord) rec;
}
else if ( rec.getSid() == LeftMarginRecord.sid) else if ( rec.getSid() == LeftMarginRecord.sid)
{ {
retval.getMargins()[LeftMargin] = (LeftMarginRecord) rec; retval.getMargins()[LeftMargin] = (LeftMarginRecord) rec;
@ -416,6 +421,8 @@ public class Sheet implements Model
retval.selection = retval.selection =
(SelectionRecord) retval.createSelection(); (SelectionRecord) retval.createSelection();
records.add(retval.selection); records.add(retval.selection);
retval.protect = (ProtectRecord) retval.createProtect();
records.add(retval.protect);
records.add(retval.createEOF()); records.add(retval.createEOF());
retval.records = records; retval.records = records;
log.log(log.DEBUG, "Sheet createsheet from scratch exit"); log.log(log.DEBUG, "Sheet createsheet from scratch exit");
@ -2644,4 +2651,26 @@ public class Sheet implements Model
margins = new Margin[4]; margins = new Margin[4];
return margins; return margins;
} }
/**
* creates a Protect record with protect set to false.
* @see org.apache.poi.hssf.record.ProtectRecord
* @see org.apache.poi.hssf.record.Record
* @return a ProtectRecord
*/
protected Record createProtect()
{
log.log(log.DEBUG, "create protect record with protection disabled");
ProtectRecord retval = new ProtectRecord();
retval.setProtect(false);
// by default even when we support encryption we won't
return retval; // want to default to be protected
}
public ProtectRecord getProtect()
{
return protect;
}
} }

View File

@ -139,9 +139,9 @@ public class ProtectRecord
* @return whether to protect the sheet or not * @return whether to protect the sheet or not
*/ */
public short getProtect() public boolean getProtect()
{ {
return field_1_protect; return (field_1_protect == 1);
} }
public String toString() public String toString()
@ -149,8 +149,8 @@ public class ProtectRecord
StringBuffer buffer = new StringBuffer(); StringBuffer buffer = new StringBuffer();
buffer.append("[PROTECT]\n"); buffer.append("[PROTECT]\n");
buffer.append(" .protected = ") buffer.append(" .protect = ").append(getProtect())
.append(Integer.toHexString(getProtect())).append("\n"); .append("\n");
buffer.append("[/PROTECT]\n"); buffer.append("[/PROTECT]\n");
return buffer.toString(); return buffer.toString();
} }
@ -160,7 +160,7 @@ public class ProtectRecord
LittleEndian.putShort(data, 0 + offset, sid); LittleEndian.putShort(data, 0 + offset, sid);
LittleEndian.putShort(data, 2 + offset, LittleEndian.putShort(data, 2 + offset,
(( short ) 0x02)); // 2 bytes (6 total) (( short ) 0x02)); // 2 bytes (6 total)
LittleEndian.putShort(data, 4 + offset, getProtect()); LittleEndian.putShort(data, 4 + offset, field_1_protect);
return getRecordSize(); return getRecordSize();
} }

View File

@ -139,9 +139,9 @@ public class ProtectionRev4Record
* @return whether to protect the workbook or not * @return whether to protect the workbook or not
*/ */
public short getProtect() public boolean getProtect()
{ {
return field_1_protect; return (field_1_protect == 1);
} }
public String toString() public String toString()
@ -149,8 +149,8 @@ public class ProtectionRev4Record
StringBuffer buffer = new StringBuffer(); StringBuffer buffer = new StringBuffer();
buffer.append("[PROT4REV]\n"); buffer.append("[PROT4REV]\n");
buffer.append(" .rowheight = ") buffer.append(" .protect = ").append(getProtect())
.append(Integer.toHexString(getProtect())).append("\n"); .append("\n");
buffer.append("[/PROT4REV]\n"); buffer.append("[/PROT4REV]\n");
return buffer.toString(); return buffer.toString();
} }
@ -160,7 +160,7 @@ public class ProtectionRev4Record
LittleEndian.putShort(data, 0 + offset, sid); LittleEndian.putShort(data, 0 + offset, sid);
LittleEndian.putShort(data, 2 + offset, LittleEndian.putShort(data, 2 + offset,
(( short ) 0x02)); // 2 bytes (6 total) (( short ) 0x02)); // 2 bytes (6 total)
LittleEndian.putShort(data, 4 + offset, getProtect()); LittleEndian.putShort(data, 4 + offset, field_1_protect);
return getRecordSize(); return getRecordSize();
} }

View File

@ -893,6 +893,22 @@ public class HSSFSheet
getSheet().setSCLRecord(sclRecord); getSheet().setSCLRecord(sclRecord);
} }
/**
* Answer whether protection is enabled or disabled
* @return true => protection enabled; false => protection disabled
*/
public boolean getProtect() {
return getSheet().getProtect().getProtect();
}
/**
* Sets the protection on enabled or disabled
* @param protect true => protection enabled; false => protection disabled
*/
public void setProtect(boolean protect) {
getSheet().getProtect().setProtect(protect);
}
/** /**
* Shifts the merged regions left or right depending on mode * Shifts the merged regions left or right depending on mode
* <p> * <p>

View File

@ -62,6 +62,7 @@ import junit.framework.TestCase;
import org.apache.poi.hssf.model.Sheet; import org.apache.poi.hssf.model.Sheet;
import org.apache.poi.hssf.record.HCenterRecord; import org.apache.poi.hssf.record.HCenterRecord;
import org.apache.poi.hssf.record.ProtectRecord;
import org.apache.poi.hssf.record.SCLRecord; import org.apache.poi.hssf.record.SCLRecord;
import org.apache.poi.hssf.record.VCenterRecord; import org.apache.poi.hssf.record.VCenterRecord;
import org.apache.poi.hssf.record.WSBoolRecord; import org.apache.poi.hssf.record.WSBoolRecord;
@ -239,6 +240,27 @@ public class TestHSSFSheet
assertEquals(cloned.getRow((short)0).getCell((short)0).getStringCellValue(), "clone_test"); assertEquals(cloned.getRow((short)0).getCell((short)0).getStringCellValue(), "clone_test");
} }
/**
* Test that the ProtectRecord is included when creating or cloning a sheet
*/
public void testProtect() {
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet hssfSheet = workbook.createSheet();
Sheet sheet = hssfSheet.getSheet();
ProtectRecord protect = sheet.getProtect();
assertFalse(protect.getProtect());
// This will tell us that cloneSheet, and by extension,
// the list forms of createSheet leave us with an accessible
// ProtectRecord.
hssfSheet.setProtect(true);
Sheet cloned = sheet.cloneSheet();
assertNotNull(cloned.getProtect());
assertTrue(hssfSheet.getProtect());
}
public void testZoom() public void testZoom()
throws Exception throws Exception
{ {