Mercurial > repos > pfrommolt > ngsrich
comparison NGSrich_0.5.5/src/middlewares/HitsCounter.java @ 0:89ad0a9cca52 default tip
Uploaded
| author | pfrommolt |
|---|---|
| date | Mon, 21 Nov 2011 08:12:19 -0500 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:89ad0a9cca52 |
|---|---|
| 1 package middlewares; | |
| 2 import java.util.Vector; | |
| 3 | |
| 4 /** | |
| 5 * Counts the number of bases hit at least 1, 5, 10, 20 or 30 times. | |
| 6 * | |
| 7 * @author Ali Abdallah | |
| 8 * @version 22.07.2011 | |
| 9 * @since Java 1.6 | |
| 10 */ | |
| 11 public class HitsCounter { | |
| 12 | |
| 13 /** | |
| 14 * The hits vector with the number of bases hit at different levels. | |
| 15 */ | |
| 16 private Vector<Integer> hits; | |
| 17 | |
| 18 /** | |
| 19 * The number of bases hit at the five different levels for a specific | |
| 20 * target. | |
| 21 */ | |
| 22 private Vector<Integer> currentHits; | |
| 23 | |
| 24 /** | |
| 25 * The levels at which the number of bases is counted. | |
| 26 */ | |
| 27 private int[] levels = { 1, 5, 10, 20, 30 }; | |
| 28 | |
| 29 /** | |
| 30 * Creates and initializes a hit counter. | |
| 31 */ | |
| 32 public HitsCounter() { | |
| 33 hits = new Vector<Integer>(); | |
| 34 currentHits = new Vector<Integer>(); | |
| 35 for (int i = 0; i < levels.length; i++) { | |
| 36 hits.add(0); | |
| 37 currentHits.add(0); | |
| 38 } | |
| 39 } | |
| 40 | |
| 41 /** | |
| 42 * Update the number of bases hit at the specified different levels. | |
| 43 */ | |
| 44 public void updateHits() { | |
| 45 for (int i = 0; i < hits.size(); i++) { | |
| 46 hits.set(i, hits.get(i) + currentHits.get(i)); | |
| 47 } | |
| 48 } | |
| 49 | |
| 50 /** | |
| 51 * Reset the number of bases hit at the specified different leverls for | |
| 52 * a specific target for user for the next target. | |
| 53 */ | |
| 54 public void resetCurrentHits() { | |
| 55 currentHits = new Vector<Integer>(); | |
| 56 for (int i = 0; i < levels.length; i++) { | |
| 57 currentHits.add(0); | |
| 58 } | |
| 59 } | |
| 60 | |
| 61 /** | |
| 62 * Increments the number of bases hit at some levels by one, if the number | |
| 63 * of hits on this base reach or exceed this level. | |
| 64 * | |
| 65 * @param hitsOnBase | |
| 66 */ | |
| 67 public void updateCurrentHits(int hitsOnBase) { | |
| 68 for (int i = 0; i < currentHits.size(); i++) { | |
| 69 if (hitsOnBase >= levels[i]) { | |
| 70 currentHits.set(i, currentHits.get(i) + 1); | |
| 71 } | |
| 72 } | |
| 73 } | |
| 74 | |
| 75 // Index of the bases level of the current target. | |
| 76 int currHit = 0; | |
| 77 | |
| 78 /** | |
| 79 * @return the number of bases hit at the next higher level in the current | |
| 80 * target. | |
| 81 */ | |
| 82 public int getNextLevelCurrentHits() { | |
| 83 if (currHit < currentHits.size()) | |
| 84 return currentHits.get(currHit++); | |
| 85 else { | |
| 86 currHit = 1; | |
| 87 return currentHits.get(0); | |
| 88 } | |
| 89 } | |
| 90 | |
| 91 // Index of the bases level of the target. | |
| 92 int hit = -1; | |
| 93 | |
| 94 /** | |
| 95 * @return the number of bases hit at the next higher level. | |
| 96 */ | |
| 97 public int getNextLevelHits() { | |
| 98 if (++hit < hits.size()) { | |
| 99 return hits.get(hit); | |
| 100 } else { | |
| 101 return (hit = -1); | |
| 102 } | |
| 103 } | |
| 104 | |
| 105 } |
