package edu.asu.spring.quadriga.domain.impl;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
import edu.asu.spring.quadriga.dao.conceptcollection.IConceptCollectionDAO;
import edu.asu.spring.quadriga.domain.conceptcollection.IConceptCollection;
import edu.asu.spring.quadriga.domain.impl.conceptcollection.ConceptCollection;
import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException;
/**
* This class validates if the concept collection name is unique and valid.
* @author Satya swaroop
*
*/
@Service
public class CollectionsValidator implements Validator {
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(CollectionsValidator.class);
@Autowired
private IConceptCollectionDAO dbConnect;
@Override
public boolean supports(Class<?> arg0) {
return arg0.isAssignableFrom(ConceptCollection.class);
}
@Override
public void validate(Object obj, Errors errors) {
IConceptCollection c = (IConceptCollection) obj;
String id = c.getConceptCollectionName();
try {
validateId(id, errors);
} catch (QuadrigaStorageException e) {
e.printStackTrace();
}
}
@Transactional
private void validateId(String id, Errors errors) throws QuadrigaStorageException {
// TODO Auto-generated method stub
String ret=dbConnect.validateId(id);
logger.info("After Validater:"+ret);
if(!( ret == null || ret.isEmpty()) )
{
errors.rejectValue("name", "CollectionsValidator.id.notValid",
"Not a Unique Id");
}
}
}