Subversion Repositories distributed

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. package de.viathinksoft.distributed.apps.immortal.iterator.marschall.legacy;
  2.  
  3. import java.math.BigInteger;
  4. import java.util.Iterator;
  5.  
  6. import de.viathinksoft.distributed.apps.immortal.exception.InitialNumberNotImmortableException;
  7. import de.viathinksoft.distributed.apps.immortal.iterator.QuickImmortableCheck;
  8.  
  9. //TODO: Iterable aufspalten?
  10.  
  11. public class MarschallIterator implements Iterator<BigInteger>, Iterable<BigInteger> {
  12.        
  13.         private BigInteger position;
  14.        
  15.         public MarschallIterator(BigInteger start) throws InitialNumberNotImmortableException {
  16.                 if (!QuickImmortableCheck.check(start)) {
  17.                         throw new InitialNumberNotImmortableException();
  18.                 }
  19.  
  20.                 this.position = start;
  21.         }
  22.  
  23.         @Override
  24.         public boolean hasNext() {
  25.                 return true;
  26.         }
  27.  
  28.         @Override
  29.         public BigInteger next() {
  30.                 String s = position.toString();
  31.                 BigInteger prefixTrial = BigInteger.ZERO;
  32.                 BigInteger chk;
  33.                 do {
  34.                         prefixTrial = prefixTrial.add(BigInteger.ONE);
  35.                         chk = new BigInteger(prefixTrial.toString().concat(s));
  36.                 } while (!QuickImmortableCheck.check(chk));
  37.                 position = chk;
  38.                
  39.                 return position;
  40.         }
  41.  
  42.         @Override
  43.         public void remove() {
  44.                 throw new UnsupportedOperationException();
  45.         }
  46.  
  47.         @Override
  48.         public Iterator<BigInteger> iterator() {
  49.                 return this;
  50.         }
  51. }
  52.