hello there, welcome!
so, I couldn't figure out what's the problem in your code,
but you seem a lot stressed with this code, try taking a rest, sleep a little, then you look to the code again...
its kind of a mind thing, when you spend too much time in a problem, your mind gets conditionated to look for one specific type of problem, so that you cant see the problem that in some cases can be only some simple logic error, that's right in front of your eyes, but as your mind is tired, you dont note it...
take a free time, rest your mind a bit, then return to this...
still, i expect someone to understand your code and help, some expert javarancher will show up in minutes and will do it.
sorry for the not-helpful-at-all reply, just think it would be nice to say
good luck there Patrick!