package org.akaza.openclinica.validator.xform; import org.akaza.openclinica.dao.hibernate.ItemDao; import org.akaza.openclinica.domain.datamap.Item; import org.akaza.openclinica.domain.datamap.ItemDataType; import org.springframework.validation.Errors; import org.springframework.validation.ValidationUtils; import org.springframework.validation.Validator; public class ItemValidator implements Validator { private ItemDao itemDao = null; private ItemDataType newDataType = null; private ItemDataType oldDataType = null; public ItemValidator(ItemDao itemDao, ItemDataType oldDataType, ItemDataType newDataType) { this.itemDao = itemDao; this.oldDataType = oldDataType; this.newDataType = newDataType; } public boolean supports(Class<?> clazz) { return Item.class.equals(clazz); } public void validate(Object target, Errors errors) { Item item = (Item) target; // Reject if item name is empty ValidationUtils.rejectIfEmpty(errors, "name", "crf_val_item_nameempty"); // Reject if item name is a reserved word if (item.getName().equals("OC.REPEAT_ORDINAL")) { errors.rejectValue("name", "crf_item_reserveditemname", item.getName()); } // Reject if item data type changes from a previous version if (oldDataType != null && oldDataType.getItemDataTypeId() != newDataType.getItemDataTypeId()) { errors.rejectValue("itemDataType", "crf_val_item_invaliddatatypechange", item.getName()); } } }