package org.prevayler.demos.scalability;
import java.io.Serializable;
import java.util.*;
import java.math.BigDecimal;
public class Record implements Serializable {
private static final long serialVersionUID = 7098880197177237832L;
private static final String largeString = generateLargeString();
private final long id;
private final String name;
private final String string1;
private final BigDecimal bigDecimal1;
private final BigDecimal bigDecimal2;
private final long date1;
private final long date2;
private static final Random RANDOM = new Random();
public Record(long id) {
this(id, RANDOM);
}
public Record(long id, Random random) {
this(
id,
"NAME" + (id % 10000),
(id % 10000) == 0 ? largeString + id : null,
new BigDecimal(random.nextInt()),
new BigDecimal(random.nextInt()),
new Date(random.nextInt(10000000)),
new Date(random.nextInt(10000000))
);
}
public Record(long id, String name, String string1, BigDecimal bigDecimal1, BigDecimal bigDecimal2, Date date1, Date date2) {
this.id = id;
this.name = name;
this.string1 = string1;
this.bigDecimal1 = bigDecimal1;
this.bigDecimal2 = bigDecimal2;
this.date1 = date1.getTime();
this.date2 = date2.getTime();
}
public long getId() {
return id;
}
public String getName() {
return name;
}
public String getString1() {
return string1;
}
public BigDecimal getBigDecimal1() {
return bigDecimal1;
}
public BigDecimal getBigDecimal2() {
return bigDecimal2;
}
public Date getDate1() {
return new Date(date1);
}
public Date getDate2() {
return new Date(date2);
}
public int hashCode() {
return (int)(id
+ name.hashCode()
+ ("" + string1).hashCode()
+ bigDecimal1.hashCode()
+ bigDecimal2.hashCode()
+ date1
+ date2
);
}
static private String generateLargeString() {
char[] chars = new char[980];
Arrays.fill(chars, 'A');
return new String(chars);
}
}