| Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
| KeySet |
|
| 1.8571428571428572;1.857 |
| 1 | package org.jscsi.target.settings; | |
| 2 | ||
| 3 | ||
| 4 | import org.jscsi.target.settings.entry.Entry; | |
| 5 | ||
| 6 | ||
| 7 | /** | |
| 8 | * {@link KeySet} objects are used by {@link Entry} instances for storing all <i>keys</i> that might be used to | |
| 9 | * negotiate the parameter managed by the {@link Entry}. Individual <i>keys</i> are represented as {@link String} | |
| 10 | * objects. | |
| 11 | * <p> | |
| 12 | * Although most parameters are associated with just one <i>key</i>, there are some exceptions, hence justifying the | |
| 13 | * added complexity of using a dedicated class for managing <i>keys</i> in favor of simply using multiple {@link String} | |
| 14 | * objects. | |
| 15 | * | |
| 16 | * @author Andreas Ergenzinger | |
| 17 | */ | |
| 18 | public final class KeySet { | |
| 19 | ||
| 20 | /** | |
| 21 | * An array containing all <i>keys</i> which are part of the set. | |
| 22 | */ | |
| 23 | final String[] values; | |
| 24 | ||
| 25 | /** | |
| 26 | * Constructor for creating {@link KeySet} instances with just one <i>key</i>. | |
| 27 | * | |
| 28 | * @param value the <i>key</i> | |
| 29 | */ | |
| 30 | 0 | public KeySet (final String value) { |
| 31 | 0 | values = new String[1]; |
| 32 | 0 | values[0] = value; |
| 33 | 0 | } |
| 34 | ||
| 35 | /** | |
| 36 | * Constructor for creating {@link KeySet} instances with multiple <i>keys</i>. | |
| 37 | * | |
| 38 | * @param firstValue the first <i>key</i> | |
| 39 | * @param additionalValues additional <i>keys</i> | |
| 40 | */ | |
| 41 | 0 | public KeySet (final String firstValue, final String... additionalValues) { |
| 42 | 0 | values = new String[additionalValues.length + 1]; |
| 43 | 0 | values[0] = firstValue; |
| 44 | 0 | for (int i = 1; i < values.length; ++i) |
| 45 | 0 | values[i] = additionalValues[i - 1]; |
| 46 | 0 | } |
| 47 | ||
| 48 | /** | |
| 49 | * Returns <code>true</code> if one of the <i>keys</i> in the set equals the parameter. | |
| 50 | * | |
| 51 | * @param key the <i>key</i> to compare to the set's <i>keys</i> | |
| 52 | * @return <code>true</code> if there is a match, <code>false</code> if there is not | |
| 53 | */ | |
| 54 | public boolean matchKey (final String key) { | |
| 55 | 0 | if (key == null) return false; |
| 56 | 0 | for (int i = 0; i < values.length; ++i) |
| 57 | 0 | if (values[i].equals(key)) return true; |
| 58 | 0 | return false; |
| 59 | } | |
| 60 | ||
| 61 | /** | |
| 62 | * Returns the primary <i>key</i>, stored at the first position in {@link #values}. | |
| 63 | * | |
| 64 | * @return the primary <i>key</i> | |
| 65 | */ | |
| 66 | public String getValue () { | |
| 67 | 0 | return values[0]; |
| 68 | } | |
| 69 | ||
| 70 | /** | |
| 71 | * Returns the <i>key</i> stored at the specified position in {@link #values}. | |
| 72 | * | |
| 73 | * @param index the position of the requested <i>key</i> in {@link #values} | |
| 74 | * @return the <i>key</i> stored at the specified position in {@link #values} | |
| 75 | */ | |
| 76 | public String getValue (final int index) { | |
| 77 | 0 | return values[index]; |
| 78 | } | |
| 79 | ||
| 80 | /** | |
| 81 | * Returns the number of <i>keys</i> in this set. | |
| 82 | * | |
| 83 | * @return the number of <i>keys</i> in this set | |
| 84 | */ | |
| 85 | public int size () { | |
| 86 | 0 | return values.length; |
| 87 | } | |
| 88 | ||
| 89 | @Override | |
| 90 | public String toString () { | |
| 91 | 0 | return java.util.Arrays.toString(values); |
| 92 | } | |
| 93 | } |