package net.sourceforge.solexatools.validation;
import net.sourceforge.seqware.common.business.SequencerRunService;
import net.sourceforge.seqware.common.model.SequencerRun;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
/**
* <p>
* SequencerRunValidator class.
* </p>
*
* @author boconnor
* @version $Id: $Id
*/
public class SequencerRunValidator implements Validator {
private SequencerRunService sequencerRunService;
/**
* <p>
* Constructor for SequencerRunValidator.
* </p>
*/
public SequencerRunValidator() {
super();
}
/**
* {@inheritDoc}
*
* @param clazz
* @return
*/
@Override
public boolean supports(Class clazz) {
return SequencerRun.class.equals(clazz);
}
/**
* {@inheritDoc}
*
* Validates the specified Object.
*
* @param obj
* @param errors
*/
@Override
public void validate(Object obj, Errors errors) {
SequencerRun sequencerRun = (SequencerRun) obj;
this.validateName(sequencerRun.getName(), errors);
ValidationUtils.rejectIfEmpty(errors, "name", "sequencerRun.required.name");
this.validateRefLane(sequencerRun, errors);
}
/**
* Determines if the experiment's email address and confirm email address match.
*
* @param errors
* Errors object for validation errors
* @param name
* a {@link java.lang.String} object.
*/
public void validateName(String name, Errors errors) {
if (errors.getFieldError("name") == null) {
/* The individual fields have passed validation. */
if (getSequencerRunService().findByName(name) != null) {
errors.reject("error.sequencerRun.match.email");
}
}
}
/**
* <p>
* validateRefLane.
* </p>
*
* @param sequencerRun
* a {@link net.sourceforge.seqware.common.model.SequencerRun} object.
* @param errors
* a {@link org.springframework.validation.Errors} object.
*/
public void validateRefLane(SequencerRun sequencerRun, Errors errors) {
if (errors.getFieldError("strRefLane") == null) {
boolean isHasError = false;
String strRefLane = sequencerRun.getStrRefLane();
if (strRefLane != null && !strRefLane.isEmpty()) {
Integer refLane = null;
try {
refLane = Integer.parseInt(strRefLane);
} catch (Exception e) {
isHasError = true;
errors.reject("sequencerRun.error.type.refLane");
}
if (!isHasError) {
if (refLane < 1) {
isHasError = true;
errors.reject("sequencerRun.error.value.refLane");
}
}
if (!isHasError) {
sequencerRun.setRefLane(refLane);
}
}
}
}
/**
* <p>
* Getter for the field <code>sequencerRunService</code>.
* </p>
*
* @return a {@link net.sourceforge.seqware.common.business.SequencerRunService} object.
*/
public SequencerRunService getSequencerRunService() {
return sequencerRunService;
}
/**
* <p>
* Setter for the field <code>sequencerRunService</code>.
* </p>
*
* @param sequencerRunService
* a {@link net.sourceforge.seqware.common.business.SequencerRunService} object.
*/
public void setSequencerRunService(SequencerRunService sequencerRunService) {
this.sequencerRunService = sequencerRunService;
}
}
// ex:sw=4:ts=4: