package siena.base.test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import siena.Query;
import siena.base.test.model.DataTypes;
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;
import siena.sdb.SdbPersistenceManager;
public abstract class BaseTestNoAutoInc_BASE extends AbstractTest {
protected static PersonUUID UUID_TESLA = new PersonUUID("Nikola", "Tesla", "Smiljam", 1);
protected static PersonUUID UUID_CURIE = new PersonUUID("Marie", "Curie", "Warsaw", 2);
protected static PersonUUID UUID_EINSTEIN = new PersonUUID("Albert", "Einstein", "Ulm", 3);
protected static PersonLongManualID LongManualID_TESLA = new PersonLongManualID(1L, "Nikola", "Tesla", "Smiljam", 1);
protected static PersonLongManualID LongManualID_CURIE = new PersonLongManualID(2L, "Marie", "Curie", "Warsaw", 2);
protected static PersonLongManualID LongManualID_EINSTEIN = new PersonLongManualID(3L, "Albert", "Einstein", "Ulm", 3);
protected static PersonStringID StringID_TESLA = new PersonStringID("TESLA", "Nikola", "Tesla", "Smiljam", 1);
protected static PersonStringID StringID_CURIE = new PersonStringID("CURIE", "Marie", "Curie", "Warsaw", 2);
protected static PersonStringID StringID_EINSTEIN = new PersonStringID("EINSTEIN", "Albert", "Einstein", "Ulm", 3);
protected static PersonLongAutoID LongAutoID_TESLA = new PersonLongAutoID("Nikola", "Tesla", "Smiljam", 1);
protected static PersonLongAutoID LongAutoID_CURIE = new PersonLongAutoID("Marie", "Curie", "Warsaw", 2);
protected static PersonLongAutoID LongAutoID_EINSTEIN = new PersonLongAutoID("Albert", "Einstein", "Ulm", 3);
public static String lifeCyclePhase = "";
public void createClasses(List<Class<?>> classes) {
//classes.add(PersonUUID.class);
//classes.add(PersonLongAutoID.class);
//classes.add(PersonLongManualID.class);
classes.add(PersonStringID.class);
//classes.add(PersonStringAutoIncID.class);
classes.add(DiscoveryStringId.class);
//classes.add(DataTypes.class);
/*classes.add(Discovery4Join.class);
classes.add(Discovery4Join2.class);
classes.add(DiscoveryPrivate.class);
classes.add(Discovery4Search.class);
classes.add(Discovery4Search2.class);
classes.add(DataTypes.class);
classes.add(PolymorphicModel.class);
classes.add(EmbeddedModel.class);
classes.add(EmbeddedSubModel.class);
classes.add(ContainerModel.class);
classes.add(DiscoveryNoColumn.class);
classes.add(DiscoveryNoColumnMultipleKeys.class);
classes.add(DiscoveryLifeCycle.class);
classes.add(DiscoveryLifeCycleMulti.class);
classes.add(BigDecimalModel.class);
classes.add(BigDecimalModelNoPrecision.class);
classes.add(BigDecimalStringModel.class);
classes.add(BigDecimalDoubleModel.class);
classes.add(TransactionAccountFrom.class);
classes.add(TransactionAccountTo.class);*/
}
public void postInit() {
/*for (Class<?> clazz : classes) {
if(!Modifier.isAbstract(clazz.getModifiers())){
pm.createQuery(clazz).delete();
}
}*/
pm.createQuery(PersonUUID.class).delete();
pm.createQuery(PersonLongManualID.class).delete();
pm.createQuery(PersonStringID.class).delete();
pm.createQuery(DataTypes.class).delete();
pm.createQuery(DiscoveryStringId.class).delete();
pm.createQuery(Discovery4Search2StringId.class).delete();
pm.insert(UUID_TESLA, UUID_CURIE, UUID_EINSTEIN);
pm.insert(LongManualID_TESLA, LongManualID_CURIE, LongManualID_EINSTEIN);
pm.insert(StringID_TESLA, StringID_CURIE, StringID_EINSTEIN);
/*pm.insert(UUID_TESLA, UUID_CURIE, UUID_EINSTEIN,
LongManualID_TESLA, LongManualID_CURIE, LongManualID_EINSTEIN,
StringID_TESLA, StringID_CURIE, StringID_EINSTEIN);*/
pm.option(SdbPersistenceManager.CONSISTENT_READ);
}
protected List<PersonUUID> getOrderedPersonUUIDs() {
@SuppressWarnings("serial")
ArrayList<PersonUUID> l = new ArrayList<PersonUUID>() {{
add(UUID_TESLA);
add(UUID_CURIE);
add(UUID_EINSTEIN);
}};
Collections.sort(l, new Comparator<PersonUUID>(){
public int compare(PersonUUID p1,PersonUUID p2){
return p1.id.compareTo(p2.id);
}
});
return l;
}
protected Query<PersonUUID> queryPersonUUIDOrderBy(String order, Object value, boolean desc) {
Query<PersonUUID> query = pm.createQuery(PersonUUID.class);
return query.order(desc ? "-"+order : order);
}
protected Query<PersonLongAutoID> queryPersonLongAutoIDOrderBy(String order, Object value, boolean desc) {
Query<PersonLongAutoID> query = pm.createQuery(PersonLongAutoID.class);
return query.order(desc ? "-"+order : order);
}
protected Query<PersonLongManualID> queryPersonLongManualIDOrderBy(String order, Object value, boolean desc) {
Query<PersonLongManualID> query = pm.createQuery(PersonLongManualID.class);
return query.order(desc ? "-"+order : order);
}
protected Query<PersonStringID> queryPersonStringIDOrderBy(String order, Object value, boolean desc) {
Query<PersonStringID> query = pm.createQuery(PersonStringID.class);
return query.order(desc ? "-"+order : order);
}
protected PersonUUID getPersonUUID(String id) {
PersonUUID p = new PersonUUID();
p.id = id;
pm.get(p);
return p;
}
protected PersonLongAutoID getPersonLongAutoID(Long id) {
PersonLongAutoID p = new PersonLongAutoID();
p.id = id;
pm.get(p);
return p;
}
protected PersonLongManualID getPersonLongManualID(Long id) {
PersonLongManualID p = new PersonLongManualID();
p.id = id;
pm.get(p);
return p;
}
protected PersonStringID getPersonStringID(String id) {
PersonStringID p = new PersonStringID();
p.id = id;
pm.get(p);
return p;
}
protected PersonUUID getByKeyPersonUUID(String id) {
return pm.getByKey(PersonUUID.class, id);
}
protected PersonLongAutoID getByKeyPersonLongAutoID(Long id) {
return pm.getByKey(PersonLongAutoID.class, id);
}
protected PersonLongManualID getByKeyPersonLongManualID(Long id) {
return pm.getByKey(PersonLongManualID.class, id);
}
protected PersonStringID getByKeyPersonStringID(String id) {
return pm.getByKey(PersonStringID.class, id);
}
protected void assertEqualsDataTypes(DataTypes dataTypes, DataTypes same) {
assertEquals(dataTypes.id, same.id);
assertEquals(dataTypes.typeByte, same.typeByte);
assertEquals(dataTypes.typeShort, same.typeShort);
assertEquals(dataTypes.typeInt, same.typeInt);
assertEquals(dataTypes.typeLong, same.typeLong);
assertEquals(dataTypes.typeFloat, same.typeFloat);
assertEquals(dataTypes.typeDouble, same.typeDouble);
assertEquals(dataTypes.boolBool, same.boolBool);
assertEquals(dataTypes.shortShort, same.shortShort);
assertEquals(dataTypes.longLong, same.longLong);
assertEquals(dataTypes.intInt, same.intInt);
if(dataTypes.typeDate != null && same.typeDate != null) {
assertEquals(dataTypes.typeDate.getTime() / 1000, same.typeDate.getTime() / 1000);
} else {
assertNull(dataTypes.typeDate);
assertNull(same.typeDate);
}
assertEquals(dataTypes.typeString, same.typeString);
assertEquals(dataTypes.typeLargeString, same.typeLargeString);
assertEquals(dataTypes.typeJson, same.typeJson);
if(dataTypes.addresses != null && same.addresses != null) {
assertEquals(dataTypes.addresses.size(), same.addresses.size());
int size = dataTypes.addresses.size();
for (int i=0; i<size; i++) {
assertEquals(dataTypes.addresses.get(i), same.addresses.get(i));
}
} else {
assertNull(dataTypes.addresses);
assertNull(same.addresses);
}
if(dataTypes.contacts != null && same.contacts != null) {
assertEquals(dataTypes.contacts.size(), same.contacts.size());
for (String key : dataTypes.contacts.keySet()) {
assertEquals(dataTypes.contacts.get(key).name, same.contacts.get(key).name);
List<String> a = dataTypes.contacts.get(key).tags;
List<String> b = same.contacts.get(key).tags;
assertEquals(a.size(), b.size());
for (String string : b) {
assertTrue(a.contains(string));
}
}
} else {
assertNull(dataTypes.contacts);
assertNull(same.contacts);
}
if(dataTypes.typeBlob != null && same.typeBlob != null) {
assertTrue(Arrays.equals(dataTypes.typeBlob, same.typeBlob));
} else {
assertNull(dataTypes.typeBlob);
assertNull(same.typeBlob);
}
if(dataTypes.typeEnum != null && same.typeEnum != null) {
assertEquals(dataTypes.typeEnum.getCode(), same.typeEnum.getCode());
} else {
assertNull(dataTypes.typeEnum);
assertNull(same.typeEnum);
}
}
}