Reputation: 2048
I want to load from a array the entry before and after matching a condition. I tried an iterator but the next entry is always the same as the current entry. What am I misunderstanding?
public JsonJavaObject loadScoreboardPositions(String eventUnid, String runnerUnid){
String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
System.out.println(this.getClass().getSimpleName().toString() + " " + methodName);
JsonJavaObject positions = new JsonJavaObject();
try {
if (StringUtils.isNotBlank(eventUnid) && StringUtils.isNotBlank(runnerUnid)) {
this.event = loadEvent(eventUnid);
if (null != this.event) {
ArrayList<JsonJavaObject> scoreboard = eventCrud.loadScoreboard(this.event);
int index = 1;
JsonJavaObject previousRunner = null;
JsonJavaObject nextRunner = null;
boolean nextRunnerCheck = false;
ListIterator<JsonJavaObject> it = scoreboard.listIterator();
while (it.hasNext()) {
JsonJavaObject curr = it.next();
JsonJavaObject prev = it.previous();
System.out.println("current object = " + curr.toString());
System.out.println("previous object = " + prev.toString());
if (curr.containsKey("runnerUnid")) {
System.out.println("runner = " + curr.getAsString("runnerUnid"));
if (runnerUnid.equalsIgnoreCase(curr.getAsString("runnerUnid"))) {
System.out.println("we have a match for " + runnerUnid);
utils.printToConsole("position in array = " + (index));
positions.put("currentPosition", index);
positions.put("currentRunner", curr.getAsString("runnerUnid"));
if (!curr.getAsString("runnerUnid").equalsIgnoreCase(prev.getAsString("runnerUnid"))) {
positions.put("previousPosition", index-1);
positions.put("previousRunner", prev.getAsString("runnerUnid"));
} else {
System.out.println("prev euqlas current");
}
if (it.hasNext()) {
JsonJavaObject next = it.next();
System.out.println("and the next = " + next.toString());
positions.put("nextPosition", index+1);
positions.put("nextRunner", next.getAsString("runnerUnid"));
}
break;
}
}
index++;
}
}
}
} catch (Exception e) {
XspOpenLogUtil.logErrorEx(e, JSFUtils.getXSPContext().getUrl().toString(), Level.SEVERE, null);
}
System.out.println("loadScoreboardPositions = " + positions.toString());
utils.printToConsole("positions = " + positions);
return positions;
}
Upvotes: 0
Views: 56