1
20 package org.crosswire.jsword.passage;
21
22 import org.crosswire.jsword.versification.Versification;
23
24
30 public enum PassageType {
31
34 SPEED {
35 @Override
36 public Passage createPassage(Versification v11n, String passage, Key basis) throws NoSuchVerseException {
37 if (passage == null || passage.length() == 0) {
38 return createEmptyPassage(v11n);
39 }
40 return new RocketPassage(v11n, passage, basis);
41 }
42
43 @Override
44 public Passage createEmptyPassage(Versification v11n) {
45 return new RocketPassage(v11n);
46 }
47 },
48
49
52 WRITE_SPEED {
53 @Override
54 public Passage createPassage(Versification v11n, String passage, Key basis) throws NoSuchVerseException {
55 if (passage == null || passage.length() == 0) {
56 return createEmptyPassage(v11n);
57 }
58 return new BitwisePassage(v11n, passage, basis);
59 }
60
61 @Override
62 public Passage createEmptyPassage(Versification v11n) {
63 return new BitwisePassage(v11n);
64 }
65 },
66
67
70 SIZE {
71 @Override
72 public Passage createPassage(Versification v11n, String passage, Key basis) throws NoSuchVerseException {
73 if (passage == null || passage.length() == 0) {
74 return createEmptyPassage(v11n);
75 }
76 return new DistinctPassage(v11n, passage, basis);
77 }
78
79 @Override
80 public Passage createEmptyPassage(Versification v11n) {
81 return new DistinctPassage(v11n);
82 }
83
84
87 private static final long serialVersionUID = -1959355535575121168L;
88 },
89
90
93 MIX {
94 @Override
95 public Passage createPassage(Versification v11n, String passage, Key basis) throws NoSuchVerseException {
96 if (passage == null || passage.length() == 0) {
97 return createEmptyPassage(v11n);
98 }
99 return new RangedPassage(v11n, passage, basis);
100 }
101
102 @Override
103 public Passage createEmptyPassage(Versification v11n) {
104 return new RangedPassage(v11n);
105 }
106 },
107
108
111 TALLY {
112 @Override
113 public Passage createPassage(Versification v11n, String passage, Key basis) throws NoSuchVerseException {
114 if (passage == null || passage.length() == 0) {
115 return createEmptyPassage(v11n);
116 }
117 return new PassageTally(v11n, passage, basis);
118 }
119
120 @Override
121 public Passage createEmptyPassage(Versification v11n) {
122 return new PassageTally(v11n);
123 }
124 };
125
126
136 public abstract Passage createPassage(Versification v11n, String passage, Key basis) throws NoSuchVerseException;
137 public Passage createPassage(Versification v11n, String passage) throws NoSuchVerseException {
138 return createPassage(v11n, passage, null);
139 }
140
141
148 public abstract Passage createEmptyPassage(Versification v11n);
149
150
155 public static PassageType fromString(String name) {
156 for (PassageType v : values()) {
157 if (v.name().equalsIgnoreCase(name)) {
158 return v;
159 }
160 }
161
162 assert false;
164 return null;
165 }
166
167
173 public static PassageType fromInteger(int i) {
174 for (PassageType v : values()) {
175 if (v.ordinal() == i) {
176 return v;
177 }
178 }
179
180 return SPEED;
182 }
183
184
189 public static int toInteger(PassageType type) {
190 return type.ordinal();
191 }
192 }
193