diff --git a/src/java/org/apache/poi/hssf/record/ObjectProtectRecord.java b/src/java/org/apache/poi/hssf/record/ObjectProtectRecord.java new file mode 100644 index 000000000..64d50cb33 --- /dev/null +++ b/src/java/org/apache/poi/hssf/record/ObjectProtectRecord.java @@ -0,0 +1,129 @@ + +/* ==================================================================== + 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.hssf.record; + +import org.apache.poi.util.LittleEndian; + +/** + * Title: Object Protect Record

+ * Description: Protect embedded object with the lamest "security" ever invented. + * This record tells "I want to protect my objects" with lame security. It + * appears in conjunction with the PASSWORD and PROTECT records as well as its + * scenario protect cousin.

+ * REFERENCE: PG 368 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)

+ * @author Andrew C. Oliver (acoliver at apache dot org) + */ + +public class ObjectProtectRecord + extends Record +{ + public final static short sid = 0x63; + private short field_1_protect; + + public ObjectProtectRecord() + { + } + + /** + * Constructs a Protect record and sets its fields appropriately. + * @param in the RecordInputstream to read the record from + */ + + public ObjectProtectRecord(RecordInputStream in) + { + super(in); + } + + protected void validateSid(short id) + { + if (id != sid) + { + throw new RecordFormatException("NOT AN OBJECTPROTECT RECORD"); + } + } + + protected void fillFields(RecordInputStream in) + { + field_1_protect = in.readShort(); + } + + /** + * set whether the sheet is protected or not + * @param protect whether to protect the sheet or not + */ + + public void setProtect(boolean protect) + { + if (protect) + { + field_1_protect = 1; + } + else + { + field_1_protect = 0; + } + } + + /** + * get whether the sheet is protected or not + * @return whether to protect the sheet or not + */ + + public boolean getProtect() + { + return (field_1_protect == 1); + } + + public String toString() + { + StringBuffer buffer = new StringBuffer(); + + buffer.append("[SCENARIOPROTECT]\n"); + buffer.append(" .protect = ").append(getProtect()) + .append("\n"); + buffer.append("[/SCENARIOPROTECT]\n"); + return buffer.toString(); + } + + public int serialize(int offset, byte [] data) + { + LittleEndian.putShort(data, 0 + offset, sid); + LittleEndian.putShort(data, 2 + offset, + (( short ) 0x02)); // 2 bytes (6 total) + LittleEndian.putShort(data, 4 + offset, field_1_protect); + return getRecordSize(); + } + + public int getRecordSize() + { + return 6; + } + + public short getSid() + { + return sid; + } + + public Object clone() { + ObjectProtectRecord rec = new ObjectProtectRecord(); + rec.field_1_protect = field_1_protect; + return rec; + } +} diff --git a/src/java/org/apache/poi/hssf/record/ScenarioProtectRecord.java b/src/java/org/apache/poi/hssf/record/ScenarioProtectRecord.java new file mode 100644 index 000000000..f84316362 --- /dev/null +++ b/src/java/org/apache/poi/hssf/record/ScenarioProtectRecord.java @@ -0,0 +1,130 @@ + +/* ==================================================================== + 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.hssf.record; + +import org.apache.poi.util.LittleEndian; + +/** + * Title: Scenario Protect Record

+ * Description: I have no idea what a Scenario is or why on would want to + * protect it with the lamest "security" ever invented. However this record tells + * excel "I want to protect my scenarios" (0xAF) with lame security. It appears + * in conjunction with the PASSWORD and PROTECT records as well as its object + * protect cousin.

+ * REFERENCE: PG 383 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)

+ * @author Andrew C. Oliver (acoliver at apache dot org) + */ + +public class ScenarioProtectRecord + extends Record +{ + public final static short sid = 0xdd; + private short field_1_protect; + + public ScenarioProtectRecord() + { + } + + /** + * Constructs a Protect record and sets its fields appropriately. + * @param in the RecordInputstream to read the record from + */ + + public ScenarioProtectRecord(RecordInputStream in) + { + super(in); + } + + protected void validateSid(short id) + { + if (id != sid) + { + throw new RecordFormatException("NOT A SCENARIOPROTECT RECORD"); + } + } + + protected void fillFields(RecordInputStream in) + { + field_1_protect = in.readShort(); + } + + /** + * set whether the sheet is protected or not + * @param protect whether to protect the sheet or not + */ + + public void setProtect(boolean protect) + { + if (protect) + { + field_1_protect = 1; + } + else + { + field_1_protect = 0; + } + } + + /** + * get whether the sheet is protected or not + * @return whether to protect the sheet or not + */ + + public boolean getProtect() + { + return (field_1_protect == 1); + } + + public String toString() + { + StringBuffer buffer = new StringBuffer(); + + buffer.append("[SCENARIOPROTECT]\n"); + buffer.append(" .protect = ").append(getProtect()) + .append("\n"); + buffer.append("[/SCENARIOPROTECT]\n"); + return buffer.toString(); + } + + public int serialize(int offset, byte [] data) + { + LittleEndian.putShort(data, 0 + offset, sid); + LittleEndian.putShort(data, 2 + offset, + (( short ) 0x02)); // 2 bytes (6 total) + LittleEndian.putShort(data, 4 + offset, field_1_protect); + return getRecordSize(); + } + + public int getRecordSize() + { + return 6; + } + + public short getSid() + { + return sid; + } + + public Object clone() { + ScenarioProtectRecord rec = new ScenarioProtectRecord(); + rec.field_1_protect = field_1_protect; + return rec; + } +}