package de.viathinksoft.distributed.apps.immortal.deepcheck;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Serializable;
import java.math.BigInteger;
import java.security.NoSuchAlgorithmException;
import de.viathinksoft.distributed.apps.immortal.exception.FileContentsBadException;
import de.viathinksoft.utils.security.MD5;
public class DeepImmortalCheckState
implements Serializable {
private static final long serialVersionUID = -813320779387593520L;
private boolean immortal;
// Warning: There will be no check that continueAt is a valid
// part of the last result which myint did create.
public boolean isImmortal() {
return immortal;
}
return count;
}
return initialNumber;
}
return lastResult;
}
super();
this.immortal = immortal;
this.count = count;
this.initialNumber = initialNumber;
this.lastResult = lastResult;
}
super();
loadFromFile(filename);
}
return "["+initialNumber+"] " + immortal + " (#" + count + ": " + lastResult + ")";
}
// TODO equals, clone
private final String SIGNATURE =
"Immortal Result Set V001";
private final String SALT =
"omrtjsdflmaeafuinalafm4iosaFFA$§Eeqoqw09kfslmflafnASFmgalm092k928jlamrnln";
x.write(SIGNATURE);
x.write("\r\n");
s = this.initialNumber.toString();
x.write(s);
x.write("\r\n");
x.write(MD5.digest(s, SALT));
x.write("\r\n");
s =
Boolean.
toString(this.
immortal);
x.write(s);
x.write("\r\n");
x.write(MD5.digest(s, SALT));
x.write("\r\n");
s = this.count.toString();
x.write(s);
x.write("\r\n");
x.write(MD5.digest(s, SALT));
x.write("\r\n");
s = this.lastResult.toString();
x.write(s);
x.write("\r\n");
x.write(MD5.digest(s, SALT));
x.write("\r\n");
x.close();
}
if ((f_sig == null) || (!f_sig.equals(SIGNATURE))) {
throw new FileContentsBadException();
}
String f_initialnumber = r.
readLine();
if ((f_initialnumber == null) || (!MD5.digest(f_initialnumber, SALT).equals(r.readLine()))) {
throw new FileContentsBadException();
}
String f_immortal = r.
readLine();
if ((f_immortal == null) || (!MD5.digest(f_immortal, SALT).equals(r.readLine()))) {
throw new FileContentsBadException();
}
String f_count = r.
readLine();
if ((f_count == null) || (!MD5.digest(f_count, SALT).equals(r.readLine()))) {
throw new FileContentsBadException();
}
String f_lastresult = r.
readLine();
if ((f_lastresult == null) || (!MD5.digest(f_lastresult, SALT).equals(r.readLine()))) {
throw new FileContentsBadException();
}
r.close();
this.
initialNumber =
new BigInteger(f_initialnumber
);
this.
immortal =
Boolean.
valueOf(f_immortal
);
}
}