Skip to content

Commit

Permalink
Updated OrderTypeValidator to allow multiple order types to map to th…
Browse files Browse the repository at this point in the history
…e same java class - TRUNK-4311
  • Loading branch information
wluyima committed Mar 26, 2014
1 parent 2345580 commit c0b5541
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 47 deletions.
Expand Up @@ -52,4 +52,4 @@ public void handle(Order order, User creator, Date dateCreated, String other) {
order.setOrderType(orderType);
}
}
}
}
34 changes: 17 additions & 17 deletions api/src/main/java/org/openmrs/api/impl/OrderServiceImpl.java
Expand Up @@ -686,22 +686,22 @@ public List<OrderType> getSubtypes(OrderType orderType, boolean includeRetired)
}
return allSubtypes;
}

/**
* @see org.openmrs.api.OrderService#getOrderTypeByConceptClass(org.openmrs.ConceptClass)
*/
@Override
@Transactional(readOnly = true)
public OrderType getOrderTypeByConceptClass(ConceptClass conceptClass) {
return dao.getOrderTypeByConceptClass(conceptClass);
}

* @see org.openmrs.api.OrderService#getOrderTypeByConceptClass(org.openmrs.ConceptClass)
*/
@Override
@Transactional(readOnly = true)
public OrderType getOrderTypeByConceptClass(ConceptClass conceptClass) {
return dao.getOrderTypeByConceptClass(conceptClass);
}
/**
* @see org.openmrs.api.OrderService#getOrderTypeByConcept(org.openmrs.Concept)
*/
@Override
@Transactional(readOnly = true)
public OrderType getOrderTypeByConcept(Concept concept) {
return Context.getOrderService().getOrderTypeByConceptClass(concept.getConceptClass());
}
}
* @see org.openmrs.api.OrderService#getOrderTypeByConcept(org.openmrs.Concept)
*/
@Override
@Transactional(readOnly = true)
public OrderType getOrderTypeByConcept(Concept concept) {
return Context.getOrderService().getOrderTypeByConceptClass(concept.getConceptClass());
}
}
22 changes: 7 additions & 15 deletions api/src/main/java/org/openmrs/validator/OrderTypeValidator.java
Expand Up @@ -19,7 +19,6 @@
import org.openmrs.OrderType;
import org.openmrs.annotation.Handler;
import org.openmrs.api.context.Context;
import org.openmrs.util.OpenmrsUtil;
import org.springframework.util.StringUtils;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
Expand Down Expand Up @@ -56,7 +55,6 @@ public boolean supports(Class c) {
* @should fail if name is empty
* @should fail if name is whitespace
* @should fail if name is a duplicate
* @should fail if javaClass is a duplicate
* @should fail if conceptClass is a duplicate
* @should pass if all fields are correct for a new order type
* @should pass if all fields are correct for an existing order type
Expand Down Expand Up @@ -85,20 +83,14 @@ public void validate(Object obj, Errors errors) {
if (orderType.equals(ot)) {
continue;
}
if (OpenmrsUtil.nullSafeEquals(orderType.getJavaClassName(), ot.getJavaClassName())) {
errors.rejectValue("javaClassName", "OrderType.duplicate", new Object[] {
orderType.getJavaClassName(), orderType.getName() }, ot.getJavaClassName()
+ " is already associated to another order type:" + orderType.getName());
} else {
int index = 0;
for (ConceptClass cc : ot.getConceptClasses()) {
if (cc != null && orderType.getConceptClasses().contains(cc)) {
errors.rejectValue("conceptClasses[" + index + "]", "OrderType.duplicate", new Object[] {
cc.getName(), orderType.getName() }, cc.getName()
+ " is already associated to another order type:" + orderType.getName());
}
index++;
int index = 0;
for (ConceptClass cc : ot.getConceptClasses()) {
if (cc != null && orderType.getConceptClasses().contains(cc)) {
errors.rejectValue("conceptClasses[" + index + "]", "OrderType.duplicate", new Object[] {
cc.getName(), orderType.getName() }, cc.getName()
+ " is already associated to another order type:" + orderType.getName());
}
index++;
}
}
}
Expand Down
Expand Up @@ -119,20 +119,6 @@ public void validate_shouldFailIfNameIsADuplicate() throws Exception {
Assert.assertEquals(true, errors.hasFieldErrors("name"));
}

/**
* @see {@link OrderTypeValidator#validate(Object,Errors)}
*/
@Test
@Verifies(value = "should fail if javaClass is a duplicate", method = "validate(Object,Errors)")
public void validate_shouldFailIfJavaClassIsADuplicate() throws Exception {
OrderType orderType = new OrderType();
orderType.setName("java class test");
orderType.setJavaClassName(orderService.getOrderType(1).getJavaClassName());
Errors errors = new BindException(orderType, "orderType");
new OrderTypeValidator().validate(orderType, errors);
Assert.assertEquals(true, errors.hasFieldErrors("javaClassName"));
}

/**
* @see {@link OrderTypeValidator#validate(Object,Errors)}
*/
Expand Down

0 comments on commit c0b5541

Please sign in to comment.