package org.argeo.slc.hibernate.test.tree;\r
\r
import java.sql.SQLException;\r
+import java.util.Date;\r
\r
import org.argeo.slc.core.test.tree.TreeTestResult;\r
import org.argeo.slc.core.test.tree.TreeTestResultCollection;\r
final TreeTestResultCollection ttrcPersist = ttrcDao\r
.getTestResultCollection(ttrcName);\r
\r
+ // Because of lazy initialization\r
getHibernateTemplate().execute(new HibernateCallback() {\r
\r
public Object doInHibernate(Session session)\r
});\r
}\r
\r
+ public void testResultsWithSameCloseDate() {\r
+ TreeTestResultDao ttrDao = getBean(TreeTestResultDao.class);\r
+ TreeTestResultCollectionDao ttrcDao = getBean(TreeTestResultCollectionDao.class);\r
+\r
+ String ttrcName = "testCollection";\r
+\r
+ Date closeDate = new Date();\r
+\r
+ // TTR1\r
+ TreeTestResult ttr1 = TreeTestResultTestUtils\r
+ .createCompleteTreeTestResult();\r
+ ttr1.setCloseDate(closeDate);\r
+ ttrDao.create(ttr1);\r
+\r
+ // TTR2\r
+ TreeTestResult ttr2 = TreeTestResultTestUtils\r
+ .createCompleteTreeTestResult();\r
+ ttr2.setCloseDate(closeDate);\r
+ ttrDao.create(ttr2);\r
+\r
+ // TTRC\r
+ TreeTestResultCollection ttrc = new TreeTestResultCollection(ttrcName);\r
+ ttrc.getResults().add(ttr1);\r
+ ttrc.getResults().add(ttr2);\r
+ ttrcDao.create(ttrc);\r
+\r
+ final TreeTestResultCollection ttrcPersist = ttrcDao\r
+ .getTestResultCollection(ttrcName);\r
+ // Because of lazy initialization\r
+ getHibernateTemplate().execute(new HibernateCallback() {\r
+\r
+ public Object doInHibernate(Session session)\r
+ throws HibernateException, SQLException {\r
+ session.refresh(ttrcPersist);\r
+ assertEquals(2, ttrcPersist.getResults().size());\r
+ return null;\r
+ }\r
+ });\r
+ }\r
+\r
@Override\r
protected String getApplicationContextLocation() {\r
return "org/argeo/slc/hibernate/applicationContext.xml";\r
public int compareTo(TreeTestResult ttr2) {\r
TreeTestResult ttr1 = this;\r
if (ttr1.getCloseDate() != null && ttr2.getCloseDate() != null) {\r
- return -ttr1.getCloseDate().compareTo(ttr2.getCloseDate());\r
+ if (ttr1.getCloseDate().equals(ttr2.getCloseDate()))\r
+ return compareUuid(ttr1, ttr2);\r
+ else\r
+ return -ttr1.getCloseDate().compareTo(ttr2.getCloseDate());\r
} else if (ttr1.getCloseDate() != null && ttr2.getCloseDate() == null) {\r
return 1;\r
} else if (ttr1.getCloseDate() == null && ttr2.getCloseDate() != null) {\r
return -1;\r
} else {\r
+ return compareUuid(ttr1, ttr2);\r
+ }\r
+ }\r
+\r
+ protected int compareUuid(TestResult ttr1, TestResult ttr2) {\r
+ if (ttr1.getUuid() == null || ttr2.getUuid() == null)\r
+ throw new SlcException(\r
+ "Cannot compare tree test result with null uuid");\r
+ else {\r
+ if (ttr1.getUuid().equals(ttr2.getUuid()))\r
+ return 0;\r
return ttr1.getUuid().compareTo(ttr2.getUuid());\r
}\r
}\r
\r
+ public boolean equals(Object obj) {\r
+ if (obj instanceof TestResult)\r
+ return compareUuid(this, ((TestResult) obj)) == 0;\r
+ else\r
+ return false;\r
+ }\r
+\r
+ public int hashCode() {\r
+ if (uuid != null)\r
+ return uuid.hashCode();\r
+ else\r
+ return super.hashCode();\r
+ }\r
+\r
public Map<String, String> getAttributes() {\r
return attributes;\r
}\r