--- /dev/null
+
+/* ====================================================================
+ 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<P>
+ * 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.<P>
+ * REFERENCE: PG 368 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
+ * @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;
+ }
+}
--- /dev/null
+
+/* ====================================================================
+ 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<P>
+ * 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.<P>
+ * REFERENCE: PG 383 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
+ * @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;
+ }
+}