StatefulFileBackedBackend.java |
1 /** 2 * Distribution License: 3 * JSword is free software; you can redistribute it and/or modify it under 4 * the terms of the GNU Lesser General Public License, version 2.1 or later 5 * as published by the Free Software Foundation. This program is distributed 6 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even 7 * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 8 * See the GNU Lesser General Public License for more details. 9 * 10 * The License is available on the internet at: 11 * http://www.gnu.org/copyleft/lgpl.html 12 * or by writing to: 13 * Free Software Foundation, Inc. 14 * 59 Temple Place - Suite 330 15 * Boston, MA 02111-1307, USA 16 * 17 * © CrossWire Bible Society, 2012 - 2016 18 * 19 */ 20 package org.crosswire.jsword.book.sword; 21 22 import java.io.IOException; 23 24 import org.crosswire.jsword.book.BookException; 25 import org.crosswire.jsword.book.sword.state.OpenFileState; 26 import org.crosswire.jsword.passage.Key; 27 28 /** 29 * Indicates that there is a stateful backend 30 * 31 * 32 * @param <T> The type of the OpenFileState that this class extends. 33 * @see gnu.lgpl.License The GNU Lesser General Public License for details. 34 * @author DM Smith 35 */ 36 public interface StatefulFileBackedBackend<T extends OpenFileState> { 37 /** 38 * Initialises the state required to read from files, specific to each 39 * different backend 40 * 41 * @return the state that has been initialised 42 * @throws BookException 43 */ 44 T initState() throws BookException; 45 46 /** 47 * 48 * @param state 49 * the state object containing all the open random access files 50 * @param key 51 * the verse that is sought 52 * @return the raw text 53 * @throws BookException 54 * @throws IOException 55 * something went wrong when reading the verse 56 */ 57 String readRawContent(T state, Key key) throws BookException, IOException; 58 59 /** 60 * Set the text allotted for the given verse 61 * 62 * @param state 63 * TODO 64 * @param key 65 * The key to set text to 66 * @param text 67 * The text to be set for key 68 * 69 * @throws BookException 70 * If the data can not be set. 71 * @throws IOException 72 * If the module data path could not be created. 73 */ 74 void setRawText(T state, Key key, String text) throws BookException, IOException; 75 76 /** 77 * Sets alias for a comment on a verse range I.e. setRawText() was for verse 78 * range Gen.1.1-3 then setAliasKey should be called for Gen.1.1.2 and 79 * Gen.1.1.3 80 * 81 * @param state 82 * the open file state 83 * @param alias 84 * Alias Key 85 * @param source 86 * Source Key 87 * @throws IOException 88 * Exception when anything goes wrong on writing the alias 89 */ 90 void setAliasKey(T state, Key alias, Key source) throws IOException; 91 } 92