01: /* ====================================================================
02: Licensed to the Apache Software Foundation (ASF) under one or more
03: contributor license agreements. See the NOTICE file distributed with
04: this work for additional information regarding copyright ownership.
05: The ASF licenses this file to You under the Apache License, Version 2.0
06: (the "License"); you may not use this file except in compliance with
07: the License. You may obtain a copy of the License at
08:
09: http://www.apache.org/licenses/LICENSE-2.0
10:
11: Unless required by applicable law or agreed to in writing, software
12: distributed under the License is distributed on an "AS IS" BASIS,
13: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: See the License for the specific language governing permissions and
15: limitations under the License.
16: ==================================================================== */
17:
18: package org.apache.poi.poifs.storage;
19:
20: import java.io.IOException;
21:
22: /**
23: * Interface for lists of blocks that are mapped by block allocation
24: * tables
25: *
26: * @author Marc Johnson (mjohnson at apache dot org
27: */
28:
29: public interface BlockList {
30:
31: /**
32: * remove the specified block from the list
33: *
34: * @param index the index of the specified block; if the index is
35: * out of range, that's ok
36: */
37:
38: public void zap(final int index);
39:
40: /**
41: * remove and return the specified block from the list
42: *
43: * @param index the index of the specified block
44: *
45: * @return the specified block
46: *
47: * @exception IOException if the index is out of range or has
48: * already been removed
49: */
50:
51: public ListManagedBlock remove(final int index) throws IOException;
52:
53: /**
54: * get the blocks making up a particular stream in the list. The
55: * blocks are removed from the list.
56: *
57: * @param startBlock the index of the first block in the stream
58: *
59: * @return the stream as an array of correctly ordered blocks
60: *
61: * @exception IOException if blocks are missing
62: */
63:
64: public ListManagedBlock[] fetchBlocks(final int startBlock)
65: throws IOException;
66:
67: /**
68: * set the associated BlockAllocationTable
69: *
70: * @param bat the associated BlockAllocationTable
71: *
72: * @exception IOException
73: */
74:
75: public void setBAT(final BlockAllocationTableReader bat)
76: throws IOException;
77: } // end public interface BlockList
|