package edu.ualberta.med.biobank.test;
import java.io.Serializable;
import java.util.Date;
import org.hibernate.Transaction;
import org.junit.Test;
import org.springframework.util.Assert;
import edu.ualberta.med.biobank.model.CollectionEvent;
import edu.ualberta.med.biobank.model.OriginInfo;
import edu.ualberta.med.biobank.model.Patient;
import edu.ualberta.med.biobank.model.Site;
import edu.ualberta.med.biobank.model.Specimen;
import edu.ualberta.med.biobank.model.SpecimenType;
import edu.ualberta.med.biobank.model.Study;
import edu.ualberta.med.biobank.test.action.TestAction;
public class TestEquals extends TestAction {
@Test
public void testEquals() {
Transaction tx = session.beginTransaction();
String name = getMethodNameR();
Site site1 = new Site();
site1.setName(name);
site1.setNameShort(name);
site1.getAddress().setCity(name);
name = getMethodNameR();
Site site2 = new Site();
site2.setName(name);
site2.setNameShort(name);
site2.getAddress().setCity(name);
// name = getMethodNameR();
//
// Clinic clinic1 = new Clinic();
// clinic.setName(name);
session.save(site1);
session.save(site2);
session.flush();
tx.commit();
session.close();
session = openSession();
tx = session.beginTransaction();
Site site1loaded = (Site) session.load(Site.class, site1.getId());
Site site2loaded = (Site) session.load(Site.class, site2.getId());
Assert.isTrue(site1.equals(site1));
Assert.isTrue(site1.equals(site1loaded));
Assert.isTrue(site1loaded.equals(site1));
Assert.isTrue(site1loaded.equals(site1loaded));
Assert.isTrue(site2.equals(site2));
Assert.isTrue(site2.equals(site2loaded));
Assert.isTrue(site2loaded.equals(site2));
Assert.isTrue(site2loaded.equals(site2loaded));
Assert.isTrue(!site1.equals(site2));
Assert.isTrue(!site1.equals(site2loaded));
Assert.isTrue(!site1loaded.equals(site2));
Assert.isTrue(!site1loaded.equals(site2loaded));
tx.commit();
}
@Test
public void testFetching() {
Transaction tx = session.beginTransaction();
String name = getMethodNameR();
Site site = new Site();
site.setName(name);
site.setNameShort(name);
site.getAddress().setCity(name);
session.save(site);
Study study = new Study();
study.setName(name);
study.setNameShort(name);
session.save(study);
Patient patient = new Patient();
patient.setCreatedAt(new Date());
patient.setPnumber(name);
patient.setStudy(study);
session.save(patient);
CollectionEvent collectionEvent = new CollectionEvent();
collectionEvent.setPatient(patient);
collectionEvent.setVisitNumber(1);
session.save(collectionEvent);
OriginInfo originInfo = new OriginInfo();
originInfo.setCenter(site);
session.save(originInfo);
SpecimenType specimenType = new SpecimenType();
specimenType.setName(name);
specimenType.setNameShort(name);
session.save(specimenType);
Specimen specimen = new Specimen();
specimen.setInventoryId(name);
specimen.setCollectionEvent(collectionEvent);
specimen.setCurrentCenter(site);
specimen.setCreatedAt(new Date());
specimen.setOriginInfo(originInfo);
specimen.setSpecimenType(specimenType);
Serializable specimenId = session.save(specimen);
tx.commit();
session.close();
session = openSession();
tx = session.beginTransaction();
// System.out.println("start1");
Specimen l1 = (Specimen) session.load(Specimen.class, specimenId);
// System.out.println("middle1");
l1.getCurrentCenter().getName();
// System.out.println("end1");
tx.commit();
session.close();
session = openSession();
tx = session.beginTransaction();
// PROBREM:
// "SELECT spec"
// + " FROM edu.ualberta.med.biobank.model.Specimen spec"
// + " INNER JOIN FETCH spec.specimenType"
// + " INNER JOIN FETCH spec.currentCenter"
// + " LEFT JOIN spec.specimenPosition pos"
// + " LEFT JOIN pos.container parent"
// + " LEFT JOIN parent.topContainer topparent"
// + " LEFT JOIN topparent.containerType toptype"
// + " INNER JOIN FETCH spec.collectionEvent cevent"
// + " INNER JOIN FETCH spec.originInfo originInfo"
// + " INNER JOIN FETCH originInfo.center"
// + " LEFT JOIN FETCH spec.comments"
// + " INNER JOIN FETCH cevent.patient patient"
// + " INNER JOIN FETCH patient.study study"
// System.out.println("start2");
session
.createQuery(
"select specimen from edu.ualberta.med.biobank.model.Specimen specimen"
+
" inner join fetch specimen.currentCenter" +
" inner join fetch specimen.originInfo originInfo" +
" inner join fetch originInfo.center " +
" where specimen.id = ?").setParameter(0, specimenId)
.list();
// System.out.println("end2");
tx.commit();
}
}