package siena.base.test;
import java.util.ArrayList;
import java.util.List;
import siena.SienaRestrictedApiException;
import siena.base.test.model.Discovery4Search2StringId;
import siena.base.test.model.DiscoveryStringId;
import siena.base.test.model.PersonLongAutoID;
import siena.base.test.model.PersonLongManualID;
import siena.base.test.model.PersonStringID;
import siena.base.test.model.PersonUUID;
public abstract class BaseTestNoAutoInc_7_BATCH extends BaseTestNoAutoInc_BASE {
public void testBatchInsert() {
Object[] discs = new DiscoveryStringId[100];
for(int i=0; i<100; i++){
discs[i] = new DiscoveryStringId("Disc_"+String.format("%03d", i), StringID_CURIE);
}
int nb = pm.insert(discs);
assertEquals(discs.length, nb);
List<DiscoveryStringId> res =
pm.createQuery(DiscoveryStringId.class).fetch();
assertEquals(discs.length, res.size());
int i=0;
for(DiscoveryStringId disc:res){
assertEquals(discs[i++], disc);
}
}
public void testBatchInsertList() {
List<DiscoveryStringId> discs = new ArrayList<DiscoveryStringId>();
for(int i=0; i<100; i++){
discs.add(new DiscoveryStringId("Disc_"+String.format("%03d", i), StringID_CURIE));
}
int nb = pm.insert(discs);
assertEquals(discs.size(), nb);
List<DiscoveryStringId> res =
pm.createQuery(DiscoveryStringId.class).fetch();
assertEquals(discs.size(), res.size());
int i=0;
for(DiscoveryStringId disc:res){
assertEquals(discs.get(i++), disc);
}
}
public void testBatchDelete() {
Object[] discs = new DiscoveryStringId[100];
for(int i=0; i<100; i++){
discs[i] = new DiscoveryStringId("Disc_"+String.format("%03d", i), StringID_CURIE);
}
pm.insert(discs);
List<DiscoveryStringId> res =
pm.createQuery(DiscoveryStringId.class).fetch();
assertEquals(discs.length, res.size());
int nb = pm.delete(discs);
assertEquals(discs.length, nb);
res =
pm.createQuery(DiscoveryStringId.class).fetch();
assertEquals(0, res.size());
}
public void testBatchDeleteList() {
List<DiscoveryStringId> discs = new ArrayList<DiscoveryStringId>();
for(int i=0; i<59; i++){
DiscoveryStringId disc = new DiscoveryStringId("Disc_"+String.format("%03d", i), StringID_CURIE);
discs.add(disc);
}
pm.insert(discs);
List<DiscoveryStringId> res =
pm.createQuery(DiscoveryStringId.class).fetch();
assertEquals(discs.size(), res.size());
int nb = pm.delete(discs);
assertEquals(discs.size(), nb);
res =
pm.createQuery(DiscoveryStringId.class).fetch();
assertEquals(0, res.size());
}
public void testBatchDeleteByKeys() {
int nb = pm.deleteByKeys(PersonStringID.class, "TESLA", "CURIE");
assertEquals(2, nb);
List<PersonStringID> res =
pm.createQuery(PersonStringID.class).fetch();
assertEquals(1, res.size());
assertEquals(StringID_EINSTEIN, res.get(0));
}
public void testBatchDeleteByKeysList() {
int nb = pm.deleteByKeys(PersonStringID.class, new ArrayList<String>(){
private static final long serialVersionUID = 1L;
{add("TESLA"); add( "CURIE");}
});
assertEquals(2, nb);
List<PersonStringID> res =
pm.createQuery(PersonStringID.class).fetch();
assertEquals(1, res.size());
assertEquals(StringID_EINSTEIN, res.get(0));
}
public void testBatchDeleteByKeysLots() {
List<DiscoveryStringId> discs = new ArrayList<DiscoveryStringId>();
List<String> keys = new ArrayList<String>();
for(int i=0; i<59; i++){
DiscoveryStringId disc = new DiscoveryStringId("Disc_"+String.format("%03d", i), StringID_CURIE);
discs.add(disc);
keys.add(disc.name);
}
pm.insert(discs);
int nb =
pm.deleteByKeys(DiscoveryStringId.class, keys);
assertEquals(discs.size(), nb);
List<DiscoveryStringId> res =
pm.createQuery(DiscoveryStringId.class).fetch();
assertEquals(0, res.size());
}
public void testBatchGet() {
DiscoveryStringId[] discs = new DiscoveryStringId[100];
for(int i=0; i<100; i++){
discs[i] = new DiscoveryStringId("Disc_"+String.format("%03d", i), StringID_CURIE);
}
pm.insert((Object[])discs);
DiscoveryStringId[] discs2Get = new DiscoveryStringId[100];
for(int i=0; i<100; i++){
discs2Get[i] = new DiscoveryStringId();
discs2Get[i].name = discs[i].name;
}
int nb = pm.get((Object[])discs2Get);
assertEquals(discs.length, nb);
assertEquals(discs.length, discs2Get.length);
for(int i=0; i<discs.length; i++){
assertEquals(discs[i], discs2Get[i]);
}
}
public void testBatchGetList() {
DiscoveryStringId[] discs = new DiscoveryStringId[100];
for(int i=0; i<100; i++){
discs[i] = new DiscoveryStringId("Disc_"+String.format("%03d", i), StringID_CURIE);
}
pm.insert((Object[])discs);
List<DiscoveryStringId> discs2Get = new ArrayList<DiscoveryStringId>();
for(int i=0; i<100; i++){
DiscoveryStringId disc = new DiscoveryStringId();
disc.name = discs[i].name;
discs2Get.add(disc);
}
int nb = pm.get(discs2Get);
assertEquals(nb, discs.length);
int i=0;
for(DiscoveryStringId disc:discs2Get){
assertEquals(discs[i++], disc);
}
}
public void testBatchGetByKeys() {
List<PersonStringID> res = pm.getByKeys(PersonStringID.class, "TESLA", "CURIE");
assertEquals(2, res.size());
assertEquals(StringID_TESLA, res.get(0));
assertEquals(StringID_CURIE, res.get(1));
}
public void testBatchGetByKeysList() {
DiscoveryStringId[] discs = new DiscoveryStringId[100];
for(int i=0; i<100; i++){
discs[i] = new DiscoveryStringId("Disc_"+String.format("%03d", i), StringID_CURIE);
}
pm.insert((Object[])discs);
List<String> discsKeys = new ArrayList<String>();
for(int i=0; i<100; i++){
discsKeys.add(discs[i].name);
}
List<DiscoveryStringId> discs2Get = pm.getByKeys(DiscoveryStringId.class, discsKeys);
assertEquals(discs.length, discs2Get.size());
int i=0;
for(DiscoveryStringId disc:discs2Get){
assertEquals(discs[i++], disc);
}
}
public void testBatchGetByKeysNonExisting() {
List<PersonStringID> res = pm.getByKeys(PersonStringID.class, "TESLA", "CURIE", "CHBOING");
assertEquals(3, res.size());
assertEquals(StringID_TESLA, res.get(0));
assertEquals(StringID_CURIE, res.get(1));
assertNull(res.get(2));
}
public void testBatchUpdate() {
Object[] discs = new DiscoveryStringId[100];
for(int i=0; i<100; i++){
discs[i] = new DiscoveryStringId("Disc_"+String.format("%03d", i), StringID_CURIE);
}
pm.insert(discs);
List<DiscoveryStringId> res =
pm.createQuery(DiscoveryStringId.class).fetch();
assertEquals(discs.length, res.size());
for(int i=0; i<100; i++){
((DiscoveryStringId)discs[i]).discoverer = StringID_EINSTEIN;
}
int nb = pm.update(discs);
assertEquals(discs.length, nb);
res =
pm.createQuery(DiscoveryStringId.class).fetch();
int i=0;
for(DiscoveryStringId disc:res){
assertEquals(discs[i++], disc);
}
}
public void testBatchUpdateList() {
List<DiscoveryStringId> discs = new ArrayList<DiscoveryStringId>();
for(int i=0; i<100; i++){
discs.add(new DiscoveryStringId("Disc_"+String.format("%03d", i), StringID_CURIE));
}
int nb = pm.insert(discs);
assertEquals(discs.size(), nb);
List<DiscoveryStringId> res =
pm.createQuery(DiscoveryStringId.class).fetch();
assertEquals(discs.size(), res.size());
for(DiscoveryStringId d: discs){
d.discoverer = StringID_EINSTEIN;
}
nb = pm.update(discs);
assertEquals(discs.size(), nb);
res =
pm.createQuery(DiscoveryStringId.class).fetch();
int i=0;
for(DiscoveryStringId disc:res){
assertEquals(discs.get(i++), disc);
}
}
public void testGetByKeyNonExisting() {
if(supportsAutoincrement()){
PersonLongAutoID pers = getByKeyPersonLongAutoID(12345678L);
assertNull(pers);
}else {
try {
PersonLongAutoID pers = getByKeyPersonLongAutoID(12345678L);
}catch(SienaRestrictedApiException ex){
return;
}
fail();
}
}
public void testGetByKeyUUID() {
PersonUUID curie = getByKeyPersonUUID(UUID_CURIE.id);
assertEquals(UUID_CURIE, curie);
}
public void testGetByKeyLongAutoID() {
if(supportsAutoincrement()){
PersonLongAutoID curie = getByKeyPersonLongAutoID(LongAutoID_CURIE.id);
assertEquals(LongAutoID_CURIE, curie);
}else {
try {
PersonLongAutoID curie = getByKeyPersonLongAutoID(LongAutoID_CURIE.id);
}catch(SienaRestrictedApiException ex){
return;
}
fail();
}
}
public void testGetByKeyLongManualID() {
PersonLongManualID curie = getByKeyPersonLongManualID(LongManualID_CURIE.id);
assertEquals(LongManualID_CURIE, curie);
}
public void testGetByKeyStringID() {
PersonStringID curie = getByKeyPersonStringID(StringID_CURIE.id);
assertEquals(StringID_CURIE, curie);
}
public void testBatchSave() {
Object[] discs = new Discovery4Search2StringId[100];
for(int i=0; i<100; i++){
discs[i] = new Discovery4Search2StringId(
"Disc_"+String.format("%03d", i),
"Body_"+String.format("%03d", i),
StringID_CURIE);
}
pm.save(discs);
List<Discovery4Search2StringId> res =
pm.createQuery(Discovery4Search2StringId.class).fetch();
assertEquals(discs.length, res.size());
int i=0;
for(Discovery4Search2StringId disc:res){
assertEquals(discs[i++], disc);
}
for(i=0; i<100; i++){
((Discovery4Search2StringId)discs[i]).body += "UPD";
((Discovery4Search2StringId)discs[i]).discoverer = StringID_EINSTEIN;
}
int nb = pm.save(discs);
assertEquals(discs.length, nb);
res =
pm.createQuery(Discovery4Search2StringId.class).fetch();
i=0;
for(Discovery4Search2StringId disc:res){
assertEquals(discs[i++], disc);
}
}
public void testBatchSaveList() {
List<Discovery4Search2StringId> discs = new ArrayList<Discovery4Search2StringId>();
for(int i=0; i<100; i++){
discs.add(new Discovery4Search2StringId(
"Disc_"+String.format("%03d", i), "Body_"+String.format("%03d", i), StringID_CURIE));
}
int nb = pm.insert(discs);
assertEquals(discs.size(), nb);
List<Discovery4Search2StringId> res =
pm.createQuery(Discovery4Search2StringId.class).fetch();
assertEquals(discs.size(), res.size());
int i=0;
for(Discovery4Search2StringId disc:res){
assertEquals(discs.get(i++), disc);
}
for(i=0; i<100; i++){
((Discovery4Search2StringId)discs.get(i)).body += "UPD";
((Discovery4Search2StringId)discs.get(i)).discoverer = StringID_EINSTEIN;
}
nb = pm.save(discs);
assertEquals(discs.size(), nb);
res =
pm.createQuery(Discovery4Search2StringId.class).fetch();
i=0;
for(Discovery4Search2StringId disc:res){
assertEquals(discs.get(i++), disc);
}
}
}