/ViaThinkSoft Distributed/src/de/viathinksoft/distributed/apps/immortal/iterator/marschall/legacy/MarschallIterator.java |
---|
0,0 → 1,51 |
package de.viathinksoft.distributed.apps.immortal.iterator.marschall.legacy; |
import java.math.BigInteger; |
import java.util.Iterator; |
import de.viathinksoft.distributed.apps.immortal.exception.InitialNumberNotImmortableException; |
import de.viathinksoft.distributed.apps.immortal.iterator.QuickImmortableCheck; |
//TODO: Iterable aufspalten? |
public class MarschallIterator implements Iterator<BigInteger>, Iterable<BigInteger> { |
private BigInteger position; |
public MarschallIterator(BigInteger start) throws InitialNumberNotImmortableException { |
if (!QuickImmortableCheck.check(start)) { |
throw new InitialNumberNotImmortableException(); |
} |
this.position = start; |
} |
@Override |
public boolean hasNext() { |
return true; |
} |
@Override |
public BigInteger next() { |
String s = position.toString(); |
BigInteger prefixTrial = BigInteger.ZERO; |
BigInteger chk; |
do { |
prefixTrial = prefixTrial.add(BigInteger.ONE); |
chk = new BigInteger(prefixTrial.toString().concat(s)); |
} while (!QuickImmortableCheck.check(chk)); |
position = chk; |
return position; |
} |
@Override |
public void remove() { |
throw new UnsupportedOperationException(); |
} |
@Override |
public Iterator<BigInteger> iterator() { |
return this; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/ViaThinkSoft Distributed/src/de/viathinksoft/distributed/apps/immortal/iterator/marschall/MarschallSectionIterator.java |
---|
0,0 → 1,67 |
package de.viathinksoft.distributed.apps.immortal.iterator.marschall; |
import java.math.BigInteger; |
import java.util.Iterator; |
import de.viathinksoft.distributed.apps.immortal.exception.InitialNumberIsOneException; |
import de.viathinksoft.distributed.apps.immortal.exception.InitialNumberNotImmortableException; |
import de.viathinksoft.distributed.apps.immortal.iterator.QuickImmortableCheck; |
public class MarschallSectionIterator implements |
Iterator<SectionImmortableNumber>, Iterable<SectionImmortableNumber> { |
private SectionImmortableNumber position; |
public MarschallSectionIterator(SectionImmortableNumber start) |
throws InitialNumberNotImmortableException { |
if (!QuickImmortableCheck.check(start.toBigInteger())) { |
throw new InitialNumberNotImmortableException(); |
} |
this.position = start; |
} |
public MarschallSectionIterator(BigInteger start) |
throws InitialNumberNotImmortableException, |
InitialNumberIsOneException { |
this(new SectionImmortableNumber(start)); |
} |
public MarschallSectionIterator(int start) |
throws InitialNumberNotImmortableException, |
InitialNumberIsOneException { |
this(new SectionImmortableNumber(start)); |
} |
@Override |
public boolean hasNext() { |
return true; |
} |
@Override |
public SectionImmortableNumber next() { |
String s = position.toBigInteger().toString(); |
BigInteger prefixTrial = BigInteger.ZERO; |
BigInteger chk; |
do { |
prefixTrial = prefixTrial.add(BigInteger.ONE); |
chk = new BigInteger(prefixTrial.toString().concat(s)); |
} while (!QuickImmortableCheck.check(chk)); |
SectionImmortableNumber neu = (SectionImmortableNumber) position.clone(); |
neu.add(prefixTrial); |
position = neu; |
return position; |
} |
@Override |
public void remove() { |
throw new UnsupportedOperationException(); |
} |
@Override |
public Iterator<SectionImmortableNumber> iterator() { |
return this; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/ViaThinkSoft Distributed/src/de/viathinksoft/distributed/apps/immortal/iterator/marschall/SectionImmortableNumber.java |
---|
0,0 → 1,137 |
package de.viathinksoft.distributed.apps.immortal.iterator.marschall; |
import java.io.BufferedReader; |
import java.io.BufferedWriter; |
import java.io.FileReader; |
import java.io.FileWriter; |
import java.io.IOException; |
import java.math.BigInteger; |
import java.security.NoSuchAlgorithmException; |
import java.util.ArrayList; |
import de.viathinksoft.distributed.apps.immortal.exception.FileContentsBadException; |
import de.viathinksoft.distributed.apps.immortal.exception.InitialNumberIsOneException; |
import de.viathinksoft.distributed.apps.immortal.exception.InitialNumberNotImmortableException; |
import de.viathinksoft.distributed.apps.immortal.iterator.QuickImmortableCheck; |
import de.viathinksoft.utils.security.MD5; |
//TODO: Gewisse zahl anwählen |
public class SectionImmortableNumber extends ArrayList<BigInteger> { |
private static final long serialVersionUID = 251721127226195138L; |
protected static final String SEPARATOR = ","; |
public SectionImmortableNumber(BigInteger initialElement) |
throws InitialNumberNotImmortableException, |
InitialNumberIsOneException { |
// TODO: initialnumberisone: soll das auch bei "0" passieren? (unendlichschleife) |
if (initialElement.equals(BigInteger.ONE)) { |
throw new InitialNumberIsOneException(); |
} |
if (!QuickImmortableCheck.check(initialElement)) { |
throw new InitialNumberNotImmortableException(); |
} |
this.add(initialElement); |
} |
// public SectionImmortableNumber(String initialElement) |
// throws InitialNumberNotImmortableException, |
// InitialNumberIsOneException { |
// this(new BigInteger(initialElement)); |
// } |
public SectionImmortableNumber(int initialElement) |
throws InitialNumberNotImmortableException, |
InitialNumberIsOneException { |
// this(Integer.toString(initialElement)); |
this(new BigInteger(Integer.toString(initialElement))); |
} |
public SectionImmortableNumber(String filename) |
throws NoSuchAlgorithmException, IOException, |
FileContentsBadException { |
loadFromFile(filename); |
} |
public BigInteger getInitialElement() { |
return this.get(0); |
} |
public int getCalculatedAmount() { |
return this.size() - 1; |
} |
@Override |
public String toString() { |
String s = ""; |
for (BigInteger m : this) { |
if (s.equals("")) { |
s = m.toString(); |
} else { |
s = m.toString().concat(SEPARATOR).concat(s); |
} |
} |
return s; |
} |
public BigInteger toBigInteger() { |
String s = ""; |
for (BigInteger m : this) { |
s = m.toString().concat(s); |
} |
return new BigInteger(s); |
} |
// TODO equals, clone |
private final String SIGNATURE = "Immortal Sectioned Marschall Number V001"; |
private final String SALT = "AFFAüüü+++MSKGM ignsdg nkoi ajp894jfocwrvw AFAFAü324§$§$%$&WQ"; |
public void saveToFile(String filename) throws IOException, |
NoSuchAlgorithmException { |
BufferedWriter x = new BufferedWriter(new FileWriter(filename)); |
String s; |
x.write(SIGNATURE); |
x.write("\r\n"); |
s = this.toString(); |
x.write(s); |
x.write("\r\n"); |
x.write(MD5.digest(s, SALT)); |
x.write("\r\n"); |
x.close(); |
} |
public void loadFromFile(String filename) throws IOException, |
NoSuchAlgorithmException, FileContentsBadException { |
BufferedReader r = new BufferedReader(new FileReader(filename)); |
String f_sig = r.readLine(); |
if ((f_sig == null) || (!f_sig.equals(SIGNATURE))) { |
throw new FileContentsBadException(); |
} |
String f_commatext = r.readLine(); |
if ((f_commatext == null) |
|| (!MD5.digest(f_commatext, SALT).equals(r.readLine()))) { |
throw new FileContentsBadException(); |
} |
r.close(); |
this.clear(); |
String[] ary = f_commatext.split(SEPARATOR); |
for (int i = ary.length - 1; i >= 0; i--) { |
this.add(new BigInteger(ary[i])); |
} |
// for (String s : ary) { |
// this.add(new BigInteger(s)); |
// } |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/ViaThinkSoft Distributed/src/de/viathinksoft/distributed/apps/immortal/iterator/marschall/SectionImmortableBootStrap.java |
---|
0,0 → 1,27 |
package de.viathinksoft.distributed.apps.immortal.iterator.marschall; |
import java.io.IOException; |
import java.math.BigInteger; |
import java.security.NoSuchAlgorithmException; |
import de.viathinksoft.distributed.apps.immortal.exception.InitialNumberIsOneException; |
import de.viathinksoft.distributed.apps.immortal.exception.InitialNumberNotImmortableException; |
public class SectionImmortableBootStrap { |
protected static void initializeSectionImmortableNumberFile(String filename, BigInteger initialNumber) throws InitialNumberNotImmortableException, InitialNumberIsOneException, NoSuchAlgorithmException, IOException { |
SectionImmortableNumber rs = new SectionImmortableNumber(initialNumber); |
rs.saveToFile(filename); |
} |
public static void initializeSectionImmortableChain5File(String filename) throws NoSuchAlgorithmException, InitialNumberNotImmortableException, InitialNumberIsOneException, IOException { |
initializeSectionImmortableNumberFile(filename, new BigInteger("5")); |
} |
public static void initializeSectionImmortableChain6File(String filename) throws NoSuchAlgorithmException, InitialNumberNotImmortableException, InitialNumberIsOneException, IOException { |
initializeSectionImmortableNumberFile(filename, new BigInteger("6")); |
} |
private SectionImmortableBootStrap() { |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/ViaThinkSoft Distributed/src/de/viathinksoft/distributed/apps/immortal/iterator/QuickImmortableCheck.java |
---|
0,0 → 1,25 |
package de.viathinksoft.distributed.apps.immortal.iterator; |
import java.math.BigInteger; |
import de.viathinksoft.distributed.apps.immortal.deepcheck.DeepImmortalCheckIterator; |
import de.viathinksoft.distributed.apps.immortal.deepcheck.DeepImmortalCheckState; |
public class QuickImmortableCheck { |
public static final int iterationCount = 5; |
public static boolean check(BigInteger number) { |
DeepImmortalCheckState cs = new DeepImmortalCheckState(false, BigInteger.ZERO, number, number); |
DeepImmortalCheckIterator x = new DeepImmortalCheckIterator(cs); |
for (int i = 0; i < iterationCount; i++) { |
cs = x.next(); |
} |
return cs.isImmortal(); |
} |
private QuickImmortableCheck() { |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/ViaThinkSoft Distributed/src/de/viathinksoft/distributed/apps/immortal/iterator/sequential/SequentialIterator.java |
---|
0,0 → 1,44 |
package de.viathinksoft.distributed.apps.immortal.iterator.sequential; |
import java.math.BigInteger; |
import java.util.Iterator; |
import de.viathinksoft.distributed.apps.immortal.iterator.QuickImmortableCheck; |
//TODO: Iterable aufspalten? |
public class SequentialIterator implements Iterator<BigInteger>, Iterable<BigInteger> { |
private BigInteger position = BigInteger.ZERO; |
public SequentialIterator(BigInteger start) { |
this.position = start; |
} |
@Override |
public boolean hasNext() { |
return true; |
} |
@Override |
public BigInteger next() { |
BigInteger chk = position; |
do { |
chk = chk.add(BigInteger.ONE); |
} while (!QuickImmortableCheck.check(chk)); |
position = chk; |
return position; |
} |
@Override |
public void remove() { |
throw new UnsupportedOperationException(); |
} |
@Override |
public Iterator<BigInteger> iterator() { |
return this; |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/ViaThinkSoft Distributed/src/de/viathinksoft/distributed/apps/immortal/iterator/sequential/ImmortalSequenceListBootStrap.java |
---|
0,0 → 1,20 |
package de.viathinksoft.distributed.apps.immortal.iterator.sequential; |
import java.io.IOException; |
import java.math.BigInteger; |
import java.security.NoSuchAlgorithmException; |
public class ImmortalSequenceListBootStrap { |
public static void initializeEmptySequenceFile(String filename, |
BigInteger beginningNumber) throws NoSuchAlgorithmException, |
IOException { |
ImmortalSequenceList rs = new ImmortalSequenceList(); |
rs.add(beginningNumber); |
rs.saveToFile(filename); |
} |
private ImmortalSequenceListBootStrap() { |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/ViaThinkSoft Distributed/src/de/viathinksoft/distributed/apps/immortal/iterator/sequential/ImmortalSequenceList.java |
---|
0,0 → 1,99 |
package de.viathinksoft.distributed.apps.immortal.iterator.sequential; |
import java.io.BufferedReader; |
import java.io.BufferedWriter; |
import java.io.FileReader; |
import java.io.FileWriter; |
import java.io.IOException; |
import java.math.BigInteger; |
import java.security.NoSuchAlgorithmException; |
import java.util.ArrayList; |
import de.viathinksoft.distributed.apps.immortal.exception.FileContentsBadException; |
import de.viathinksoft.utils.security.MD5; |
public class ImmortalSequenceList extends ArrayList<BigInteger> { |
private static final long serialVersionUID = 3701716850542275075L; |
protected static final String SEPARATOR = ";"; |
public ImmortalSequenceList() { |
super(); |
} |
public ImmortalSequenceList(String filename) |
throws NoSuchAlgorithmException, IOException, |
FileContentsBadException { |
loadFromFile(filename); |
} |
@Override |
public String toString() { |
String s = ""; |
for (BigInteger m : this) { |
if (s.equals("")) { |
s = m.toString(); |
} else { |
s = s.concat(SEPARATOR).concat(m.toString()); |
} |
} |
return s; |
} |
public BigInteger getLastNumber() { |
return this.get(this.size() - 1); |
} |
public BigInteger getFirstNumber() { |
return this.get(0); |
} |
// TODO equals, clone |
private final String SIGNATURE = "Immortal Number Sequence List V001"; |
private final String SALT = "AFasoifjsiugdaskdgnakjsdmoi2jtuijwqoikoafojdnsvhfbqimlkwmfkSFSDFADFA>SFasfAQ"; |
public void saveToFile(String filename) throws IOException, |
NoSuchAlgorithmException { |
BufferedWriter x = new BufferedWriter(new FileWriter(filename)); |
String s; |
x.write(SIGNATURE); |
x.write("\r\n"); |
s = this.toString(); |
x.write(s); |
x.write("\r\n"); |
x.write(MD5.digest(s, SALT)); |
x.write("\r\n"); |
x.close(); |
} |
public void loadFromFile(String filename) throws IOException, |
NoSuchAlgorithmException, FileContentsBadException { |
BufferedReader r = new BufferedReader(new FileReader(filename)); |
String f_sig = r.readLine(); |
if ((f_sig == null) || (!f_sig.equals(SIGNATURE))) { |
throw new FileContentsBadException(); |
} |
String f_commatext = r.readLine(); |
if ((f_commatext == null) |
|| (!MD5.digest(f_commatext, SALT).equals(r.readLine()))) { |
throw new FileContentsBadException(); |
} |
r.close(); |
this.clear(); |
String[] ary = f_commatext.split(SEPARATOR); |
for (String s : ary) { |
this.add(new BigInteger(s)); |
} |
} |
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |