Subversion Repositories distributed

Rev

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

Rev Author Line No. Line
2 daniel-mar 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
}