Commit
Frequency - TRUNK-4188
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -13,7 +13,6 @@ | |
*/ | ||
package org.openmrs.api.db.hibernate; | ||
|
||
import java.lang.reflect.Field; | ||
import java.util.ArrayList; | ||
import java.util.Date; | ||
import java.util.Iterator; | ||
|
@@ -33,7 +32,6 @@ | |
import org.hibernate.criterion.MatchMode; | ||
import org.hibernate.criterion.Restrictions; | ||
import org.hibernate.metadata.ClassMetadata; | ||
import org.hibernate.persister.entity.EntityPersister; | ||
import org.hibernate.transform.DistinctRootEntityResultTransformer; | ||
import org.openmrs.CareSetting; | ||
import org.openmrs.Concept; | ||
|
@@ -45,7 +43,6 @@ | |
import org.openmrs.Patient; | ||
import org.openmrs.User; | ||
import org.openmrs.api.APIException; | ||
import org.openmrs.api.context.Context; | ||
import org.openmrs.api.db.DAOException; | ||
import org.openmrs.api.db.OrderDAO; | ||
import org.openmrs.util.OpenmrsConstants; | ||
|
@@ -366,33 +363,27 @@ public boolean isOrderFrequencyInUse(OrderFrequency orderFrequency) { | |
|
||
Map<String, ClassMetadata> metadata = sessionFactory.getAllClassMetadata(); | ||
for (Iterator<ClassMetadata> i = metadata.values().iterator(); i.hasNext();) { | ||
Class<?> entityClass = ((EntityPersister) i.next()).getClassMetadata().getMappedClass(EntityMode.POJO); | ||
if (Order.class.getName().equals(entityClass.getName())) { | ||
ClassMetadata classMetadata = i.next(); | ||
Class<?> entityClass = classMetadata.getMappedClass(EntityMode.POJO); | ||
if (Order.class.equals(entityClass)) { | ||
continue; //ignore the org.openmrs.Order class itself | ||
} | ||
|
||
if (!Order.class.isAssignableFrom(entityClass)) { | ||
continue; //not a sub class of Order | ||
} | ||
|
||
try { | ||
Class<?> cls = Context.loadClass(entityClass.getName()); | ||
|
||
Field[] fields = cls.getDeclaredFields(); | ||
for (Field field : fields) { | ||
if (field.getType().equals(OrderFrequency.class)) { | ||
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(cls); | ||
criteria.add(Restrictions.eq(field.getName(), orderFrequency)); | ||
criteria.setMaxResults(1); | ||
if (criteria.list().size() > 0) { | ||
return true; | ||
} | ||
String[] names = classMetadata.getPropertyNames(); | ||
for (String name : names) { | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
wluyima
Member
|
||
if (classMetadata.getPropertyType(name).getName().equals(OrderFrequency.class.getName())) { | ||
This comment has been minimized.
Sorry, something went wrong.
wluyima
Member
|
||
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(entityClass); | ||
criteria.add(Restrictions.eq(name, orderFrequency)); | ||
criteria.setMaxResults(1); | ||
if (criteria.list().size() > 0) { | ||
return true; | ||
} | ||
} | ||
} | ||
catch (ClassNotFoundException ex) { | ||
log.error("Failed to check whether order frequency is in use for: " + entityClass.getName(), ex); | ||
} | ||
} | ||
|
||
return false; | ||
|
I have used this several times and it works, am not sure what you might be doing wrongly, when i add the line below in the for.. each statement, it shows the exact field types i expect in the Order class:
System.out.println("Property:"+name+" Type:"+classMetadata.getPropertyType(name).getReturnedClass());