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, 2005 - 2016
18   *
19   */
20  package org.crosswire.jsword.book.sword;
21  
22  import org.crosswire.jsword.JSOtherMsg;
23  
24  
25  /**
26   * Block types indicates the grain of compression.
27   * 
28   * @see gnu.lgpl.License The GNU Lesser General Public License for details.
29   * @author Joe Walker
30   * @author DM Smith
31   */
32  public enum BlockType {
33      /**
34       * The level of compression is the Book
35       */
36      BLOCK_BOOK ("BOOK", 'b'),
37  
38      /**
39       * The level of compression is the Book
40       */
41      BLOCK_CHAPTER ("CHAPTER", 'c'),
42  
43      /**
44       * The level of compression is the Book
45       */
46      BLOCK_VERSE ("VERSE", 'v');
47  
48      /**
49       * Simple ctor
50       */
51      BlockType(String name, char indicator) {
52          this.name = name;
53          this.indicator = indicator;
54      }
55  
56      /**
57       * Return a character indicating the grain of compression. This is used in
58       * the names of compressed sword books.
59       * 
60       * @return the indicator
61       */
62      public char getIndicator() {
63          return indicator;
64      }
65  
66      /**
67       * Lookup method to convert from a String
68       * 
69       * @param name the string representation of the block type
70       * @return the matching block type
71       */
72      public static BlockType fromString(String name) {
73          for (BlockType v : values()) {
74              if (v.name.equalsIgnoreCase(name)) {
75                  return v;
76              }
77          }
78  
79          throw new ClassCastException(JSOtherMsg.lookupText("BlockType {0} is not defined!", name));
80      }
81  
82      /* (non-Javadoc)
83       * @see java.lang.Enum#toString()
84       */
85      @Override
86      public String toString() {
87          return name;
88      }
89  
90      /**
91       * The name of the BlockType
92       */
93      private String name;
94      /**
95       * The indicator for the BlockType
96       */
97      private char indicator;
98  }
99